2026年5月26日 2 分钟阅读

如何让 AI 编码 Agent 从同步等待变成异步工作流?Agent Chat Bridge 实战

tinyash 0 条评论

引言:AI Agent 的同步等待陷阱

用过 VS Code Copilot Chat 或 Windsurf Cascade 的开发者应该深有体会:你给 Agent 发了一条消息,它开始思考、生成代码、执行命令——然后你只能干等着。期间你不能做其他事,因为 Agent 的回复可能包含你需要处理的信息。

这种同步阻塞模式在简单任务上还好,当涉及耗时操作时就很痛苦了:

  • 等待构建/编译完成:Agent 等着构建结束,你等着 Agent
  • 等待 API 响应:外部接口可能几秒到几分钟才返回
  • 等待用户确认:Agent 问了你好几个问题,你不能一次性回答完
  • 定时检查:Agent 需要每 10 分钟检查一次日志,但你不能一直陪着它

Agent Chat Bridge 就是为了解决这个问题而生——它让你把任何 AI Agent 聊天会话变成异步 Agent。你只需要注册一个定时器、shell 命令或 webhook,Agent 可以结束当前会话。当触发器触发时,Bridge 会自动带着你预设的提示词唤醒 Agent 继续工作。

安装

Agent Chat Bridge 以 VS Code 扩展的形式运行,支持 VS Code 和 Windsurf:

# 下载 VSIX 后,VS Code
code --install-extension agent-chat-bridge-*.vsix --force

# Windsurf
windsurf --install-extension agent-chat-bridge-*.vsix --force

安装后重新加载窗口(Cmd+Shift+PDeveloper: Reload Window)。

扩展启动后,Bridge 会在本地 9801 端口启动一个 HTTP 服务器。你可以在 VS Code 状态栏右下角看到一个 ⚡ Bridge :9801 图标,点击即可打开管理面板。

核心概念:一套 API,三种触发器

Agent Chat Bridge 的核心是 /jobs API。整个工作流只有两步:

  1. Agent 创建 Job:Agent 在工作结束时,向 POST /jobs 注册一个触发器
  2. Agent 结束会话:Agent 正常结束(不会阻塞)
  3. 触发器触发:定时器到点、命令执行完毕、或 webhook 收到请求
  4. 重复提示词:Bridge 自动把预设的提示词发回给 Agent 的会话
  5. Agent 苏醒继续工作:Agent 看到提示词,接着干活

1. 定时器模式:最简单的异步测试

最基础的使用:告诉 Agent “10 秒后回来看看我”。

Agent 在工作快结束时执行:

curl --noproxy localhost -X POST http://localhost:9801/jobs \
  -H 'Content-Type: application/json' \
  -d '{
    "session_id": "YOUR_SESSION_ID",
    "prompt": "10 秒定时器已触发。检查上次运行的测试结果,如果有失败就修复它们。",
    "seconds": 10
  }'

10 秒后,这个提示会自动出现在 Agent 的聊天窗口中,Agent 就会接着工作。

💡 提示:在公司网络环境中,务必使用 --noproxy localhost,否则 curl 会通过公司代理发请求,代理无法访问你本地的 localhost:9801

2. Shell 命令模式:等待编译完成

这是最实用的场景。Agent 启动一个长时间运行的任务(如编译、测试、部署),但不想一直阻塞等着:

# Agent 注册一个 job:等待编译完成后继续
curl --noproxy localhost -X POST http://localhost:9801/jobs \
  -H 'Content-Type: application/json' \
  -d '{
    "session_id": "YOUR_SESSION_ID",
    "prompt": "TypeScript 编译已完成。分析编译输出中的错误和警告,逐个修复它们。",
    "command": "npx tsc --noEmit 2>&1 | tee /tmp/tsc_output.txt"
  }'

Agent 结束当前会话。当 npx tsc 执行完毕后,Agent Chat Bridge 自动带着输出结果和你的提示词重新唤醒 Agent。Agent 醒来后可以直接分析 /tmp/tsc_output.txt 的内容,不需要重新构建环境。

3. Webhook 模式:外部事件驱动

当你需要等待外部系统的响应时(如 CI 构建完成、PR 被 Review、部署到测试环境),webhook 模式是最灵活的选择:

