#WorkBuddy开发者分享季

项目背景

CNB 平台 有一个内置的 NPC(AI 编程助手),但它功能受限、不可定制。我想给它造一个「完全自主版」——能自己读代码、写代码、跑命令、发评论、甚至派生子 Agent 并行干活,全程无需人工干预。

项目地址:https://cnb.cool/Bring/NPC/Agent

一句话概括

CNB NPC Agent:一个运行在 CNB 平台上的自主 AI 编程 Agent,以 Docker 镜像发布。用户在 Issue/PR 中 @Agent,它接管任务→调 LLM→执行工具→循环直到完成→把结果评论回仓库。

Workboddy 协助了解项目架构

技术栈

  • 运行时: Node.js 22 + TypeScript
  • AI 协议: OpenAI 兼容 SSE 流式接口
  • 部署形态: Docker 镜像,多阶段构建(28MB 最终镜像)
  • 工具: git, ripgrep, cnb-cli
  • 开发工具: CodeBuddy(全程)

架构亮点

1. 纯手写 agentic loop——180 行 while(true)

没有引入任何 Agent 框架(LangChain、AutoGPT 等),核心逻辑就是一个 while(true) 循环:

用户指令 → 构建 prompt → while(true):
  ├─ 调 LLM(SSE 流式 + 自动重试)
  ├─ 上下文 >75% 窗口 → 用 flash 模型压缩
  ├─ 有工具调用 → 并发/串行调度执行 → 回填结果 → continue
  └─ 无工具调用 → Hermes 自审 → 确认完成后退出

工具调度的并发/串行判定:每个工具声明 concurrent 字段——bash/write/edit/comment 有副作用,串行执行;read/vision/skill 只读,Promise.all 并发。调度器按 LLM 返回的原始顺序组装结果,确保一致性。

Workboddy 解释 agentic loop

2. Hermes 自审——AI 会撒谎,我们不会

LLM 经常在回复里写「任务已完成」,实际上 comment 根本没发。Hermes 自审机制:

  • 从消息历史的 tool_calls 字段统计每个工具实际调用了多少次
  • 把这个不可推翻的系统日志注入给审校模型
  • 强制二元判断:「完成」or「遗漏:xxx」
  • 遗漏时自动反馈给主 Agent,继续循环补全

这种设计杜绝了 AI「用文字欺骗自己说做完了」的经典问题。

3. 后台子 Agent——真正的并行开发

主 Agent 可以派生子 Agent 去后台独立完成任务(比如:主 Agent 修 Bug,子 Agent 同步更新文档)。子 Agent 有自己的消息栈和工具集(不含 agent 工具,结构上防止递归派生),通过 Promise.race 和事件通知机制与主 Agent 通信。

4. 动态工具注册

新增一个工具不需要改任何注册代码——把 .ts 文件丢进 tools/ 目录,导出 tool 对象即可。系统提示词里的工具列表也由此动态生成。

5. 上下文压缩

当 token 用量超过窗口 75% 时,用一个轻量 flash 模型把中间历史压缩成 300 字以内的执行摘要,保留系统消息、首条用户消息和最近 3 轮。压缩失败时插入占位提示,而不是静默丢历史。

WorkBuddy 帮了大忙

整个项目是在 WorkBuddy 里完成的,几个特别爽的点:

  1. 流式 thinking 打印到日志:调试 agentic loop 最大的痛点是不知 AI 为什么选了某个工具。WorkBuddy 的 SSE 流式能力让我用 50 行就实现了 thinking 内容的实时输出,出了问题秒定位。

  2. Skills 系统:我把 npm 发布、Docker 镜像构建等重复操作做成了 Skills,一键触发,告别每次手动敲命令。

  3. 上下文窗口够大:100 万 token 的上下文意味着整本《JavaScript 高级程序设计》塞进去都没问题,Agent 读整个仓库代码完全无压力。

  4. 代码审查:写完怀疑有边界条件 bug?直接把代码和问题描述扔给 Agent,它跑一遍路径推演就能指出遗漏的 switch 分支没有 break。

成果数据

  • 核心代码: agent 层 ~1800 行 TypeScript,7 个工具模块
  • 工具调用: 支持并发+串行混合调度
  • 自审能力: Hermes 双轮兜底,杜绝「假装完成」
  • 部署: 一行 include 即可接入任意 CNB 仓库
  • 测试: config/session/dispatcher/subagent 完整单元测试覆盖

Workboddy 绘制项目架构图

写在最后

WorkBuddy 的核心价值不是帮你写代码,而是让你从「工具使用者」变成「工具设计者」。当你有了一个足够聪明的编程伙伴,你的想象力就是唯一的瓶颈。

如果你也有类似的自建 AI Agent 的想法,WorkBuddy 是个不错的起点——它能帮你把「这个轮子能转吗」的问题,从几周缩短到几天。

更多推荐