开源项目AgentRun:可自我进化的托管智能体平台

发布时间 2026-11-13
来源 Hacker首页帖子
字数 4,175 字
查看原文 反馈

智能总结

AgentRun 是一个采用 Apache-2.0 协议的开源托管智能体平台,可在 Claude Code、Codex、OpenCode 或 pi 之上增加自我改进、持久化执行和控制平面,让智能体每次运行后保留笔记、技能或工作流,并支持运行中断后恢复,同时提供审批与支出上限。

agent.run()

运行更聪明的智能体,消耗更少的 token。

今年我们的代码审查账单涨了 36 倍。现在一次审查只花我们 18 美分。看看是怎么做到的 ↓

Deploy to Render

npx @parcha/agentrun

AgentRun 是一个开源平台,能大幅增强你的智能体。它在你最喜欢的智能体框架(agent harness)之上,增加了自我改进、持久化执行和控制平面。你的智能体会在每次运行中变得更聪明、更能容错,并消耗更少的 token。

An agent

一个智能体的「学习」(Learning)标签页:它保留了哪些内容,以及自那以后发生了什么变化。演示数据来自控制台记录的测试夹具(fixtures)。

案例研究

代码审查。 Greptile 从三月开始按每次审查一美元收费,接着我们的智能体用量猛增,账单从每月 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 负责围绕它的一切:

  • 它会学习这项工作。 每次运行结束后,智能体会保留对下次有帮助的内容:一条笔记、一项技能,或者一个无需循环即可完成任务的 workflow(工作流)。下一次运行就从那里开始。
  • 它绝不会丢失一次运行。 每次运行都存在于同一个存储中。在运行途中杀掉服务器,再重新启动,运行会继续。给每个智能体分配任务所需的计算机:沙箱、Linux 桌面、Android 手机或浏览器。
  • 你始终掌控全局。 审批、支出上限,以及覆盖每个智能体的统一控制台:什么在等你处理、什么失败了、什么正在运行以及花了多少钱。

你无需自建基础设施:提供商集成、恢复、运行跟踪和学习全都已内置。用一条命令在你的笔记本上运行它,或运行在单个容器中,或作为带 runner 的服务器运行。采用 Apache-2.0 协议。

三步开始

你需要 Node 24.22.3 或更新版本,运行在 macOS 或 Linux 上。

  1. 启动它。

    npx @parcha/agentrun

    它会在端口 7340(或下一个空闲端口)上启动服务器和一个 runner,把所有内容保存在 ~/.agentrun 中,并在浏览器中打开控制台。

  2. 添加一个模型密钥。 在控制台中设置密码,然后在 Settings → Model keys 下添加一个密钥。一个 OPENROUTER_API_KEY 即可为每个框架提供模型。Anthropic 密钥可运行 pi 和 Claude Code;OpenAI 密钥可运行 pi、Codex 和 OpenCode。

  3. 运行你的第一个智能体。 打开 Templates,应用 KYB due diligence(KYB 尽职调查),然后用一家公司的名称和网站启动一次运行。它只需要你的模型密钥。运行结束后,该次运行的 Report 标签页会显示一份尽职调查报告,带有结论,且每条主张都有引用。然后打开该智能体的 Learning 标签页,看看它为下次保留了什么。

更想让你的编码智能体来做?告诉它:Read agentrun.ai/SKILL.md and set up AgentRun for me(阅读 agentrun.ai/SKILL.md 并为我设置 AgentRun)。

Docker、沙箱以及在服务器上运行

如果你的机器上运行着 Docker,新的智能体会获得一个带有 shell 的 Docker 沙箱。它的镜像会在首次使用时构建,需要几分钟,控制台会在就绪时提示。没有 Docker 时,智能体仍可读写文件,但没有 shell。

想要一台带 URL 的自己的服务器?一键部署到 Render。

功能导览

