Commit Graph

1393 Commits

Author SHA1 Message Date
k88936 bc115002d4 重构:去掉终态判定里多余的 TurnError clone
- turn_completion.rs:collect_outcome 按值匹配,Err(error) 已是 owned,Some(error.clone()) 改为 Some(error),省掉一次整份错误载荷的克隆
- 行为不变:host_failure 那一支仍是 &TurnError,需要 clone 的保留
2026-10-03 13:40:15 +08:00
k88936 d7d09f310c 合并:把 origin/master 并入回合错误重构分支并保留双方行为
- 解决 direct_runtime/mod.rs 冲突:保留本分支 typed 回合错误重构(TurnError/EnqueueError 与 record_direct_codex_failure_facts 拆分),接入 master 的诊断 v3 口径(persist_agent_runtime_error 新签名 + typed error 字段)、prompt 反馈改截断不脱敏、项目写锁改名
- 解决 thread_manager/dispatch.rs 冲突:保留本分支 TurnError/TurnCompletion 换代与 finish_turn_failure 分类层,接住 master 的 tt= 日志改名与 cc 执行器整轮成功后补写 completed 终态
- 解决 direct_tools_mcp.rs 冲突:采用 master 版(本分支唯一改动是 external MCP 容量测试读 body,master 已有等价实现)
- 处理 direct_turn_failure.rs 删除/修改冲突:维持本分支删除,把 completed() 语义迁进 TurnCompletion::Completed 并补回对应测试
- 处理 runtime_driver/entrypoints.rs 修改/删除冲突:接受 master 退役自建 Agent Runtime 的删除(本分支只在该文件做 direct_now_ms 改名)
- 合并 decision-log.md:双方条目都保留
- 修复 auto-merge 漏掉的语义冲突:claude_code_cli.rs 的 direct_now_ms() 改名 now_ms();诊断测试改为断言 AGENT_RUNTIME_ERROR_SCHEMA_VERSION、detail 字段改 message;record_direct_codex_failure_facts 新增 typed_error 入参(TurnError 不序列化,落盘用 classify 投影出的 TurnFailure)
2026-10-03 13:12:10 +08:00
k88936 10436a641c 注释:补充 ShouldContinue 变体的字符串类型设计说明 2026-10-03 12:21:39 +08:00
k88936 68cb41e332 重构:ThreadManager 停止对线程条目脱敏与限长,改为原样透传
- 删除 wire/items.rs 的 bounded / detail_text / sanitize_detail_text / relativize_project_root_paths / thread_delta_text 与三个字符上限常量
- thread_item_from_value / thread_items_from_history / 运行态条目 / 流式增量签名去掉 root,字段原样透传,脱敏交给事件进前端状态时统一做
- dispatch.rs 写历史失败不再预脱敏,原文交给 classify 投影成失败载荷时统一脱敏 + 截断
- 用例改为"原样透传"口径,删除已无对象的流式脱敏用例
- 失败载荷(错误文案)的脱敏保留
2026-10-03 11:53:01 +08:00
kdletters 25beb3ad59 修复 cc 回复只在重进项目时才可见:补下发 item.completed 事件
Project CI / AI game creator shell Rust crates (push) Successful in 1m16s
Project CI / AI game creator shell Rust lane 1/2 (push) Successful in 4m50s
Project CI / AI game creator shell Rust lane 2/2 (push) Successful in 4m33s
Project CI / Backend tests (push) Successful in 4m1s
Project CI / Frontend tests (push) Successful in 2m31s
Project CI / AI game creator shell web tests (push) Successful in 1m55s
Project CI / Repository checks (push) Successful in 2m49s
Project CI / Native shell tests (push) Successful in 5m9s
- claude_code_cli.rs 在 cc 解析成功、回复落盘之后,用同一个条目 id 下发 ThreadEvent::item_completed(ThreadItem::Message{role:"assistant"}),聊天区按事件流投影即可实时显示本轮回复
- 之前只落盘 project.jsonl、不下发条目事件,用户看到的是"用户气泡 + 本轮结束于 … · 耗时",回复要重进项目才从历史读出来
- pitfalls.md 补记第四条根因与 CDP + DOM 断言验收证据
2026-10-03 11:42:52 +08:00
k88936 11e98a3cae 重构:回合错误的处置分类层取代 Option,并合并 SessionOutcome
- TurnError::terminal_failure 的 Option<TurnFailure> 换成 TurnError::classify -> TurnErrorClassified{ShouldStop, ShouldContinue},控制流不再借 None 表达
- dispatch.rs 两处 .expect("回合失败必可投影成失败载荷") 改为按分类层 match,收到 ShouldContinue 不写终态、不伪造失败
- turn_terminal 不再用 and_then 压平;ShouldContinue 显式认账并落到账本正常终态
- 并掉 private SessionOutcome,收尾 status 解析直接产出 TurnCompletion
- TurnFailure 补 // TODO badnaming,同步更新相关文档注释
2026-10-03 11:42:48 +08:00
k88936 c7e51266c8 Merge pull request 'fix/资源编辑错误通道补 typed 错误并把平台失败原文带出' (#589) from fix/res-edit-error-handling into master
Project CI / AI game creator shell Rust crates (push) Successful in 1m56s
Project CI / AI game creator shell Rust lane 2/2 (push) Successful in 4m14s
Project CI / AI game creator shell Rust lane 1/2 (push) Successful in 4m40s
Project CI / Backend tests (push) Successful in 4m37s
Project CI / Frontend tests (push) Successful in 2m27s
Project CI / AI game creator shell web tests (push) Successful in 2m19s
Project CI / Native shell tests (push) Successful in 5m30s
Project CI / Repository checks (push) Successful in 2m52s
Reviewed-on: #589
2026-10-03 11:32:40 +08:00
kdletters 3f0895fa41 修复 cc 回合"模型已回复却报宿主任务提前结束",并放行宿主 MCP 工具
Project CI / AI game creator shell Rust crates (push) Successful in 1m45s
Project CI / Frontend tests (push) Has been cancelled
Project CI / Repository checks (push) Has been cancelled
Project CI / Backend tests (push) Has been cancelled
Project CI / AI game creator shell web tests (push) Has been cancelled
Project CI / AI game creator shell Rust lane 1/2 (push) Has been cancelled
Project CI / AI game creator shell Rust lane 2/2 (push) Has been cancelled
Project CI / Native shell tests (push) Has been cancelled
- thread_manager/dispatch.rs 在放行成功出口补写 DirectTurnTerminal::completed():cc 执行器没有 codex app-server 那条深层终态出口,否则占用对象兜底会把已拿到回复的回合收成 HostDropped
- direct_turn_failure.rs 新增 completed() 终态(status=completed、无失败载荷)与对应单测
- claude_code_cli.rs 在 cc 解析成功后把回复按 response_item/assistant 落进 .agent/conversations/project.jsonl(id=direct-codex:<clientTurnId>:assistant),落盘失败按回合失败收口
- agent-sidecar 按 mcp__<server> 前缀放行请求声明的 MCP 服务器,避免 dontAsk 模式下宿主工具被直接拒绝
- dispatch.rs 的 host_dropped / panic 诊断字段改用 tt=,不再被日志脱敏整行吃掉(原 turnToken= 命中凭据标记)
- pitfalls.md 记录三条根因、现行口径、诊断口径与 CDP 注入验收证据
2026-10-03 11:28:07 +08:00
k88936 2dbbf72450 修复:模型调用失败改按 typed kind 判定通道断开
Project CI / AI game creator shell Rust smoke (pull_request) Successful in 2m39s
Project CI / Backend tests (pull_request) Failing after 16s
Project CI / AI game creator shell Rust crates (pull_request) Failing after 3m14s
Project CI / Frontend tests (pull_request) Successful in 2m4s
Project CI / Repository checks (pull_request) Failing after 22s
Project CI / AI game creator shell web tests (pull_request) Successful in 1m46s
Project CI / AI game creator shell Rust lane 2/2 (pull_request) Successful in 9m14s
Project CI / Native shell tests (pull_request) Successful in 6m20s
Project CI / AI game creator shell Rust lane 1/2 (pull_request) Failing after 12m24s
- direct_codex_error_code 原来对 ModelCallFailed 一律按宿主原文子串分类,ModelCallKind::TransportBroken 只有在原文恰好含 transport closed / 连接已关闭 时才会标成 transport-closed
- 改为先看 payload.kind:TransportBroken 直接给 transport-closed,其余 kind 仍按原文兜底(TODO 文本判据)
- 补用例 model_call_transport_broken_is_classified_from_the_typed_kind:原文不含任何分类标记,也只可能由 typed kind 得出该 code
2026-10-03 10:59:28 +08:00
k88936 40b79bb1ec 重构:turn.completed 的 status 由自由字符串收成 typed 枚举
- 新增 TurnCompletedStatus(completed / interrupted / aborted / failed),作为 turn.rs 里 status 字段的类型
- 新增只作构造参数的 TurnOutcome(completed / interrupted / aborted):turn_completed 拿不到 Failed,"failed 但没有失败载荷"在构造层就写不出来
- turn_completed_failed 固定写 TurnCompletedStatus::Failed,载荷与状态在同一条构造路径上
- 内部状态比较与用例断言改为比较枚举取值;线上 JSON 形状、字段名与前端契约不变
- 重新生成绑定:新增 TurnCompletedStatus.ts,ThreadEvent.ts 的 status 由 string 收成字面量联合
2026-10-03 10:55:04 +08:00
k88936 fb80c7d5e4 发行包上传用 From 收敛结构化错误,替换重复的 map_err
- 为 GamePackageUploadError 实现 From<GamePackageUploadError> for String
- upload_staged_game_package 中三处 .map_err(|e| e.to_user_msg()) 改为 ?,Fatal 分支改为 error.into()
2026-10-03 10:54:29 +08:00
k88936 b4bbd08414 发行包上传错误 detail 去掉与步骤标签重复的前缀
- 读取响应/分片响应/完成响应失败改为直接给原始 error,步骤由 GamePackageUploadStep 标签提供
- JSON 解析与缺字段的 detail 去掉「上传状态响应」「分片响应」「完成响应」等重复主语
2026-10-03 10:52:32 +08:00
k88936 b3ed1c0f80 发行包上传抽 server_error_detail,统一 message/code/兜底顺序
- game_package_upload.rs 新增 pub(crate) server_error_detail,统一先取非空 message 再退非空 code 的顺序
- runtime.rs 五处 HTTP 错误分支改用该 helper,删除各自复制的过滤逻辑
- game_distribution_publish.rs 的 response_data 与 map_http_error 共用同一 helper
- FORBIDDEN 分支改用 helper,补上此前缺失的空 message trim 过滤
2026-10-03 10:51:29 +08:00
k88936 fc10b2359e 修复:线程条目投影的上游字符串统一走脱敏与限长
- FunctionCall.name 原来既不脱敏也不截断,改为走 detail_text(脱敏 + THREAD_DETAIL_MAX_CHARS)
- McpToolCall.tool 原来只脱敏不截断,改为 detail_text
- CommandExecution.status、McpToolCall.status、ThreadItem::Other.raw_type、ThreadFileChange.kind 原来原样拷贝,统一按 THREAD_DETAIL_MAX_CHARS 限长,避免单条事件突破声明的事件通道预算
2026-10-02 22:31:05 +08:00
k88936 e9ad1f3ddb RunFailure Display 去掉多余的一次 String 分配
- codex_app_server/mod.rs:Self::Failed(error) 用 write!(formatter, "{error}") 直接走 Display,不再先 error.to_string() 再 write_str
2026-10-02 22:26:35 +08:00
k88936 25213c9ff7 修复空 text 短路 content 兜底导致条目丢失
- items.rs:item_text 先判空/全空白再回落 content/summary;此前 Some("") 会短路兜底,末尾非空过滤把整条 message/reasoning 丢掉
- wire/tests.rs:补空 text + 有 content 的回归用例
2026-10-02 22:26:12 +08:00
k88936 c0ad48798f Merge remote-tracking branch 'origin/master' into fix/res-edit-error-handling
Project CI / AI game creator shell Rust crates (pull_request) Successful in 2m1s
Project CI / AI game creator shell Rust lane 2/2 (pull_request) Failing after 3m51s
Project CI / Backend tests (pull_request) Successful in 4m43s
Project CI / AI game creator shell Rust lane 1/2 (pull_request) Successful in 4m48s
Project CI / Frontend tests (pull_request) Successful in 2m19s
Project CI / AI game creator shell web tests (pull_request) Successful in 2m26s
Project CI / Repository checks (pull_request) Successful in 2m53s
Project CI / Native shell tests (pull_request) Successful in 6m5s
2026-10-02 22:21:24 +08:00
k88936 9a75ea57f0 修复两处过期用例并补记 Direct 失败载荷改名与透传口径
- 修复 direct_tools_mcp 容量用例:handler 已改为返回 Response,改为取出 body 后再断言 JSON-RPC id
- 修复 direct_runtime 命令边界诊断用例:改为断言结构化 sidecar(schemaVersion/source/stage/code/clientTurnId/detail),不再断言早已不落盘的 direct-codex-failure:v2 文案
- AGC 命令错误 ADR 补记 TurnFailure 两个字符串债臂的命名与“terminal_failure 是唯一投影点、不许重包”口径
- 决策记录新增 2026-10-02 条目:两臂改名(SuperErrorFromStringPlusStage / Unclassified)与 typed 失败原样下发
- 排查记录补充:cargo test 过滤是子串匹配,会连带命中 export_bindings 并重写生成目录,用 --skip export_bindings 避开
2026-10-02 22:19:36 +08:00
k88936 cdccfa6cd5 发行包上传失败带出「哪一步」子枚举
新增 GamePackageUploadStep(ReadUploadState / UploadChunk / CompleteUpload)与 GamePackageUploadError { step, detail }
read_upload_state / upload_chunk / complete_upload 改返回 typed 错误,detail 只放服务端 message / code / HTTP {status}
步骤名由 step 枚举渲染,不再靠各调用点硬拼「读取上传状态失败」这类前缀
upload_staged_game_package 在三个远端调用点 .map_err(to_user_msg);本地错误与对外签名保持 String,两处调用方零改动
2026-10-02 22:19:27 +08:00
k88936 29eed573a0 重命名 Direct 回合失败载荷并让 typed 失败原样下发
- TurnFailed 更名为 SuperErrorFromStringPlusStage:只有 stage 是 typed,detail 仍是产生层字符串
- TurnFailedUnclassified 更名为 Unclassified:深层字符串兜底,连交付阶段都没有
- 拆掉 direct_runtime 与 thread_manager 两处收口重包,typed 失败原样投影成失败载荷
- 审计写盘保留,只是不再把 direct-codex-failure:v2 收口文案当失败载荷的 detail
- 生成绑定重导出(旧 TurnFailed/TurnFailedUnclassified 生成文件删除),前端分支与 directThreadChat 用例同步改名
- 命名债注释补记:这两个载荷臂与 SuperErrorEnumFromStringTyped 属同一笔待清债
2026-10-02 22:11:41 +08:00
k88936 1a99a2f26b 发行包上传 HTTP 兜底先过滤 message 再退 code
read_upload_state / upload_chunk(retryable、fatal) / complete_upload 四处 .or(code).filter 顺序反了
空 message 会把服务端 code 一起吞掉,统一改成 filter(message).or_else(|| code.filter(...))
2026-10-02 22:09:02 +08:00
k88936 a0428da5d1 HTTP 错误兜底先过滤 message 再退 code,避免空 message 吞掉 code
game_distribution_publish response_data 的 message.or(code).filter 顺序反了,空 message 会连 code 一起丢掉
map_http_error 同类顺序问题一并修正(review 未列,属同一类 bug)
2026-10-02 22:08:53 +08:00
k88936 675dfe0c8f account_api 抽出 error_field 消除 message/code 的重复解析
error_message / error_code 只差字段名,合并到 error_field(body, field)
调用点保留 error_message / error_code 两个薄封装
2026-10-02 22:08:44 +08:00
k88936 883bcb182d HTTP 错误兜底优先服务端 code,叶子不再拼操作名前缀
game_package_upload 三处不再丢弃服务端 code,改成 message → code → HTTP {status}
去掉「读取上传状态失败(HTTP 503)」这类叶子里的操作名前缀,操作名交给调用方话术
game_distribution_publish response_data 用上被丢掉的 error.code
game_distribution_publish 封面任务终态兜底统一成「服务器未返回错误信息」
account_api envelope 分支补 error.code 兜底
2026-10-02 20:17:00 +08:00
k88936 14afd21d7e 资源编辑错误文案只认平台 error 原文,phaseDetail 只进诊断
RemoteResourceEditFailure / ResourceEditError 的 to_user_msg 只回平台 error 原文,平台没给时回「服务器未返回错误信息」
typed 错误新增 phaseDetail 字段,只随诊断 sidecar 序列化,不参与用户文案
远端轮询 failed 分支同时读取 error 与 phaseDetail
删除断言 to_user_msg 字面量的单测,只保留 typed 字段原样序列化进诊断的结构断言
canvas_generation 远端 failed 分支不再拿 phaseDetail 当用户文案
同步 decision-log 与 pitfalls
2026-10-02 20:16:47 +08:00
kdletters db0332ea09 把 AGC 的 cc 执行器与本机 Claude Code 配置彻底隔离
Project CI / AI game creator shell Rust crates (push) Successful in 1m43s
Project CI / AI game creator shell Rust lane 2/2 (push) Successful in 4m14s
Project CI / Backend tests (push) Successful in 4m38s
Project CI / AI game creator shell Rust lane 1/2 (push) Successful in 5m23s
Project CI / Frontend tests (push) Successful in 2m8s
Project CI / Native shell tests (push) Successful in 6m11s
Project CI / Repository checks (push) Successful in 3m15s
Project CI / AI game creator shell web tests (push) Successful in 2m34s
- sidecar 子进程把 HOME、USERPROFILE、CLAUDE_CONFIG_DIR 全部指向项目内隔离目录,不再读用户自己的 ~/.claude.json(个人 MCP、插件市场、凭据),也不再往真实 profile 写 projects / sessions
- requestTimeoutMs 在 cc 执行器里改为静默预算:sidecar 每有一条事件就重置,连续静默超预算才按 sidecar-turn-timeout 收口
- 新增 CLAUDE_CODE_TURN_MAX_DURATION(45 分钟)兜底事件流假活,正常情况更早到的是 DirectProject 的 maxTurnSeconds
- claude_route 诊断行改成 source / host / auth,避开日志脱敏标记(原 credential=bearer 会被整行替换)
- 新增 sidecar 环境隔离单测:USERPROFILE / CLAUDE_CONFIG_DIR 指向隔离目录,且不下发本机 ANTHROPIC_*
- pitfalls.md 记录配置隔离、静默超时语义与脱敏标记的坑
2026-10-02 19:54:13 +08:00
kdletters c5673c5757 修复 AGC 的 cc 路由被本机 ANTHROPIC_* 环境顶掉
- claude_code_cli.rs 用 claude_code_route 统一决定 cc 的 baseUrl 与凭据:平台会话 > 自定义端点 > 配置 key,本机 ANTHROPIC_BASE_URL / ANTHROPIC_AUTH_TOKEN / ANTHROPIC_API_KEY 完全不再参与
- 未登录且没配 key 时由 game_creator_claude_code_cli_route_error 明确报「cc 模式需要先登录陶泥儿账号」,不再静默回落到用户个人中转
- 不再把 ANTHROPIC_API_KEY、ANTHROPIC_AUTH_TOKEN 放进 sidecar 的 copy_env 白名单,凭据只由解析出的路由下发
- 新增 agent.direct_codex.claude_route 诊断行(source / host / credential),只写主机名,不带路径与凭据
- 新增 claude_code_cli 路由单测:平台优先、自定义端点用 x-api-key、未登录不回落本机环境、baseUrl /v1 归一化、主机名诊断
- pitfalls.md 记录本次「官方模型全被发到用户个人中转」的根因、现行口径与排查手段
2026-10-02 19:30:59 +08:00
k88936 d62afe3275 图片生成远端失败不再兜底一句重复的「生成任务失败」
- canvas_generation 轮询到 status=failed 时,平台既没给 error 也没给 phaseDetail 的兜底由「生成任务失败」改为「服务器未返回错误信息」,不再和句首「平台图片生成任务失败:」重复
- decision-log 追加同类兜底决策,说明这条与资源编辑同属「缺省时要说清是服务器没给信息,而不是再喊一次失败」
2026-10-02 19:30:03 +08:00
k88936 a932c9635e 资源编辑 typed 错误只给事实,前缀交给使用方
- ResourceEditError::to_user_msg 不再拼「资源编辑生成失败」:远端终态只回平台 error 原文,平台没给时统一说「服务器未返回错误信息」
- 桌面命令面 derive/resume_local_project_resource 自己补「资源编辑生成失败:」前缀,桌面 UI 文案不变,前缀落在它真正的使用者这一层
- 单测:typed 错误断言原文逐字透传与缺省兜底;抠图远端失败测试同口径更新
- decision-log 追加「前缀归属」决策(工具面各用各的前缀、桌面面用资源编辑生成失败、叶子错误不写死总结),pitfalls 同步口径
2026-10-02 19:29:49 +08:00
k88936 44dd809e9a 工具错误不再写死「资源编辑生成失败」前缀
- RemoteResourceEditFailure::to_user_msg 只回平台 error 原文,平台没给时统一说「服务器未返回错误信息」,不再拼一句没有信息量的总结
- 前缀交给使用它的工具自己加:生成/派生侧「生成或派生资源失败:」、抠图侧「抠图失败:」,两侧文案回到各自工具的既有口径
- 载体仍是两个工具共用的 RemoteResourceEditFailure,平台原文照旧整段进诊断的 typed error
- 补单测:载体层断言原文逐字透传与缺省兜底,工具层断言各自前缀下的文案
2026-10-02 19:29:33 +08:00
k88936 cdccb7a06a 去掉抠图资源编辑调用上冗余的凭据 wrapper
- remove_background_payload 的恢复与派生两处不再套 with_direct_editor_api_credentials_as:整个 payload 已在 bridge_remove_background 的 with_direct_editor_api_credentials 作用域内,内层凭据解析只会命中 override
- 因此 ResourceEditError::Other 作为 credentials_error 的分支不可达,删掉以免误导(凭据失败仍按原路径落到 CredentialsUnavailable)
- 保留 Box::pin(资源编辑 future 体积问题不变),注释改为同时说明装箱原因与凭据作用域来源
2026-10-02 19:14:57 +08:00
kdletters fcb3f2d258 修复 process_identity 在 dev feature 组合下编不过
Project CI / AI game creator shell Rust crates (push) Successful in 1m14s
Project CI / AI game creator shell Rust lane 1/2 (push) Successful in 5m28s
Project CI / AI game creator shell Rust lane 2/2 (push) Successful in 4m44s
Project CI / Backend tests (push) Successful in 4m40s
Project CI / Frontend tests (push) Successful in 2m47s
Project CI / Repository checks (push) Successful in 3m22s
Project CI / AI game creator shell web tests (push) Successful in 2m25s
Project CI / Native shell tests (push) Successful in 6m44s
- process_identity:补 use std::io;,dev 构建(no-default-features + editor-execute)下 io::Error 解析不到,挡住本地开发栈启动
2026-10-02 18:51:11 +08:00
kdletters a5c2ddb917 cc 收尾解析补不过脱敏的失败诊断
Project CI / AI game creator shell Rust crates (push) Successful in 1m48s
Project CI / AI game creator shell Rust lane 1/2 (push) Has been cancelled
Project CI / Frontend tests (push) Has been cancelled
Project CI / Repository checks (push) Has been cancelled
Project CI / Backend tests (push) Has been cancelled
Project CI / AI game creator shell web tests (push) Has been cancelled
Project CI / AI game creator shell Rust lane 2/2 (push) Has been cancelled
Project CI / Native shell tests (push) Has been cancelled
- claude_code_cli:parse 之后写 claude-parse-done chars=N / claude-parse-error 分段 trace,失败时再往 stderr 打一行 [agc-cc-direct] parse failed: <原因>
- 起因:2026-10-02 18:19 那轮模型已回复(33/103 tokens,149 秒)却在 claude-parse-start 之后被丢弃收成 host_dropped,AppData 日志因文本含 turnToken= 被整体脱敏,看不到原因
2026-10-02 18:47:28 +08:00
k88936 d2a5bceaba 资源编辑远端失败原文透传到工具错误与诊断
Project CI / Backend tests (pull_request) Failing after 29s
Project CI / AI game creator shell Rust crates (pull_request) Successful in 1m48s
Project CI / AI game creator shell Rust lane 2/2 (pull_request) Successful in 3m54s
Project CI / Repository checks (pull_request) Failing after 15s
Project CI / Frontend tests (pull_request) Successful in 2m50s
Project CI / AI game creator shell Rust lane 1/2 (pull_request) Successful in 5m28s
Project CI / AI game creator shell web tests (pull_request) Successful in 2m55s
Project CI / Native shell tests (pull_request) Successful in 6m48s
- agent/tool/error.rs 新增共用载体 RemoteResourceEditFailure { serverMessage },两个工具的平台失败文案只写一份
- CreateOrDeriveResourceError 与 RemoveBackgroundError 各加 RemoteGenerationFailed(RemoteResourceEditFailure) 变体,远端终态失败不再压回字符串
- 两个工具各加显式 from_resource_edit_error 翻译,不用 impl From<ResourceEditError>;Other 仍落回各工具原有的「失败:<文案>」变体并留 TODO
- 桥里四个资源编辑调用点改用 typed 入口,并 Box::pin 后再 await:资源编辑 future 内联会顶穿 handle_direct_tool_bridge 状态机的调试测试线程栈
- assets.rs 新增 with_direct_editor_api_credentials_as,保留调用方 error 类型,凭据解析失败由调用方显式翻译成 ResourceEditError::Other,旧名与其余调用点零改动
- 工具错误模块补单测:平台原文进 message、进序列化的 typed 错误,无原文与未分类失败各自的文案
- decision-log 补工具层承载、凭据作用域错误类型、future 装箱三条决策与真实验证结果;pitfalls 补工具层原样透传口径
2026-10-02 18:43:07 +08:00
k88936 f68773db9a 资源编辑错误通道补 typed 错误并把平台失败原文带出
- 新增 project/resource_editor/error.rs:ResourceEditError 只有 RemoteGenerationFailed { server_message } 与 Other(String) 两个变体,to_user_msg 是唯一写「资源编辑生成失败:…」的地方,Other 上留 // TODO refactor string-typed
- 轮询到 status=failed 时读平台 error 原文装进 RemoteGenerationFailed 带出,账本仍只写 terminal_failure_code,原文不进账本
- 删掉轮询与提交期 HTTP 400 两处首句失败文案的 remote-terminal-failed 前缀;ensure_resource_edit_phase_resumable 里的三个 token 保留
- 两个入口拆成 typed 实现与 Result<_, String> 外观:derive_local_project_resource_typed / resume_local_project_resource_edit_typed,旧名映射 to_user_msg 供既有调用点与 Tauri 命令使用
- 不提供 impl From<String>,每处 String 错误显式 .map_err(ResourceEditError::Other)
- terminal_failure_code 加 // TODO clean unnecessary 并写明清理前置条件(字段无 skip_serializing_if、账本带 deny_unknown_fields)
- 测试:远端终态断言平台原文进文案且不进账本,抠图远端失败改用 typed 入口覆盖无 error 时的兜底
2026-10-02 18:42:41 +08:00
k88936 bee23a0a25 重构:文本判据债改名 SuperErrorEnumFromStringTyped 并写清上游改造 TODO
- turn_error.rs 把 DomainFact 改名为故意扎眼的 SuperErrorEnumFromStringTyped,标记"从字符串读出的 typed 失败事实表"这笔待清债
- TODO 从"产生层还没有 typed 出口"改为明确指向上游改造:让产生层直接产出 typed 变体/结构化子错误、判定层改 match,之后整张表与 classify_direct_codex_error 一起删
- enum 注释写明这个名字是债标记:禁止把它改漂亮,只允许按 TODO 删掉整张表
- 只改名与注释,不改任何判定逻辑
2026-10-02 18:10:39 +08:00
k88936 394b8de9d2 重构:DirectProject 回合错误去前缀、拆分 wire 模块、终态改判别联合
- 三条错误表去冗余前缀:DirectTurnError→TurnError、DirectTurnEnqueueError→EnqueueError、DirectTurnFailure→TurnFailure、DirectTurnDeadline→Deadline、DirectCodexFailureStage→FailureStage、DirectCodexNativeKind→NativeKind、DirectModelCallKind→ModelCallKind
- 用户条目去前缀:DirectCodexUserItem→UserItem 等六个类型;agent/direct_turn_error.rs 移到 codex_app_server/turn_error.rs
- thread_manager/wire.rs 拆为 wire/{mod,clock,items,turn,failure,tests}.rs;direct_turn_failure.rs 的失败载荷并入 wire/failure.rs
- 宿主侧回合终态从 struct TurnTerminal 改为 enum TurnCompletion{Completed,Interrupted,Aborted,Failed},从 wire 移到 thread_manager/turn_completion.rs,status 由变体反推
- 过期回合释放兜底改走 TurnCompletion::Aborted.event
- 同步生成绑定、前端调用点与测试;修正终态单测里过时的 TransportClosed 断言
- 对 src-tauri 全量 cargo fmt,满足 pre-commit 的 rustfmt 门禁
2026-10-02 18:10:17 +08:00
k88936 3e9a059d16 Merge remote-tracking branch 'origin/master' into feat/typed-tool-error
Project CI / AI game creator shell Rust crates (pull_request) Successful in 1m49s
Project CI / AI game creator shell Rust lane 1/2 (pull_request) Successful in 4m32s
Project CI / AI game creator shell Rust lane 2/2 (pull_request) Successful in 4m32s
Project CI / Backend tests (pull_request) Successful in 4m34s
Project CI / Frontend tests (pull_request) Successful in 2m33s
Project CI / AI game creator shell web tests (pull_request) Successful in 2m31s
Project CI / Native shell tests (pull_request) Successful in 5m36s
Project CI / Repository checks (pull_request) Successful in 3m9s
2026-10-02 16:56:45 +08:00
k88936 2a3e64a999 格式化 AGC 壳 Rust 源码(rustfmt)
- cargo fmt --all --manifest-path apps/ai-game-creator-shell/src-tauri/Cargo.toml
- 覆盖退役与合并期间改动的 27 个文件,恢复 check:rustfmt 门禁
2026-10-02 16:36:44 +08:00
k88936 5ffd7dcd0a 修正 AGC 退役后 prompt 边界门禁用例引用已删除源文件
- prompt_source_boundaries.rs 移除 src/agent/prompt.rs、runtime_actions/provider_request_builders.rs、runtime_actions/provider_tool_plan.rs、agent_native_tools.rs、context_compaction.rs、goal.rs、generation/run_lifecycle.rs、generation/role_briefs.rs、runtime_protocol/autonomous_completion.rs、runtime_driver/task_start.rs 等已随自建 Runtime 退役的条目
- prompt_source_boundaries.rs 的常量门禁与工具描述门禁同步移除 runtime_driver.rs、agent_native_tools.rs 条目
- runtime_prompt_bundle_build.rs 删除 provider_request_builders.rs、provider_tool_plan.rs、agent/prompt.rs 三个已退役文件的断言;「不得再内联 prompt 正文」由 src 全树 include_str! 扫描继续兜底
2026-10-02 16:36:35 +08:00
kdletters e1b304d390 自定义 Anthropic 端点改用 x-api-key 出示凭据
Project CI / AI game creator shell Rust crates (push) Successful in 1m56s
Project CI / AI game creator shell Rust lane 2/2 (push) Failing after 2m12s
Project CI / AI game creator shell Rust smoke (push) Successful in 2m26s
Project CI / AI game creator shell Rust lane 1/2 (push) Failing after 4m5s
Project CI / Frontend tests (push) Successful in 3m26s
Project CI / Backend tests (push) Successful in 5m20s
Project CI / Repository checks (push) Successful in 3m26s
Project CI / AI game creator shell web tests (push) Successful in 2m8s
Project CI / Native shell tests (push) Successful in 7m43s
- claude_code_cli:custom 模型(用户自带 key 的 Claude 兼容端点)下把 key 放到 ANTHROPIC_API_KEY,让 Claude Code 走 Anthropic 规范的 x-api-key 头;官方模型仍走平台会话的 ANTHROPIC_AUTH_TOKEN
- 依据:同一次 /v1/messages 请求,Router 只认 x-api-key 时返回 200,走 Authorization: Bearer 时会长时间不响应
2026-10-02 16:35:05 +08:00
k88936 4246052bff 合并 origin/master 到 feat/typed-tool-error
- 取 master 退役 DirectProject 工具调用与回合流账本(#560):删除 direct_tool_calls / direct_turn_stream,direct_events 的回合更新收敛为状态与活动,不再广播 game-creator-direct-turn-update
- 取 master 修复 AGC 文件列举被无关临时锁删除打断(#552)与素材导入 / 资源提交项目锁争用(#581)
- 保留本分支 typed 工具错误口径:逐工具错误枚举、派发边界携带原始 error、工具返回不再软失败
- 保留本分支退役 AGC 独立 Agent Runtime / CLI 执行面的删除,继续删掉 master 侧 runtime_actions 等测试与入口
- 补齐 master 新增的 with_conversation_write_contention 测试助手,项目写锁调用统一为 acquire_project_write_lock_with_wait
- 账户素材分页 offset 上限 500 的 schema、预检与行为对齐,越界 offset 返回 typed 错误并适配相关用例
- 错误事件结构体 message 保留调用方原文,脱敏只发生在落盘与应用日志边界
2026-10-02 16:18:50 +08:00
k88936 839051f532 退役AGC独立Agent Runtime与CLI执行面
Project CI / AI game creator shell Rust lane 1/2 (pull_request) Failing after 1m50s
Project CI / Backend tests (pull_request) Failing after 24s
Project CI / AI game creator shell Rust crates (pull_request) Successful in 1m47s
Project CI / Repository checks (pull_request) Failing after 21s
Project CI / Frontend tests (pull_request) Successful in 2m38s
Project CI / AI game creator shell Rust lane 2/2 (pull_request) Failing after 3m41s
Project CI / AI game creator shell web tests (pull_request) Successful in 2m23s
Project CI / Native shell tests (pull_request) Successful in 6m20s
- 删除 agent/runtime_driver、runtime_protocol、runtime_tools、runtime_actions、runtime_state、runtime_adapter、context_compaction、collaboration、delegation、goal 等自建 Runtime 执行面及专属测试与 fixture
- CliCommand 收敛为 LlmStatus | EnvironmentCheck | PreviewServe,删除 --agent-run / --agent-task / --agent-goal-* / --agent-resume / --agent-context-compact 等 CLI 与 Tauri 命令白名单条目
- 外部 Runner 收缩为编辑器桥 RPC 与 runner.attach_gui_owner + GUI owner 参与锁 / watchdog,保留 --agent-runner
- 前端删除 AgentRuntime* / AgentGoal* 状态与命令调用链,移除 agent-runtime real-e2e / steer / smoke / llm-transient-fault 脚本与对应 CI job
- 内置工具错误收口为 typed error,抽取 agent/tool/error.rs 共享错误供各工具复用
- 新增 agent/redaction.rs、runtime_models.rs、json_sidecar.rs、task_lock.rs、process_identity.rs、art_manifest.rs、design_session.rs、direct_events.rs
- 同步更新 ADR、decision-log、Runtime V1.1、App 实施计划、本地开发运维、pitfalls 与 CI 脚本
2026-10-02 15:23:12 +08:00
k88936 c9b4813e68 移除已无消费者的 toolOutputTokenLimit 配置
- main.rs/config.rs/cli.rs 删除字段、默认值、校验、patch 合并与 CLI 展示

- 默认配置 game-creator.config.json 删除该键,旧配置里多余的键会被 serde 忽略

- 前端 types/RuntimeConfigDialog 与界面测试同步移除

- 该配置在 context_compaction 删除后已无任何 prompt 构建消费者
2026-10-02 15:08:23 +08:00
k88936 b18b4935e4 Cocos 执行结果给模型前恢复长度上限
- code 执行 32000 字符、operation 结果 2MiB

- 成功回执保留原文但按字符数收口
2026-10-02 15:07:20 +08:00
k88936 0ffa5bb1cc 编辑器执行响应给模型前恢复 32k 长度上限
- 新增 DIRECT_TOOL_BRIDGE_EDITOR_RESPONSE_MAX_CHARS=32000

- Unity/Godot 成功回执改为保留原文但按字符数收口
2026-10-02 15:07:19 +08:00
k88936 87414fd248 远端告警给模型前恢复每条长度收口
- 新增 DIRECT_TOOL_BRIDGE_WARNING_MAX_CHARS=480 与 bounded_remote_warning(s) helper

- createOrDerive/PrepareGameArt/GenerateImage 三个完成回执的 warnings/sliceWarnings 逐条收口
2026-10-02 15:07:19 +08:00
k88936 264b99914f Merge remote-tracking branch 'origin/master' into fix/wrong-report
Project CI / AI game creator shell Rust crates (pull_request) Successful in 1m59s
Project CI / AI game creator shell Rust lane 2/2 (pull_request) Failing after 2m9s
Project CI / AI game creator shell Rust smoke (pull_request) Successful in 2m23s
Project CI / AI game creator shell Rust lane 1/2 (pull_request) Failing after 3m6s
Project CI / Frontend tests (pull_request) Successful in 3m31s
Project CI / Repository checks (pull_request) Successful in 3m34s
Project CI / AI game creator shell web tests (pull_request) Successful in 1m57s
Project CI / Backend tests (pull_request) Successful in 6m48s
Project CI / Native shell tests (pull_request) Successful in 7m29s
# Conflicts:
#	docs/project-memory/shared-memory/pitfalls.md
2026-10-02 15:01:38 +08:00
k88936 e7adefb0a1 登记素材导入失败消息做长度收口,完整报告仍留在 typed 错误
- to_user_msg 对 ImportFailed/ImportPartial 先报成功/失败计数,再附有界 JSON 明细

- 新增 IMPORT_REPORT_MESSAGE_MAX_CHARS=4000 字符上限

- 补 TODO:应由工具选择性返回,或把完整报告重定向到文件/诊断日志
2026-10-02 14:58:37 +08:00
k88936 9c7cf2601c 工具入参对象校验升级为类型约束,解析器不再可能绕过 NotObject
- ToolArgumentsRejection::check 返回已确认的 &Map<String, Value>

- optional_text / required_text / page 改收 &Map,删掉 debug_assert 兜底

- 内部入参解析 helper 同步收 &Map;桥与 MCP 预检的 &Value 入口保持不变

- 更新直连工具桥与单测调用点
2026-10-02 14:57:44 +08:00