ThinCoder 支持 Agent Client Protocol(ACP v1):thincoder acp 由 IDE 作为子进程拉起, 通过 stdin/stdout 以 JSON-RPC(NDJSON)通信。

流式回复与思考、工具审批对话框、编辑器内 diff、持久化会话——一并在场。

上手三步:① 在终端跑通一次 thincoder(完成凭据设置); ② 按下面任一宿主的配置把 thincoder acp 接上; ③ 在宿主的 Agent 面板开新对话开始用。

本页内容更新于 2026-10-04。

前置条件

能力一览

当前为 M1 能力面——按「你会看到什么」列出:

能力 你会看到什么
对话与思考流式呈现 回复逐字出现;模型思考过程可见(客户端支持时)
工具调用与审批 工具调用在对话里可见;改动类操作弹出审批:批准一次 / 本会话 / 拒绝;默认不开 AUTO 模式
编辑器内 diff write 与 edit 的改动直接以 IDE 的 diff 呈现;客户端未宣告文件系统能力时回落到本地写盘(照常完成)
持久化会话 会话按项目目录存档:列表 / 加载(重放)/ 恢复(不重放)/ 删除
会话内配置 模型 / 思考 / 模式(plan ⇄ normal)现场可切换——只影响本会话,不写回配置文件
@文件引用 用 @ 把文件或选区投喂进对话(Zed 支持;细节见下)
上下文用量 客户端可显示本次上下文用量(已用 / 上限)
子代理活动 支持扩展的客户端能看到子代理的角色与进度;不支持的客户端忽略即可(零影响)
取消与关闭 随时取消进行中的回合;会话可正常关闭、之后照常恢复
登录引导 客户端支持终端登录引导时,可在会话内完成登录(底层为 thincoder acp --login)
日志与诊断 诊断信息走 stderr,可落文件排查(见「故障排查」与「日志」)

以上能力随宿主客户端的不同自动适配——宿主能力位不满足时,按「降级并让它可见」的原则处理(见各节说明)。

快速接入 · Zed

在 ~/.config/zed/settings.json 中加入:

{ "agent_servers": { "ThinCoder": { "type": "custom", "command": "thincoder", "args": ["acp"], "env": {} } }
}

若 thincoder 不在 GUI 的 PATH 上,command 用绝对路径 (Windows 用 where thincoder、POSIX 用 which thincoder 查)。

生效点:在 Zed 的 Agent 面板里新开一次对话——它会按上面的配置拉起 ThinCoder 的 ACP 子进程。

同一份配置对同一台机器上的所有 Zed 窗口生效;接入后先问一句「你好」即可验证链路。

Zed 里同时配置了多个 agent 时,会话面板会分别列出——选 ThinCoder 的那个。

快速接入 · JetBrains

JetBrains(IntelliJ IDEA / PyCharm / WebStorm …)通过 AI Chat 插件支持 ACP。

没有 JetBrains AI 订阅时:在 Registry(连按两次 Shift → "Registry")里开启 llm.enable.mock.response, 即可在纯 ACP 场景下使用 AI Chat 面板。

在 AI Chat 面板菜单里选 Configure ACP agents,加入:

{ "agent_servers": { "ThinCoder": { "command": "C:\\path\\to\\thincoder.exe", "args": ["acp"], "env": {} } }
}

JetBrains 要求 command 用绝对路径。

保存后 ThinCoder 会出现在 AI Chat 的 agent 选择器里—— 在 AI Chat 里把 agent 选为 ThinCoder 再发问即可。

该配置按 IDE 生效;装有多个 JetBrains IDE 时,在每个 IDE 里各配一次。

快速接入 · Paseo

在 ~/.paseo/config.json 里把 ThinCoder 选为自定义 ACP provider:

{ "agents": { "providers": { "thincoder": { "extends": "acp", "label": "ThinCoder", "command": ["thincoder", "acp"] } } }
}

Paseo 的通用 ACP 适配器不驱动登录流程——先在终端完成设置(见「前置条件」),再回到 Paseo 使用。

配置生效后,Paseo 下的新会话会通过 thincoder acp 运行;provider 列表里显示为「ThinCoder」。

若 Paseo 跑在另一台机器上,那台机器也需要完成一次设置(凭据与 thincoder 都在本地)。

登录与凭据

会话管理

会话按项目目录存档——与终端里的会话同一族(同一个项目目录、同一个槽位体系)。

ThinCoder 启动在哪个目录,会话就归属哪个项目;在 IDE 里换一个项目目录,看不到另一个项目的历史,这是预期行为。

IDE 里对会话的四类操作(协议名 session/list / load / resume / delete):

列表里每条会话都带最近更新时间——排序与显示以它为准。

与终端的关系:两边共用同一套会话存档——在终端开的会话,IDE 里也能看到并接续(同一项目目录即可)。

例:你在 ~/proj 用终端聊过三轮,打开 Zed(同一目录)—— 会话面板里能看到这三轮,点开重放、或直接恢复继续。

两个不同项目想共用同一个会话:不支持——会话以项目目录为锚,这是设计上的取向。

配置选项

会话内可调整三类选项(客户端以选项控件呈现,切换当场生效):

这些选项只对本会话生效,不会写回 config.json—— 所以换一个会话,看到的又是配置文件里的默认值。

三项之外,提供商 / Key 的更换在配置文件层完成,不在会话内提供。

如果你希望某个选择成为长期默认:改配置文件里的对应项,

这样所有面(终端、IDE、桌面)的新会话都会用新默认;各项默认值怎么配见 配置页。

@文件引用

在支持该能力的宿主里(如 Zed),输入 @ 选择文件—— 被引用文件的内容(或选区)随对话一并发给 ThinCoder,无需手动贴代码。

子代理活动

ThinCoder 工作时可能派出子代理(查资料、跑专项任务),与主线并行。

支持该扩展的客户端会收到子代理的结构化更新——事件里带角色、状态与进度 (协议名 session_info_update,细节在 _meta 的 thincoder.dev/subagent 键下)—— 你可以像看主线一样看到它们在忙什么;子代理结束后,状态会更新为完成。

这些事件不影响主线对话的节奏——你随时可以继续在主线里发消息。

不支持该扩展的客户端忽略这些更新即可——不影响任何功能,主线的回复与结果照常。

故障排查

限制与路线图

日志

stdout 上只走协议 JSON;所有诊断信息都在 stderr。

用 thincoder acp 2> acp.log 捕获它们;反馈问题时附上这段日志与你的客户端名称,定位会快很多。

更多细节见 文档页 与 ACP 协议官网。