我把 5 个编码 Agent 塞进了一个 npm 包

刚刚,我把自己写的 npm 包 coding-agent-runner 更新到了 v0.1.2!

它干的事情很简单------把 Codex、Claude Code、Cursor、OpenCode、Pi 这 5 个编码 Agent CLI,统一成了一套 Node.js API。

不是又一个 Agent 框架,不是 LangChain 套壳,而是一个只做「翻译官」的 SDK。

业界在发生什么?

先说背景------最近有个趋势已经非常明显了。

新冒出来的一批项目------open-design、OpenClaw、Multica ------全都做了同一个选择:local first,直接调用本地的编码 Agent CLI。

没有人再从零手搓 Agent loop 了。

原因也不复杂:

  • 自研 Agent,你要自己做工具调用、上下文管理、权限沙箱、错误恢复......而这些 Claude Code 和 Codex 团队已经打磨了无数轮
  • 模型和 harness 是一起进化的------你拿 API 自己攒的 Agent,永远追不上官方 CLI 的迭代速度
  • 本地 CLI 自带用户的登录态和订阅额度,应用层连 API key 都不用操心

业界的共识正在形成:与其自己开发 Agent,不如直接拿业界最强的 Claude Code / Codex 做二次开发。

Agent 正在变成「基础设施」------就像没人会为了做网站,先自己写一个浏览器。

而 coding-agent-runner,就是这条路上的那层「插座」。

我为什么要写它?

起因是我自己踩的坑。

我想在 Node.js 应用里调用本地的编码 Agent,结果发现------每家 CLI 都是一个「方言区」

  • Codex 要走 codex app-server --listen stdio://
  • Claude Code 是自家的流式 JSON
  • Cursor 是 cursor-agent acp
  • OpenCode 是 opencode acp
  • Pi 是 pi-acp

5 个 CLI,5 种启动方式,5 套输出格式。

想同时接入它们?就得写 5 遍胶水代码。

写到第 2 遍的时候我就受不了了......于是干脆把这层胶水抽成了一个 SDK。

它做了什么?

🎯 一套 API 通吃runCliAgent() 单次运行、streamCliAgent() 流式输出、createCodingAgentRunner() 多轮会话------换 Agent 只改一个 provider 字符串。

🔄 事件全部标准化 :不管底层是哪家 CLI,吐出来的都是同一套事件------text_deltathinking_deltatool_starttool_updatetool_enddoneerror,一共 7 种,for-await 直接遍历。

💡 本地探测 + 会话管理detectCliAgents() 一行代码扫出你机器上装了哪些 Agent CLI,还支持中止和会话恢复。

代码长这样,三行起步:

js 复制代码
import { runCliAgent } from "coding-agent-runner";

const result = await runCliAgent({
  provider: "codex",
  cwd: process.cwd(),
  prompt: "Inspect this repository and summarize the test command.",
});
console.log(result.output);

想换成 Claude Code?把 "codex" 改掉就完了。

我想要的效果是:调用一个编码 Agent,就该和调用 fetch() 一样简单。

为什么押注 ACP?

我给它的定位是 ACP-friendly

ACP(Agent Client Protocol)------就是编码 Agent 界的「USB-C 接口」,一个让客户端和 Agent 对话的标准协议。Cursor、OpenCode、Pi 的 CLI 都已经原生支持 acp 模式。

所以我没有发明一套私有协议,而是顺着 ACP 生态做适配------协议统一到哪,我就接到哪。

自己造协议这件事......还是留给大厂吧。

怎么用?

MIT 协议,完全开源,v0.1.2 发布于 7 月 8 日。

  • 环境要求:Node.js 20+、ESM 项目
  • 安装:npm install coding-agent-runner
  • 前提:本机至少装了一个支持的 Agent CLI

🔗 仓库地址:github.com/yinguangyao...

或许,「自研 Agent」这个词,很快就会像「自建机房」一样古老。

这个包现在还很早期,如果你有想接入的 Agent CLI,或者踩到了什么坑------欢迎直接提 Issue 和 PR,也欢迎点个 Star。

相关推荐
hunterandroid10 分钟前
[鸿蒙从零到一] ArkUI 动画与转场实战:状态驱动、组件过渡与页面衔接
前端
何时梦醒11 分钟前
React + TypeScript + Vite 实战:从零构建 Color Picker 应用
前端·javascript·架构
谁在黄金彼岸14 分钟前
Nuxt.js 详解(一):Vue 开发者为什么要关注 Nuxt
前端
英勇无比的消炎药15 分钟前
TinyRobot v0.5.0 深度解读(三):Layout 组件——如何组织复杂工作区的页面布局
前端·vue.js
默_笙18 分钟前
😋 我让 DeepSeek-R1 在浏览器本地跑了起来,后端同事说"你认真的?"
前端·javascript
阿里云大数据AI技术18 分钟前
DataWorks Data Agent 实战课堂(三):对话式完成数据同步与智能诊断
人工智能·agent
英勇无比的消炎药18 分钟前
TinyRobot v0.5.0 深度解读(四):CLI 脚手架——从零搭建 AI 应用的工程化实践
前端·vue.js·github
阿里云云原生26 分钟前
一个多 Agent 零人工运维系统的设计复盘:4 个 Agent、7 个 Skill 与 9 条工程判断
agent
程序员黑豆1 小时前
鸿蒙应用开发之双向绑定实战:从 V1 到 V2 的完整迁移指南
前端·harmonyos