会做出判断的 workflow。 一个步骤可以提出一个快速的类型化问题,看到答案有多确定,并选择一条路径。这里模型倾向于批准,置信度为 0.61,低于该 workflow 的 0.75 门槛,因此该案例进入复核。

所有智能体汇聚一处。 首先打开 Mission Control:什么在等你处理、什么失败了、什么正在运行以及花了多少钱,按天、按框架和按工具细分。

Mission Control in the AgentRun console: agents, runs, tokens, run time, success rate and cost, per day, by harness and by tool

每个智能体都是一个 API。 从 Playground 启动一次运行,然后把同样的请求复制到你的代码中。

The AgentRun Playground: a form to start a run on the left, and the same request as curl on the right

你始终掌控全局。 智能体可以停下来问你,运行会一直等到你回答。

A run waiting on a person in the AgentRun console: the agent asks which currency an invoice

会学习工作的智能体

在智能体定义中设置 "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
  • 笔记(Notes) 是简短的 markdown 文件,每条一个事实,采用 Claude Code 的记忆格式。
  • 技能(Skills) 是如何再次完成一项工作的方法,只有完成了这项工作的运行才能写入一条技能。
  • 学习到的 workflow 在任何框架上都作为一次工具调用运行,受运行自身的上限和工具权限约束。一旦某条学习到的技能已服务 3 次运行,下一次运行就会被要求把这项工作作为 workflow 草稿提出,而草稿在保留前会先试运行:不询问模型,也不运行任何工具。

智能体的 Learning 标签页会展示每一条笔记、技能和 workflow,以及变更日志,每次运行还会显示它被给予了哪些笔记、打开了哪些笔记。你可以在这里退役任何内容,也可以用 npx @parcha/agentrun learning retire 加上该笔记的 ETag 来退役。Git 保留历史,因此被退役的笔记可以恢复。

哪些会被保留,哪些会被丢弃

每个智能体都有一个学习文件夹:只有一个分支 main 的纯 git 仓库。一次运行会在其指令中读取活跃笔记的索引,并在自己技能之旁获得学习到的技能。代码会先检查每一个提案。违反自身规则(大小或数量限制、名称、形状)的条目会被剔除,其余内容继续。答案中任何位置的密钥或隐藏字符、文件夹之外的文件、删除操作或完整索引,都会使整个答案被丢弃,因为其中没有任何条目可以被信任。然后由一个评分器评判它所说的内容,AgentRun 提交通过的部分。有风险的规则会等待你的确认。运行从页面或粘贴的邮件中发现的规则,或包含账号的笔记,会被丢弃。

一旦某个智能体的笔记超出学习预算,每次运行会完整获得与其首条消息相关的笔记,其余每条则获得一行摘要。仅运行了学习到的 workflow 的运行不会被询问要保留什么。

Workflow

很多智能体并不需要成为智能体。把可重复的工作写成一个类型化 workflow:工具调用、模型步骤和快速的类型化决策(是或否、选一个、一个分数,每个都带置信度),并在案例不清楚时回退到某个智能体。AgentRun 把它作为一个智能体的修订版来运行,受该智能体的工具权限和与任何运行相同的上限约束,触发器可以启动一个 workflow。

examples/support-answer.mjs 中控制流的示意图,并非模型运行的录屏。

逐节点观察任何 workflow 的运行,暂停它并恢复它,读取每一个决策以及做出该决策的原因:

一个 workflow 长什么样

一个 workflow 是一份由类型化步骤组成的 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": "Read the home page", "via": "tool", "tool": "web_fetch",
      "args": { "url": "{website}" }, "out": "Page", "as": "home", "deadline_s": 60 }
  ] }
}

步骤可以调用工具、运行模型、提出快速的类型化问题、根据答案分支、并行遍历列表、有界循环、调用其他 workflow,或者把困难案例交给智能体。把其中一个保存为智能体的 workflow 字段;npx @parcha/agentrun workflows validate 会先检查它。workflow 语言 也可以在你的应用内独立运行,并配有 TypeScript 构建器。