MCP 连接工具,AHP 托管 Agent:AI 编程进入“宿主协议”阶段

9 月 2 日,VS Code 1.136 把 Agent 从扩展宿主(Extension Host)搬进了独立的 Agent Host,并开源两者之间的通信协议 Agent Host Protocol(AHP)。
两个名字里都有“Host”,但负责的事情完全不同。
一、扩展宿主运行插件,Agent Host 管理会话
扩展宿主的任务是运行插件代码。 VS Code 把插件放在独立进程里,避免插件变慢或崩溃时直接拖住界面。同一运行位置的一批插件通常共享一个扩展宿主,它们通过扩展 API 使用编辑器能力。窗口或远程工作区关闭后,相应的宿主也会结束。
Agent Host 的任务是管理 Agent 会话。 它保存对话、任务状态、终端和文件改动,并把这些状态同步给连接进来的客户端。IDE、浏览器或其他界面,都只是会话的入口。
区别可以概括为:
- 扩展宿主关心“插件怎样运行”;
- Agent Host 关心“任务怎样继续”;
- 扩展宿主服务于一个编辑器环境;
- Agent Host 可以同时服务多个客户端。
Agent Host 还能通过 code agent host 单独启动。因此,关闭一个窗口不必结束任务;另一个窗口可以接着查看;Host 也可以放在远程机器上,再通过 SSH 或开发隧道连接。
这正是长任务需要的。一次代码改造可能要反复读文件、运行测试和等待 CI,持续几十分钟甚至数小时。这样的任务不应该跟着某个窗口一起结束。
需要注意的是,独立进程只提供了生命周期和故障隔离,并不自动等于安全隔离。Agent 能读哪些文件、执行哪些命令,仍然需要权限控制和审计。
二、AHP 不是另一个 MCP
Agent 相关协议越来越多,最容易混淆的是 MCP、ACP 和 AHP。它们分别解决三个方向的问题:
- MCP:Agent 怎样调用工具和访问数据;
- ACP(Agent Client Protocol):一个客户端怎样与一个 Agent 对话;
- AHP:多个客户端怎样共享同一个 Agent 会话。
官方给出的分层很清楚:Agent Host 向上通过 AHP 连接多个客户端,向下通过 ACP 驱动具体 Agent;Agent 再通过 MCP 使用工具。
AHP 不规定 Agent 如何推理、使用哪个模型,也不定义工具。它只负责保存并同步会话状态,所以不同 Agent 和不同界面都可以接入。
三、为什么 AHP 要同步状态
Agent 会话不是简单的一问一答。它还包含流式输出、工具调用、终端状态、文件修改和等待确认的操作,而且可能有多个客户端同时查看。
AHP 因此让服务端保存权威状态。每个会话、对话和终端都是一个可以订阅的 channel;发生变化时,服务端把 action 推送给所有客户端,客户端用同一套 reducer 更新本地状态。
例如,Agent 准备执行一条命令,IDE 和浏览器都会看到“等待确认”。用户在浏览器批准后,IDE 也会立即显示“正在执行”。普通的请求—响应接口也能保存会话,但单靠一问一答,解决不了多个客户端的实时同步和并发修改。
结论
扩展宿主和 Agent Host 的根本区别,不是名字,也不只是换了一个进程:
- 扩展宿主运行插件,Agent Host 管理任务和会话。
- 扩展宿主依附于编辑器环境,Agent Host 可以独立运行并接受多个客户端连接。
- MCP 负责连接工具,ACP 负责一对一通信,AHP 负责多端共享状态。
真正的变化是,Agent 正从编辑器里的聊天功能,变成一个可以长期运行、远程执行、被多个界面共同操作的后台服务。