Hold Rein 是一个本地优先、可插件化的 AI Agent 运行平台。
它不是又一个聊天壳子,而是一个面向长期任务、项目工作区和插件扩展的 Agent 工作台。通过一条命令启动本地运行时后,就可以在浏览器里管理模型、工作区、任务、插件、技能、定时任务和用量统计。
项目地址:
为什么要做 Hold Rein
现在很多 AI Agent 工具都能把一次对话变成一次代码修改、一次搜索、一次自动化操作。但真正用到复杂项目里时,会遇到几个很现实的问题:
- Agent 需要围绕具体项目目录工作,而不是漂浮在一个没有上下文的聊天窗口里。
- 不同项目需要不同的模型、技能、工具和策略。
- 长任务不能只靠一次请求跑完,需要能持续运行、恢复现场、派生子任务。
- 工具能力不能写死在平台里,最好能通过插件扩展。
- 模型调用、任务执行、审批和用量都需要可观察、可管理。
Hold Rein 的目标就是把这些能力做成一个本地优先的 Agent 运行底座。
一行命令启动本地工作台
Hold Rein 的 CLI 包发布在 npm 上,安装后会提供两个等价命令:hold-rein 和 hr。
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.json、tsconfig.json、vite.config.ts、vite.web.config.ts、src/server.ts 和 src/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 控制台:
- 配置模型提供商和 API Key。
- 选择当前工作区。
- 新建任务,输入希望 Agent 完成的目标。
- 根据需要启用插件、技能或定时任务。
- 在任务过程中查看工具调用、审批、输出和用量。
插件开发可以使用:
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。
相关插件
- @hold-rein/plugins-base: 一个最基础的插件仅提供shell命令相关的工具
- @hold-rein/plugins-code: 文件操作插件,提供读取、写入、编辑、删除、查找和搜索文件工具
- @hold-rein/plugins-memory: agent完成任务后自动启动并整理记忆,将记忆以文件的形式存储到当前工作空间的 .hold-rein/memories目录下,需要依赖@hold-rein/plugins-code插件进行文件操作
- @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 在真实项目里持续、可控、可扩展地工作”。
欢迎体验和交流: