ACP 接入(Zed 等 IDE)¶
Spark 可以以 Agent Client Protocol(ACP)agent 的身份 被编辑器拉起——协议由 Zed 发起,opencode / Gemini CLI 等均已接入。接 ACP = 免费进 IDE, Spark 自己不写任何编辑器插件。
在 Zed 中接入¶
编辑 ~/.config/zed/settings.json:
{
"agent": {
"custom_servers": {
"spark": {
"command": "spark",
"args": ["acp", "--workdir", "/path/to/your/project"]
}
}
}
}
或在对话面板中用 agent: add custom server 命令添加。之后在 Agent Panel 里选择 Spark 即可。
常用参数¶
| 参数 | 说明 |
|---|---|
--workdir <path> |
会话工作目录(ACP cwd 的一致性校验基准) |
--approval <mode> |
审批档:suggest / auto-edit / full-auto / plan-only / approve-plan |
--provider <name> |
模型供应商(openai_compat / ollama / mock) |
--model <name> |
模型名 |
--sandbox-mode <mode> |
沙箱档:sandbox-only / workspace / full-access / unrestricted |
协议映射速查¶
| Spark 概念 | ACP 表达 |
|---|---|
| 审批六档 | modes(session/new 返回,Zed 可切档) |
| 工具审批门 | session/request_permission(allow_once / allow_always / reject_once) |
| 文本流 | session/update → agent_message_chunk |
| 思考流 | session/update → agent_thought_chunk |
| 工具调用 | session/update → tool_call / tool_call_update |
| 计划 | session/update → plan(update_plan 工具驱动) |
| 取消 | session/cancel → 协作式取消,回 stopReason: cancelled |
| 历史回放 | session/load(user/assistant 文本逐条回放) |
会话与存储¶
ACP 会话与 Web / TUI 会话共用同一个 sessions.db:IDE 里聊的轮次,
spark sessions / spark resume 一样可见、可续。
限制(当前版本)¶
- 仅 stdio 传输;Streamable HTTP 传输在 P2 后续批次。
- 客户端传入的 ACP 代理型 MCP server(
type: "acp")被忽略并记 warning。 - 图片 prompt 已公告能力(
promptCapabilities.image),依赖 provider 侧多模态支持。