复现已有算法
This commit is contained in:
@@ -0,0 +1,182 @@
|
||||
---
|
||||
name: edge-mcp-tools
|
||||
description: edge_collector 边缘侧本地模型与 MCP 工具接入规范。用于在鲁班猫/RK3566/RK3576/RK3588 等边缘设备部署本地模型后,设计或实现 MCP 工具服务,让模型安全调用网关状态、设备点位、历史数据、诊断、配置查询和运维只读能力。
|
||||
---
|
||||
|
||||
# edge_collector MCP 工具接入
|
||||
|
||||
## 目标
|
||||
|
||||
让边缘侧本地模型可以通过受控工具访问网关能力,而不是直接读取任意文件、执行任意命令或绕过现有服务。
|
||||
|
||||
典型链路:
|
||||
|
||||
```text
|
||||
本地模型
|
||||
-> MCP Client
|
||||
-> edge MCP tools
|
||||
-> configurator / collector / 本地数据库 / 只读诊断命令
|
||||
```
|
||||
|
||||
## 适用场景
|
||||
|
||||
- 在 RK3566/RK3576/RK3588 鲁班猫上部署 Qwen 等本地模型。
|
||||
- 给本地模型增加“查询设备状态”“分析点位趋势”“解释报警”“读取网关状态”等工具。
|
||||
- 把边缘侧诊断能力封装成 AI 可调用工具。
|
||||
- 设计 MCP 工具权限、输入输出和安全边界。
|
||||
|
||||
## 设计原则
|
||||
|
||||
- 默认只读。
|
||||
- 工具服务独立运行,不耦合 `edge` 主服务。
|
||||
- 本地模型不直接访问数据库文件、配置文件和 shell。
|
||||
- 所有工具必须有明确输入 schema、输出 schema 和错误语义。
|
||||
- 写配置、重启服务、删除数据等高风险动作第一版不开放。
|
||||
- 工具返回用户可理解信息,不泄露密钥、路径、Token、内部模型配置。
|
||||
|
||||
## 推荐第一版工具
|
||||
|
||||
优先做只读工具:
|
||||
|
||||
- `edge_get_gateway_status`:读取网关状态、版本、运行时间。
|
||||
- `edge_list_devices`:列出设备名称、协议、在线状态。
|
||||
- `edge_list_points`:列出某设备点位名称、类型、单位。
|
||||
- `edge_read_latest_values`:读取指定设备/点位最新值。
|
||||
- `edge_query_history_summary`:查询历史数据摘要,不返回超大原始数据。
|
||||
- `edge_get_alarm_summary`:读取报警或异常摘要。
|
||||
- `edge_get_network_status`:读取网络、WiFi、4G、端口转发只读状态。
|
||||
- `edge_get_service_health`:读取 `edge`、独立 agent 状态。
|
||||
|
||||
暂不开放:
|
||||
|
||||
- 修改协议配置。
|
||||
- 保存 AI Key。
|
||||
- 重启服务。
|
||||
- 删除缓存或历史数据。
|
||||
- 执行任意 shell。
|
||||
- 读取任意文件。
|
||||
|
||||
## 工具命名
|
||||
|
||||
- 使用 `edge_` 前缀。
|
||||
- 动词清晰:`get`、`list`、`query`、`analyze`。
|
||||
- 避免泛化工具名,例如 `run_command`、`read_file`。
|
||||
|
||||
## 输入输出
|
||||
|
||||
输入必须限制范围:
|
||||
|
||||
```text
|
||||
gateway_id
|
||||
device_id 或 device_name
|
||||
point_id 或 point_name
|
||||
time_range
|
||||
limit
|
||||
```
|
||||
|
||||
输出建议结构:
|
||||
|
||||
```json
|
||||
{
|
||||
"ok": true,
|
||||
"data": {},
|
||||
"warnings": [],
|
||||
"source": "configurator",
|
||||
"timestamp": "2026-06-16T00:00:00+08:00"
|
||||
}
|
||||
```
|
||||
|
||||
错误要可行动:
|
||||
|
||||
```json
|
||||
{
|
||||
"ok": false,
|
||||
"error_code": "DEVICE_NOT_FOUND",
|
||||
"message": "未找到指定设备,请确认设备名称或 ID",
|
||||
"suggestion": "可先调用 edge_list_devices 查看可用设备"
|
||||
}
|
||||
```
|
||||
|
||||
## 与现有服务集成
|
||||
|
||||
优先通过现有 API 或受控本地接口访问:
|
||||
|
||||
- `configurator` API。
|
||||
- `collector` 状态接口或已有数据接口。
|
||||
- 本地只读数据库查询。
|
||||
- systemd 只读状态命令。
|
||||
|
||||
不要绕过业务逻辑直接修改配置文件。
|
||||
|
||||
## 本地模型注意
|
||||
|
||||
参考已有本地模型文档:
|
||||
|
||||
- `docs/本地模型/Qwen2.5-0.6B-Instruct在RK3566本地部署方案.md`
|
||||
- `docs/本地模型/Qwen2.5-VL-3B-Instruct在RK3576鲁班猫3边缘图文模型部署方案.md`
|
||||
- `docs/本地模型/Qwen2.5-14B-Instruct在16G_RK3588鲁班猫5部署方案.md`
|
||||
|
||||
设计工具时必须考虑:
|
||||
|
||||
- 模型上下文有限,工具返回要摘要化。
|
||||
- RK3566/RK3576 资源有限,工具查询要分页、限流。
|
||||
- 大历史数据先聚合摘要,再按需返回异常片段。
|
||||
- 离线运行时不要依赖云端 AI Provider。
|
||||
|
||||
## 安全边界
|
||||
|
||||
结合 `edge-security-secrets`:
|
||||
|
||||
- 不返回 API Key、JWT、MQTT 密码、SSH 密码。
|
||||
- 不暴露真实配置文件完整内容。
|
||||
- 不开放任意命令执行。
|
||||
- 日志中记录工具名、参数摘要、耗时、结果状态,不记录敏感值。
|
||||
- 对外接口只监听本机或受控内网,默认不暴露公网。
|
||||
|
||||
## 部署方式
|
||||
|
||||
第一版建议使用 Python 独立 agent:
|
||||
|
||||
- 遵循 `edge-python-agent`。
|
||||
- 使用 systemd 独立托管。
|
||||
- 配置文件动态生成但不覆盖已有配置。
|
||||
- 打包和同步遵循 `edge-config-lifecycle`。
|
||||
|
||||
服务名建议:
|
||||
|
||||
```text
|
||||
edge-mcp-tools
|
||||
```
|
||||
|
||||
## 验证计划
|
||||
|
||||
至少验证:
|
||||
|
||||
- 工具列表可发现。
|
||||
- 每个工具 schema 正确。
|
||||
- 正常查询返回结构化数据。
|
||||
- 设备不存在、点位不存在、时间范围过大时错误可理解。
|
||||
- 返回内容脱敏。
|
||||
- 大数据查询有 limit 或摘要。
|
||||
- 服务重启后配置保留。
|
||||
- 本地模型能完成一个端到端问题,例如“分析最近 1 小时某设备是否异常”。
|
||||
|
||||
## 文档输出
|
||||
|
||||
设计 MCP 工具时输出:
|
||||
|
||||
```markdown
|
||||
## 工具清单
|
||||
|
||||
## 权限边界
|
||||
|
||||
## 输入输出 schema
|
||||
|
||||
## 数据来源
|
||||
|
||||
## 部署方式
|
||||
|
||||
## 安全与脱敏
|
||||
|
||||
## 验证计划
|
||||
```
|
||||
Reference in New Issue
Block a user