Skip to content

[Grok/dsh 15] ACP 编辑器端到端接入 #147

Description

@Blackman99

Parent

#132

Ticket: 15

Status: ready-for-agent

User Stories: 58, 59(见父规格)

What to build

外部编辑器通过标准输入输出协议新建/恢复 dsh 会话,收取流式内容、审批工具、取消任务并修改会话选项。

Acceptance criteria

  • 实证双方 ACP 版本及协商,公开扩展按清单提供真实行为;不支持项不返回成功桩。
  • 外部客户端驱动 initialize/new/load/prompt/config/approval/cancel,验证响应、更新及错误关联。
  • 同一会话在终端与编辑器的内容、模型、权限和工具状态一致;关闭客户端不导致双执行。
  • 至少一个实际支持的编辑器接入验证,并提供可重复协议测试及设置文档。

Blocked by

Delivery contract

用户于2026-09-20批准当前测试与任务拆分。按父规格的已安装产物/真实终端和公开协议测试验收;实际实现须带适用的文档、Changeset及必要检查。ready-for-agent表示任务已定义,不表示前置任务已完成,也不授权自动开始本轮实施、购买付费资源或发布软件版本。

Activity

  1. self-assigned this
    on Sep 23, 2026
  2. Blackman99 commented on Sep 23, 2026

    @Blackman99
    OwnerAuthor

    按用户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,effort xhigh)。仅在实施、独立审查和集成验收通过后关闭。main、现有未跟踪文件及其他工作树不改动;不授权付费资源,#212仍须新的明确最终发布/默认切换批准。

  3. Blackman99 commented on Sep 23, 2026

    @Blackman99
    OwnerAuthor

    Ticket 15 / #147 未集成。隔离集成树 rewrite/grok-dsh-20260920 仍是 065170b46c44491f53abd6f21ed8ac438ba9906a。已提交的 worker HEAD 8d0c72a104eb228203a38e54b83a442a93800daa(工作树 /Users/zhaodongsheng/.grok/worktrees/my-projects-codsh/subagent-01a0ce48-f379-71e2-98d3-f25e871572a8,父提交就是 065170b)经过两轮共四名独立审查,全部 approved: false。未 cherry-pick,未推送,未关闭。工作树保留。

    已提交版本被拒绝的原因是审查直接复现的,不是报告自述:

    1. 编辑器的 model / reasoning 只有在后续 prompt 写出 dsh 请求头时才与终端共享。session/set_config_option 只更新内存,不写 $GROK_HOME/model-selection.toml。隔离探针把模型设为 cli-mock-fork 后不发 prompt 就关闭,session/load 回到 ["cli-mock","cli-mock"],选择文件不存在。
    2. 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。
    3. 验收第 4 条未满足:没有一个受支持的编辑器完成会话。Zed 1.20.2 只打开空项目,zed-fg.log 没有 agent thread。stdio 测试不能代替。
    4. 终端与编辑器的权限模式不一致。编辑器的 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 不关闭。

  4. Blackman99 commented on Sep 24, 2026

    @Blackman99
    OwnerAuthor

    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 test 454 + 498 + 42 + 61 + 2 + 379,0 失败。

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

Labels

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions