Hold Rein:一个本地优先、可插件化的 AI Agent 运行平台

0 阅读8分钟

Hold Rein 是一个本地优先、可插件化的 AI Agent 运行平台。

它不是又一个聊天壳子,而是一个面向长期任务、项目工作区和插件扩展的 Agent 工作台。通过一条命令启动本地运行时后,就可以在浏览器里管理模型、工作区、任务、插件、技能、定时任务和用量统计。

项目地址:

为什么要做 Hold Rein

现在很多 AI Agent 工具都能把一次对话变成一次代码修改、一次搜索、一次自动化操作。但真正用到复杂项目里时,会遇到几个很现实的问题:

  1. Agent 需要围绕具体项目目录工作,而不是漂浮在一个没有上下文的聊天窗口里。
  2. 不同项目需要不同的模型、技能、工具和策略。
  3. 长任务不能只靠一次请求跑完,需要能持续运行、恢复现场、派生子任务。
  4. 工具能力不能写死在平台里,最好能通过插件扩展。
  5. 模型调用、任务执行、审批和用量都需要可观察、可管理。

Hold Rein 的目标就是把这些能力做成一个本地优先的 Agent 运行底座。

一行命令启动本地工作台

Hold Rein 的 CLI 包发布在 npm 上,安装后会提供两个等价命令:hold-reinhr

npm install @hold-rein/cli -g

安装后,在任意项目目录执行:

hold-rein start

默认会在 127.0.0.1:3001 启动本地服务,并打开一个浏览器端控制台。也可以指定监听地址和端口:

hold-rein start --host 0.0.0.0 --port 4000

插件开发场景下,也可以直接加载本地插件源码:

hold-rein start --plugin-dev ../my-plugin

这也是 Hold Rein 的一个核心设计:CLI 负责启动本地运行时,Web 控制台负责承载交互,Agent 的实际执行围绕当前工作区目录展开。

本地优先:数据和运行时留在本地环境

官网对 Hold Rein 的定位是“本地优先、模型无关的 AI Agent 工作台”。这个定位很关键。

默认启动时,服务监听 127.0.0.1:3001。后端运行时会在本地初始化数据库,管理工作区、模型提供商、任务记录、定时任务等数据。这意味着平台可以直接贴着本机项目目录运行,Agent 看到的是当前工作区里的真实文件和环境。

这类模式适合几种场景:

  • 在本地项目里让 Agent 读代码、改代码、跑测试。
  • 为不同项目配置不同模型、插件和技能。
  • 在私有项目中使用 Agent,又不想把运行时控制权完全交给远端平台。
  • 需要把工具调用审批、任务记录和模型用量留在可控的环境里。

模型无关:内置提供商,也支持自定义接入

Hold Rein 的模型层不是绑定某一个厂商。官网介绍里提到,它支持常见模型提供商,也可以通过自定义 endpoint 接入模型。

在实现上,平台有模型提供商管理、API Key 加密、模型代理候选池等模块。Web 控制台里也有模型配置视图,用来管理 provider、model 和代理策略。

这带来一个好处:Agent 运行平台不必跟某个模型绑定死。不同任务可以选择不同模型,也可以在本地或企业内部接入兼容接口。

面向项目的工作区

Hold Rein 把“文件夹”作为工作区边界。

这听起来简单,但对 Agent 平台很重要。因为 Agent 真正工作时,需要明确:

  • 当前项目路径是什么。
  • 这个项目启用了哪些插件和技能。
  • 当前任务属于哪个工作区。
  • 工具执行和文件读取应该围绕哪个目录展开。

在运行时里,Agent 会拿到 workspace path,并把它写入 system prompt。工作区也会参与任务列表、文件导航、任务上下文和界面状态管理。

这让 Hold Rein 更像一个项目级工作台,而不是单纯的聊天应用。

长任务、子 Agent 与可恢复上下文

Hold Rein 底层基于 @earendil-works/pi-agent-core@earendil-works/pi-ai 组织 Agent 运行时。

从运行时代码可以看到,它支持:

  • Agent session 与消息持久化。
  • 运行中任务管理与中断。
  • 子 Agent 调用与撤销。
  • Agent 事件订阅。
  • 工具调用审批。
  • token 用量采集。
  • 任务结束后的 continuation 机制。

这些能力让 Agent 不必局限在“一问一答”里。它可以在一个任务里继续推进,也可以把部分工作交给子 Agent,最后再把结果汇总回来。

这对于复杂研发任务尤其有用:比如让主 Agent 负责整体目标,让子 Agent 分别做代码阅读、测试定位、文档整理或方案验证。

插件系统:服务端和前端都能扩展

Hold Rein 值得重点展开的是插件系统。

