Repository navigation
[Grok/dsh 77] 三平台并发与长期资源压力 #209
Copy link
Copy link
Closed
Labels
ready-for-agentAgent-grabbable workAgent-grabbable work
Description
Activity
- added a commit that references this issue
on Sep 29, 2026 #209 关闭说明(压力与长期资源,三平台)
决定: Kara 已接受以现有修复集成并关闭 #209,剩余 4 项差距统一转入后续工单 #221(https://github.com/Blackman99/codsh/issues/221)。阈值在运行前冻结,看到结果后没有放宽。
提交: b78e28d(已普通推送到
rewrite/grok-dsh-20260920,未改写历史)完成内容:
- 新增
scripts/rust-stress-bench.py与rust-platforms.yml的stress作业(ubuntu-22.04 / macos-15 / windows-2022,ci/**且分支名含 stress 时运行,证据在evidence/stress):先测参考 Grok 1.0.34(SHA-256 校验、不分发),冻结thresholds.json并记录其 SHA-256,之后才启动候选。负载:4 个后台子代理 + 1 个后台命令、3 子代理内联工作流的暂停/恢复/停止、30 轮长会话、负载下退出,以及崩溃(SIGKILL / TerminateProcess)后--continue恢复。每项指标单独判定有效性,无法判定的指标会让运行失败;--fetch-reference DIR可预先取参考二进制。 - 修复 1:dsh 退出多挂约 1.1 s。原因是
.credentials.yaml不存在时 dsh 让 chokidar 监视整个 dsh home,退出时的写入触发未被清除的 1 s 节流定时器。现在在隔离 dsh home 中按需创建空的 0600.credentials.yaml(从不覆盖已有文件;/logout不把空文件算作已存凭据)。Linux 本机负载下退出约 1306 → 300 ms。 - 修复 2:Node 24 下 dsh 年轻代让长会话 RSS 多涨 40–55 MiB(100 轮验证为堆尺寸而非泄漏)。JS dsh 以
--max-semi-space-size=16启动(与 Node 22 一致)。rss:long-growth三平台由失败转为通过(约 6–9 MiB)。 - 文档:
docs/rewrite/perf/stress.md(含 Kara 的决定与 Rust 客户端:负载下退出、Linux 工作流恢复、Windows 控制通道与长会话单轮延迟的剩余差距(#209 后续) #221),三平台thresholds.json/report.json/report.md在docs/rewrite/perf/stress/;README、CONTRIBUTING、changeset 已更新。 - 单元测试:
credentials_placeholder_is_empty_owner_only_and_never_replaces、js_dsh_runs_with_the_young_generation_cap_before_the_script。
三平台结果(ci/209-stress-c,run 36465419485): 硬性要求三平台全部通过(退出后无遗留进程、退出/崩溃后无模型流量、崩溃后无孤儿进程、恢复时不把被杀掉的工作标为仍在运行、样本齐全)。未达阈值项(均转入 #221):
平台 指标 候选 / 阈值 Linux quit:under-load 404 / 135 ms Linux workflow:resume 195 / 77 ms macOS quit:under-load 517 / 249 ms Windows quit:under-load 610 / 219 ms Windows long:turn(后期单轮) 213 / 125 ms Windows workflow:pause 15253 / 298 ms(控制通道已关闭) Windows workflow:resume 无样本(因暂停失败) 冻结阈值 SHA-256(报告中的
thresholdsSha256):- linux-x64:
223acb1b7974337b66485609aea88c1c5f2dffacf969e138d3df04b25b723d0a - macos-arm64:
27524b88601101ab8bc45fc51f68889990068d623ae953c1f69747d6f20f5f66 - windows-x64:
1af530934277990c54d058be82a92a5f8bcd826d9a8fc65113d33eb7dcba2812(按 LF 内容计算;仓库中的文件与 CI 产物逐字节一致,为 Windows 写出的 CRLF,去掉 CR 后哈希一致)
其他 CI:ci/209-stress-a run 36456545956、ci/209-stress-b run 36464593369(修复前后的迭代证据);集成分支 run 36511561221(b78e28d)。
本地完整验证(最终代码,Linux):
- fmt、typecheck、debug 构建、
clippy(允许已知告警)、build、build-rust、package-check、install-test:通过;clippy -D warnings为既有的已知失败,与本工单无关。 - cargo test:codsh-rust 798 通过 / 4 失败(与基线相同的环境相关已知失败:两个
filesystem_sandbox、privacy::drafts_stay_local…、voice::substitute_route…);其余 crate 498 + 42 + 61 + 2 + 379 + 61 全部通过。 - pnpm test:2684 通过 / 8 跳过(111 个测试文件)。
- e2e:177 通过 / 1 跳过。
- PTY:terminal、prompt、cancel、tmux、shell、nav、screen、voice、remote 全部通过;plain-pipe 通过;core-pty 为已知的 macOS 网络审计门槛(Linux 上无法验证)。
后续:#221 跟踪上述 4 项差距(负载下退出×3 平台、Linux 工作流恢复、Windows
/workflow pause控制通道、Windows 长会话单轮延迟),属于 #132。- 新增
Metadata
Metadata
Assignees
Labels
ready-for-agentAgent-grabbable workAgent-grabbable work
Parent
#132
Ticket: 77
Status: ready-for-agent
User Stories: 69, 71, 72(见父规格)
What to build
用户在三平台上运行后台命令、子代理和工作流时仍可交互,长时间运行及退出后资源保持可控。
Acceptance criteria
Blocked by
Delivery contract
用户于2026-09-20批准当前测试与任务拆分。按父规格的已安装产物/真实终端和公开协议测试验收;实际实现须带适用的文档、Changeset及必要检查。ready-for-agent表示任务已定义,不表示前置任务已完成,也不授权自动开始本轮实施、购买付费资源或发布软件版本。