同步 DirectProject 原始历史约定
记录当前不预写用户消息的实现边界 补充缺失 itemId 的回退累积规则
This commit is contained in:
@@ -1,6 +1,6 @@
|
||||
# DirectProject Codex 原始历史与异常恢复
|
||||
|
||||
更新时间:`2026-09-04`
|
||||
更新时间:`2026-09-05`
|
||||
|
||||
## 目标
|
||||
|
||||
@@ -16,7 +16,7 @@ DirectProject 只使用 `.agent/conversations/project.jsonl` 作为对话历史
|
||||
{"type":"response_item","payload":{"type":"message","role":"user","content":[{"type":"input_text","text":"你好"}]}}
|
||||
```
|
||||
|
||||
`payload` 必须是未经改写的 Responses item。用户 message 在 `turn/start` 前追加;Codex 返回的 `rawResponseItem/completed.params.item` 原样追加。native 工具、MCP 工具、reasoning、调用参数和调用结果都保留完整内容,不截断、不摘要、不保存 delta/started 事件。
|
||||
`payload` 必须是未经改写的 Responses item。Direct 回合不由浏览器预写用户 message;Codex 返回的 `rawResponseItem/completed.params.item` 原样追加。显式的本地 user/assistant 补写只能通过受权限保护的 `append_direct_project_conversation_message` 命令完成。native 工具、MCP 工具、reasoning、调用参数和调用结果都保留完整内容,不截断、不摘要、不保存 delta/started 事件。
|
||||
|
||||
DirectProject 不迁移旧 `{role,content}` 行;实现按新格式工作。
|
||||
|
||||
@@ -31,7 +31,7 @@ DirectProject 不迁移旧 `{role,content}` 行;实现按新格式工作。
|
||||
|
||||
AGC 判定本轮不会再产生新事件时收尾:用户中断、turn failed、无响应/idle timeout、硬超时、transport closed、stdout EOF 或 app-server 卡死终止均属于异常终态;正常 completed 不收尾。
|
||||
|
||||
`item/agentMessage/delta` 带有 `itemId`。AGC 在内存中按 `itemId` 累计 assistant 文本,不实时写 delta。异常终态时,对仍有累计文本的 item 合成普通 Responses assistant `message` item:
|
||||
`item/agentMessage/delta` 正常带有 `itemId`;若协议异常缺失,AGC 记录 warning 并按当前 turn 生成稳定回退 id。AGC 在内存中按该 id 累计 assistant 文本,不实时写 delta。异常终态时,对仍有累计文本的 item 合成普通 Responses assistant `message` item:
|
||||
|
||||
```json
|
||||
{"type":"response_item","payload":{"type":"message","role":"assistant","id":"msg_1","content":[{"type":"output_text","text":"已累计文本"}]}}
|
||||
|
||||
Reference in New Issue
Block a user