@harness-mix/cli 0.2.4 → 0.3.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +11 -0
- package/README.md +4 -4
- package/docs/harness-management.md +1 -1
- package/docs/multi-agent-collaboration.md +3 -1
- package/docs/native-acp.md +138 -127
- package/output/native-build/renderer-extension.js +149 -19
- package/package.json +4 -2
- package/scripts/acp-image-test.cjs +69 -0
- package/scripts/adapters-test.cjs +25 -0
- package/scripts/codex-accounts-test.cjs +34 -0
- package/scripts/codex-adapter-test.cjs +77 -1
- package/scripts/collaboration-test.cjs +304 -1
- package/scripts/collaboration-ui-smoke.cjs +25 -3
- package/scripts/e2e-delegate.cjs +1 -1
- package/scripts/e2e-hermes-image.cjs +60 -0
- package/scripts/openclaw-adapter-test.cjs +121 -3
- package/scripts/openclaw-mcp-probe.cjs +100 -0
- package/scripts/openclaw-mcp-tool-probe.cjs +55 -0
- package/scripts/openclaw-thinking-probe.cjs +73 -0
- package/scripts/storage-verification-test.cjs +11 -0
- package/src/main/adapters/claude.js +15 -7
- package/src/main/adapters/codex-app-server.js +29 -11
- package/src/main/adapters/codex.js +39 -5
- package/src/main/adapters/omp.js +7 -2
- package/src/main/adapters/openclaw.js +534 -343
- package/src/main/adapters/pi-family.js +35 -8
- package/src/main/adapters/zcode.js +12 -8
- package/src/main/host/collaboration-tools.js +1 -1
- package/src/main/host/collaboration.js +285 -36
- package/src/main/host/runtime.js +9 -3
- package/src/main/host/verification-gates.js +14 -2
- package/src/main/native/codex-accounts.js +15 -4
- package/src/main/native/protocol.js +6 -0
- package/src/native-ui/desktop-control/dist/renderer-cdp-control-session.js +3 -1
- package/src/native-ui/desktop-control/dist/renderer-cdp-control-session.js.map +1 -1
- package/src/native-ui/desktop-control/dist/tsconfig.tsbuildinfo +1 -1
- package/src/native-ui/renderer-extension/dist/types/renderer-binding-probe.d.ts.map +1 -1
- package/src/native-ui/renderer-extension/dist/types/renderer-collab-cards.d.ts +1 -0
- package/src/native-ui/renderer-extension/dist/types/renderer-collab-cards.d.ts.map +1 -1
- package/src/native-ui/renderer-extension/dist/types/renderer-model-client.d.ts +29 -0
- package/src/native-ui/renderer-extension/dist/types/renderer-model-client.d.ts.map +1 -1
- package/src/native-ui/renderer-extension/dist/types/renderer-team-cards.d.ts +4 -0
- package/src/native-ui/renderer-extension/dist/types/renderer-team-cards.d.ts.map +1 -1
- package/src/native-ui/renderer-extension/dist/types/tsconfig.tsbuildinfo +1 -1
- package/src/native-ui/renderer-extension/src/renderer-binding-probe.ts +20 -7
- package/src/native-ui/renderer-extension/src/renderer-collab-cards.ts +25 -0
- package/src/native-ui/renderer-extension/src/renderer-model-client.ts +27 -0
- package/src/native-ui/renderer-extension/src/renderer-team-cards.ts +93 -13
- package/src/native-ui/renderer-extension/test/renderer-model-client.test.ts +47 -1
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,16 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
+
## 0.3.0 — 2026-09-22
|
|
4
|
+
|
|
5
|
+
- **The Agent Team board is now operable by the user** (`harnessmix/thread/team/task/cancel`, `task/reassign`, `team/message/send`, `thread/collaboration/continue`): cancel a running task through the same settlement path as `cancel_delegation`, reassign failed or interrupted tasks to existing members (task reset to pending, `reassignedFrom` kept), nudge members as the lead, and resume paused collaboration through an injected lead instruction turn — authorization is principal-checked in `collaboration.userAction`. Task failures always reach the lead via a system mailbox notice carrying the reason, and `assign_team_task` accepts `retry {max 1..3}` so the Host auto re-dispatches the same member within the lead turn (session and workspace reused, prompt warns not to replay completed side effects); user cancels stay silent and unretried. Delegation dispatch also tolerates a momentarily busy member session (mailbox pump, user nudge, settle tail): the "task executing" rejection is retried for up to 10s instead of failing the task without a member turn. Worktree apply under an off gate attaches one advisory verification to the result (zero-config safety net, gate semantics unchanged), and renderer team cards gain the kanban action buttons, disabled states and unread badges. 团队看板可操作:取消/改派/追问/继续协作,任务失败必达 lead 邮箱并支持自动重派,派发容忍瞬时忙碌的成员会话。
|
|
6
|
+
- **New codex conversations no longer vanish silently**. `CodexAccountManager.#entry` ignored a registry account's explicit `codexHome` and rewrote it to `profiles/<accountId>` — a directory nothing ever creates — so the legacy `default` account pointed `CODEX_HOME` at a missing path and `codex` refused to start on a missing home (exit 1), killing every new thread with zero messages. Registry `codexHome` values are honored again, missing managed profile dirs are self-healed, and external-homed account slots can be deleted without touching their directories. The app-server `initialize` handshake gains a 20s guard (env-tunable via `HARNESS_MIX_CODEX_HANDSHAKE_TIMEOUT_MS`) that kills a wedged process instead of leaving `thread/start` pending forever — the failure the Desktop rendered as a task "executing" with no session and no sidebar entry — and `turn/start`'s "Agent is already processing" retry budget grows from ~0.8s to 20s (capped backoff) so a concurrent short turn on the shared app-server no longer fails the second thread. 修复 codex 新会话静默消失:尊重账号注册表 codexHome、目录自愈、握手超时兜底与并发 busy 重试扩窗。
|
|
7
|
+
- Stopping a worker thread through `runtime.cancel` bypassed team bookkeeping and wedged the team task `in_progress` forever (the member could never be delegated again); cancels now route through the shared `settleStoppedJob` path (member back to ready, task to pending/interrupted, team status republished), interrupted vs cancelled is recorded by closing state, and removing a thread forgets its team binding so later input falls back to a fresh child session. 停止子任务经团队图结算,任务不再永久卡在进行中。
|
|
8
|
+
- Hermes joins with verified image wiring (hermes 0.21.3 on a custom Anthropic-compatible endpoint: `initialize` reports `PromptCapabilities(image=True)`, and the 8x8 probe PNG flows through the `session/prompt` image block to the provider), the README matrix now mirrors the manifests, and a new acp-image-test covers the acpAdapter prompt-block shape, handshake gating and loud rejection for the whole ACP family (wired into `test:core-all`). Hermes 图像链路实测打通,ACP 家族图片用例入核。
|
|
9
|
+
- The command menu is thread-scoped: per-session native command lists (ACP `availableCommands`, Claude `supportedCommands`, pi `get_commands`, OpenCode `/command`, OpenClaw `commands.list`) now actually reach the UI — the menu previously always queried the session-less harness-level catalog; stale responses abort on thread switches. Codex surfaces its skills as slash commands (`skills/list`, live-probed 52 entries, slugified insert actions with older-app-server fallback), and Claude command descriptions gain argument hints with alias dedupe. 指令菜单按线程拉取真实目录,Codex 技能成为斜杠指令。
|
|
10
|
+
- OpenClaw: gateway `stream:"thinking"` frames project as thinking and `reasoningLevel=stream` is patched on session open (live-verified accepted on 2026.5.12); harness-mix-owned MCP servers reconcile into `openclaw.json` `mcp.servers` (equal-value guard, atomic, shape-preserving cleanup — verified end-to-end with a real gateway run invoking the probe tool); and gateway `commands.list` (~100 entries live-probed) maps into the command menu with argument hints. OpenClaw 思考投影、托管 MCP 注册表与原生指令接入。
|
|
11
|
+
- pi/OMP permission catalogs split per CLI: OMP 18.1.19 has no `--approve/--no-approve` flags — its real surface is `--approval-mode always-ask|write|yolo` — while pi keeps its live-reverified flags (0.84.2). pi/OMP 权限目录按各自 CLI 实际参数面对齐。
|
|
12
|
+
- ZCode headless-CLI probing covers per-machine (Program Files) installs in addition to the per-user layout, and the duplicated `bundledCli` definition that shadowed the first probe is gone. ZCode 探测整机安装布局,修复重复定义遮蔽。
|
|
13
|
+
|
|
3
14
|
## 0.2.4 — 2026-09-21
|
|
4
15
|
|
|
5
16
|
- **ZCode joins as a native harness**: a new adapter speaks the ZCode Protocol stdio app-server directly (`zcode.cjs app-server --stdio`, the same entry the ZCode desktop drives; the jsonl transport gains a `jsonrpc:false` pure-framing mode), replacing the never-workable ACP mapping — session create/resume/close, model selection with an explicit reasoning level (GLM models demand one), thought levels and context usage; events ride the desktop-continuous push with an afterSeq poll loop as fallback; server requests are answered per protocol (runtime preferences, official MCP auth decline, permission approval cards, user-input questions); the account push is key-free (`{builtinModelIds, access:{type, entitled}}` plus the credential entry name — the agent resolves its own shared credentials locally; the one sanctioned runtime key fetch stays in memory, never logged or persisted); image attachments are live-verified (local paths deliver to the model, base64 payloads are materialized to a temp file); permission modes use the canonical `session/setMode` enum; and ZCode is now a dispatchable collaboration worker, Agent-Team member and `/delegate` target with a yolo worker default (the `#` lead role stays off until the protocol gains runtime MCP registration). ZCode 原生适配器落地:直连 ZCode Protocol app-server,附件/权限模式/协作成员均实测可用。
|
package/README.md
CHANGED
|
@@ -118,8 +118,8 @@ Harness Mix 是接入官方 Codex Desktop 原生界面的本地内核。它通
|
|
|
118
118
|
| **DeepSeek** | 普通 Web Remote / 协作 ACP | ✅ | ✅ | ✅ | ✅ | ✅ / ✅ | ✅ | ✅ | ✅ |
|
|
119
119
|
| **OpenCode** | `opencode serve` (HTTP / SSE) | ✅ | ✅ | ✅ | ✅ | ✅ / ✅ | ✅ | ✅ | ✅ |
|
|
120
120
|
| **Grok** | `grok agent stdio` (`_x.ai/*`) | ✅ | ✅ | ✅ | ✅ | ✅ / ✅ | ✅ | ✅ | ✅ |
|
|
121
|
-
| **OpenClaw** | Gateway WebSocket Loopback | ✅ | ➖ | ✅ | ➖ | ✅ / ➖ | ✅ | ✅ |
|
|
122
|
-
| **Hermes** | `hermes acp` | ✅ | ✅ | ✅ |
|
|
121
|
+
| **OpenClaw** | Gateway WebSocket Loopback | ✅ | ➖ | ✅ | ➖ | ✅ / ➖ | ✅ | ✅ | ✅ |
|
|
122
|
+
| **Hermes** | `hermes acp` | ✅ | ✅ | ✅ | ➖ | ✅ / ✅ | ✅ | ✅ | ✅ |
|
|
123
123
|
| **CodeBuddy** | `codebuddy --acp` (`_codebuddy.ai/*`) | ✅ | ✅ | ✅ | ✅ | ✅ / ➖ | ✅ | ✅ | ✅ |
|
|
124
124
|
| **Kiro CLI** | `kiro-cli acp` (`_kiro/*`) | ✅ | ✅ | ✅ | ✅ | ✅ / ✅ | ➖ | ✅ | ✅ |
|
|
125
125
|
| **Cursor CLI** | `cursor-agent acp` (`cursor/*`) | ✅ | ✅ | ✅ | ✅ | ✅ / ➖ | ➖ | ✅ | ✅ |
|
|
@@ -353,8 +353,8 @@ Theme assets ship with the project and the images use licensed material from thi
|
|
|
353
353
|
| **DeepSeek** | Plain Web Remote / collaboration ACP | ✅ | ✅ | ✅ | ✅ | ✅ / ✅ | ✅ | ✅ | ✅ |
|
|
354
354
|
| **OpenCode** | `opencode serve` (HTTP / SSE) | ✅ | ✅ | ✅ | ✅ | ✅ / ✅ | ✅ | ✅ | ✅ |
|
|
355
355
|
| **Grok** | `grok agent stdio` (`_x.ai/*`) | ✅ | ✅ | ✅ | ✅ | ✅ / ✅ | ✅ | ✅ | ✅ |
|
|
356
|
-
| **OpenClaw** | Gateway WebSocket Loopback | ✅ | ➖ | ✅ | ➖ | ✅ / ➖ | ✅ | ✅ |
|
|
357
|
-
| **Hermes** | `hermes acp` | ✅ | ✅ | ✅ |
|
|
356
|
+
| **OpenClaw** | Gateway WebSocket Loopback | ✅ | ➖ | ✅ | ➖ | ✅ / ➖ | ✅ | ✅ | ✅ |
|
|
357
|
+
| **Hermes** | `hermes acp` | ✅ | ✅ | ✅ | ➖ | ✅ / ✅ | ✅ | ✅ | ✅ |
|
|
358
358
|
| **CodeBuddy** | `codebuddy --acp` (`_codebuddy.ai/*`) | ✅ | ✅ | ✅ | ✅ | ✅ / ➖ | ✅ | ✅ | ✅ |
|
|
359
359
|
| **Kiro CLI** | `kiro-cli acp` (`_kiro/*`) | ✅ | ✅ | ✅ | ✅ | ✅ / ✅ | ➖ | ✅ | ✅ |
|
|
360
360
|
| **Cursor CLI** | `cursor-agent acp` (`cursor/*`) | ✅ | ✅ | ✅ | ✅ | ✅ / ➖ | ➖ | ✅ | ✅ |
|
|
@@ -51,7 +51,7 @@ Harness Mix 不改写各 Harness 已有的 MCP 配置文件。启用的托管配
|
|
|
51
51
|
|
|
52
52
|
Skills 从每个 Harness 已声明的原生目录发现:全部 17 个 Harness 都登记了全局/项目根目录,所以设置页不再出现「暂未配置原生技能目录」。根目录来自各 Harness 官方文档与已安装程序自身的扫描代码,例如 Codex 的 `~/.agents/skills` 与兼容保留的 `$CODEX_HOME/skills`、Kiro 专用的 `.kiro/skills`、Trae IDE 的 `.trae/skills` 与 TraeCode CLI 的 `.traecli/skills`、Hermes 的 `~/.hermes/skills`、Cline 的 `~/.cline/skills` 与项目 `.cline/skills`。打开原生会话时会先创建缺失的根目录,已安装但从未运行过的 Harness 也能立即发现技能;某个目录创建失败只会提示并跳过,不会阻止会话打开。可以把单个 Markdown 文件直接拖入并作为 `SKILL.md` 安装,也可以拖入或选择根目录含 `SKILL.md` 的完整技能文件夹。拖入内容经过同一套限制:拒绝路径逃逸、同名覆盖、超过 10 MB 或 500 个文件的技能。原有本机绝对目录安装协议仍兼容。停用会把整个技能目录移动到相邻的 Harness Mix 保留目录,恢复时原样移回;不删除技能内容。共享 `.agents/skills` 的修改会影响读取同一目录的 Harness。
|
|
53
53
|
|
|
54
|
-
当前 MCP 会话注入支持 Claude Code、Codex(协作入口)、OpenCode、Grok、Antigravity,以及使用通用 ACP 接入的 CodeBuddy、Kiro、Cursor、Qoder 和 Hermes。DSH 配置托管 MCP 后会使用其官方 ACP profile 打开该会话;未配置时仍走 Web Remote。Pi/OMP 的 MCP 扩展机制不是通用原生 MCP 声明,当前只保留已有协作工具注入;设置页会明确显示不支持。每个 Harness 都登记了原生技能根目录,只有链接到其他位置的目录(junction/symlink)保持只读。
|
|
54
|
+
当前 MCP 会话注入支持 Claude Code、Codex(协作入口)、OpenCode、Grok、Antigravity,以及使用通用 ACP 接入的 CodeBuddy、Kiro、Cursor、Qoder 和 Hermes。OpenClaw 走独立的注册表路线:托管服务器以 `harness-mix/<服务名>` 自有键合并进 `~/.openclaw/openclaw.json` 的 `mcp.servers`(OpenClaw 官方集中式 MCP 客户端注册表),只增删改自有键、写回前做"去自有键后逐键等值"断言,用户手写的服务器定义绝不触碰。上游 CLI `openclaw mcp set` 的整档规范化写入会触发 size-drop 守卫,故不走 CLI/RPC 写入面;首次推送会把 PowerShell 风格排版规整为标准 JSON(内容逐键保留)。实测(Gateway 2026.5.12)`mcp.servers` 仅在 Gateway 启动时被 agent 运行消费:由 Harness Mix 拉起的 Gateway 启动即生效;已在运行的 Gateway 需重启后新工具才可用(会话打开时给出对应提示)。DSH 配置托管 MCP 后会使用其官方 ACP profile 打开该会话;未配置时仍走 Web Remote。Pi/OMP 的 MCP 扩展机制不是通用原生 MCP 声明,当前只保留已有协作工具注入;设置页会明确显示不支持。每个 Harness 都登记了原生技能根目录,只有链接到其他位置的目录(junction/symlink)保持只读。
|
|
55
55
|
|
|
56
56
|
## 验证
|
|
57
57
|
|
|
@@ -50,6 +50,8 @@ Agent Team 复用同一套原生 Harness Session,但把 `Team`、`Member`、`T
|
|
|
50
50
|
- Claude 的 `canUseTool` 和 Codex MCP elicitation 继续走原生审批。需要确认时,用户在相应任务的审批界面处理;自动验证不会代答。
|
|
51
51
|
- 主任务 Fork 会重新绑定自己的协作身份,不复用源任务的子任务访问权。
|
|
52
52
|
- task_id、父子会话、任务文本、结果、worktree 起点以及 Team/Member/Task/Message 在独立串行存储中持久化;重启后在途 Job、Team Task 和 Member 一起变为 interrupted,不会继续显示为“工作中”,也不自动重复执行有副作用的操作。点击「继续协作」向原主任务发送续跑请求,主模型用 `list_delegations` / `resume_delegation` 恢复原子会话,并把同一 Team Task/Member 原子地切回进行中。原生会话丢失或无法恢复会明确报错。会话鉴权标识不持久化,重启重新签发。
|
|
53
|
+
- 团队看板是可操作的(principal 是用户,授权在 Host 的 `collaboration.userAction` 统一裁决):任务卡可「取消」进行中任务(走与 `cancel_delegation` 相同的结算路径)、「重试/改派」失败或中断任务(目标限既有成员,任务重置为待开始并保留 `reassignedFrom` 痕迹);成员卡可「追问」以 lead 身份发团队消息;摘要卡与 Workbench 头部有「继续协作」,一次性委派的协作卡上有「恢复此任务」。改派与继续协作要求 lead 回合空闲:Host 向 lead 线程注入一条指令回合(指令自带目标成员的 `#` 提及,走与用户手打提及完全相同的授权路径),由 lead 在该回合内重新派发或恢复。协议面为 `harnessmix/thread/team/task/cancel`、`team/task/reassign`、`team/message/send`、`harnessmix/thread/collaboration/continue`。
|
|
54
|
+
- 任务失败必达 lead 邮箱:失败结算时以 `system` 伪参与者(不进 roster、不投递)写入一条带原因的通知,lead 无需轮询也能从 `get_team_state` 看到失败。`assign_team_task` 可声明 `retry {max 1..3}`:失败时 Host 在同一 lead 回合内自动重派给原成员(复用其会话与工作区,提示词附上次失败原因与“不要重放已完成副作用”),预算耗尽才落 failed;未声明则失败即落定。用户主动取消不是失败:不通知、不重试。
|
|
53
55
|
|
|
54
56
|
## 支持与验证范围
|
|
55
57
|
|
|
@@ -79,7 +81,7 @@ npm run e2e:native
|
|
|
79
81
|
npm run build:native
|
|
80
82
|
```
|
|
81
83
|
|
|
82
|
-
`test:collaboration` 使用真实 MCP stdio 子进程、本地鉴权桥和受控原生会话 Adapter 验证并发、结果、跟进、取消、跨任务访问限制、Agent Team
|
|
84
|
+
`test:collaboration` 使用真实 MCP stdio 子进程、本地鉴权桥和受控原生会话 Adapter 验证并发、结果、跟进、取消、跨任务访问限制、Agent Team 身份/任务依赖/成员邮箱、时间轴持久化和共享快照策略,并覆盖看板用户操作(取消/改派/重试/追问/继续协作,含 lead 回合空闲约束与协议透传)、任务失败的 lead 邮箱 system 通知与 `retry` 自动重派、忙碌收件人排队投递与未读计数清零。`test:collaboration` 与 `test:collaboration-recovery` 已并入 `test:core-all`。UI smoke 检查摘要入口、内嵌工作台、Lead/成员职责、真实 Harness 图标、成员会话跳转、成员任务列、通信流、时间轴、看板操作按钮(失败/中断任务的重试/改派/恢复、进行中任务的取消)、lead 忙碌时「继续协作」的禁用态与成员未读徽标,截图位于 `output/collaboration-ui/team-inline-expanded.png`。这不是完整 Codex Desktop 的真实模型交互验收;构建过程不会重启当前桌面。
|
|
83
85
|
|
|
84
86
|
2026-09-12 验证:Pi→Claude 两个真实子任务分别在不同 worktree 运行,DSH→CodeBuddy 两个真实子任务也在独立 worktree 完成并由 DSH 主会话汇总 `COLLAB_VERIFIED`。恢复测试覆盖持久化身份、原子会话续跑、不重复建任务;Git 测试覆盖脏目录起点、暂存区保留、过期预览拒绝、冲突时不部分应用。Native Protocol 覆盖父子任务归属与原生 MCP 工具卡片,Electron 仅覆盖原生输入框中的协作引用增强。Runtime 保持 Adapter `open()` 返回对象的同一身份,避免原生回调更新到浅拷贝而被活动回合闸门丢弃。
|
|
85
87
|
## 统一历史
|
package/docs/native-acp.md
CHANGED
|
@@ -1,127 +1,138 @@
|
|
|
1
|
-
# CodeBuddy、Kiro CLI、Cursor CLI 与其他原生 ACP 接入
|
|
2
|
-
|
|
3
|
-
CodeBuddy、Kiro CLI、Cursor CLI、Qoder 和 Cline 使用原生 ACP stdio,并在 `native-acp.js`、
|
|
4
|
-
`acp-interactions.js` 中处理厂商差异。ZCode、Trae 也复用此引擎,但当前只有显式
|
|
5
|
-
ACP 程序配置入口,尚未验证可用桥接程序,不能称为已完成官方原生接入。
|
|
6
|
-
不替换原生账号、不代理模型供应商、不自动批准工具请求。
|
|
7
|
-
|
|
8
|
-
## 安装与旧名称兼容
|
|
9
|
-
|
|
10
|
-
| Harness ID | 原生启动 | 可选路径变量 | 安装入口 |
|
|
11
|
-
| --- | --- | --- | --- |
|
|
12
|
-
| `codebuddy` | `codebuddy --acp` | `HARNESS_MIX_CODEBUDDY_EXECUTABLE` | [CodeBuddy CLI](https://www.codebuddy.ai/docs/cli/overview) |
|
|
13
|
-
| `kiro-cli` | `kiro-cli acp --agent-engine v3 --auth-method cli` | `HARNESS_MIX_KIRO_EXECUTABLE` | [Kiro CLI](https://kiro.dev/docs/cli/) |
|
|
14
|
-
| `cursor-cli` | `cursor-agent acp` | `HARNESS_MIX_CURSOR_EXECUTABLE` | [Cursor CLI](https://cursor.com/docs/cli/installation) |
|
|
15
|
-
| `qoder` | `qodercli --acp` / `qoder --acp` | `HARNESS_MIX_QODER_EXECUTABLE` | [Qoder 官方 ACP 文档](https://docs.qoder.com/cli/acp) |
|
|
16
|
-
| `zcode` | 显式指定 ACP 桥接程序,无附加参数 | `HARNESS_MIX_ZCODE_ACP_EXECUTABLE` | [ZCode](https://zcode.z.ai/);本机原生 CLI 仅确认 app-server |
|
|
17
|
-
| `trae` | 显式指定兼容 ACP 程序,无附加参数 | `HARNESS_MIX_TRAE_EXECUTABLE` | [官方 trae-agent](https://github.com/bytedance/trae-agent);未确认 ACP 支持 |
|
|
18
|
-
| `cline` | `cline --acp` | `HARNESS_MIX_CLINE_EXECUTABLE` | [Cline CLI](https://docs.cline.bot/usage/cli-overview);官方文档与源码均确认 ACP |
|
|
19
|
-
|
|
20
|
-
Qoder 在 Windows 上识别 npm 包并直接启动官方 JavaScript bundle。ZCode 的
|
|
21
|
-
`app-server --stdio` 使用厂商协议,不能直接填入 ACP 程序路径。旧的 `zcode acp`、
|
|
22
|
-
`traecli acp serve` 缺少官方依据,已移除;未配置桥接时明确显示不可用。
|
|
23
|
-
Trae 官方开源项目的命令名是 `trae-cli`,不代表它具备 ACP 服务模式。
|
|
24
|
-
本项目不自动安装第三方桥接器,也不复制其凭据同步或默认 yolo 策略。
|
|
25
|
-
|
|
26
|
-
CodeBuddy 优先使用明确指定的路径,再搜索 PATH 和 WorkBuddy 桌面自带的
|
|
27
|
-
CodeBuddy CLI。旧变量 `HARNESS_MIX_WORKBUDDY_EXECUTABLE` 继续有效,新变量优先。
|
|
28
|
-
`workbuddy` 是兼容别名;只注册一个 CodeBuddy 适配器。启动时迁移 Host 任务和
|
|
29
|
-
Harness 切换历史中的旧 ID,保留原生会话 ID、文件位置和对话内容。
|
|
30
|
-
Renderer 读取旧默认模型和分组偏好时同步迁移旧名称。
|
|
31
|
-
|
|
32
|
-
Cursor 在 Windows 上识别官方版本目录并直接运行其 Node bundle。
|
|
33
|
-
不使用含义不明确的 `agent` 命令,因为它也可能属于 Grok。
|
|
34
|
-
显式路径无效会报错,不能静默转向其他安装。
|
|
35
|
-
|
|
36
|
-
## 专用适配
|
|
37
|
-
|
|
38
|
-
| 能力 | CodeBuddy | Kiro CLI | Cursor CLI |
|
|
39
|
-
| --- | --- | --- | --- |
|
|
40
|
-
| 模型/配置 | 原生 model、thought_level、mode;等待确认 | 原生 model、effortLevel;auto 不显示独立 effort | 保留完整模型变体及原生执行模式 |
|
|
41
|
-
| 审批 | 保留原生 optionId 与单次/持久范围 | 原生选项;consent 携带会话/工作区及资源元数据 | 原生 optionId 与作用范围 |
|
|
42
|
-
| 提问 | AskUserQuestion → resolveInterruption;旧 question 回调;失败可重试 | `_kiro/userInput` 文字/选项 | `cursor/ask_question` 单选/多选 |
|
|
43
|
-
| 计划 | ACP plan 投影 | ACP plan 投影 | `cursor/create_plan` 接受/拒绝/取消 |
|
|
44
|
-
| 取消 | 等待取消完成,再关闭、重连、load 同一会话并恢复确认过的配置 | 原生 cancel;超时关闭并报故障 | 原生 cancel;超时关闭并报故障 |
|
|
45
|
-
| 恢复 | session/load;加载期间不重复输出历史 | session/load | session/load |
|
|
46
|
-
| 压缩/fork | 不支持 | 仅调用握手声明的 compact/fork;不伪造检查点 | 不支持 |
|
|
47
|
-
| 用量 | 按原生 model request ID 去重 Token/Credits;标准 ACP 上下文 | 原生上下文百分比、usage 元数据 Credits 去重 | 不声明用量 |
|
|
48
|
-
| 原生历史导入 | JSONL 当前 parent 链,校验 cwd/session/path/大小/环 | 仅现有 Host 历史与原生恢复 | 仅现有 Host 历史与原生恢复 |
|
|
49
|
-
|
|
50
|
-
共享处理包括:每会话独立进程、会话级 MCP 注入、拒绝并发提交和忙时改配置、
|
|
51
|
-
30 秒启动/配置/取消超时、忽略其他会话和旧连接事件、工具终态去重、仅在工具
|
|
52
|
-
成功后投影原生完整 Diff。已知 Cursor 损坏的 diff header 回退保持为工具输出,
|
|
53
|
-
不猜测文件内容。Credits 保持独立字段,不换算为美元。
|
|
54
|
-
|
|
55
|
-
多选问题目前通过输入 JSON 字符串数组表达;选项会展示在问题中,提交时按原生
|
|
56
|
-
选项 ID 校验。CodeBuddy 允许原生提问支持的自定义回答。
|
|
57
|
-
|
|
58
|
-
## 能力边界
|
|
59
|
-
|
|
60
|
-
- 这是针对本项目接口实现的适配,不是完整移植上游项目的插件系统。
|
|
61
|
-
- 原生子 Agent 的独立卡片、后台生命周期与子会话历史浏览尚未实现。
|
|
62
|
-
CodeBuddy 带 parentToolCallId 的子 Agent 内容不会混入父回答。
|
|
63
|
-
- Kiro fork 只读取并校验原生 session.json/messages.jsonl 的最新完整 turn_end,
|
|
64
|
-
将真实 messageId 传入原生 fork;压缩、tombstone 或缺失边界明确拒绝。
|
|
65
|
-
- Kiro 原生历史导入、Cursor 的内部 SQLite 历史导入未实现;恢复已有 Host
|
|
66
|
-
任务使用原生 session/load,不读写其私有数据库。
|
|
67
|
-
- CodeBuddy/Kiro/Cursor/Qoder 的图片以 ACP image block 传递,仅在原生握手声明
|
|
68
|
-
`promptCapabilities.image` 时接受;缺失能力时拒绝,不能静默丢图。2026-09-12
|
|
69
|
-
实机图片回路在 CodeBuddy 通过;Kiro/Cursor 未安装,Qoder 被额度阻断。DSH 和
|
|
70
|
-
OpenClaw 的当前模型明确拒绝图片,属于模型能力限制而非 Host 丢图。
|
|
71
|
-
- 精确消息回退、CodeBuddy/Cursor fork、账号配额查询不声明支持。
|
|
72
|
-
- Kiro autopilot 不伪装为 Host 权限级别;未知扩展请求明确报不支持。
|
|
73
|
-
- Cline 官方 ACP(apps/cli/src/acp)已核对:握手声明 loadSession 与图片输入,
|
|
74
|
-
session/new 返回 plan/act 模式与模型目录,审批走标准 session/request_permission。
|
|
75
|
-
其事件投影没有 plan 条目、diff 内容块、usage_update 或 thinking 档位配置,
|
|
76
|
-
对应能力一律不声明;提问以审批选项形式出现,不伪造独立提问通道。
|
|
77
|
-
- 部分 CLI 不提供原生 Diff 或用量,缺失时不从当前文件/估算值补造。
|
|
78
|
-
- CodeBuddy/Kiro/Cursor/Qoder/Cline/ZCode/Trae 的 ACP 会话可接收每会话 MCP 定义,
|
|
79
|
-
但只有本机安装且握手成功的程序才会开放入口;ZCode、Trae 仍需显式兼容 ACP
|
|
80
|
-
桥接器,不能把其 app-server 或普通 CLI 当成 ACP。
|
|
81
|
-
- DSH 协作主任务走官方 `dsh --profile acp`,由同一 ACP 引擎接收 session-scoped
|
|
82
|
-
MCP;普通 DSH 任务继续使用 Web Remote。Runtime 保持 Adapter `open()` 返回
|
|
83
|
-
的会话对象身份,避免原生回调更新到浅拷贝而被活动回合闸门丢弃。
|
|
84
|
-
|
|
85
|
-
## 验证
|
|
86
|
-
|
|
87
|
-
```powershell
|
|
88
|
-
npm run test:native-acp-depth
|
|
89
|
-
npm run test:kiro-cursor
|
|
90
|
-
npm run test:core-all
|
|
91
|
-
npm run test:native-ui
|
|
92
|
-
npm run e2e:native-acp
|
|
93
|
-
npm run e2e:native
|
|
94
|
-
npm run health:harnesses -- --live
|
|
95
|
-
npm run health:harnesses -- --live --image-only --image=<绝对图片路径>
|
|
96
|
-
```
|
|
97
|
-
|
|
98
|
-
深度协议测试使用模拟原生子进程,覆盖取消/重连后继续、配置确认、忙时拒绝、
|
|
99
|
-
会话隔离、审批原生 ID、提问失败重试、多选、计划拒绝、Kiro 上下文/fork、
|
|
100
|
-
Diff 去重、历史 parent 环和 Credits 去重。这些测试不是模型执行证据。
|
|
101
|
-
|
|
102
|
-
2026-09-12 实机结果:CodeBuddy 2.132.0 返回 17 个模型和 8 个模式,完成文本
|
|
103
|
-
回复后关闭进程,session/load 同一原生会话并再次回复成功。此版本当前模型未
|
|
104
|
-
返回独立思考选项,因此未伪造档位。Kiro/Cursor 未在 PATH 和默认目录发现,
|
|
105
|
-
真实模型、专用交互以及重启桌面验收待安装登录后完成。日志保存在
|
|
106
|
-
`output/native-acp-live/1789182835967/report.json`(本地构建产物,不提交)。
|
|
107
|
-
|
|
108
|
-
Qoder 1.1.49 实机完成 ACP 初始化、创建会话,返回 1 个模型和 5 个原生模式。
|
|
109
|
-
文本请求返回账号 Credits 额度耗尽,因此模型回复、恢复和工具执行尚未通过实机验证。
|
|
110
|
-
日志:`output/native-acp-live/1789187177461/report.json`。
|
|
111
|
-
新增六种协议配置的模拟进程回归、延迟 ACP 最终事件回归和图片握手拒绝测试;
|
|
112
|
-
ZCode/Trae 的模拟测试只验证共享引擎,不能作为其官方 CLI 已接通的证据。
|
|
113
|
-
|
|
114
|
-
2026-09-12 全 Harness 健康检查(均在独立临时工作目录执行):文本回路通过
|
|
115
|
-
Pi、DSH、Claude Code、Codex、Grok、CodeBuddy;OpenCode 被账户余额阻断,Qoder
|
|
116
|
-
被 Credits 额度阻断,OMP、Hermes、Kiro、Cursor 未安装。图片回路通过
|
|
117
|
-
Antigravity、Pi、Claude Code、Codex、Grok、CodeBuddy;DSH/OpenClaw 的当前模型
|
|
118
|
-
拒绝图片,Qoder/OpenCode 分别被额度/余额阻断。报告:
|
|
119
|
-
`output/harness-health/1789191914230/report.json`(文本)和
|
|
120
|
-
`output/harness-health/1789191791797/report.json`(图片)。
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
的
|
|
126
|
-
|
|
127
|
-
|
|
1
|
+
# CodeBuddy、Kiro CLI、Cursor CLI 与其他原生 ACP 接入
|
|
2
|
+
|
|
3
|
+
CodeBuddy、Kiro CLI、Cursor CLI、Qoder 和 Cline 使用原生 ACP stdio,并在 `native-acp.js`、
|
|
4
|
+
`acp-interactions.js` 中处理厂商差异。ZCode、Trae 也复用此引擎,但当前只有显式
|
|
5
|
+
ACP 程序配置入口,尚未验证可用桥接程序,不能称为已完成官方原生接入。
|
|
6
|
+
不替换原生账号、不代理模型供应商、不自动批准工具请求。
|
|
7
|
+
|
|
8
|
+
## 安装与旧名称兼容
|
|
9
|
+
|
|
10
|
+
| Harness ID | 原生启动 | 可选路径变量 | 安装入口 |
|
|
11
|
+
| --- | --- | --- | --- |
|
|
12
|
+
| `codebuddy` | `codebuddy --acp` | `HARNESS_MIX_CODEBUDDY_EXECUTABLE` | [CodeBuddy CLI](https://www.codebuddy.ai/docs/cli/overview) |
|
|
13
|
+
| `kiro-cli` | `kiro-cli acp --agent-engine v3 --auth-method cli` | `HARNESS_MIX_KIRO_EXECUTABLE` | [Kiro CLI](https://kiro.dev/docs/cli/) |
|
|
14
|
+
| `cursor-cli` | `cursor-agent acp` | `HARNESS_MIX_CURSOR_EXECUTABLE` | [Cursor CLI](https://cursor.com/docs/cli/installation) |
|
|
15
|
+
| `qoder` | `qodercli --acp` / `qoder --acp` | `HARNESS_MIX_QODER_EXECUTABLE` | [Qoder 官方 ACP 文档](https://docs.qoder.com/cli/acp) |
|
|
16
|
+
| `zcode` | 显式指定 ACP 桥接程序,无附加参数 | `HARNESS_MIX_ZCODE_ACP_EXECUTABLE` | [ZCode](https://zcode.z.ai/);本机原生 CLI 仅确认 app-server |
|
|
17
|
+
| `trae` | 显式指定兼容 ACP 程序,无附加参数 | `HARNESS_MIX_TRAE_EXECUTABLE` | [官方 trae-agent](https://github.com/bytedance/trae-agent);未确认 ACP 支持 |
|
|
18
|
+
| `cline` | `cline --acp` | `HARNESS_MIX_CLINE_EXECUTABLE` | [Cline CLI](https://docs.cline.bot/usage/cli-overview);官方文档与源码均确认 ACP |
|
|
19
|
+
|
|
20
|
+
Qoder 在 Windows 上识别 npm 包并直接启动官方 JavaScript bundle。ZCode 的
|
|
21
|
+
`app-server --stdio` 使用厂商协议,不能直接填入 ACP 程序路径。旧的 `zcode acp`、
|
|
22
|
+
`traecli acp serve` 缺少官方依据,已移除;未配置桥接时明确显示不可用。
|
|
23
|
+
Trae 官方开源项目的命令名是 `trae-cli`,不代表它具备 ACP 服务模式。
|
|
24
|
+
本项目不自动安装第三方桥接器,也不复制其凭据同步或默认 yolo 策略。
|
|
25
|
+
|
|
26
|
+
CodeBuddy 优先使用明确指定的路径,再搜索 PATH 和 WorkBuddy 桌面自带的
|
|
27
|
+
CodeBuddy CLI。旧变量 `HARNESS_MIX_WORKBUDDY_EXECUTABLE` 继续有效,新变量优先。
|
|
28
|
+
`workbuddy` 是兼容别名;只注册一个 CodeBuddy 适配器。启动时迁移 Host 任务和
|
|
29
|
+
Harness 切换历史中的旧 ID,保留原生会话 ID、文件位置和对话内容。
|
|
30
|
+
Renderer 读取旧默认模型和分组偏好时同步迁移旧名称。
|
|
31
|
+
|
|
32
|
+
Cursor 在 Windows 上识别官方版本目录并直接运行其 Node bundle。
|
|
33
|
+
不使用含义不明确的 `agent` 命令,因为它也可能属于 Grok。
|
|
34
|
+
显式路径无效会报错,不能静默转向其他安装。
|
|
35
|
+
|
|
36
|
+
## 专用适配
|
|
37
|
+
|
|
38
|
+
| 能力 | CodeBuddy | Kiro CLI | Cursor CLI |
|
|
39
|
+
| --- | --- | --- | --- |
|
|
40
|
+
| 模型/配置 | 原生 model、thought_level、mode;等待确认 | 原生 model、effortLevel;auto 不显示独立 effort | 保留完整模型变体及原生执行模式 |
|
|
41
|
+
| 审批 | 保留原生 optionId 与单次/持久范围 | 原生选项;consent 携带会话/工作区及资源元数据 | 原生 optionId 与作用范围 |
|
|
42
|
+
| 提问 | AskUserQuestion → resolveInterruption;旧 question 回调;失败可重试 | `_kiro/userInput` 文字/选项 | `cursor/ask_question` 单选/多选 |
|
|
43
|
+
| 计划 | ACP plan 投影 | ACP plan 投影 | `cursor/create_plan` 接受/拒绝/取消 |
|
|
44
|
+
| 取消 | 等待取消完成,再关闭、重连、load 同一会话并恢复确认过的配置 | 原生 cancel;超时关闭并报故障 | 原生 cancel;超时关闭并报故障 |
|
|
45
|
+
| 恢复 | session/load;加载期间不重复输出历史 | session/load | session/load |
|
|
46
|
+
| 压缩/fork | 不支持 | 仅调用握手声明的 compact/fork;不伪造检查点 | 不支持 |
|
|
47
|
+
| 用量 | 按原生 model request ID 去重 Token/Credits;标准 ACP 上下文 | 原生上下文百分比、usage 元数据 Credits 去重 | 不声明用量 |
|
|
48
|
+
| 原生历史导入 | JSONL 当前 parent 链,校验 cwd/session/path/大小/环 | 仅现有 Host 历史与原生恢复 | 仅现有 Host 历史与原生恢复 |
|
|
49
|
+
|
|
50
|
+
共享处理包括:每会话独立进程、会话级 MCP 注入、拒绝并发提交和忙时改配置、
|
|
51
|
+
30 秒启动/配置/取消超时、忽略其他会话和旧连接事件、工具终态去重、仅在工具
|
|
52
|
+
成功后投影原生完整 Diff。已知 Cursor 损坏的 diff header 回退保持为工具输出,
|
|
53
|
+
不猜测文件内容。Credits 保持独立字段,不换算为美元。
|
|
54
|
+
|
|
55
|
+
多选问题目前通过输入 JSON 字符串数组表达;选项会展示在问题中,提交时按原生
|
|
56
|
+
选项 ID 校验。CodeBuddy 允许原生提问支持的自定义回答。
|
|
57
|
+
|
|
58
|
+
## 能力边界
|
|
59
|
+
|
|
60
|
+
- 这是针对本项目接口实现的适配,不是完整移植上游项目的插件系统。
|
|
61
|
+
- 原生子 Agent 的独立卡片、后台生命周期与子会话历史浏览尚未实现。
|
|
62
|
+
CodeBuddy 带 parentToolCallId 的子 Agent 内容不会混入父回答。
|
|
63
|
+
- Kiro fork 只读取并校验原生 session.json/messages.jsonl 的最新完整 turn_end,
|
|
64
|
+
将真实 messageId 传入原生 fork;压缩、tombstone 或缺失边界明确拒绝。
|
|
65
|
+
- Kiro 原生历史导入、Cursor 的内部 SQLite 历史导入未实现;恢复已有 Host
|
|
66
|
+
任务使用原生 session/load,不读写其私有数据库。
|
|
67
|
+
- CodeBuddy/Kiro/Cursor/Qoder 的图片以 ACP image block 传递,仅在原生握手声明
|
|
68
|
+
`promptCapabilities.image` 时接受;缺失能力时拒绝,不能静默丢图。2026-09-12
|
|
69
|
+
实机图片回路在 CodeBuddy 通过;Kiro/Cursor 未安装,Qoder 被额度阻断。DSH 和
|
|
70
|
+
OpenClaw 的当前模型明确拒绝图片,属于模型能力限制而非 Host 丢图。
|
|
71
|
+
- 精确消息回退、CodeBuddy/Cursor fork、账号配额查询不声明支持。
|
|
72
|
+
- Kiro autopilot 不伪装为 Host 权限级别;未知扩展请求明确报不支持。
|
|
73
|
+
- Cline 官方 ACP(apps/cli/src/acp)已核对:握手声明 loadSession 与图片输入,
|
|
74
|
+
session/new 返回 plan/act 模式与模型目录,审批走标准 session/request_permission。
|
|
75
|
+
其事件投影没有 plan 条目、diff 内容块、usage_update 或 thinking 档位配置,
|
|
76
|
+
对应能力一律不声明;提问以审批选项形式出现,不伪造独立提问通道。
|
|
77
|
+
- 部分 CLI 不提供原生 Diff 或用量,缺失时不从当前文件/估算值补造。
|
|
78
|
+
- CodeBuddy/Kiro/Cursor/Qoder/Cline/ZCode/Trae 的 ACP 会话可接收每会话 MCP 定义,
|
|
79
|
+
但只有本机安装且握手成功的程序才会开放入口;ZCode、Trae 仍需显式兼容 ACP
|
|
80
|
+
桥接器,不能把其 app-server 或普通 CLI 当成 ACP。
|
|
81
|
+
- DSH 协作主任务走官方 `dsh --profile acp`,由同一 ACP 引擎接收 session-scoped
|
|
82
|
+
MCP;普通 DSH 任务继续使用 Web Remote。Runtime 保持 Adapter `open()` 返回
|
|
83
|
+
的会话对象身份,避免原生回调更新到浅拷贝而被活动回合闸门丢弃。
|
|
84
|
+
|
|
85
|
+
## 验证
|
|
86
|
+
|
|
87
|
+
```powershell
|
|
88
|
+
npm run test:native-acp-depth
|
|
89
|
+
npm run test:kiro-cursor
|
|
90
|
+
npm run test:core-all
|
|
91
|
+
npm run test:native-ui
|
|
92
|
+
npm run e2e:native-acp
|
|
93
|
+
npm run e2e:native
|
|
94
|
+
npm run health:harnesses -- --live
|
|
95
|
+
npm run health:harnesses -- --live --image-only --image=<绝对图片路径>
|
|
96
|
+
```
|
|
97
|
+
|
|
98
|
+
深度协议测试使用模拟原生子进程,覆盖取消/重连后继续、配置确认、忙时拒绝、
|
|
99
|
+
会话隔离、审批原生 ID、提问失败重试、多选、计划拒绝、Kiro 上下文/fork、
|
|
100
|
+
Diff 去重、历史 parent 环和 Credits 去重。这些测试不是模型执行证据。
|
|
101
|
+
|
|
102
|
+
2026-09-12 实机结果:CodeBuddy 2.132.0 返回 17 个模型和 8 个模式,完成文本
|
|
103
|
+
回复后关闭进程,session/load 同一原生会话并再次回复成功。此版本当前模型未
|
|
104
|
+
返回独立思考选项,因此未伪造档位。Kiro/Cursor 未在 PATH 和默认目录发现,
|
|
105
|
+
真实模型、专用交互以及重启桌面验收待安装登录后完成。日志保存在
|
|
106
|
+
`output/native-acp-live/1789182835967/report.json`(本地构建产物,不提交)。
|
|
107
|
+
|
|
108
|
+
Qoder 1.1.49 实机完成 ACP 初始化、创建会话,返回 1 个模型和 5 个原生模式。
|
|
109
|
+
文本请求返回账号 Credits 额度耗尽,因此模型回复、恢复和工具执行尚未通过实机验证。
|
|
110
|
+
日志:`output/native-acp-live/1789187177461/report.json`。
|
|
111
|
+
新增六种协议配置的模拟进程回归、延迟 ACP 最终事件回归和图片握手拒绝测试;
|
|
112
|
+
ZCode/Trae 的模拟测试只验证共享引擎,不能作为其官方 CLI 已接通的证据。
|
|
113
|
+
|
|
114
|
+
2026-09-12 全 Harness 健康检查(均在独立临时工作目录执行):文本回路通过
|
|
115
|
+
Pi、DSH、Claude Code、Codex、Grok、CodeBuddy;OpenCode 被账户余额阻断,Qoder
|
|
116
|
+
被 Credits 额度阻断,OMP、Hermes、Kiro、Cursor 未安装。图片回路通过
|
|
117
|
+
Antigravity、Pi、Claude Code、Codex、Grok、CodeBuddy;DSH/OpenClaw 的当前模型
|
|
118
|
+
拒绝图片,Qoder/OpenCode 分别被额度/余额阻断。报告:
|
|
119
|
+
`output/harness-health/1789191914230/report.json`(文本)和
|
|
120
|
+
`output/harness-health/1789191791797/report.json`(图片)。
|
|
121
|
+
|
|
122
|
+
2026-09-21 Hermes 实机验证(v0.21.3,自定义 Anthropic 兼容端点):ACP initialize 实测
|
|
123
|
+
上报 PromptCapabilities(image=True) 与 loadSession=true;session/new 强制要求 mcpServers
|
|
124
|
+
字段,注入行为完整的 stdio MCP 服务器后正常创建会话(acp-capabilities-probe 自带的
|
|
125
|
+
极简 dummy server 会让 Hermes 的 MCP 客户端握手挂起,属探针局限,非 Hermes 问题)。
|
|
126
|
+
图片回路:8x8 红色 PNG 经 session/prompt image 块送入并到达 provider API(当日可用
|
|
127
|
+
的 MiniMax Anthropic 兼容端点对图片请求返回 500,模型层不可见 —— 与 OpenClaw 早前
|
|
128
|
+
"当前模型拒绝图片仍计 ✅" 的口径一致,harness 侧接线已打通)。文本回路经同一端点
|
|
129
|
+
的 MiniMax-M3 实测通过(one-shot 回复正常)。日志:
|
|
130
|
+
`output/openclaw-thinking-probe/`、`output/openclaw-mcp-probe/`(同日 OpenClaw
|
|
131
|
+
thinking/MCP 实测证据也在此目录)。
|
|
132
|
+
|
|
133
|
+
## 参考与图标
|
|
134
|
+
|
|
135
|
+
协议字段对照了上游 adapters 提交(7cc4db87)
|
|
136
|
+
的 codebuddy、kiro-cli、cursor-cli 实现及接口说明;其测试结果不视为本项目证据。
|
|
137
|
+
CodeBuddy 和 Cursor 图标取自该提交的官方品牌资源副本,Kiro 沿用仓库已有
|
|
138
|
+
官方 SVG。品牌标志归原所有者所有,不表示厂商背书。
|