Skip to content

AgentProc把任意 Agent CLI 接入任意消息平台

一个极简的进程级协议。不用 HTTP、不用 socket——只用 stdin、stdout 和环境变量。

5 分钟上手

① 安装 CLI

bash
npm install -g agentproc
bash
pipx install agentproc
bash
pip install agentproc

验证可用:

bash
agentproc --version
# agentproc 0.2.0 (protocol 0.1)

② 浏览 hub

bash
agentproc hub list
#   claude-code   official    Connect the claude CLI (Anthropic) as an AgentProc agent
#   codex         official    Connect the codex CLI (OpenAI) as an AgentProc agent
#   codebuddy     official    Connect the codebuddy CLI (Tencent) as an AgentProc agent
#   agy           community   Connect the agy CLI as an AgentProc agent
#   echo-agent    official    Minimal hello-world agent

Profile Hub 收录了主流 AI CLI 的开箱即用 profile。不用 clone、不用复制、不用改 YAML——CLI 按需拉取并缓存。

③ 一行命令跑起来

先跑冒烟测试(不需要 API key):

bash
agentproc hub run echo-agent -p "hello"
# → You said: hello

然后跑真实的。claude-code 支持流式输出和多轮会话续接:

bash
cd ~/projects/my-app
agentproc hub run claude-code \
  -p "what is this codebase?" \
  --env ANTHROPIC_API_KEY="$ANTHROPIC_API_KEY"

stderr 上会实时看到协议行,stdout 是最终回复:

AGENT_PARTIAL:"This codebase is..."
AGENT_SESSION:13c2f6ec-1f97-42c4-be9e-9475129e243c
agentproc:session:13c2f6ec-1f97-42c4-be9e-9475129e243c

捕获 session id,继续对话:

bash
agentproc hub run claude-code \
  -p "tell me about the auth module" \
  --env ANTHROPIC_API_KEY="$ANTHROPIC_API_KEY" \
  --session 13c2f6ec-1f97-42c4-be9e-9475129e243c

④ 接到你的消息平台

AgentProc agent 不直接和微信或 Slack 通信——那是 bridge 的工作。bridge 是一个小程序,职责是:

  1. 从消息平台收到消息(通过 webhook、轮询等)
  2. 启动你的 agent 进程,注入 AGENT_MESSAGE 环境变量
  3. 读取 agent 的 stdout(按 AgentProc 协议)
  4. 把回复转发给用户

下面是一个 ~30 行的 Node.js bridge 示例,把 agentproc 接到任何平台:

js
// bridge.js — 一个极简的 AgentProc bridge
const { run } = require('agentproc');
const fs = require('fs');

async function handleMessage(message, sessionId) {
  const profile = JSON.parse(fs.readFileSync('./profile.json'));
  const result = await run(profile, {
    message,
    sessionId,
    onPartial: (chunk) => console.log(`[streaming] ${chunk}`),
  });
  console.log(`Reply: ${result.reply}`);
  console.log(`Session: ${result.sessionId}`);  // 下一轮把这个传回来
}

// 替换成你平台的 SDK:
// yourMessagingPlatform.onMessage(handleMessage);
handleMessage(process.argv[2] || 'hello', '');

存为 bridge.js,指向一个 profile,再接到你消息平台的 webhook。runner.js 源码就是协议的代码化形式——读它就是读规范。

接下来去哪

Released under the MIT License.