Fix/AGC上下文丢失问题 #247

Merged
kdletters merged 22 commits from fix/codex-session-management into master 2026-09-03 19:30:21 +08:00
Member

权衡之后选择附加历史消息构造一个巨大的prompt
before:

1. user:  aabb
2. assistant: bbaa 这里codex崩溃了或者重启上下文丢失

after:
重启之后发送新消息abab
codex看到:

user:  aabb
assistant: bbaa 
这里崩溃了!
user: abab

移除了原来的"会话最后只有用户消息就自动重新发送用户消息"功能, 因为存在冲突: 现在的实现是每次用户手动发送新消息才做以上的步骤

before and after:
shotmd-1788345830.jpg

Close #249

权衡之后选择附加历史消息构造一个巨大的prompt before: ``` 1. user: aabb 2. assistant: bbaa 这里codex崩溃了或者重启上下文丢失 ``` after: 重启之后发送新消息abab codex看到: ``` user: aabb assistant: bbaa 这里崩溃了! user: abab ``` 移除了原来的"会话最后只有用户消息就自动重新发送用户消息"功能, 因为存在冲突: 现在的实现是每次用户手动发送新消息才做以上的步骤 before and after: ![shotmd-1788345830.jpg](/attachments/28549e4d-9913-459a-bae2-a195b8ee9e04) Close #249
k88936 started working 2026-09-02 15:24:11 +08:00
k88936 worked for 2 seconds 2026-09-02 15:24:13 +08:00
k88936 added this to the 陶泥儿gameAgent project 2026-09-02 15:24:29 +08:00
k88936 added 1 commit 2026-09-02 18:38:02 +08:00
明确ephemeral线程与AGC聊天事实源
记录partial中断标记和取消自动重发
k88936 added the due date 2026-09-03 2026-09-02 18:41:35 +08:00
k88936 added 6 commits 2026-09-02 20:00:54 +08:00
读取project.jsonl完整user assistant tool记录
新请求覆盖当前消息并保留ephemeral线程
删除打开项目自动重发旧消息
持久化partial并在新消息前回放完整历史
保留进程内thread的正常连续对话
补充中断恢复与线程重建文档
移除已删除helper的测试导入。

删除已废弃的user-only自动重发用例。
失败事件到达时清空界面中的临时回复。

保留ref中的partial供中断持久化流程使用。
删除Direct打开项目自动重发测试
Project CI / Repository checks (pull_request) Failing after 10s
Project CI / Backend tests (pull_request) Failing after 10s
Project CI / Frontend tests (pull_request) Has been cancelled
Project CI / Native shell tests (pull_request) Has been cancelled
b136a7c346
移除已废弃的hydrated Direct回合自动恢复场景。

保留当前新发送与历史回放语义的测试覆盖。
k88936 force-pushed fix/codex-session-management from 79de326ddc to b136a7c346 2026-09-02 20:00:54 +08:00 Compare
k88936 added 1 commit 2026-09-02 20:03:22 +08:00
Merge branch 'master' into fix/codex-session-management
Project CI / Repository checks (pull_request) Successful in 2m26s
Project CI / Frontend tests (pull_request) Successful in 3m8s
Project CI / Backend tests (pull_request) Successful in 7m12s
Project CI / Native shell tests (pull_request) Failing after 12m58s
300ea76780
k88936 marked the pull request as ready for review 2026-09-02 20:03:29 +08:00
k88936 self-assigned this 2026-09-02 20:03:54 +08:00
Member

审查 head sha b136a7c3464598f4658f37ee2ac05a4507f956f1:明确问题——apps/ai-game-creator-shell/src/services/clientHttp.ts 移除了所有默认请求超时和 AbortController。服务器不可达或响应不返回时,认证初始化会无限停留在检查状态,原有超时错误、重试和降级到登录页路径无法触发。建议恢复默认超时,并为长请求提供显式 opt-out。