# Agent 注册一个 webhook job
curl --noproxy localhost -X POST http://localhost:9801/jobs \
  -H 'Content-Type: application/json' \
  -d '{
    "session_id": "YOUR_SESSION_ID",
    "prompt": "CI 构建已触发完成。检查构建状态,如果有通过就合并 PR。",
    "webhook": true
  }'

返回的 job 会有一个 webhook_url,你可以把这个 URL 配置到 GitHub Actions 或 CI 系统中。当 CI 完成时,CI 系统 POST 到这个 URL,Agent Chat Bridge 就会自动唤醒 Agent。

读取 Agent 的回复

当你配置好一个异步 Job 后,Agent 的回复不会自动显示在你的 IDE 中(因为它已经结束会话了)。但你可以通过轮询 API 获取回复:

curl --noproxy localhost http://localhost:9801/jobs/JOB_ID

如果 Agent 已经回复,你会看到:

{
  "status": "responded",
  "response_text": "我检查了 TypeScript 编译输出,发现 3 个类型错误..."
}

实战场景

场景一:夜间批量代码审查

SOP(标准操作流程):

  1. Agent 提取今日所有 PR diff
  2. 逐个评审,对每个文件注册一个 webhook job
  3. Agent 结束会话,你回家
  4. CI 触发 webhook,Agent 在后台逐文件审查
  5. 第二天早上,你批量检查评审结果

场景二:分阶段大型重构

大型重构通常需要多步操作(改类型 → 改逻辑 → 跑测试 → 改文档),每一步都可能因为出乎意料的错误而中断。用 Agent Chat Bridge 可以把它们串起来:

# 阶段 1:改完类型定义后,跑测试
curl --noproxy localhost -X POST http://localhost:9801/jobs \
  -H 'Content-Type: application/json' \
  -d '{
    "session_id": "SESSION_ID",
    "prompt": "测试运行完毕。如果有失败,修复相关代码后重新跑测试;如果全部通过,进入下一步:更新相关文档",
    "command": "npm test 2>&1 | tee /tmp/test_results.txt"
  }'

场景三:Agent 驱动的监控回路

让 Agent 定时检查某个指标:

# Agent 启动一个每 15 分钟检查一次的循环
curl --noproxy localhost -X POST http://localhost:9801/jobs \
  -H 'Content-Type: application/json' \
  -d '{
    "session_id": "SESSION_ID",
    "prompt": "检查 /tmp/server_health.json 中的 CPU 和内存使用率。如果超过 80%,分析日志找出原因并生成优化建议。然后重新注册一个 15 分钟后检查的 Job。",
    "seconds": 900
  }'

管理面板

Agent Chat Bridge 内置了一个网页管理面板。在 VS Code 中按 Cmd+Shift+PAgent Chat Bridge: Open Dashboard,或者在浏览器中打开 http://localhost:9801/ui

面板中你可以看到:

  • 所有正在运行和已完成的 Job
  • 每个 Job 的状态(pending/running/completed/responded)
  • Agent 回复的内容
  • 手动取消或重试 Job

注意事项

  • 会话 ID 的获取:不同 IDE 获取当前会话 ID 的方式不同。VS Code ≥ 1.96 版本支持 chatSessions API,可以直接在管理面板中看到会话列表。更早版本需要手动查找。
  • 没有超时:目前 Job 没有自动超时,如果 Agent 没有回复,Job 会一直处于 pending 状态。需要定期检查或手动清理。
  • 一次一个回复:一个 Job 只能触发一次唤醒。如果你需要循环检查(如每 15 分钟),需要让 Agent 在每次回复中重新注册新的 Job。

总结

Agent Chat Bridge 解决的是 AI Agent 开发中一个很实际的问题——同步等待。它用一种极简的方式(一个 POST /jobs 调用)把 Agent 变成异步工作流,极大提升了开发效率。

从个人体验来说,最有价值的使用场景是长耗时任务(编译、测试、部署)和定时批量任务。在这些场景下,你不必坐在屏幕前等着 Agent 慢慢处理——你可以去做其他事,Agent 处理完后会自动来叫你。

如果你经常用 AI 编码 Agent 做复杂任务,试试给 Agent 加上异步能力——可能比你想象中简单得多。

发表评论

你的邮箱地址不会被公开,带 * 的为必填项。