内容
="center">
<img src/banner.svg" alt="ink CLI" width="320">
**一款用于操作 Reolink 相机的本地命令行工具 — 默认 JSON,带有内置 MCP 服务器和跨代理技能,以便 AI 代理驱动同一核心。**



</div>
---
在本地网络中通过命令行操作 Reolink IP 相机 — 默认输出 JSON,以便所有内容都可以通过 `jq` 或脚本进行处理。捆绑的 MCP 服务器和代理技能驱动相同的运行时,因此 AI 代理可以通过自然语言执行操作。
```console
$ reolink-cli --camera front-door info | jq '{model, firmware, name}'
{
"model": "Reolink 视频门铃",
"firmware": "v3.0.0.6696_26062799",
"name": "前门"
}
```
## 亮点
- 🔍 **发现** — LAN 广播,批量设备导入
- 🎥 **实时媒体** — 预览播放,文件/标准输出捕获,批量捕获,JPEG 快照
- 🕹️ **PTZ** — 平移/倾斜/缩放,预设,巡逻,警卫,自动跟踪,实时慢动作
- 💡 **灯光** — IR,聚光灯(带有原生 **blink**),白光 LED,状态 LED
- 🧠 **检测** — 运动 + AI(人员 / 车辆 / 狗_猫 / 包装)
- 📼 **录制和存储** — 时间表,SD/HDD 状态,VOD 搜索和下载
- 🔔 **事件** — 查询/流 + 声明式规则引擎(`events monitor`)
- 🗣️ **双向音频** — 对讲 / TTS 直接到摄像头扬声器
- 🌐 **流 URL** — RTSP / RTMP / FLV 用于 Frigate,Home Assistant,go2rtc,VLC
- 🤖 **AI 原生** — 内置 MCP stdio 服务器 + 跨代理操作技能
- 🧩 **舰队感知** — 摄像头和标签选择器,本地会话守护进程用于快速控制平面
## 安装
### AI 代理
**Claude Code — 无需 Node。** 从 Claude Code 中安装插件:
```text
/plugin marketplace add reolink/reolink-cli
/plugin install reolink-cli@reolink-cli
```
您平台的二进制文件在您第一次询问摄像头时会自动获取。然后只需与您的代理对话:*“显示前门摄像头”*,*“将后院摄像头指向左侧”*,*“闪烁门廊聚光灯 3 次”*。
**其他代理(Codex / Cursor / Gemini / Copilot / OpenCode / 70+)— 需要 [Node.js](https://nodejs.org)。** 跨代理 `skills` 安装程序将技能放入每个代理的各自目录中:
```bash
npx skills@latest add reolink/reolink-cli
```
选择 `reolink-cli` 和要安装它的代理;二进制文件在首次使用时获取,与上述相同。
### 仅命令行 — 无需 Node
一行命令 — 检测您的平台,安装 `reolink-cli` + `reolink-gateway` 到 `~/.local/bin`,并初始化配置:
```bash
# macOS / Linux
curl -fsSL https://raw.githubusercontent.com/reolink/reolink-cli/main/install.sh | sh
```
```powershell
# Windows (PowerShell)
iwr https://raw.githubusercontent.com/reolink/reolink-cli/main/install.ps1 | iex
```
已经安装?使用 `reolink-cli self-update --yes` 原地升级。
<details>
<summary>更喜欢可下载的存档?</summary>
从最新的 [Release](https://github.com/reolink/reolink-cli/releases/latest) 中获取您平台的存档,解压并运行捆绑的安装程序:
```bash
tar -xzf reolink-cli-*-external-darwin-arm64.tar.gz && cd reolink-cli-* && ./install.sh
# Windows: 解压 .zip 并运行 .\install.ps1
```
存档是自包含的:二进制文件 + 技能/插件 + 安装程序 + `THIRD-PARTY-LICENSES.txt`,每个文件在 Release 中都有一个 `SHA256SUMS` 条目用于验证。
</details>
<details>
<summary>卸载</summary>
```bash
reolink-cli setup --uninstall --purge && npx skills remove reolink-cli
```
Claude Code 用户:还需运行 `/plugin uninstall reolink-cli` 以清理市场条目。
</details>
## 快速入门
```bash
# 编写配置文件和注册表模板。两者都位于您的 OS 配置目录中,并以所有者只读(0600)创建。
reolink-cli config init
# 启动本地网关 — 大多数控制命令都通过它路由
reolink-cli gateway start --addr 127.0.0.1:9000 &
export REOLINK_GATEWAY_ADDR=127.0.0.1:9000
# 注册您的第一个摄像头。选择您自己的名称:`config init` 会写入占位符条目(front-door,garage,lab-v30)以显示文件格式,
# 而 `device add` 拒绝覆盖现有条目。
reolink-cli device add porch --host 192.168.1.41 --user admin --tags outdoor,entry --password-stdin
reolink-cli --camera porch login
reolink-cli --camera porch info
reolink-cli --camera porch snapshot --file ./porch.jpg
```
占位符条目是示例,不是摄像头。注册您自己的摄像头后,请删除它们:`reolink-cli device remove front-door`。
批量导入已发现的设备(通过 `REOLINK_PASSWORD` 进行身份验证,绝不使用明文 `--password` 命令行):
```bash
export REOLINK_PASSWORD='<device-password>'
reolink-cli --user admin device import
unset REOLINK_PASSWORD
```
## 多设备工作流
目标选择保持显式 — 没有隐藏的“当前设备”状态。
| 选择器 | 含义 |
|---|---|
| `--camera <name>` | 一个已注册的设备 |
| `--cameras <a,b,c>` | 几个已注册的设备 |
| `--tag <tag>` | 每个带有标签的设备 |
| `--all-devices` | 整个注册表 |
| `--host <ip[:port]>` | 按地址查找的临时设备 |
```bash
reolink-cli device list
reolink-cli --tag outdoor device inventory --capabilities
reolink-cli --tag outdoor snapshot # 跨标签组分发
```
## AI 代理和 MCP
`reolink-cli` 旨在由 AI 代理驱动。有两种方法 — 自然语言 **技能** 和结构化 **MCP 服务器** — 两者都重用与 CLI 相同的核心运行时。
### 1. 操作员技能 — 与您的摄像头交谈
`npx skills@latest add reolink/reolink-cli` 将 `reolink-cli` 技能安装到您使用的任意代理中。该技能教会代理完整的操作界面和安全规则,因此您只需说出您想要的:
> *“前门摄像头在线吗?”*
> *“将车道摄像头指向预设 2,然后拍摄快照”*
> *“如果今晚有人出现在门口,请通知我”*
代理将意图映射到正确的 `reolink-cli` 调用,链接多步骤流程,**从不猜测设备状态** — 它只报告命令实际返回的内容。
### 2. MCP 服务器 — 结构化工具
适用于偏好类型化工具调用或紧密自动化循环的代理:
```bash
reolink-cli mcp-server
```
JSON-RPC 2.0 通过 stdio,重用相同的核心运行时。将它连接到 Claude Code:
```json
"mcpServers": {
"reolink-cli": {
"command": "reolink-cli",
"args": ["mcp-server"],
"env": { "REOLINK_GATEWAY_ADDR": "127.0.0.1:9000" }
}
}
```
网关必须单独运行 — MCP 服务器通过它路由,就像 CLI 一样。
## 平台支持
在每个 [Release](https://github.com/reolink/reolink-cli/releases) 上发布预构建的二进制文件:
- macOS arm64(Apple Silicon)
- Linux x86_64
- Linux arm64
- Windows x86_64
`self-update` 涵盖 macOS 和 Linux。在 Windows 上,它退出并带有下载链接;存档是一个 `.zip`,而正在运行的 `.exe` 不能就地替换 — 通过提取新存档并运行 `install.ps1` 进行升级。
`preview play` 预期 `ffplay` 在 `PATH` 上(或传递 `--player`,或设置 `REOLINK_PLAYER`)。
> 在上的当前 Reol 摄像头和 N支持最佳。某些新可能部分缺失 `reolink <name> --capabilities` 检查。
## 负责任此工具控制摄像头其录像。仅在您拥有或被授权上使用它。
仅限授权设备您的 LAN 上和对您不摄像头的登录尝试在大多数辖区中未经授权访问,无论意图如何。
- **不是扫描器。** `discover` 是用于定位您自己的摄像头的 UDP 广播。不要使用它或 `ping` 来扫描您未被要求处理的网络。
- **录像是某人的家。** 此工具写入磁盘的快照,录像和事件历史记录是个人数据。像保护摄像头的存储一样保护它们,并删除您不再需要的内容。
- **网关默认绑定到 `127.0.0.1`** 并拒绝浏览器跨源请求。传递 `--addr 0.0.0.0:9000` 将摄像头控制暴露给您的上的所有人 — 请有意执行此操作默认执行。
- **这是仅限 LAN 的** 它通过本地网络(`--host <ip访问摄像头;不包含通过 Reolink 的P 中继的远程访问。 使用 `re-cli --version` → `(external · LAN-only)` 进行确认。
- **私下报告漏洞** — 请 [SECURITY.md](SECURITY.md)。
### 安全的凭证处理
-命令行上传递 `--password`。对每个其他用户都可见, 通过` 并保存在 shell 历史记录中。使用 `--password-stdin`,OLINK_PASSWORD变量,或使用 ` 注册摄像头并引用它。
-的密码在存储。** `aliases.toml摄像头密码是 AES-256-GCM (`RLENC1`),使用 `credentials.key` 中的密钥解密位于同一目录有的明文配置运行任何命令时 — 您无需执行。两个文件都是所有者只读(0600),如果它们是组或全局可读的,CLI 拒绝读取它们。不要放松此限制,也不要在任何地方提交它们。
- **备份 `credentials.key` 和 `aliases.toml`。** 两者都无法。 如果密钥丢失,则无法恢复密码,必须使用 `device update <camera> --password-stdin` 重新- **此操作保护文件,而不是帐户。** 密钥位于数据旁边,因此可以读取两者内容的任何内容都可以解密。 它消除了随意暴露:复制的配置,备份或读取文件的 AI 代理不再以明文摄像头凭证。
- **凭证从不出现在 URL** 网关媒体使用会话令牌代替牌在 300 秒不活动后过期。
- **`stream url --with-auth` 是一个例外** — 它在打印的 RTSP/RTMP/FLV URL 中嵌入了 `user:password@`,因为播放器需要它。 该 URL 是实时凭证:请勿将其粘贴到票聊天或他人仪表板中。 如果不使用该标志,则不会打印凭证。
- **在共享输出之前进行** 命令输出可能包含 UID,序列号,流 URL。
## 安装程序
> **虽然此存储库是私有的**,但单行安装程序和发布下载 URL 对于匿名调用者返回 GitHub 不会通过此方式提供私有内容。 在运行安装程序之前具有此存储的 `GITHUB_TOKEN`,或使用 `gh release download` 获取存档。
`install.sh` 和 `install.ps1` 获取并运行可执行文件,因此以下是它们执行的操作:
- 从 GitHub API 解析最新的发布版本,然后从 `github.com` 下载该版本的资产 —联系其他主机
- **使用发布的 `SHA256SUMS` 验证下载内容,并在任何不匹配,缺少条目或缺少校验和文件时中止**,
- 将两个二进制文件安装到 `~/.local/bin`(Windows 上为 `%USERPROFILE%\.local\bin`)— **无需 `sudo`系统目录,无**
- 仅当网关从运行 **时,停止正在 `reolink-gateway`**,因此永远不会触及另一个安装。
- 覆盖该前缀中的先前二进制文件;磁盘内容不会被修改
- 如果缺少该前缀,则将其添加到您的用户 `PATH)
它们是普通的文本文件之前请阅读它们,就像对待任何安装脚本一样。 要完全跳过它们,请从 [Releases](https://github.com/reolink/reolink-cli/releases) 页面下载存档,使用 `shasum -a 256 -c SHA256SUMS` 验证它,并将两个二进制文件复制到您喜欢的任何位置。
## 商标
olink”和 Reolink 徽标是 Reolink Innovation Limited 的商标。 Apache 2.0 许可证涵盖了库中的代码和文档(文本)— 它不授予 Reolink 名称或徽标的任何权利。 如果您发布分支,请重命名它并删除标记参阅 [TRADEMARKS.md](TRADEMARKS.md)。
## 许可证
- **此存储库** — 技能,插件清单和文档(文本)— 遵循 **[Apache License 2.0](LICENSE)** (另请参阅 [NOTICE](NOTICE))。
- **预构建的olink 二进制文件 [Releases](https://github.com/reolink/reolink-cli/releases) 页面上是 **专有的**,受每个发布存档中捆绑的 EULA 管辖。 基础 CLI 源代码未在此处发布。
- **捆绑的第三方开源组件** 在每个发布存档中的 `THIRD-PARTY-LICENSES.txt` 中列出。