审查 head sha `b136a7c3464598f4658f37ee2ac05a4507f956f1`:明确问题——apps/ai-game-creator-shell/src/services/clientHttp.ts 移除了所有默认请求超时和 AbortController。服务器不可达或响应不返回时,认证初始化会无限停留在检查状态,原有超时错误、重试和降级到登录页路径无法触发。建议恢复默认超时,并为长请求提供显式 opt-out。
kdletters requested changes 2026-09-02 20:08:05 +08:00
kdletters left a comment
Member

[head sha: 300ea76780]

明确问题:首次建立(或 app-server 进程重启后重新建立)DirectProject 连接时,build_direct_codex_history_prompt 会读取项目主对话的全部 messages,逐条拼成一个没有任何长度/条数/token 上限的单一 user prompt。该对话文件是持久增长的;因此长时间使用或包含大段工具输出的项目,在重启后第一次发送消息可能超过 Codex/model context window,导致请求失败(或截断/高额 token 消耗),用户仍然丢失上下文,且失败会在每次新连接时重复发生。

建议:在构造恢复 prompt 前按 token/字节预算有界地选择最近消息(必要时保留最近 user/assistant 边界),或使用受支持的历史/compaction 机制;对超预算情况增加可观测的摘要/降级路径,并补充一个超大 conversation 的回归测试,验证恢复请求不会超过配置的 context budget。

[head sha: 300ea76780b9439927cd1341c98efdb0ccd992ff] 明确问题:首次建立(或 app-server 进程重启后重新建立)DirectProject 连接时,`build_direct_codex_history_prompt` 会读取项目主对话的全部 `messages`,逐条拼成一个没有任何长度/条数/token 上限的单一 user prompt。该对话文件是持久增长的;因此长时间使用或包含大段工具输出的项目,在重启后第一次发送消息可能超过 Codex/model context window,导致请求失败(或截断/高额 token 消耗),用户仍然丢失上下文,且失败会在每次新连接时重复发生。 建议:在构造恢复 prompt 前按 token/字节预算有界地选择最近消息(必要时保留最近 user/assistant 边界),或使用受支持的历史/compaction 机制;对超预算情况增加可观测的摘要/降级路径,并补充一个超大 conversation 的回归测试,验证恢复请求不会超过配置的 context budget。
Member

[head sha: 300ea76780]

明确问题:首次建立(或 app-server 进程重启后重新建立)DirectProject 连接时,build_direct_codex_history_prompt 会读取项目主对话的全部 messages,逐条拼成一个没有任何长度/条数/token 上限的单一 user prompt。该对话文件是持久增长的;因此长时间使用或包含大段工具输出的项目,在重启后第一次发送消息可能超过 Codex/model context window,导致请求失败(或截断/高额 token 消耗),用户仍然丢失上下文,且失败会在每次新连接时重复发生。

建议:在构造恢复 prompt 前按 token/字节预算有界地选择最近消息(必要时保留最近 user/assistant 边界),或使用受支持的历史/compaction 机制;对超预算情况增加可观测的摘要/降级路径,并补充一个超大 conversation 的回归测试,验证恢复请求不会超过配置的 context budget。

[head sha: 300ea76780b9439927cd1341c98efdb0ccd992ff] 明确问题:首次建立(或 app-server 进程重启后重新建立)DirectProject 连接时,`build_direct_codex_history_prompt` 会读取项目主对话的全部 `messages`,逐条拼成一个没有任何长度/条数/token 上限的单一 user prompt。该对话文件是持久增长的;因此长时间使用或包含大段工具输出的项目,在重启后第一次发送消息可能超过 Codex/model context window,导致请求失败(或截断/高额 token 消耗),用户仍然丢失上下文,且失败会在每次新连接时重复发生。 建议:在构造恢复 prompt 前按 token/字节预算有界地选择最近消息(必要时保留最近 user/assistant 边界),或使用受支持的历史/compaction 机制;对超预算情况增加可观测的摘要/降级路径,并补充一个超大 conversation 的回归测试,验证恢复请求不会超过配置的 context budget。
Author
Member

