Repository navigation
[Grok/dsh 15] ACP 编辑器端到端接入 #147
Description
Activity
按用户2026-09-20的实施授权领取 Ticket15 / #147;本次只记录领取,未启动实施工作者,也不表示已实现。已重新读取 #132 及全部80票正文/评论和实际 blocked-by(native 177 边,无截断,无第二页)。#142/#150/#152/#153 已在
rewrite/grok-dsh-20260920集成并关闭;当前独立就绪且无人领取的票为 #143、#145、#147、#151、#156、#158、#159、#163、#171。本波并行领取前四张(#143、#145、#147、#151),未领取任何被阻塞后继(含 #148),也未领取本波未选的其他就绪票(#156/#158/#159/#163/#171)。实施必须从独立集成树精确基线
065170b46c44491f53abd6f21ed8ac438ba9906a开始。前置 #138、#140、#142 已关闭,同一提交已保留在rewrite/grok-dsh-20260920;集成证据见 #138 (comment) 、#140 (comment) 与 #142 (comment) 。范围按原验收:实证双方 ACP 版本及协商,公开扩展按清单提供真实行为,不支持项不返回成功桩;外部客户端驱动 initialize/new/load/prompt/config/approval/cancel,验证响应、更新及错误关联;同一会话在终端与编辑器的内容、模型、权限和工具状态一致,关闭客户端不导致双执行;至少一个实际支持的编辑器接入验证,并提供可重复协议测试及设置文档。后续实施/审查子代理使用 My CPA - Grok 4.7 Fast(
grk-4.7-build-fast,effortxhigh)。仅在实施、独立审查和集成验收通过后关闭。main、现有未跟踪文件及其他工作树不改动;不授权付费资源,#212仍须新的明确最终发布/默认切换批准。Ticket 15 / #147 未集成。隔离集成树
rewrite/grok-dsh-20260920仍是065170b46c44491f53abd6f21ed8ac438ba9906a。已提交的 worker HEAD8d0c72a104eb228203a38e54b83a442a93800daa(工作树/Users/zhaodongsheng/.grok/worktrees/my-projects-codsh/subagent-01a0ce48-f379-71e2-98d3-f25e871572a8,父提交就是065170b)经过两轮共四名独立审查,全部approved: false。未 cherry-pick,未推送,未关闭。工作树保留。已提交版本被拒绝的原因是审查直接复现的,不是报告自述:
- 编辑器的 model / reasoning 只有在后续 prompt 写出 dsh 请求头时才与终端共享。
session/set_config_option只更新内存,不写$GROK_HOME/model-selection.toml。隔离探针把模型设为cli-mock-fork后不发 prompt 就关闭,session/load回到["cli-mock","cli-mock"],选择文件不存在。 session/load把被拒绝的工具重放成 completed。持久结果把isError放在content[].type=tool-result,call id 在message.source.callId;已提交的rust-acp-session-read.mjs只匹配顶层message.toolCallId/isError。现场tool_call_update是 failed,文件未改,重放却是 completed。- 验收第 4 条未满足:没有一个受支持的编辑器完成会话。Zed 1.20.2 只打开空项目,
zed-fg.log没有 agent thread。stdio 测试不能代替。 - 终端与编辑器的权限模式不一致。编辑器的
acceptEdits/dontAsk写在session-owners/<id>.mode,当时已提交的终端 slash 只持久化 ask、auto、always-approve。协议测试没有在编辑器会话上打开终端客户端。
后续未提交改动仍留在该工作树,没有进入 HEAD:
packages/cli/bin/rust-acp-session-read.mjs、rust/src/editor_acp.rs、rust/src/main.rs、scripts/rust-acp-protocol.spec.mjs。实施者自己的收尾报告把这些标为 blocked:未格式化,未完整重测,新的投影用例在读者改动前是红的且没有再跑绿,报告仍描述8d0c72a,Zed 线程仍未完成。未提交的 diff 不能审查,也不能 cherry-pick。修复要求:在同一工作树把修复提交到
8d0c72a之上,补齐 model-selection 持久化、嵌套 tool-result 的 failed 重放、终端/dontAsk与/acceptEdits,并完成一次真实编辑器会话;再跑 typecheck、测试和独立审查。main 未改。#132 与 #212 不关闭。- 编辑器的 model / reasoning 只有在后续 prompt 写出 dsh 请求头时才与终端共享。
Ticket 15 / #147 已合入
rewrite/grok-dsh-20260920的ec9d6ae。codsh --rust agent stdio对编辑器说 ACP/JSON-RPC 1,执行仍由已发布的 dsh 完成。initialize 两边都是 v1。session/load、prompt、配置、审批和取消是真实行为。清单里未实现的x.ai/*、session/delete、session/fork、session/set_mode返回 method-not-found,不是成功。模型、力度和权限模式在 dsh 启动前与终端共享。第二个客户端在锁还被持有时会被拒绝。关闭编辑器会结束 dsh 进程组。本机装有 Zed 1.21.0。隔离用户目录打开了项目,但没有拉起
agent stdio,所以没有完成一次图形界面会话。可重复的验收是外部 Node 客户端走 stdio。VS Code 和 JetBrains 未安装。验证:
scripts/rust-acp-protocol.spec.mjs里编辑器相关 3 个用例通过。合并后cargo test454 + 498 + 42 + 61 + 2 + 379,0 失败。
Parent
#132
Ticket: 15
Status: ready-for-agent
User Stories: 58, 59(见父规格)
What to build
外部编辑器通过标准输入输出协议新建/恢复 dsh 会话,收取流式内容、审批工具、取消任务并修改会话选项。
Acceptance criteria
Blocked by
Delivery contract
用户于2026-09-20批准当前测试与任务拆分。按父规格的已安装产物/真实终端和公开协议测试验收;实际实现须带适用的文档、Changeset及必要检查。ready-for-agent表示任务已定义,不表示前置任务已完成,也不授权自动开始本轮实施、购买付费资源或发布软件版本。