很多 Agent 平台所谓“插件”,本质只是多几个工具函数。但 Hold Rein 的插件分成服务端和 Web 两层:

服务端插件可以贡献:

  • tools
  • skills
  • skillDirs
  • systemPrompts
  • 自定义 routes
  • Agent 事件订阅
  • Agent 结束后的 continuation

Web 插件可以贡献:

  • toolRenders
  • rightPanels
  • senderActions
  • senderSuggestions
  • turnFooterRenders
  • settings
  • 浏览器侧 tools、skills、systemPrompts

这意味着插件不只是“给 Agent 加一个工具”,还可以改变 Agent 的运行上下文、扩展后端 API、渲染工具结果、增加右侧面板,甚至给发送框添加新的交互入口。

CLI 也提供了插件开发命令:

hold-rein plugin init --path ./plugins --name my-plugin

初始化后会生成插件项目基础文件,包括 package.jsontsconfig.jsonvite.config.tsvite.web.config.tssrc/server.tssrc/web.ts

开发时可以用:

hold-rein start --plugin-dev ./plugins/my-plugin

运行时会加载本地插件,并在插件变化时尝试重新加载。这个体验对插件开发非常友好。

定时任务:让 Agent 到点自动工作

Hold Rein 还内置了 scheduled tasks。

定时任务模块支持创建、更新、启用、禁用和删除任务,并通过 cron 表达式计算下一次运行时间。任务配置里包含:

  • name
  • prompt
  • provider
  • modelId
  • workspacePath
  • cronExpression
  • timezone
  • thinkingLevel
  • allowConcurrentRuns

这让 Agent 可以从“手动触发任务”变成“到点自动执行任务”。

例如:

  • 每天早上生成项目日报。
  • 每天下午检查 release 状态。
  • 每晚同步数据或整理 issue。
  • 定期跑某个工作区里的巡检任务。

对于 Agent 平台来说,定时任务是从“聊天工具”走向“自动化运行平台”的关键能力。

使用统计:成本和消耗可追踪

AI Agent 一旦进入真实任务,就不能只关心“能不能跑”,还要关心“跑一次花了多少”。

Hold Rein 有 usage stats 模块,用来记录和展示模型用量。Web 端有使用统计视图,后端也有对应的 usage-stats service 和 API。

这类能力在个人项目里可以帮助控制成本,在团队环境里也方便分析不同模型、不同任务的调用消耗。

一个实际的使用路径

快速体验可以从这条路径开始:

npm install @hold-rein/cli -g

启动agent:

hold-rein start
# 或 hr start

然后打开终端输出的本地地址,进入 Web 控制台:

  1. 配置模型提供商和 API Key。
  2. 选择当前工作区。
  3. 新建任务,输入希望 Agent 完成的目标。
  4. 根据需要启用插件、技能或定时任务。
  5. 在任务过程中查看工具调用、审批、输出和用量。

插件开发可以使用:

hold-rein plugin init --path ./plugins --name my-plugin
hold-rein start --plugin-dev ./plugins/my-plugin

服务端扩展写在 src/server.ts,Web 扩展写在 src/web.ts。一个插件可以同时给 Agent 增加工具,也可以给控制台增加 UI。

相关插件

  1. @hold-rein/plugins-base: 一个最基础的插件仅提供shell命令相关的工具
  2. @hold-rein/plugins-code: 文件操作插件,提供读取、写入、编辑、删除、查找和搜索文件工具
  3. @hold-rein/plugins-memory: agent完成任务后自动启动并整理记忆,将记忆以文件的形式存储到当前工作空间的 .hold-rein/memories目录下,需要依赖@hold-rein/plugins-code插件进行文件操作
  4. @hold-rein/plugins-git: 提供了浏览器端查看文件diff和git commit面板

更多插件可以直接查看github的插件目录

适合谁

Hold Rein 比较适合这些人:

  • 希望在本地项目里运行 AI Agent 的用户。
  • 希望把 Agent 能力做成可扩展平台的团队。
  • 希望研究 Agent runtime、tools、skills、subagent、approval、scheduled task 工程实现的人。
  • 需要在不同模型之间切换,而不想绑定单一厂商的人。
  • 希望把工具、业务 API 或工作流接入 Agent 的团队。

它目前还处在早期阶段,但核心形态已经清晰:本地启动、浏览器交互、项目工作区、插件扩展、模型无关、任务可持续。

最后

如果一句话概括 Hold Rein:

Hold Rein 是一个本地优先、模型无关、可插件化的 AI Agent 运行平台。

它希望解决的不是“如何和模型聊天”,而是“如何让 Agent 在真实项目里持续、可控、可扩展地工作”。

欢迎体验和交流: