运行更智能的智能体。使用更少的 token。
今年我们的代码审查账单涨了 36 倍。现在一次审查只花我们 18 美分。看看怎么做到的 ↓
AgentRun 是一个开源平台,能为你的智能体大幅提速。它在你常用的智能体框架之上,增加了自我改进、持久化执行和一个控制平面。你的智能体每运行一次都会变得更聪明、更容错,并使用更少的 token。
智能体的 Learning 标签页:它保留了什么,以及此后发生了什么变化。演示数据来自控制台录制的固定样本。
案例研究
代码审查。Greptile 在 3 月开始按每次审查 1 美元收费,随后我们的智能体用量激增,账单从每月 180 美元涨到了 6,451 美元。于是我们基于一个便宜的模型自建了审查器,并在我们自己的 PR 上做了微调。它每次审查只花 18 美分,而在 30 个它从未见过的 PR 上,它发现的真实 bug 数量是 Greptile 的 1.6 倍。我们是如何构建它的·在你的仓库上微调一个
商户代码。我们让 Opus 想办法对商户进行分类,然后把它学到的东西交给一个便宜的模型。同样的任务,每个商户从 0.89 美元降到 0.12 美元。工作原理·用你自己的任务来做
为什么选择 AgentRun
智能体很擅长把事情搞清楚。问题是它们会一遍又一遍地搞清楚同样的事情。给智能体一个它已经做过上百次的任务,它还是会重新发现同一个 API、重读同样的文档、重建同样的计划,而你要为其中的每一个 token 付费。
把你自己的智能体放到它运行效果最好的框架上:Claude Code、Codex、OpenCode 或 pi。AgentRun 负责它周围的一切:
- 它会学习工作内容。每次运行之后,智能体会保留对下次有帮助的东西:一条笔记、一项技能,或者一个无需循环即可完成该任务的工作流。下一次运行就从那里开始。
- 它从不丢失一次运行。每次运行都存放在同一个存储中。在运行中途杀掉服务器,再重新启动,运行会继续进行。为每个智能体提供任务所需的计算机:一个沙箱、一个 Linux 桌面、一部 Android 手机或一个浏览器。
- 你始终掌控全局。审批、支出上限,以及为每个智能体提供的一个控制台:哪些需要你处理、哪些失败了、哪些正在运行,以及花了多少钱。
你不需要自己搭建底层管道:提供商集成、恢复、运行跟踪和学习都已内置。用一条命令在笔记本上运行,或放在一个容器里,或作为带 runner 的服务器运行。Apache-2.0。
三步开始
你需要 Node 24.22.3 或更新版本,运行在 macOS 或 Linux 上。
-
启动它。
npx @parcha/agentrun
它会在 7340 端口(或下一个空闲端口)启动服务器和一个 runner,把所有内容保存在
~/.agentrun,并 在浏览器中打开控制台。 -
添加一个模型密钥。在控制台中设置密码,然后在设置 → 模型密钥下添加一个密钥。一个
OPENROUTER_API_KEY就能为每个 harness 提供模型。Anthropic 密钥可运行 pi 和 Claude Code;OpenAI 密钥可运行 pi、Codex 和 OpenCode。 -
运行你的第一个智能体。打开模板,应用KYB 尽职调查,然后用一家公司的名称和网站启动一次运行。它只需要你的模型密钥。运行结束后,该次运行的报告标签页会有一份尽职调查报告,包含结论和每条引用的声明。然后打开该智能体的学习标签页,看看它为下次保留了什么。
更想让你的编码智能体来做?告诉它:Read agentrun.ai/SKILL.md and set up AgentRun for me。
如果你的机器上运行着 Docker,新智能体会获得一个带 shell 的 Docker 沙箱。其镜像在首次使用时构建,需要几分钟,控制台会在就绪时提示。没有 Docker 时,智能体仍可读写文件,但没有 shell。
想要一个带 URL 的自己的服务器?一键部署到 Render。
快速导览
做出判断的工作流。一个步骤可以提出一个快速的类型化问题,查看答案有多确定,并选择一条路线。 这里模型倾向于批准,置信度为 0.61,低于工作流 0.75 的门槛,因此该案例进入审核。
所有智能体集中一处。Mission Control 最先打开:什么需要你、什么失败了、什么正在运行以及花了多少钱,按天、按 harness 和按工具统计。
每个智能体都是一个 API。在 Playground 中启动一次运行,然后把同样的请求复制到你的代码中。
你始终掌控全局。智能体可以停下来问你,运行会等待你的回答。
会学习工作的智能体
在智能体的定义中用"learning": true开启它。每次运行结束时,智能体多获得一轮机会,说出它想保留什么。AgentRun 会检查、评分,并把保留内容提交到该智能体自己的 git 文件夹。下一次运行从那里开始。
flowchart LR
start["Run starts from<br/>the agent's main"] --> work["Run does the job"]
work --> propose["Last turn proposes<br/>notes, a skill, a workflow"]
propose --> check["Code checks,<br/>then one grader"]
check -->|kept| commit["Commit to main"]
commit --> start
- 笔记是简短的 markdown 文件,每条一个事实,采用 Claude Code 的记忆格式。
- 技能是如何再次完成一项工作的方法,只有真正完成了该工作的运行才能写入一条。
- 习得的工作流在任何 harness 上作为一次工具调用运行,受该次运行自身的上限和工具权限约束。一旦某个习得的技能已服务过 3 次运行,下一次运行就会被要求把该工作作为工作流草稿提交,而草稿在被保留之前会先试运行:不询问模型,也不运行任何工具。
该智能体的学习标签页会显示每一条笔记、技能和工作流以及变更日志,每次运行也会显示它被给予了哪些笔记、打开了哪些笔记。可以在那里停用任何内容,或者用npx @parcha/agentrun learning retire以及该笔记的 ETag 来停用。Git 保留历史,所以被停用的笔记可以恢复。
每个智能体都有一个学习文件夹:只有一个分支的普通 git,main。一次运行会在其指令中读取活跃笔记的索引,并在自身技能之外获得习得的技能。代码会先检查每一个提案。违反自身某条规则(大小或数量限制、名称、形状)的条目会被排除,其余条目继续处理。答案中任何位置出现密钥或隐藏字符、文件夹之外的文件、删除操作或完整索引,都会使整个答案被丢弃,因为其中没有任何条目可信。然后由一名评分者评判其内容,AgentRun 提交通过的部分。有风险的规则会等待你的确认。运行从页面或粘贴的邮件中发现的规则,或包含账号的笔记,会被丢弃。
一旦某个智能体的笔记超出学习预算,每次运行都会完整获得与其首条消息相关的笔记,其余每条则各得一行。只运行了某个习得工作流的运行不会被询问要保留什么。
工作流
很多智能体并不需要成为智能体。把可重复的工作写成类型化工作流:工具调用、模型步骤和快速的类型化决策(是或否、选一个、一个分数,各自带置信度),并在情况不明确时回退到智能体。AgentRun 将其作为智能体的修订版运行,受该智能体的工具权限和与任何运行一样的上限约束,触发器也可以启动一个。
控制流示意图,位于examples/support-answer.mjs,并非模型运行的录像。
逐节点观看任何工作流运行,暂停并恢复它,并阅读每一个决策及其作出原因:
工作流长什么样工作流是一个由带类型步骤组成的 JSON 文档:
{
"v": 2, "name": "read-site",
"schemas": {
"In": { "type": "object", "required": ["website"], "properties": { "website": { "type": "string" } } },
"Page": { "type": "object", "required": ["ok"], "properties": { "ok": { "type": "boolean" } } }
},
"input": { "schemaId": "In" },
"output": { "schemaId": "Page", "path": "home" },
"root": { "node": "chain", "steps": [
{ "node": "call", "label": "读取首页", "via": "tool", "tool": "web_fetch",
"args": { "url": "{website}" }, "out": "Page", "as": "home", "deadline_s": 60 }
] }
}步骤可以调用工具、运行模型、提出一个快速的带类型问题、根据答案分支、并行映射一个列表、循环有界次数、调用其他工作流,或把棘手的情况交给智能体。把一个保存为智能体的workflow字段;npx @parcha/agentrun workflows validate会先检查它。工作流语言也可以在你的应用内独立运行,借助一个TypeScript 构建器。
能存活的运行
每个智能体、修订、运行和步骤都存放在同一个存储中。在运行中途停止服务器再重新启动,运行会继续。有多个运行器时,一旦某个运行器的 30 秒租约到期,另一个运行器就会接手它的运行。已完成的步骤绝不会再次运行;因崩溃在调用中途被切断的写入会被标记为中断,而不是重试,因此你可以检查它。
你始终掌控
- 审批。每个工具要么被允许、要么先询问你、要么被拒绝。需要询问的调用会等待运行页面,直到你回答。“从不询问”让智能体可以无人值守运行,而服务器上设置的拒绝仍然对其生效。
- 支出上限。给一次运行设置上限,它会在那里暂停而不是失败,并告诉你继续所需的最低限度。AgentRun 无法定价的成本会显示为“unknown”,绝不会是 $0。
- 问题。智能体可以停下来询问你,运行会等待你回答。
- 一个控制台。每次运行都有一个实时时间线、它的文件,对于浏览器还有一个你可以接管的屏幕。
模板
五个现成的智能体。在一个界面中应用一个,把它变成你的,并用它自己的评估用例来衡量它。每个模板是一个文件夹:智能体的指令、它的技能、它的规则和它的评估用例。模板 → 应用在你亲自勾选每个 MCP 工具之前,不会授予任何权限。
| 模板 | 它的功能 |
|---|---|
code-review |
在只读检出(或粘贴的 diff)上,由八位独立审查者审查一个 pull request,合并并核实他们的发现,引用每条发现背后的代码行,并以 JSON 返回。它会自行设置 GitHub 触发器 |
kyb |
对一家公司做尽职调查:注册信息、所有者、制裁名单、带日期的负面媒体报道,以及每条主张都有引用的结论 |
market-monitor |
每周一,汇总你所关注公司的变化,每条都带日期和链接 |
inbound-lead |
研究 webhook 发来的每条线索,并对照你的理想客户画像给出 0 到 100 的评分 |
release-notes |
把自上次发布以来合并的 pull request 转成发布说明,留作草稿 issue 供人处理 |
npx @parcha/agentrun template eval DIR在一个一次性服务器上以真实运行的方式执行模板的评估用例并打分。模板包具有该文件夹格式。
想让模板了解你的代码?在你自己的代码上调整模板逐步讲解我们在code-review上运行的循环。
触发器自行启动有上限的运行:定时计划、签名 webhook 和 GitHub pull request 事件。
运行框架与计算机
运行框架。在智能体的定义中指定一个,使用harness。审批、上限、计算机、触发器和学习在每种框架上行为一致。npx @parcha/agentrun server capabilities指定你的服务器运行哪些框架。
| 运行框架 | harness |
说明 |
|---|---|---|
| pi | pi |
默认 |
| Claude Code | claude-agent |
首次使用时自行安装 |
| Codex | codex |
首次使用时自行安装 |
| OpenCode | opencode |
需要其opencode-ai包放在服务器旁边;AgentRun 会打印安装它的命令行 |
计算机。智能体通过一项设置获得一台计算机。它只获得该类型对应的工具,别的什么都没有,而更改计算机不会改变智能体的其他任何东西。
计算机: 类型: 沙箱#none、sandbox、desktop、phone 或 browser 提供商: daytona#你在设置 → 计算机中连接的一个(none 表示不使用提供商)
| 类型 | 智能体能做什么 | 提供商 |
|---|---|---|
none |
在其运行文件夹中读写文件;没有 shell(使用 Archil 时,命令在 Archil 的 exec 上运行) | 无需提供商 |
sandbox |
在 Linux 上运行代码、安装软件包、让进程在后台保持运行 | Docker、Daytona、Modal、E2B |
desktop |
查看 Linux 屏幕、移动鼠标、输入 | Orgo、E2B、Docker(你自己的带 X 服务器的镜像) |
phone |
在 Android 上点击、滑动、输入、打开应用并读取屏幕 | phone 运行框架(租用的云 Android) |
browser |
浏览网页,并可在任意时刻将控制权交给你 | Browserbase、Kernel |
除以下类型外的每种类型none会指定其提供商。没有设置计算机的智能体会获得 Docker 沙箱(前提是服务器上有 Docker),否则就没有计算机。远程计算机通过你与供应商自己的账户计费。
- 密钥。在设置 → 计算机中一次性添加供应商的密钥。你的服务器会将其密封保存,仅显示为已设置或缺失;它绝不会进入智能体的计算机。测试连接会在供应商处执行一次读取,不会启动任何内容。
- 运行的文件。默认情况下,运行的文件夹位于你的服务器上,Docker 沙箱会挂载它。在设置中开启 Archil 磁盘后,文件夹会改放在那里,因此 Daytona、Modal 或 E2B 沙箱会挂载同一个文件夹。这三种沙箱仅在配有 Archil 磁盘时才能运行,而开启 Archil 后 Docker 沙箱会被拒绝。
- 观看与接管。浏览器运行会通过你自己的服务器流式传输到运行的屏幕标签页,绝不会通过供应商链接。接管控制权,然后再交还。智能体也可以暂停并请你接管,例如为了登录或验证码。
- 证明。每个提供商都有针对其类型的一致性测试套件。请自行对供应商运行它,从以下提交之后的检出开始
npm ci && npm run build:npm run conformance -w @parcha/agentrun-computer -- --provider docker --kind sandbox。
@parcha/agentrun-computer是底层协议:每台计算机中有一个小型守护进程,每个供应商对应一个提供商。
各部分如何协同
flowchart LR
you["Console · CLI · API"] --> server["Server"]
server --> store["One store<br/>SQLite or Postgres"]
runner["Runners"] -->|claim runs| store
runner --> hands["Hands<br/>run folder + computer"]
- 服务器。在
/v2处提供 API 和控制台。它将运行和命令写入存储,并为你读回。当你用--no-runner启动它时,它本身不运行任何智能体循环。 - 存储。智能体、修订、运行以及每次运行的日志,都集中在一处。默认使用数据文件夹中的 SQLite,或使用
AGENTRUN_STORE_URL的 Postgres。 - 运行器。每个运行器从存储中领取运行,并同时运行多个。每次审批检查、上限和模型调用都在这里发生。添加运行器以横向扩展。
- 手。智能体工具执行操作的地方。每次运行都有一个用于存放其文件的运行文件夹。沙箱将该文件夹挂载到
/workspace,工具在其中运行;桌面、手机或浏览器则将该文件夹留在运行器上。
从终端和从代码
npx @parcha/agentrun也是服务器的 CLI。在服务器运行时,在第二个终端中运行这些命令;CLI 会自行找到它及其 token。该脚本会创建一个智能体,启动一次上限为 $1 的运行,让智能体向你提问,回答它,并读取智能体写入的文件。启用 Docker 时,首次运行会等待沙箱镜像。
#1. 创建一个能写文件并向你提问的智能体。 cat > agent.json <<'EOF' {"definition": {"id": "notes", "version": 1, "name": "Notes", "instructions": "按你的要求去做,并把你的产出写入文件。", "skills": [], "tools": ["write", "ask_person"]}} EOF npx @parcha/agentrun agents create --body @agent.json #2. 启动一次有上限的运行并等待。它会停下来问你覆盖哪个地区(退出码 8:它在等你)。 npx @parcha/agentrun runs start notes --max-cost-usd 1 --wait \ --body '{"input": {"content": "问我覆盖哪个地区,然后写关于它的 region.md。"}}' > out.json #3. 回答,等待它完成,并读取它写的内容。 run=$(node -p'require("./out.json").run_id') npx @parcha/agentrun runs message "$run" --content "Europe" npx @parcha/agentrun runs wait "$run" > out.json npx @parcha/agentrun runs read-file "$run" region.md
runs wait运行完成时退出码为 0,失败时为 1,在等你时(一个问题、它的上限或一次批准)为 8。runs timeline RUN_ID --follow会在每一步发生时流式输出,并且每次运行都带有一个console_url指向其页面的npx @parcha/agentrun help列出所有命令;npx @parcha/agentrun skill install --claude(或--codex)教会你的编码智能体使用该 CLI。
使用 TypeScript 客户端(npm install @parcha/agentrun-client,无依赖)。客户端从环境变量读取其服务器和 token;服务器启动时会打印两者(使用npx @parcha/agentrun时,token 位于~/.agentrun/.token,地址通常是http://127.0.0.1:7340):
export AGENTRUN_BASE_URL=http://127.0.0.1:7340/v2 export AGENTRUN_API_KEY=$(cat~/.agentrun/.token)
import { AgentRun } from "@parcha/agentrun-client"; const client = new AgentRun(); // AGENTRUN_BASE_URL 和 AGENTRUN_API_KEY const started = await client.runs.start("notes", { input: { content: "问我覆盖哪个地区,然后写关于它的 region.md。" }, max_cost_usd: 1 }); let run = await client.runs.wait(started.run_id); if (run.pending?.kind === "question") await client.runs.message(run.run_id, { content: "Europe" }); run = await client.runs.wait(run.run_id); console.log(run.status, run.cost.usd);
Python 客户端是pip install parcha-agentrun,具有相同的方法TypeScript 客户端,Python 客户端)。
部署它
Render,一键完成。
该按钮会部署render.yaml:一个 1 CPU / 2 GB 实例,配 10 GB 磁盘,使用已发布的镜像(无需构建),以及为你生成的 token 和 seal key。它需要在你的 Render 工作区绑定一张卡:按本文撰写时 Render 的价格,实例约每月 $25,磁盘 $2.50。在 Render 的表单中,粘贴OPENROUTER_API_KEY。我们建议使用带美元上限和过期日期的 OpenRouter key。不要与任何人分享此 key。上线后,打开其 URL 并粘贴AGENTRUN_TOKEN,从服务的 Environment 标签页获取,用于设置你的密码。
在装有 Docker 的 Linux 机器上:
git clone https://github.com/Parcha-ai/agentrun && cd agentrun/deploy printf 'AGENTRUN_SEAL_KEY=%s\n' "$(openssl rand -base64 32)" > .env && chmod 600 .env echo 'OPENROUTER_API_KEY=...' >> .env docker compose up -d --build docker compose logs server #控制台的链接、首次访问的设置代码,以及首次的 token
端口仅发布在本机的回环地址上;在向其他人开放之前,请在前面放置一个 TLS 代理。此 compose 文件没有 Docker socket,因此其智能体获得文件工具和web_fetch但没有 shell。如需 Dockercompose.yaml沙箱,请使用仓库根目录下的单服务器(Docker Engine 26 或更高版本),在主机上运行服务器,或使用带 Archil 磁盘的 Daytona 或 E2B 计算机。
将AGENTRUN_STORE_URL设置为服务器和每个 runner 上的postgres://URL(compose 文件的pgprofile 会运行一个),用--no-runner启动服务器,并用runner --data /data --name <name>从同一镜像启动每个 runner。为每个进程提供相同的AGENTRUN_SEAL_KEY。此版本中 runner 仍共享/data卷。
部署 AgentRun涵盖 runner、健康检查和升级。
安全
每个保存的密钥(模型和工具密钥、MCP 凭据、登录信息、webhook 签名密钥)都封存在一个密钥下,AGENTRUN_SEAL_KEY;请保留它,因为丢失它就会丢失它所封存的内容。密钥是只写的:控制台将每个密钥显示为已设置或缺失,只有控制台可以粘贴、替换或移除密钥(你已登录的会话,或在账户关闭时回环地址上的启动器控制台)。在服务器启动处设置的密钥优先于粘贴的密钥。API token 无法写入密钥或批准工具调用。一次运行只获得其自身模型和工具所需的密钥,运行所学到的任何内容都无法保守交给它的秘密。SECURITY.md说明了如何报告漏洞。
文档
- AgentRun Server:API、模型、工具、MCP 服务器、触发器、支出上限、学习和安全,完整说明
- 在 agentrun.ai 上的快速入门以及文档
- CLI 的技能以及每条命令
- 部署,计算机,模板
- 工作流语言,编写,指南
- 更新日志以及贡献
接下来
- 按每次调用选择计算机,而不仅是按智能体选择
- 第一方计算机
- iPhone、macOS 和 Windows 计算机
- 观看并接管桌面或手机运行,就像今天浏览器运行那样
- 将 Composio 作为工具目录
- 基于 Agent Client Protocol 的 harness
- Slack 触发器和 Parallel 监控触发器
许可证与致谢
Apache-2.0。版权所有 2026 Parcha Labs, Inc. 由Grep.ai构建。
AgentRun 构建于pi之上,由 Earendil Works(MIT)开发,是其下的智能体循环和持久化运行时;Stagehand和Browserbase Node SDK;TypeSafe JavaScript SDK;Archil 的磁盘 SDK;以及vercel-labs/durable-harness(Apache-2.0),持久化 harness 构建于其理念和代码之上。每个项目保留自己的许可证;每个包的 NOTICE 列出了它所包含的内容。







