桌面应用只当 HTTP 客户端:开源 Agent 暴露 OpenAI 兼容 API 的设计细节
GapNew4766 · reddit · 2026-10-13
Atomic Agent(MIT 开源)团队分享其桌面应用架构:不复用仓库已有的 NDJSON sidecar 模式,而是直接以 atag serve 启动带 OpenAI 兼容 API 的服务端,应用作为普通 HTTP 客户端连接——因为 sidecar 与 HTTP server 会各起一套完整运行时,同一状态目录下会出现两个任务调度器,导致 9 点的定时任务跑两次。
API 要点
- 每次启动用随机端口+随机 bearer token,仅监听回环地址;/health 无鉴权。
- 核心端点:POST /v1/chat/completions(流式/同步)、/cancel 取消、/api/sessions/{id}/steer 中途转向、/api/events(SSE)接收审批请求、/api/approval/resolve 回答审批、/compact 压缩会话。
严格 OpenAI 子集 + 可选扩展
默认流式输出是 chat.comffer.chunk 的严格子集,因为 Vercel AI SDK 等现成客户端用 zod 逐帧校验,未知事件名会直接报错。加 X-Atomic-Extensions: 1 头可解锁命名帧:reasoningprogress(思考过程)、toolprogress(工具卡片)、fusionworker(扇出 worker 模型的角色/模型/步骤/ETA)、steerapplied/steerundelivered、结尾 usage。
中途转向与审批旁路
- 长回合可 POST steer 消息,agent 在下一步读取;未送达的 steer 会停泊,应用最多保留 20 条。
- 审批不走 completion 流,走独立 SSE 通道,只有 allow-once/deny 两档,想减少打扰应切换模式而非逐条授权。
踩坑提示
- 等待审批的回合曾长时间不写流,Node 的 undici 300 秒后断连;v0.6.7 起服务端每 15 秒发 : keepalive 注释行,SSE 解析器若不兼容注释行要先修。
- serve 与 TUI 同一运行时,启用的 Telegram/Discord bot 会跑在 server 进程内;频道有 lockfile,第二进程会报 already running。--no-approval 强制最高放行级别。
「编程与Agent」频道最新
- 作者撰文讲解如何为大量客户扩展 AI 推理服务栈 — abhijithneil · 2026-10-13
- Tim Sweeney:AI 让开发效率最高提升 5 倍,明年普遍超 3 倍 — zephyr_z9 · 2026-10-13
- Sarms API 上线动态定价:按模型原价加收 15% 服务费 — KyeGomezB · 2026-10-13
- Cloudflare MCP Server 可实时推送 Workers 问题给智能体 — irvinebroque · 2026-10-13
- Agent 报告“已完成”但邮件没发出:先定义 done 再委派任务 — Mahmoud_Zalt · 2026-10-13
- 「Claude 是我的 CTO」?资深工程师反驳:懂架构比以前更重要 — MartinGTobias · 2026-10-13