开关默认关(generate/use),设置接口 GET/PUT /users/me/auto-memory-settings,任务级覆盖 POST /tasks/{id}/auto-memory-flags,手动触发 POST /users/me/auto-memory/run,日志 GET /users/me/auto-memory-log。
提取:worker run_loop 轮次边界扫 completed 任务,闲置/时长/长度/外部上下文/配额剩余百分比五道门,脱敏后写 project 级 identity_memories,同一任务去重、同一目标 supersede 合并;只写 project 级,不跨项目泄漏。
注入:worker run_one 首轮把最新各 5 条用户/项目记忆拼进内存 prompt 副本(goal 任务同步改内存 goal),库原 prompt 不动;续跑/断点/协调员不注入,注入失败 fail-open。
v1 诚实边界:extract/consolidation 模型只存设置不调模型;MCP/web 线程内调用暂无 tasks 表标记,外部上下文门只认任务间消息与协调员子任务;无控制台 UI。
52 lines
2.6 KiB
Markdown
52 lines
2.6 KiB
Markdown
# 系统级身份与记忆(云端层)
|
||
|
||
本批只做云端层,不动 Codex thread:不改 `host.py`、不改
|
||
`CODEX_HOME`、不改任何 thread 的创建/续跑/fork/归档。
|
||
自动注入是后一批(docs/auto-memory.md)接通的:worker 首轮
|
||
把上下文拼进内存里的 prompt 副本,库里的原 prompt 不动。
|
||
|
||
## 数据
|
||
|
||
- `user_profiles`:每用户一行,display_name、timezone、
|
||
preferences(JSON)。偏好里禁止含 password/secret/token/
|
||
api_key/credential 的键,绝不能拿它当第二个凭证库。
|
||
- `identity_memories`:分级记忆,TEXT 主键(不走 IDENTITY
|
||
序列,见 `cloud/migrations.py` 对齐说明)。
|
||
- `user`:只归属用户一人可见,跨项目;不得带 project_id。
|
||
- `project`:归属用户创建、项目成员可见;读/写权限由
|
||
server 的项目 `read` / `create_task` 门先卡,store 层
|
||
不认项目成员关系。
|
||
- `kind`:fact / preference / decision / convention。
|
||
- `source_thread_id`:仅作来源标注,不建立 thread 依赖。
|
||
- 旧项目记忆 `summaries` 表不动;`identity-context` 返回的
|
||
项目摘要上下文是独立字段,不与身份上下文合并。
|
||
|
||
## 语义
|
||
|
||
- 修正用 supersede 链:旧行变 `superseded` 并指向新行,
|
||
旧内容不再进上下文,但可审计;删除是物理删除,仅用于
|
||
用户主动遗忘。
|
||
- 上下文只取最新 active 各 5 条,不全量倒历史。
|
||
- 他人用户级记忆在 HTTP 层回 404(不是 403),避免用
|
||
状态码探出记忆存在。
|
||
|
||
## 接口
|
||
|
||
- `GET/PUT /users/me/profile`(本人)
|
||
- `GET/POST /users/me/memories`、`POST /users/me/memories/{id}/supersede`、`DELETE /users/me/memories/{id}`(本人)
|
||
- `GET/POST /projects/{id}/identity-memories`、`POST /projects/{id}/identity-memories/{id}/supersede`、`DELETE /projects/{id}/identity-memories/{id}`(项目门)
|
||
- `GET /users/me/identity-context?project_id=...`:显式取用,
|
||
返回 profile、两级记忆、身份上下文、项目摘要上下文四个
|
||
独立字段;调用方要把上下文放进新任务时,应自己拼进
|
||
新建任务的 prompt 并留痕,本接口不代劳。
|
||
|
||
## 未做
|
||
|
||
- 自动提取与注入已由 docs/auto-memory.md 一批接通(worker
|
||
首轮 prompt 前缀注入 + run_loop 轮次边界提取扫荡):注入点
|
||
定为首轮 prompt(host.py dispatch 不传 developerInstructions,
|
||
云端层不改 host.py 的唯一注入点就是 prompt 前缀),去重与
|
||
合并用确定性 supersede,成本上限用配额剩余百分比门。
|
||
- 未做控制台 UI;未做跨引擎记忆(本批记忆与 Codex
|
||
thread 无关,换引擎时云端记忆仍可用)。
|