# Hold Rein 文档

## 安装

本地安装依赖 Node.js 22 及以上版本。确认 Node 环境满足要求后，可以通过 npm 全局安装 Hold Rein CLI。

```bash
npm install @hold-rein/cli -g
```

### Docker 安装

Docker 方式适合把运行时固定在容器环境中，并通过数据卷保存本地配置与运行数据。

```Dockerfile
FROM node:22-bookworm-slim
RUN npm install --global @hold-rein/cli
EXPOSE 3001
CMD ["hold-rein", "start", "--host", "0.0.0.0", "--port", "3001"]
```

## 启动

安装完成后，在需要工作的项目目录中执行启动命令。Hold Rein 会启动内置 API 运行时与 Web 控台，默认监听 127.0.0.1:3001。

```bash
hold-rein start
```

自定义监听地址与端口：

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

插件开发模式：

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

## 插件开发

### 初始化

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

输出：

```text
Initialized plugin package hold-rein-plugin-my-plugin
```

生成目录包含 package.json、tsconfig.json、vite.config.ts、vite.web.config.ts、src/plugin-id.ts、src/server.ts 和 src/web.ts。

### 服务端 API

服务端插件实现 ServerPlugin.Plugin。需要扩展 API 时实现 registerRoutes，需要影响 Agent 运行时则实现 contributionResolver。contributionResolver 可以注入 tools、skills、skillDirs 和 systemPrompts。

### Web 端 API

Web 插件实现 WebPlugin.Plugin，通过 contributionResolver 返回 rightPanels、senderActions、senderSuggestions、toolRenders、turnFooterRenders、settings、tools、skills 和 systemPrompts。
