编程代理不是带聊天窗口的自动补全。它接收一个用自然语言写成的任务,读取你仓库里的文件,修改代码,运行测试,然后带着结果回来,并重复这个循环直到有东西通过。本指南从零开始,用 Verboo Code 搭起这套流程:安装、项目上下文、模型选择、权限、MCP 和 hooks。下面的每一条命令都在 2026-11-06 对照 verbeux-ai/code 仓库源码 0.15.41 版本核实过。
什么是编程代理?
它是一个命令行工具,在你的仓库里执行任务,而不是只给出代码片段。真正的差别在循环:代理尝试、读取报错、修正、再试,不需要你一个文件一个文件地复制粘贴。
Verboo Code 是 Verboo 平台为此提供的 CLI。包名是 @verboo/code,可执行文件是 verboo,它只连接 Verboo 的基础设施,不需要外部厂商的 API key。工具集就是终端代理该有的那套:Bash、文件读写、grep、glob、子代理、后台任务、MCP 和斜杠命令。
当令牌不再是上限时,什么变了?
变的是"要不要再试一次"这个决定。有配额时,每多跑一遍都要花钱,于是变成一个有意识的选择:值不值得把整个仓库再读一遍?值不值得让模型给第二个意见?没有配额时,失败和重试的边际成本是时间,不是账单。
| 情形 | 有令牌配额 | 没有配额 |
|---|---|---|
| 测试以一种奇怪的方式失败 | 由你决定要不要花配额去查 | 代理重读日志,换一个假设再试 |
| 上下文不完整 | 为塞进上限而裁剪文件 | 在给方案之前把整个目录读一遍 |
| 任务很大 | 实在没办法才拆分 | 拆成子代理并行处理 |
这不等于无限速度。在付费方案上,产品页面在 2026-11-06 显示的限制是每分钟 40 次请求、2 个并发请求,只有 Enterprise 是不限速的那一档。这些方案里没有的东西,是令牌配额。
如何安装 Verboo Code?
这个 CLI 要求 Node 22 或更新版本,写在 package.json 的 engines 字段里,通过 npm 安装:
npm install -g @verboo/code
第一次运行时会打开浏览器跳到 code.verboo.ai 完成 OAuth 登录,并把会话保存在系统保险箱里:macOS 用 Keychain,Windows 用 DPAPI,Linux 用 libsecret。以后要重新登录,在会话里用 /login。在无浏览器的服务器上,verboo auth login --headless 会打印一个可在其他设备打开的链接,并询问确认码。
cd ~/projects/my-app
verboo
坑:如果 CLI 报 ripgrep not found,先在系统里装好 ripgrep,并在同一个终端确认 rg --version 能跑,再开会话。代理的 grep 依赖它。
如何用 /init 给代理项目上下文?
代理一开始并不知道测试命令是 make test,也不知道包管理器是 pnpm。/init 解决这件事:它会读 README、清单文件、CI 配置,以及从 Cursor 或 Copilot 继承下来的规则,然后写出项目指令文件,此后每个会话都会加载它。
/init
在当前模式下,命令会先问你要生成什么:项目级的 AGENTS.md、个人的 CLAUDE.local.md,还是两个都要,以及是否同时搭建 skills 和 hooks。项目文件进 git,个人文件不进版本控制。
有一条规则经常让人踩坑:在同一个目录里,Verboo Code 加载 AGENTS.md,只有不存在 AGENTS.md 时才用 CLAUDE.md。两者不会叠加。
# AGENTS.md
## 命令
- 安装:pnpm install
- 测试:make test
- 单个测试:pnpm vitest run src/api/users.test.ts
## 架构
- src/api 暴露 HTTP;src/jobs 跑队列;两者都读 src/core
## 坑
- 构建需要 NODE_OPTIONS=--max-old-space-size=4096
这个文件是指令,不是锁。必须强制执行的规则应该放进权限,而不是写在文字里。/init 的完整步骤讲了要审什么、要删什么。
如何用 /model 选择模型?
/model 会列出你账号里可用的模型,并能在会话中途切换,不丢历史。正确的问题不是哪个最强,而是每次回答你愿意等多久。
子代理的选择放在 ~/.verboo/settings.json 的 agentRouting 里。每个 worker 指向一个档位:
{
"agentRouting": {
"Explore": "fast",
"worker-review": { "profile": "review" },
"worker-backend": { "profile": "coding" },
"worker-tests": { "profile": "testing" },
"default": { "profile": "balanced" }
}
}
档位有 fast、review、coding、testing 和 balanced。每个档位有一份模型优先顺序,worker 取已登录账号里存在的第一个。如果一个都不存在,它就继承主代理的模型;想改用目录里的第一个模型而不是继承,就在该档位块里加上 "fallback": "first-available"。
| 档位 | 实际用途 |
|---|---|
fast | 文件搜索、摘要和探索,延迟比深度更重要的场景 |
review | 审 diff,以及对一处改动给出第二个意见 |
coding | 主实现,当这个 worker 要改代码时 |
testing | 为刚改完的东西写测试并运行 |
balanced | 不想每个任务都纠结时的默认选择 |
如何完整跑通一个任务?
项目搭好、模型选好之后,第一个任务要小到你一眼能判断结果对不对。一个请求示例:
Read src/api/users.ts and src/api/users.test.ts.
Add a test for the duplicate email case in signup.
Run only that test file and show me the output.
Do not change the implementation if the test passes.
注意这三部分:读什么、改什么、怎么证明。没有第三部分的请求等于盲目信任;有了它,代理自己闭环,你审 diff,而不是在黑盒里找错误。
任务更大时,先要计划:"先列出你要动的文件和每个文件改什么,暂时不要编辑"。你读完计划、纠正方向,再让它执行。
如何控制代理能执行什么?
权限决定了"代理能跑测试"和"代理能 push"之间的距离。它放在 ~/.verboo/settings.json,或项目里的 .verboo/settings.json,分三个列表:allow、ask 和 deny。
{
"permissions": {
"allow": ["Bash(npm run *)", "Bash(git status)", "Read(*.ts)"],
"ask": ["Bash(git commit *)"],
"deny": ["Bash(git push *)", "Read(./.env)"]
}
}
规则语法是 Tool(pattern),pattern 里可以在任何位置用通配符。MCP 服务器用 mcp__server__tool,只写 mcp__server 就放开该服务器的所有工具。完整表格见 /permissions。
如何用 MCP 接入外部工具?
MCP 是把外部工具插进会话的协议。CLI 可以添加服务器,不需要你手改 JSON:
verboo mcp add --transport http sentry https://mcp.sentry.dev/mcp
verboo mcp add -e API_KEY=xxx my-server -- npx my-mcp-server
默认作用域是 local。用 -s project 把配置跟团队一起纳入版本控制,或用 -s user 让自己所有项目都生效。会话里用 /mcp 列出已连接的服务器、查看各自的工具,并启用、停用或重连。
如何用 hooks 自动化?
Hook 是在会话事件发生时运行的 shell 命令,不需要模型决定跑不跑。它放在同一个 settings.json 的 hooks 键里,最常见的用法是每次编辑后格式化:
{
"hooks": {
"PostToolUse": [
{
"matcher": "Edit|Write",
"hooks": [
{ "type": "command", "command": "npx prettier --write . >/dev/null 2>&1 || true" }
]
}
]
}
}
可用事件包括 PreToolUse、PostToolUse、UserPromptSubmit、SessionStart、Stop 和 PreCompact。以退出码 2 结束的 hook 会阻止该操作并把错误交回模型,这不只是用来格式化,也能挡住对受保护文件的写入。
会话很长时如何不丢线索?
长会话会吃掉上下文,上下文写满会让判断变差。三条命令能覆盖大部分情况:
| 命令 | 什么时候用 |
|---|---|
/context | 看上下文已经用了多少,是哪部分工作在占 |
/compact | 压缩并保留重要的东西,例如 /compact keep the test error and the files touched |
/clear | 下一个任务不依赖上一个时,从零开始 |
耗时的工作用 /tasks 跟踪后台运行的内容,/resume 可以接着一个已结束的会话。/compact 有带示例指令的完整步骤。
长期跑一个编程代理要花多少钱?
取决于你选哪种形式。各档之间真正不同的不是付费方案的令牌配额,而是速度和并发:
| 形式 | 令牌 | 实际限制 |
|---|---|---|
| 入门方案 | 有每周配额 | 配额本身:用完后请求要等配额刷新 |
| 付费方案 | 没有配额 | 每分钟请求数和并发请求数 |
| Enterprise | 没有配额 | 独立集群,不限速 |
| 按量计费的 API | 按 token 预付 | 你实际用掉的部分 |
2026-11-06 时,产品页在付费方案上显示的是每分钟 40 次请求、2 个并发请求。订阅前请再看一眼当前的表格:方案构成、价格和速度限制都会变。
真正决定购买的是另一笔账。代理的真实成本是它省回来的时间,让你一天变贵的不是 token,而是仍然留在你手上的重复劳动。
第一次尝试就出错时怎么办?
出错是循环的一部分,也正是没有配额会改变习惯的地方。在手动重写请求之前,先查三件事:
- 项目的指令文件里有它试图猜的那条命令吗?没有就补上。
- 真正的报错在对话里吗?贴终端输出,不要贴概括。
- 会话是不是拖着旧上下文?带指令的
/compact,或者一次/clear,比在旧请求上叠一个新请求更有效。
有配额时,人的本能是不断改 prompt,以免花掉令牌。没有配额时,正确做法是给更多上下文,让代理再试一次。
如果你一天的瓶颈是"要不要再来一次"这个决定,那么改变的是第五次尝试的成本。用 Verboo Code,付费方案没有令牌配额:限制在速度和并发上,所以重试花的是时间,不是账单。