使用滑动窗口, 上下文大小复用高级设置中的配置

使用滑动窗口, 上下文大小复用高级设置中的配置
k88936 marked this conversation as resolved
k88936 added 4 commits 2026-09-02 20:16:41 +08:00
让thread_for在同一锁内返回线程是否新建。

仅新建Direct线程时读取project.jsonl并注入历史。

保持已有线程只发送当前用户消息。
在partial持久化处说明普通assistant与中断标记语义。

在技术方案和决策日志记录全量回放与简单前缀的设计原因。
保留原有run_turn_with_direct_observer参数形状。

将历史回放参数收口到内部专用入口。
Merge remote-tracking branch 'origin/fix/codex-session-management' into fix/codex-session-management
Project CI / Backend tests (pull_request) Failing after 9s
Project CI / Repository checks (pull_request) Failing after 15s
Project CI / Frontend tests (pull_request) Successful in 3m0s
Project CI / Native shell tests (pull_request) Successful in 18m39s
ea3c34beef
# Conflicts:
#	docs/project-memory/shared-memory/decision-log.md
k88936 added 1 commit 2026-09-02 20:21:22 +08:00
Merge branch 'master' into fix/codex-session-management
Project CI / Repository checks (pull_request) Successful in 2m42s
Project CI / Frontend tests (pull_request) Successful in 3m11s
Project CI / Backend tests (pull_request) Successful in 5m58s
Project CI / Native shell tests (pull_request) Successful in 17m9s
1132fe5325
k88936 added 4 commits 2026-09-03 11:48:56 +08:00
DirectProject replay 按上下文预算保留最新连续历史

超预算时仅派生裁剪 prompt,不修改 project.jsonl

补充超大历史与当前请求超限测试
补充 Direct replay 有界历史设计
Project CI / Repository checks (pull_request) Failing after 13s
Project CI / Backend tests (pull_request) Failing after 10s
Project CI / Frontend tests (pull_request) Successful in 2m45s
Project CI / Native shell tests (pull_request) Successful in 19m23s
e73d04db00
记录不可变 project.jsonl 与滑动窗口恢复约定

说明 system 标记、预算边界和超限失败语义
k88936 added 1 commit 2026-09-03 11:52:09 +08:00
Merge remote-tracking branch 'origin/master' into fix/codex-session-management
Project CI / Backend tests (pull_request) Successful in 6m8s
Project CI / Repository checks (pull_request) Successful in 2m55s
Project CI / Frontend tests (pull_request) Successful in 3m37s
Project CI / Native shell tests (pull_request) Successful in 17m5s
ff1f77f88a
# Conflicts:
#	docs/project-memory/shared-memory/decision-log.md
kdletters requested changes 2026-09-03 11:55:00 +08:00
kdletters left a comment
Member

[head sha: e73d04db00]

明确问题:本次新增的 DirectProject 重建逻辑依赖项目对话 JSONL 来恢复上下文,但当前调用链只在回复成功后持久化 assistant(direct_runtime.rs:4241),没有持久化本轮 user 消息。因而 read_local_conversation_for_session_at 读不到此前的用户请求;一旦 app-server 进程重启/线程被淘汰,重建 prompt 只会带上 assistant/tool 记录,用户提出的原始需求和连续意图会丢失,正是本 PR 要修复的上下文丢失问题。建议在发起 turn 前以 direct-codex:{clientTurnId}:user 幂等写入规范化后的 user prompt,并在失败/重试路径明确其状态,补充重启后恢复多轮 user/assistant 的回归测试。

