suzmii
|
ad33d42bc7
|
fix(agc): 修 process_tree 夹具的硬编码测试路径(Linux lane 2/2 红,收敛引入)
Project CI / Backend tests (pull_request) Failing after 20s
Project CI / AI game creator shell Rust lane 1/2 (pull_request) Successful in 6m31s
Project CI / AI game creator shell Rust crates (pull_request) Successful in 4m25s
Project CI / AI game creator shell Rust lane 2/2 (pull_request) Successful in 5m54s
Project CI / Repository checks (pull_request) Failing after 30s
Project CI / Frontend tests (pull_request) Successful in 3m34s
Project CI / AI game creator shell web tests (pull_request) Failing after 3m20s
Project CI / Native shell tests (pull_request) Successful in 9m8s
CI run 3708(head 694b54506)8 个 job:6 成功 / 2 失败。本提交修其中**我们引入**的那一条。
失败 1(我们引入 → 已修):AI game creator shell Rust lane 2/2 → shard 3/4 有 1 例失败
- 用例:agent::codex_provider::app_server::process_tree::tests::shutdown_stops_the_owned_background_writer_and_preserves_proof_scope
- 原始报错:`called Result::unwrap() on an Err value: Elapsed(())`;shard 内重跑该用例仍失败(非偶发)。
- 根因:process_tree.rs 的夹具用 `--exact` 复跑本测试二进制,路径是**硬编码**的
`const FIXTURE = "agent::codex_app_server::process_tree::tests::owned_tree_process_fixture"`
(process_tree.rs:307-308,master 原文;该文件本体与 master 逐字节相同)。codex provider 收敛把本模块
挂到 `agent::codex_provider::app_server::` 下后,`--exact` 匹配 0 个用例 → 子进程不写 marker、
不打印 TREE_READY → 父进程 `tokio::time::timeout(5s, …).unwrap()` 超时 → Elapsed(())。
- 修法(最小):该字符串同步为新模块路径,并补 2 行说明这个耦合。不改夹具逻辑、不删/不放宽用例、不用 #[allow]。
- 本地验证(Windows + 编辑器 feature):`cargo test -- process_tree::tests` → 3 passed / 0 failed;
其中 `shutdown_proves_entire_owned_job_exit_and_keeps_sibling_running` 修复前 FAILED(同 Elapsed(()))、
修复后 ok。cfg(unix) 的那条本机不编译,但走同一夹具常量,机制一致。
- 同类排查:全 crate 共 11 处「硬编码测试路径」字面量,逐条核对后**只有这一处**因本分支的模块搬迁失效
(`direct_tools_mcp` / `builtin_plugins` / `command_exec` / `command_sandbox_trampoline` /
`environment_check::web_creation::ownership` / `windows` 的路径本分支未改名,仍与真实模块一致)。
失败 2(上游自带 → 未修,只给证据):AI game creator shell web tests → `directThreadChat.test.ts`
- 失败用例 `DirectProject 聊天 reducer > 系统条目与未识别的 item 类型不进聊天视图`:
`AssertionError: expected [ { itemId: 'sys-1', …(5) } ] to have a length of +0 but got 1`
- 证据:① 本分支与 origin/master 在 `apps/ai-game-creator-shell/{src,tests}` 与 `packages/**` diff 为空
(零前端改动);② master 自己的 run 3715(head 9cd290362)同一 job 同一用例同一断言同样失败
⇒ master 自带红色,与本分支无关;不擅自改、不合别人的分支。
验证(取数前 cargo clean -p genarrative-ai-game-creator-shell):bin EXIT 0 / 0 warning;
--all-targets EXIT 0(harness 实例 382);check:rustfmt / check:encoding(5549 文件)/ git diff --check 全 EXIT 0;
六组测试 6 / 17 / 74 / 1 / 65 / 4 全部 0 failed;另 process_tree::tests 3 passed。
|
2026-10-07 18:39:14 +08:00 |
|
suzmii
|
694b545062
|
fix(agc): 修 Linux-only 悬空引用 D1,并补同类静态排查(非 Windows cfg 块)
Project CI / AI game creator shell Rust lane 1/2 (pull_request) Successful in 7m16s
Project CI / AI game creator shell Rust lane 2/2 (pull_request) Failing after 5m9s
Project CI / AI game creator shell Rust crates (pull_request) Successful in 5m7s
Project CI / Frontend tests (pull_request) Successful in 3m34s
Project CI / Backend tests (pull_request) Successful in 8m30s
Project CI / AI game creator shell web tests (pull_request) Failing after 2m58s
Project CI / Repository checks (pull_request) Successful in 6m47s
Project CI / Native shell tests (pull_request) Successful in 9m33s
D1(由 1a86675f4 引入):该提交删掉了 master 定义的 `resolve_project_bootstrap_spec_at`
(原 command_exec.rs:645 + 生产包装 :2500),但同文件 `#[cfg(test)] mod tests` 里
`#[cfg(target_os = "linux")] #[test] fn npm_command_targets_node_plus_npm_cli_on_linux`
仍在调用它(command_exec.rs:2641)⇒ Linux 测试目标必然 E0425;Windows 生产口径看不见(cfg 盲区)。
修法(取"按真实使用面收窄"这一支):按 master 原文恢复该函数,并加
`#[cfg(all(target_os = "linux", test))]`:
- 比同文件先例 `project_command_actual_target` 的 `#[cfg(target_os = "linux")]` 更窄——那个函数
Linux 生产仍在调用(沙箱启动路径),这个的唯一生产调用方 project/export.rs 已被 master 删除,
只剩本文件用例调用,故按实际使用面写成 all(target_os="linux", test),避免在 Linux 生产里留下一枚死函数。
- 引用侧有效 cfg = `#[cfg(test)] mod tests` + `#[cfg(target_os = "linux")]` 用例 = all(test, target_os=linux),
与定义侧一致 ⇒ 「引用 1 处 / 定义 1 处(同 cfg)」。
- 函数体与 master 逐字相同;未删用例、未删断言、未用 #[allow]。
同类排查(1a86675f4 里删掉/收窄的每一项符号 × 引用 × 定义 × cfg):
1. GAME_PACKAGE_UPLOAD_PROGRESS_EVENT(常量及其再导出)→ 删除;tip 引用 0 ⇒ 无悬空。
2. run_project_bootstrap_command_at → 删除;引用 0 ⇒ 无悬空。
3. project/bootstrap.rs 整模块(BOOTSTRAP_PACKAGE_MAX_BYTES / ProjectBootstrapResult /
read_bootstrap_file / run_project_bootstrap_at)+ project.rs 的 `mod bootstrap;` 与
`pub(crate) use bootstrap::*;` → 删除;`bootstrap::` 与 `run_project_bootstrap_at` 引用均为 0 ⇒ 无悬空。
4. run_project_verification_with_commit_at → 删除;引用 0 ⇒ 无悬空(下游
resolve_project_verification_spec_with_cwd_at 另有 taonier/build.rs:82 与 xhs_minitool/build.rs:46 调用,未受影响)。
5. TaonierArtifactPackage 再导出 → 移除;3 处引用全在 build.rs(定义/返回类型/构造)⇒ 无悬空。
6. read_form → 删除;引用 0 ⇒ 无悬空。
7. ensure_staging_path_in_dir → 收窄为 `#[cfg(test)]`;引用 3 处 = 定义 + 同文件 `#[cfg(test)] mod tests`
两处 ⇒ 兼容(test ⊆ test)。
8. NpmScript.package_json_relative 字段 → 收窄为 `#[cfg(test)]`;读取处两处用例断言(cfg(test))+ 构造处
亦已 cfg(test) ⇒ 兼容;同名自由函数仍属生产并被 script.rs:76 使用。
9. resolve_project_bootstrap_spec_at → 本次按 D1 处理(见上),引用/定义各 1 处且 cfg 一致。
静态复查(方法自定):对 AGC 壳全部 321 个 .rs 建「定义名 → cfg 链」与「use 绑定名」表,按 `#[cfg]`
属性 + 花括号深度重建每行的有效 cfg 链,筛出非 Windows 块(target_os=linux/macos/…、unix、
not(windows))共 7315 行,再统计三类危险计数:
- ① 悬空(master 有定义、tip 无定义的名字在非 Windows 块仍有引用):3 名 9 处命中,逐条核对全为假阳
(`"git"`/`"running"` 是字符串字面量;`process_identity` 是模块路径的另一符号)⇒ **0**。
- ② windows-only 定义被非 Windows 块引用:3 名 23 处,全为假阳(`is_empty` 是 std 方法调用;
`platform_art_windows_directory_open_policy`、`resume_suspended_tokio` 位于嵌套的
`#[cfg(windows)] { … }` 块内,是启发式未下钻)⇒ **0**。
- ③ not(test) 越用:3 名 4 处,全为假阳(`main`/`startup` 是字符串;`set_external_agent_runner_config_dir`
的 cfg 是 `any(not(test), unix)`,unix 测试构建中存在,且命中行是该定义行本身)⇒ **0**。
说明:`cargo check --target x86_64-unknown-linux-gnu` 在本机跑不通(GTK/webkit 的 -sys 与 ring 需要 Linux
工具链,pkg-config 无法交叉配置),故 Linux 侧证据以静态法给出;master 侧的非 Windows 改动由 master 自己的
Linux CI 兜底。
验证(Windows + 编辑器 feature;取数前 `cargo clean -p genarrative-ai-game-creator-shell`):
AGC bin EXIT 0 / 0 warning(18 条 serde 宏提示非 lint);AGC `--all-targets` EXIT 0(harness 实例 382 条);
`npm run check:rustfmt` / `npm run check:encoding`(5549 文件)/ `git diff --check` 全 EXIT 0;
六组测试 6 / 17 / 74 / 1 / 65 / 4,全部 0 failed。
|
2026-10-07 17:11:38 +08:00 |
|
suzmii
|
1a86675f4c
|
chore(agc): 清掉本轮 master 新代码带来的 14 处生产口径告警(最小修,无 #[allow])
Project CI / AI game creator shell Rust lane 1/2 (pull_request) Has been cancelled
Project CI / AI game creator shell Rust lane 2/2 (pull_request) Has been cancelled
Project CI / AI game creator shell Rust crates (pull_request) Has been cancelled
Project CI / Backend tests (pull_request) Has been cancelled
Project CI / Native shell tests (pull_request) Has been cancelled
Project CI / Frontend tests (pull_request) Has been cancelled
Project CI / Repository checks (pull_request) Has been cancelled
Project CI / AI game creator shell web tests (pull_request) Has been cancelled
背景:本 PR 的 AGC 壳 warning 门禁只覆盖「Windows 生产口径」,master 侧没有该门禁;本轮同步进来的代码
(陶泥儿导出/发布链路退役、bootstrap 退役)留下 14 处 never used / unused import。已逐条与上一轮合并点
`d5e26a68f` 比对确认:**不是我们删除造成的连带**,全部是 master 本轮自己新引入的。
逐条(文件:行 → 处理):
1. game_package_upload.rs:19 unused import `GAME_PACKAGE_UPLOAD_PROGRESS_EVENT` → 从再导出列表移除。
2. game_package_upload/runtime.rs:11 `GAME_PACKAGE_UPLOAD_PROGRESS_EVENT` 常量 → 删除;生产调用点已被
b04aceb57(exports 全退役)删除。
3. game_package_upload.rs:73 `ensure_staging_path_in_dir` → `#[cfg(test)]`;生产调用点同样被 b04aceb57 删除,
当前只剩本文件的用例调用。
4. command_exec.rs:645 `resolve_project_bootstrap_spec_at` → 删除。
5. command_exec.rs:2500 `run_project_bootstrap_command_at` → 删除;唯一调用方 project/export.rs 已被 master 删除。
6. project/bootstrap.rs → 整文件删除(唯一入口 run_project_bootstrap_at 失去唯一调用方),并移除 project.rs 的
`mod bootstrap;` 与 `pub(crate) use bootstrap::*;`。
7. project/verification.rs:662 `run_project_verification_with_commit_at` → 删除;两个调用方(project/export.rs、
xhs_minitool/build.rs)均已由 master 改动删除;下游文档里对它的 intra-doc 链接改为不带链接的描述。
8. export/draft/taonier/mod.rs:25 再导出 `TaonierArtifactPackage` → 移除;结构体本身仍被 read_artifact_package 使用。
9. export/draft/taonier/registry.rs:88 `read_form` → 删除;全仓无调用方。
10. export/draft/taonier/script.rs:22 `NpmScript.package_json_relative` 字段 → `#[cfg(test)]`(只有用例读取;
未删除任何用例或断言)。
不使用 `#[allow]`,不删除业务校验与用例,不引入假引用。AGC 壳生产口径恢复 0 warning / EXIT 0。
|
2026-10-07 16:59:13 +08:00 |
|
suzmii
|
47b5a17f54
|
合并 origin/master 到 chore/rust-compile-warnings(第二次同步):按 M/D/G 分桶解冲突
origin/master = e6933762d(落后 106 提交);合并前本分支 HEAD = 1612ee944。
冲突只有 5 处,codex 区域 0 冲突。
M 桶(master 改过的文件 → 取 master 版本,不把我们的删除加回去):
- agent/codex_app_server/**(mod.rs、model_catalog.rs、model_catalog/auth_handoff.rs、real_tests.rs)、
agent/codex_cli.rs、agent/codex_provider_proxy.rs、build_support/codex_bundle.rs 均与新 master 逐字节相同。
其中 real_tests.rs / codex_bundle.rs / direct_project_identity.rs 一并取 master 版本,清掉了本分支先前
在这几个文件里留下的多余 diff(口径:codex 区域一行不删不改)。
- 唯一保留的 codex 侧差异是 codex_app_server/mod.rs 的 1 行:resolve_direct_codex_project_authority
的 `pub(super)` → `pub(in crate::agent)`。挂载到 codex_provider 后 `pub(super)` 对兄弟模块
direct_tools_mcp.rs 不可见(E0603),这是收敛必需的适配,不是清理残留。
D 桶(master 未动过、我们删的死码 → 保留删除):patchset.rs、git_inspect.rs、
process_session/{io,lifecycle,persistence,recovery}.rs、generation/pass_artifacts.rs、
agent/runtime_models.rs、debug.rs(+debug/debug_drafts.rs)、process_session/tests/owner_fixture_cleanup.rs 等。
⚠ 复核发现 D 清单里 3 个文件本轮被 master 改过(`git log a8ae81720..origin/master -- <path>` 非 0),逐条判定:
- repository_context.rs(ad0877219:should_ignore_directory 的 "exports" → ".export"):该函数所在的
仓库扫描实现已在更早的退役批次(6d5436541)判为不可达并删除,全仓已无该符号 → 改动无处生效,保留删除。
- generation/pass_artifacts.rs(b04aceb57:黑板字符串去掉「发布包装:exports/README.md」):内容已并入
project/memory.rs(fbea59251),全仓已无该字符串 → 无需承接,保留删除。
- generation/draft_writer.rs(b04aceb57 −16:删掉 exports/README.md 写入):属 legacy draft 生成链,
已在 22540a874 整体退役;全仓 grep 0 引用,恢复只会留下未挂载的孤立文件 → 保留删除。
G 桶(双方都改、我们那侧不改变行为 → 以 master 语义为准):
- agent/generation/trace.rs:唯一冲突块里 master 只把 "exports/README.md" 从产物清单里删掉,而该函数
(append_local_artifact_write_step)已由我们在退役批次里整段删除 → 保留我们的删除。
- useGameDistributionPublishForm.ts:master 本轮删除该文件(b04aceb57),我们侧只有上一轮同步带来的错误
正文改动 → 取 master 语义(删除)。
其余文件由 git 自动合并。本提交不含新写的功能改动:收敛形态与残留清理见后续提交。
|
2026-10-07 16:58:52 +08:00 |
|
suzmii
|
1612ee9446
|
docs: 补充 PR #650 合并 master 后的实测基线复核
Project CI / AI game creator shell Rust lane 1/2 (pull_request) Has been cancelled
Project CI / AI game creator shell Rust lane 2/2 (pull_request) Has been cancelled
Project CI / AI game creator shell Rust crates (pull_request) Has been cancelled
Project CI / Backend tests (pull_request) Has been cancelled
Project CI / Native shell tests (pull_request) Has been cancelled
Project CI / Frontend tests (pull_request) Has been cancelled
Project CI / Repository checks (pull_request) Has been cancelled
Project CI / AI game creator shell web tests (pull_request) Has been cancelled
同机同 feature、先 `cargo clean -p genarrative-ai-game-creator-shell` 再取数:
- server-rs workspace(--all-targets):0
- AGC 壳 bin 生产口径:0
- AGC 壳同 feature + --all-targets:bin test harness 实例 351 warning 事件(全部落在 master 侧
既有文件,agent/codex_provider 子树内 0 条),仍属文档「边界」所述的 harness 产物。
原表记的是 2026-10-06 的 339,这里不覆盖历史快照,只补一条带日期的复核。
|
2026-10-07 15:52:12 +08:00 |
|
kdletters
|
e6933762d2
|
cc 回合静默超时改为宿主自动重试
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 / AI game creator shell Rust crates (push) Has been cancelled
Project CI / Backend tests (push) Has been cancelled
Project CI / Native shell tests (push) Has been cancelled
Project CI / Frontend tests (push) Has been cancelled
Project CI / Repository checks (push) Has been cancelled
Project CI / AI game creator shell web tests (push) Has been cancelled
claude_code_cli:一次用户回合最多尝试 3 次,只有"静默超时 + 本轮没请求过任何工具"才自动重放,硬上限与已请求工具的超时仍交回用户
claude_code_cli:抽出 claude_direct_turn_once / ClaudeDirectTurnFailure / claude_direct_failure_action,重试策略变成可单测的纯函数
claude_code_cli:每次重试前落一条 role=system 过程行(正在自动重试(第 N/M 次)),停下时也说明原因,避免"没有重试"又被读成静默兜底
claude_code_cli:失败详情尾部的重试次数标记由分类器还原成结构化 attempts 并摘除,用户可见的"已尝试 N 次"与实际尝试次数一致
claude_code_cli:新增三条单测覆盖重试策略矩阵、静默超时/工具已请求的判定、attempts 结构化与标记不外泄
docs/project-memory/shared-memory/pitfalls:记录现象、CLI 自身不重试的真实二进制证据、现行重试口径与验证方式
|
2026-10-07 15:48:07 +08:00 |
|
k88936
|
93897b88ac
|
Merge pull request 'Feat/adapt taonier' (#661) from feat/adapt-taonier-skill into master
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 / AI game creator shell Rust crates (push) Has been cancelled
Project CI / Backend tests (push) Has been cancelled
Project CI / Native shell tests (push) Has been cancelled
Project CI / Frontend tests (push) Has been cancelled
Project CI / Repository checks (push) Has been cancelled
Project CI / AI game creator shell web tests (push) Has been cancelled
Reviewed-on: #661
|
2026-10-07 15:45:54 +08:00 |
|
k88936
|
23fa91895d
|
Merge remote-tracking branch 'origin/master' into feat/adapt-taonier-skill
Project CI / AI game creator shell Rust lane 1/2 (pull_request) Has been cancelled
Project CI / AI game creator shell Rust lane 2/2 (pull_request) Has been cancelled
Project CI / AI game creator shell Rust crates (pull_request) Has been cancelled
Project CI / Backend tests (pull_request) Has been cancelled
Project CI / Native shell tests (pull_request) Has been cancelled
Project CI / Frontend tests (pull_request) Has been cancelled
Project CI / Repository checks (pull_request) Has been cancelled
Project CI / AI game creator shell web tests (pull_request) Has been cancelled
|
2026-10-07 15:34:04 +08:00 |
|
k88936
|
4f3ef93098
|
游戏表保留 cover_asset_id 并标记退役
- GameDistributionGame 在原位恢复 cover_asset_id,注明退役、只占位不再写入,避免 SpacetimeDB 破坏性 schema 变更
- 新建与测试行构造补 cover_asset_id: None;migration.rs 注释与实施计划改成「保留退役」口径
- 重新生成 spacetime-client 该表绑定,补回 cover_asset_id 字段
|
2026-10-07 15:31:28 +08:00 |
|
kdletters
|
692de8c806
|
修复 cc 会话重进项目后丢失历史对话
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 / AI game creator shell Rust crates (push) Has been cancelled
Project CI / Backend tests (push) Has been cancelled
Project CI / Native shell tests (push) Has been cancelled
Project CI / Frontend tests (push) Has been cancelled
Project CI / Repository checks (push) Has been cancelled
Project CI / AI game creator shell web tests (push) Has been cancelled
claude_code_cli:新增 claude_code_project_dir_name / newest_claude_code_session_in / latest_claude_code_session_id_at,按 Claude Code 的目录派生规则从隔离 home 取本项目最新的会话轨迹
claude_code_cli:新增 resolve_claude_direct_resume,恢复顺序改为「进程内会话表 → 磁盘最新轨迹」,并在 agent.direct_codex.claude_resume 记录本回合恢复来源(memory/disk/none)
claude_code_cli:新增两条回归测试,覆盖目录派生与最新轨迹选取、以及内存优先的恢复顺序
docs/project-memory/shared-memory/pitfalls:记录该问题的现场证据、现行口径与真实环境验证方式
|
2026-10-07 15:22:45 +08:00 |
|
k88936
|
b4ca794660
|
修复 hook 夹具在 home 为 Git 仓库时的误判
- 夹具建在 homedir()/data/tmp;home 自身是仓库时,尚未 init 的夹具被 rev-parse 向上解析成父仓库
- isolatedGitEnvironment 增加 GIT_CEILING_DIRECTORIES 指向夹具临时根,阻止 git 发现 home 仓库
|
2026-10-07 15:13:14 +08:00 |
|
k88936
|
2db556c50e
|
修复作品架封面换签用例未适配取消信号
- useGameDistributionMediaReadUrl 新增 AbortSignal 第四参数后,旧断言 toHaveBeenCalledWith 失配
- 断言补 expect.any(AbortSignal),与换签请求可取消的语义对齐
|
2026-10-07 15:13:10 +08:00 |
|
kdletters
|
29bb3bd6a8
|
修复 CC 模式无工具与重试静默两处问题
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 / AI game creator shell Rust crates (push) Has been cancelled
Project CI / Backend tests (push) Has been cancelled
Project CI / Native shell tests (push) Has been cancelled
Project CI / Frontend tests (push) Has been cancelled
Project CI / Repository checks (push) Has been cancelled
Project CI / AI game creator shell web tests (push) Has been cancelled
把 DirectProject CC 回合载荷抽成纯函数并加单测,断言 mcpServers/sessionKey 接线存在,防止工具能力被静默丢掉的构建回归
把 Claude Agent SDK 的 system/api_error 重试事件投影成可见过程行(HTTP 状态 + 上游正文 + 第 N/M 次)
前端把 role=system 的诊断条目按过程行渲染,不再被丢弃或误读为 assistant 回复
|
2026-10-07 15:08:48 +08:00 |
|
k88936
|
f69fd339b9
|
Merge remote-tracking branch 'origin/master' into feat/adapt-taonier-skill
Project CI / AI game creator shell Rust lane 1/2 (pull_request) Has been cancelled
Project CI / AI game creator shell Rust lane 2/2 (pull_request) Has been cancelled
Project CI / AI game creator shell Rust crates (pull_request) Has been cancelled
Project CI / Backend tests (pull_request) Has been cancelled
Project CI / Native shell tests (pull_request) Has been cancelled
Project CI / Frontend tests (pull_request) Has been cancelled
Project CI / Repository checks (pull_request) Has been cancelled
Project CI / AI game creator shell web tests (pull_request) Has been cancelled
|
2026-10-07 14:46:36 +08:00 |
|
k88936
|
dca8481031
|
发布媒体回填的 revoke 移出 state updater
- VersionMediaApplyTarget 增加 getCover/getScreenshots,覆盖前先 revoke 旧的本地预览
- 两个调用点用 ref 提供当前媒体;updater 只做纯计算,StrictMode 重放不再撤销仍在用的 blob URL
|
2026-10-07 14:39:57 +08:00 |
|
k88936
|
06e6cf8523
|
导出预检失败与宿主故障分开
- verification.rs 拆出按已解析规格运行的入口,项目侧预检错误不再与沙箱/日志故障混成一个字符串
- 陶泥儿与小红书构建把预检失败映射成新的 projectUnavailable 变体(改项目代码可解)
- 前端失败表补 projectUnavailable(归类为 code agent 可修),更新生成绑定与测试
|
2026-10-07 14:39:18 +08:00 |
|
k88936
|
61acaf6cea
|
陶泥儿移除发行包下载功能
- 删除左半面板的「下载发行包」按钮与下载失败弹窗接线
- 退役 useTaonierExport 的 artifactReady 状态及其构建收尾写入
- 删除 tabs/taonier/DownloadFailureDialog.tsx
- 同步陶泥儿面板测试与实施计划文档
|
2026-10-07 14:34:04 +08:00 |
|
k88936
|
0119a329aa
|
发布媒体上传标注整体缓冲的性能隐患
- game_distribution_media.rs 在 Field::bytes() 处补 TODO(perf),说明峰值约 2× part 与 field.chunk() 流式限长改法
|
2026-10-07 14:26:51 +08:00 |
|
k88936
|
7d8b966d1f
|
陶泥儿打包标注单文件整读的性能隐患
- pack.mjs 在整读+压缩处补 TODO(perf),说明单文件峰值内存约 2× 与 ZIP data descriptor 流式改法
- 同步 agc-skills manifest.json 版本与技能哈希
|
2026-10-07 14:26:37 +08:00 |
|
k88936
|
e66be01269
|
更新 agc-skills manifest.json 文件版本号和技能哈希值
|
2026-10-07 14:17:41 +08:00 |
|
k88936
|
cb57e59ec4
|
图片预览文案按封面/截图语境区分
- IconPreview 增加可选 labels,缺省仍是小红书「图标」文案
- FormCard 的封面与截图预览各自传入封面/截图语义的 alt、title 与 aria
|
2026-10-07 14:16:44 +08:00 |
|
k88936
|
edaf8896e1
|
发布封面导入器收敛为单选
- 新增 COVER_IMPORTER_SETTINGS(maxItems: 1),FormCard 封面导入改用该设置,避免多选后静默丢弃其余图片
|
2026-10-07 14:16:15 +08:00 |
|
k88936
|
53750ac31e
|
发布页媒体提交只合成一次
- buildPublishGameMetadata / buildPublishMediaParts 改为接收调用方算好的 submission,元数据槽位与上传 part 单一来源
|
2026-10-07 14:15:05 +08:00 |
|
k88936
|
5bc52a3441
|
陶泥儿发布跨项目不再串状态
- useTaonierTab 增加 projectPathRef,在打包/订阅/发布各 await 之后与进度回调里比对当前项目,避免旧项目进度、结果与失败落进新项目面板
|
2026-10-07 14:14:18 +08:00 |
|
k88936
|
86649e50a7
|
重新构建时清除失败忽略指纹
- buildOnce 在 setFailure(null) 前 setDismissedFailure(''),显式重跑失败仍会重新弹出弹窗
|
2026-10-07 14:13:33 +08:00 |
|
k88936
|
8e3f0b8920
|
导出校验改用落盘后的权威表单
- packageAll 的本地校验改用 effectiveFormRef.current ?? form,避免 refresh/flush 后仍用陈旧闭包放行盘上的非法值
|
2026-10-07 14:13:16 +08:00 |
|
k88936
|
e830034d03
|
游戏媒体换签请求支持取消
- getGameDistributionMediaReadUrl / getOwnerGameDistributionMediaReadUrl 增加可选 AbortSignal 并透传
- resolveGamePublishImagePreview 转发 signal;useGameDistributionMediaReadUrl 在 effect 清理时 abort 在途请求
|
2026-10-07 14:11:59 +08:00 |
|
k88936
|
5e5bb19a64
|
发布回填截图签名地址改为并发换签
- applyVersionMediaDefaults 用 Promise.all 并发请求所有截图读地址,并在取消后直接返回,不再串行等待、也不在取消后继续发起请求
|
2026-10-07 14:10:44 +08:00 |
|
k88936
|
3a0d275746
|
购买 E2E 定价边界建游失败时提前退出
- boundsGameId 为空时先记录失败再 process.exit(1),避免后续请求 /undefined 级联掩盖根因
|
2026-10-07 14:10:14 +08:00 |
|
k88936
|
9a653c8382
|
陶泥儿导出收敛为单一发布入口并把线上值内联到字段
- 移除独立「打包」按钮与「发行包」卡片,发布入口不套卡片,内部先跑打包
- 线上值逐字段内联到对应输入框下方,退役 OnlineValuesCard
- 线上值进项目自动读取,失败按固定间隔静默自动重试,去掉「重新读取」手动入口
- 读取失败时提示正在自动重试,发布入口保持停住
- 同步陶泥儿面板测试与技术方案/实施计划文档
|
2026-10-07 14:09:26 +08:00 |
|
k88936
|
11c8c2789a
|
重启校验 E2E 恢复封面前查回当前 coverObjectKey
- 旧 STATE_FILE 只有 coverAssetId(素材对象 ID,不是对象存储 key),恢复续跑时先查游戏当前封面 key,不再拿它冒充 coverObjectKey
|
2026-10-07 14:09:16 +08:00 |
|
k88936
|
28be35239e
|
修 creator-runtime 夹具缺失 price_mud_points
- fixtures 的 game 字典补上必填非 Option 的 price_mud_points=0,避免迁移导入报 missing field
|
2026-10-07 14:09:00 +08:00 |
|
k88936
|
f4582fe5b3
|
游戏分发建游/建版先校验 local_project_id 再上传媒体
- create_game 与 create_version 把 normalize_local_project_id 提前到 resolve_publish_media 之前,避免用户输入非法时提前返回、已上传的封面/截图成为孤儿对象
|
2026-10-07 14:07:52 +08:00 |
|
k88936
|
9512842050
|
发布图片读取改用 no-follow 句柄并限长读入
- read_publish_image 用 OpenOptions + O_NOFOLLOW 打开,按句柄 metadata 判上限后再 take 限长读取,关掉体积与符号链接 TOCTOU
|
2026-10-07 14:06:15 +08:00 |
|
k88936
|
3a67580956
|
项目校验脚本漂移比较忽略首尾空白
- resolve_project_verification_spec 对 actual/expected command 都做 trim,避免 package.json 脚本带首尾空格或换行时被误判成「脚本已变化」
|
2026-10-07 14:04:48 +08:00 |
|
k88936
|
2ab7717a2c
|
陶泥儿构建命令的项目根校验挪到 spawn_blocking
- run_build 不再在 Tokio worker 上做同步文件 IO 与 Windows ACL 修复,与同模块其它 IO 一致
|
2026-10-07 14:03:09 +08:00 |
|
k88936
|
ba9d70a5b6
|
陶泥儿产物读取改用 no-follow 打开
- read_package_bytes 用 OpenOptions + O_NOFOLLOW / FILE_FLAG_OPEN_REPARSE_POINT,关掉 symlink_metadata 检查后到打开之间被换成符号链接的 TOCTOU 窗口
|
2026-10-07 14:02:21 +08:00 |
|
k88936
|
a3cf980000
|
陶泥儿构建收尾超平台上限的产物不再整包读入内存
- conclude 在 std::fs::read 前同时按平台 200MiB 上限过滤,200MiB~512MiB 的产物直接判 artifactMissing
|
2026-10-07 14:00:58 +08:00 |
|
k88936
|
ad08772190
|
仓库上下文扫描忽略 .export 导出目录
- should_ignore_directory 顶层组件匹配补回 .export,避免把生成的导出包/zip 纳入 agent 仓库上下文
|
2026-10-07 14:00:47 +08:00 |
|
suzmii
|
ef56bc0174
|
docs: 登记 codex_provider 的 #[allow(dead_code)] 限定例外
Project CI / AI game creator shell Rust lane 1/2 (pull_request) Has been cancelled
Project CI / AI game creator shell Rust lane 2/2 (pull_request) Has been cancelled
Project CI / AI game creator shell Rust crates (pull_request) Has been cancelled
Project CI / Backend tests (pull_request) Has been cancelled
Project CI / Native shell tests (pull_request) Has been cancelled
Project CI / Frontend tests (pull_request) Has been cancelled
Project CI / Repository checks (pull_request) Has been cancelled
Project CI / AI game creator shell web tests (pull_request) Has been cancelled
仓库原有口径明文禁止新增 `#[allow(dead_code)]`(开发运维文档「Rust 编译告警门禁」、
development-workflow「验证路由」)。本次按用户决策登记**限定例外**,两处同步,避免文档与代码自相矛盾。
- 作用域:AGC 壳 `agent/codex_provider`(`app_server` = `agent/codex_app_server/**`,含凭据、模型目录与
OAuth 交接;`cli` = `agent/codex_cli.rs`,含 CLI 请求路径)。其它 crate、其它目录、其它 lint 与 CI 不受影响。
- 理由:该子树在 AGC 交付口径下休眠(生产恒走平台会话 / DirectProject 路由,原生 app-server 与内置 CLI
请求入口在 Windows 生产构建里没有调用方),而上游 master 正在活跃编辑这些文件,删除会与其在飞工作反复冲突。
- 失效边界:该子树内今后新增的 `dead_code` 不再被任何机器检查发现;`unused_imports` / `unused_variables`
等其它 lint 仍必须真修(已实测:allow(dead_code) 压不住未使用的 `use`)。
- 退出条件:该子树被重新启用(恢复个人 Codex OAuth 登录态或原生 app-server 路径)或确定整体退役删除时,
必须一并移除该 `#![allow(dead_code)]` 并删除登记条。
- 同时修订原「不得模块级 `#![allow]`」一句,指向唯一登记例外。
|
2026-10-07 14:00:36 +08:00 |
|
suzmii
|
c0d4f5c898
|
refactor(agc): 收敛 codex provider 子树到一个模块,并只对该模块允许 dead code
用户决定(本 PR 内落地):把 codex 这块 provider 相关逻辑收敛到一个模块内,给该模块打上允许
dead code,而不是删除——上游 master 正在活跃编辑这些文件,删除会与其在飞工作反复冲突。
本次只影响 AGC 壳;server-rs、其它目录、其它 lint 与 CI 都不受影响。
逐行说明:
1. 新增 agent/codex_provider/mod.rs
- 顶部 `#![allow(dead_code)]`:唯一落点,覆盖本模块及其子模块(实测可压过 AGC 壳的
`#![cfg_attr(all(not(test), windows), deny(warnings))]`,但压不住 `unused_imports`)。
- `#[path = "../codex_app_server/mod.rs"] pub(crate) mod app_server;`
`#[path = "../codex_cli.rs"] pub(crate) mod cli;`
用 `#[path]` 就地挂载,不搬动文件——与上游活跃编辑区的冲突面只剩本文件与 agent.rs。
- `pub(crate) use cli as codex_cli;`:子树内部既有的 `super::codex_cli::…` 相对路径照旧可用。
2. agent.rs
- `mod codex_app_server;` + `mod codex_cli;` → `mod codex_provider;`
`+ pub(crate) use codex_provider::{app_server as codex_app_server, cli as codex_cli};`
对外路径(`crate::agent::codex_cli::…`、`super::codex_app_server::…`)不变,既有调用点零改动。
3. agent/codex_app_server/mod.rs:`resolve_direct_codex_project_authority` 由 `pub(super)` 放宽为
`pub(in crate::agent)`——挂载多了一层后,保持它在挂载前对 agent 子树的有效可见性。
4. agent/codex_app_server/direct_project_identity.rs:`use super::super::*;` → `use crate::agent::*;`
(同因,绝对路径与挂载前语义一致)。
5. agent/generation/llm_request.rs:删除 `AgentProgressEmitter` / `emit_agent_progress` 并同步模块文档。
理由:其唯一消费方 `maybe_generate_platform_art_asset_step` 已随退役批次删除(我们那侧),
master 对它的改动只是给死函数加日志;且 `allow(dead_code)` 压不住其它 lint,残留必须真删。
6. agent/thread_manager/turn_completion.rs:`host_dropped()` 加 `#[cfg(test)]`。理由:master 的生产
Drop 已改用 `host_dropped_with_detail`,该兼容构造只剩用例引用,生产口径下是死码。
7. browser/process.rs:删除 `BrowserLaunchFailure::setup`。理由:master 把它改名成
`setup_with_detail` 后遗留的未用构造(全仓无调用点)。
8. command_exec.rs:`project_command_actual_target` 收窄为 `#[cfg(target_os = "linux")]`。理由:
master 新增该函数,但其调用点全在 Linux 编译面(沙箱启动路径与该平台用例),Windows 生产构建无消费方。
结果(Windows msvc / rustc 1.98.1,编辑器 feature):
- 生产口径 `cargo check`:0 warning / EXIT 0;
- `cargo check --all-targets`:EXIT 0(352 条告警全部落在这一个 bin 的 test harness 实例,属既有口径,
与本提交无关);
- `npm run check:rustfmt`、`npm run check:encoding`、`git diff --check` 均通过。
|
2026-10-07 14:00:21 +08:00 |
|
suzmii
|
3e13a6e407
|
合并 origin/master 到 chore/rust-compile-warnings:按 M/D/G 分桶解冲突
origin/master = 441be8d62(落后 143 提交);合并前本分支 HEAD = aeebbee28。
冲突 11 处,按「master 侧是否活跃」分三桶处理。
M 桶(master 改过该文件 → 取 master 版本,不把我们的删除加回去):
- agent/codex_app_server/mod.rs(master +348/-108)
- agent/codex_app_server/model_catalog.rs(master +38/-18:CatalogSource::Authenticated / source_for_credential / verify_authenticated_source)
- agent/codex_app_server/model_catalog/auth_handoff.rs(modify/delete → 保留 master 版,OAuth 轮换交接)
- agent/codex_cli.rs(master +190/-44)
- agent/codex_app_server/model_catalog/real_tests.rs:我们把该文件裁到 59 行以适配自建的 capture 签名;master 的 model_catalog.rs 恢复 4 参 capture 后取回 master 的 244 行用例,否则 --all-targets 报 2 处 E0061。
D 桶(master 未动过、我们删除的死码 → 保留删除):
- 合并前已删:patchset.rs、git_inspect.rs、repository_context.rs、generation/pass_artifacts.rs、agent/runtime_models.rs、debug.rs(+debug/debug_drafts.rs) 等。
- process_session/{io,lifecycle,persistence,recovery}.rs 与 process_session/tests/owner_fixture_cleanup.rs → 裁决为「保留删除」:master 在这 4 个文件里只改「死码的错误正文」;实测整棵子树在 AGC 生产构建里 69 条 dead_code、且只被 tests.rs 引用;生产只用到 recovery.rs 的 2 个 shutdown 函数,而那 2 个我们已搬进 process_session/shutdown.rs。
G 桶(双方都改、我们那侧非语义 → 以 master 语义为准,手工合并):
- agent.rs:取 master 的 claude_code_failure_to_turn_error(改名,codex_app_server/mod.rs:5323 依赖该再导出);保留我们的模块集合(provider_request_snapshot,去掉 runtime_models 与 dispatch 的再导出)。
- thread_manager/dispatch.rs:master 的 host_dropped_with_detail(panic 详情)+ 我们的 cfg(not(test))/cfg(test) 收口(测试态不读兜底结果,避免 harness 未用变量告警)。
- generation/llm_request.rs:取 master 的 AgentProgressEmitter(其唯一消费方 maybe_generate_platform_art_asset_step 已在我们那侧删除,随之成为残留,交由后续提交处理)。
- process_session/model.rs:master 的 8 处错误正文(WindowsProcessJob 的 last_os_error)**全部落在我们未裁的区间**,逐 hunk 叠加到我们的 382 行版本(结果 406 行;last_os_error 出现次数与 master 版一致,均为 13)。
- process_session/shutdown.rs:把 master 在 recovery.rs 里给 shutdown 广播加的诊断搬进我们的实现(`process_session.shutdown.send_failed processId=… detail=…`;收敛后的 LiveProcessSession 不再有 process_id 字段,进程身份取注册表 key)。
- docs/project-memory/shared-memory/pitfalls.md:两侧各新增一节,两节都保留。
|
2026-10-07 13:59:31 +08:00 |
|
k88936
|
5df27afed3
|
预览服务重新把 .export 列为受保护目录
- preview.rs 两处受保护组件列表补回 .export(导出目录由 exports 改名时遗漏),避免 .export/taonier.json 等导出元数据被本地预览读取返回
|
2026-10-07 13:57:56 +08:00 |
|
k88936
|
65ff808942
|
Merge pull request '修复8ceada8690f7255f318f7b335708e5dfea73d2d5的CI回归问题' (#666) from fix/codex/agc-error-convergence-regression into master
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 / AI game creator shell Rust crates (push) Has been cancelled
Project CI / Backend tests (push) Has been cancelled
Project CI / Native shell tests (push) Has been cancelled
Project CI / Frontend tests (push) Has been cancelled
Project CI / Repository checks (push) Has been cancelled
Project CI / AI game creator shell web tests (push) Has been cancelled
Reviewed-on: #666
|
2026-10-07 13:57:03 +08:00 |
|
k88936
|
0f127dbc70
|
移除游戏分发 E2E helper 中无引用的导出
- 删除 coverImagePart:各 E2E 脚本都有自己的本地实现,仓库内无人导入
- COVER_PNG 只作 imagePart 的默认值,收回 export
|
2026-10-07 13:55:05 +08:00 |
|
k88936
|
5b0c416839
|
陶泥儿 H5 打包改用临时文件原子落盘
- writeZipEntries 先写同目录 <zip>.tmp-<pid>,全部成功后再 renameSync 覆盖落点,失败只清理临时文件
- makeZip 失败路径不再删除落点,避免写盘失败时丢掉落点上原有的 zip
|
2026-10-07 13:53:31 +08:00 |
|
k88936
|
bda1bb0814
|
陶泥儿 H5 打包拒绝非普通文件条目
- collectZipEntries 遇到 FIFO/socket/设备文件时抛错,不再静默跳过导致缺文件的包
|
2026-10-07 13:50:14 +08:00 |
|
k88936
|
9c26642896
|
陶泥儿 H5 产物校验覆盖单引号根路径引用
- assertH5Root 的属性正则同时匹配单/双引号并容忍 = 两侧空白,避免手写/插件 HTML 漏检
|
2026-10-07 13:49:07 +08:00 |
|
k88936
|
af752eaa1a
|
陶泥儿 H5 配置合并后钉死 build.outDir
- mergeConfig 不再允许 overrides 静默改写 build.outDir,保证与 pack.mjs 的 --vite-built-dir 默认值一致
|
2026-10-07 13:48:40 +08:00 |
|
k88936
|
003f7cfe95
|
陶泥儿 H5 导出收尾改用 lstatSync 清理空目录
- pruneEmptyDirs 不再跟随符号链接,避免递归走出 dist-taonier 或对指向祖先的链接递归到栈溢出
|
2026-10-07 13:48:10 +08:00 |
|