Files
codex-app-server/docs/identity-memory.md
T
host cbc90f9d30 自动记忆:官方 memories 对齐的提取+注入闭环(确定性 v1)
开关默认关(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。
2026-10-28 12:12:10 +08:00

52 lines
2.6 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 系统级身份与记忆(云端层)
本批只做云端层,不动 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 无关,换引擎时云端记忆仍可用)。