[head sha: e73d04db0030420b85698a39adea53e204b26bab] 明确问题:本次新增的 DirectProject 重建逻辑依赖项目对话 JSONL 来恢复上下文,但当前调用链只在回复成功后持久化 assistant(direct_runtime.rs:4241),没有持久化本轮 user 消息。因而 `read_local_conversation_for_session_at` 读不到此前的用户请求;一旦 app-server 进程重启/线程被淘汰,重建 prompt 只会带上 assistant/tool 记录,用户提出的原始需求和连续意图会丢失,正是本 PR 要修复的上下文丢失问题。建议在发起 turn 前以 `direct-codex:{clientTurnId}:user` 幂等写入规范化后的 user prompt,并在失败/重试路径明确其状态,补充重启后恢复多轮 user/assistant 的回归测试。
@@ -3152,0 +3231,4 @@
base_request: &LlmRunRequest,
llm: &GameCreatorLlmConfig,
) -> Result<String, String> {
let conversation = read_local_conversation_for_session_at(root, None, None)?;
Member

[P1] 重建历史缺少 user 消息:此处读取的 project.jsonl 只会包含成功回复后持久化的 assistant(当前调用链未写入本轮 user),所以重启/线程淘汰后恢复 prompt 丢失用户原始需求。请在 turn 开始前幂等持久化 direct-codex:{clientTurnId}:user,并补充重启恢复多轮 user/assistant 测试。

[P1] 重建历史缺少 user 消息:此处读取的 project.jsonl 只会包含成功回复后持久化的 assistant(当前调用链未写入本轮 user),所以重启/线程淘汰后恢复 prompt 丢失用户原始需求。请在 turn 开始前幂等持久化 `direct-codex:{clientTurnId}:user`,并补充重启恢复多轮 user/assistant 测试。
k88936 marked this conversation as resolved
k88936 added 1 commit 2026-09-03 13:24:36 +08:00
修复 DirectProject 回合上下文持久化
Project CI / Repository checks (pull_request) Failing after 13s
Project CI / Backend tests (pull_request) Failing after 9s
Project CI / Frontend tests (pull_request) Successful in 3m19s
Project CI / Native shell tests (pull_request) Has been cancelled
da1759322c
回合开始前幂等持久化规范化 user prompt
附件回合统一由 Rust 写入规范化历史,避免原始消息冲突
补充重启后多轮 user/assistant 历史恢复测试
同步 DirectProject replay 文档合同
k88936 added 1 commit 2026-09-03 13:31:43 +08:00
Merge branch 'master' into fix/codex-session-management
Project CI / Backend tests (pull_request) Successful in 7m28s
Project CI / Repository checks (pull_request) Failing after 1m8s
Project CI / Frontend tests (pull_request) Successful in 3m37s
Project CI / Native shell tests (pull_request) Failing after 18m11s
41b660bdc4
k88936 requested review from kdletters 2026-09-03 13:51:16 +08:00
k88936 added 1 commit 2026-09-03 16:08:19 +08:00
Merge branch 'master' into fix/codex-session-management
Project CI / Backend tests (pull_request) Successful in 7m57s
Project CI / Native shell tests (pull_request) Successful in 21m28s
Project CI / Repository checks (pull_request) Successful in 2m41s
Project CI / Frontend tests (pull_request) Successful in 2m57s
0b6efd98fe
kdletters added 1 commit 2026-09-03 19:30:14 +08:00
Merge branch 'master' into fix/codex-session-management
Project CI / Frontend tests (pull_request) Successful in 3m41s
Project CI / Backend tests (pull_request) Successful in 8m6s
Project CI / Repository checks (pull_request) Successful in 3m22s
Project CI / Native shell tests (pull_request) Successful in 21m49s
9b1e06b50a
kdletters merged commit 520b9344ef into master 2026-09-03 19:30:21 +08:00
Sign in to join this conversation.
No Reviewers
2 Participants
Notifications
Total Time Spent: 2 seconds
k88936
2 seconds
Due Date
2026-09-03
Dependencies

No dependencies set.

Reference: GenarrativeAI/Genarrative#247