@seeed-studio/solution-cli 0.3.2 → 0.4.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +161 -113
- package/bin/cli.js +427 -34
- package/catalog/client-config.json +2 -2
- package/catalog/knowledge-core.json +75469 -639
- package/docs/cli-guide.md +195 -227
- package/lib/agent.js +132 -23
- package/lib/catalog-dto.js +14 -1
- package/lib/doctor.js +19 -1
- package/lib/downloader.js +24 -0
- package/lib/gotchas.js +126 -0
- package/lib/installer.js +75 -9
- package/lib/integration.js +265 -0
- package/lib/knowledge.js +1140 -103
- package/package.json +4 -3
- package/skills/solution-cli/SKILL.md +120 -28
- package/skills/solution-cli/references/consult-and-select.md +58 -14
- package/skills/solution-cli/references/deploy.md +60 -248
- package/skills/solution-cli/references/device-management.md +249 -77
- package/skills/solution-cli/references/diagnose.md +15 -0
- package/skills/solution-cli/references/edge-gotchas.md +205 -0
- package/skills/solution-cli/references/generic-rk3588.md +106 -0
- package/skills/solution-cli/references/hardware-bom.md +9 -3
- package/skills/solution-cli/references/sales-feasibility.md +65 -0
- package/skills/solution-cli/references/secondary-development.md +10 -7
package/docs/cli-guide.md
CHANGED
|
@@ -1,9 +1,7 @@
|
|
|
1
|
-
#
|
|
2
|
-
*(
|
|
1
|
+
# Solution CLI 使用与集成指南
|
|
2
|
+
*(Solution CLI & AI Agent Skill Guide)*
|
|
3
3
|
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
---
|
|
4
|
+
本文档面向方案架构师、现场工程师、开发者和 AI Agent。安装一次 `solution-cli` Skill 后,用户可以用自然语言完成方案咨询、硬件选型、部署前检查、本地/远程方案部署和部署后诊断。
|
|
7
5
|
|
|
8
6
|
## 目录
|
|
9
7
|
|
|
@@ -11,295 +9,265 @@
|
|
|
11
9
|
2. [安装与 Agent 技能挂载](#2-安装与-agent-技能挂载)
|
|
12
10
|
3. [核心功能、使用方法与具体产出](#3-核心功能使用方法与具体产出)
|
|
13
11
|
- [场景一:方案探索与工况诊断 (Hub Search)](#场景一方案探索与工况诊断-hub-search)
|
|
14
|
-
- [
|
|
15
|
-
- [
|
|
16
|
-
- [
|
|
12
|
+
- [场景二:硬件配置与配件选型(“买这个设备需要配什么配件?会不会买错?”)](#场景二硬件配置与配件选型买这个设备需要配什么配件会不会买错)
|
|
13
|
+
- [场景三:方案一键部署与本地/远程运行 (Solution Deployment)](#场景三方案一键部署与本地远程运行-solution-deployment)
|
|
14
|
+
- [场景四:设备状态感知与参数热修改 (Device Management)](#场景四设备状态感知与参数热修改-device-management)
|
|
15
|
+
- [场景五:自研模型替换与本地二次开发 (Secondary Dev)](#场景五自研模型替换与本地二次开发-secondary-dev)
|
|
17
16
|
4. [双轨运行机制:在线直连与离线托底](#4-双轨运行机制在线直连与离线托底)
|
|
18
17
|
5. [常见问题与环境自检 (Doctor)](#5-常见问题与环境自检-doctor)
|
|
19
18
|
|
|
20
|
-
---
|
|
21
|
-
|
|
22
19
|
## 1. 独特使用场景与核心价值
|
|
23
20
|
|
|
24
|
-
|
|
25
|
-
- **方案选型盲目**:不清楚现场环境(集中还是分散、有无现有监控摄像头、有无市电)对硬件架构的致命影响;
|
|
26
|
-
- **配件采购踩坑**:工控机买回后发现电源电压不符(如 12V 误插 19V 算力板)、DC 插头尺寸不对(5.5x2.1mm 插不进 5.5x2.5mm)、M.2 接口插槽类型搞混(Key-M 固态插不进 Key-E Wi-Fi 槽);
|
|
27
|
-
- **参数变更成本高**:改个 MQTT Broker 地址或算法置信度阈值就需要重新编译镜像或重装整套系统;
|
|
28
|
-
- **AI Agent 缺乏边缘硬件感知**:纯大模型对话缺乏真实物理世界的接口约束,容易凭空编造不存在的硬件型号或非官方链接。
|
|
21
|
+
`@seeed-studio/solution-cli` 提供三类能力:
|
|
29
22
|
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
3. **AI Agent 的物理世界触手**:一键将 solution-cli Skill 注入到主流 AI Agent 宿主中,让 Agent 具备从方案咨询、BOM 选型到现场部署、参数热更的全生命周期驱动能力。
|
|
23
|
+
- 根据客户工况搜索方案,并列出仍需确认的问题。
|
|
24
|
+
- 查询硬件规格、配件和物理兼容性。
|
|
25
|
+
- 通过签名 Rust Engine 预检查并在本地或远程部署已选方案,持续读取状态、日志和验证结果。
|
|
34
26
|
|
|
35
|
-
|
|
27
|
+
Agent 的默认工作流是“先咨询,再选型,再检查,最后在用户确认后部署”。用户只需描述目标,例如“帮我给锅炉房的 10 个恒温器设计改造方案”,Agent 应先查询方案并询问网络、供电、设备、温度约束和部署位置,不应把客户询盘直接当作部署授权。
|
|
36
28
|
|
|
37
29
|
## 2. 安装与 Agent 技能挂载
|
|
38
30
|
|
|
39
|
-
### 2.1
|
|
40
|
-
|
|
31
|
+
### 2.1 按需精准安装(推荐:npm 全局安装并挂载,避免 PATH 缺失报错)
|
|
32
|
+
|
|
33
|
+
你可以直接复制下表中对应的专属命令发给对应的 AI 助手,或在终端执行:
|
|
34
|
+
|
|
35
|
+
| 目标 AI 宿主平台 | 专属安装命令(直接复制发给 AI 或在终端运行) | 技能默认配置路径 |
|
|
36
|
+
|---|---|---|
|
|
37
|
+
| **豆包工作 (Doubao Work)** | `npm install -g @seeed-studio/solution-cli && solution-cli install --agent doubao` | `~/.doubao/skills` |
|
|
38
|
+
| **Claude Code** | `npm install -g @seeed-studio/solution-cli && solution-cli install --agent claude` | `~/.claude/skills` |
|
|
39
|
+
| **OpenAI Codex** | `npm install -g @seeed-studio/solution-cli && solution-cli install --agent codex` | `~/.agents/skills` 或 `~/.codex/skills` |
|
|
40
|
+
| **Google Antigravity** | `npm install -g @seeed-studio/solution-cli && solution-cli install --agent antigravity` | `~/.gemini/config/skills` |
|
|
41
|
+
| **WorkBuddy** | `npm install -g @seeed-studio/solution-cli && solution-cli install --agent workbuddy` | `~/.workbuddy/skills` |
|
|
42
|
+
| **CodeBuddy** | `npm install -g @seeed-studio/solution-cli && solution-cli install --agent codebuddy` | `~/.codebuddy/skills` |
|
|
43
|
+
| **Hermes Agent** | `npm install -g @seeed-studio/solution-cli && solution-cli install --agent hermes` | `$HERMES_HOME/skills` (默认 `~/.hermes/skills`) |
|
|
44
|
+
| **全部 Agent (全量覆盖)** | `npm install -g @seeed-studio/solution-cli && solution-cli install --agent all` | 上述全部已检测目录 |
|
|
45
|
+
| **自定义目录 (如 Cursor)** | `npm install -g @seeed-studio/solution-cli && solution-cli install --skills-dir <路径>` | `<自定义路径>/solution-cli` |
|
|
46
|
+
|
|
47
|
+
> [!TIP]
|
|
48
|
+
> - **为什么推荐 npm 全局安装?** 将 `solution-cli` 加入全局 PATH,AI Agent 在后续对话中调用方案/硬件查询时直接本地毫秒级响应,避免因 PATH 缺失触发 `command not found`。
|
|
49
|
+
> - **发给 AI 助手**:例如在豆包工作中直接发送:*“请帮我运行:`npm install -g @seeed-studio/solution-cli && solution-cli install --agent doubao`”*。
|
|
50
|
+
> - **免全局安装(npx 备选)**:如无全局 npm 写入权限,可使用 npx:`npx -y @seeed-studio/solution-cli install --agent <id>`。
|
|
51
|
+
|
|
52
|
+
### 2.2 本地源码部署与定制开发 (Local Deployment)
|
|
53
|
+
|
|
54
|
+
如果你在本地仓库进行开发或调试,可以直接使用源码安装,无需经过 npm:
|
|
55
|
+
|
|
41
56
|
```bash
|
|
42
|
-
|
|
57
|
+
# 针对特定 Agent 安装
|
|
58
|
+
node bin/cli.js install --agent <doubao|claude|codex|antigravity|codebuddy>
|
|
59
|
+
|
|
60
|
+
# 挂载到自定义目录
|
|
61
|
+
node bin/cli.js install --skills-dir ~/.cursor/skills
|
|
43
62
|
```
|
|
44
63
|
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
时复用,版本较旧时升级。普通安装保留用户修改、未登记的 Skill 文件和受
|
|
54
|
-
保护的符号链接。需要指定宿主时追加 `--agent claude,antigravity`;需要固
|
|
55
|
-
定有效本地 Engine 时使用 `--engine-path <path>`。`--force` 可重新下载相同
|
|
56
|
-
或较旧版本并覆盖已有 Skill 文件(包括用户修改),请只在有意覆盖时使用;
|
|
57
|
-
受保护的外部符号链接不会追写,也不能降级更新的本机 Engine。
|
|
58
|
-
|
|
59
|
-
自动复用/升级规则自 solution-cli 0.3.1 起生效;该版本已公开发布。latest 检查或签名校验失败会在
|
|
60
|
-
修改 Engine、指针或 Skill 前停止;离线时请提供有效的 `--engine-path`。
|
|
61
|
-
|
|
62
|
-
The same command handles a fresh install and a user-requested upgrade. It checks
|
|
63
|
-
the signed stable Engine, reuses an equal/newer local version, preserves modified
|
|
64
|
-
skills, and stops before writes on latest/signature failure. Automatic reuse and
|
|
65
|
-
upgrade rules start with publicly published solution-cli 0.3.1. The example
|
|
66
|
-
targets WorkBuddy with `--agent workbuddy`; replace it with the current Agent ID
|
|
67
|
-
for another host. Use `npx -y @seeed-studio/solution-cli@latest install` for the
|
|
68
|
-
interactive form: when one or more Agents are detected, pressing Enter selects
|
|
69
|
-
all detected Agents, while entering a number selects one host. In non-interactive
|
|
70
|
-
mode, `install -y` without `--agent` also selects all detected Agents when any
|
|
71
|
-
are detected. If none are detected, these defaults still use the CLI's default
|
|
72
|
-
target set; pass `--agent <agent-id>` to control the scope explicitly.
|
|
73
|
-
|
|
74
|
-
### 2.2 全局安装
|
|
64
|
+
省略 `--agent` 时,终端交互运行会进入选择器;非交互运行会安装到已检测的宿主,未检测到宿主时会选择全部宿主。建议始终明确指定当前 Agent。重复执行会复用相同或更新的签名 Engine、升级旧版本,并保留用户修改的 Skill。`--force` 会覆盖已有 Skill 修改,只在用户明确要求时使用。
|
|
65
|
+
|
|
66
|
+
安装完成后刷新宿主的 Skill 列表或完全退出并重新打开 Agent 应用,确认宿主的实际 Skill 列表中已出现 `solution-cli`,再新建会话直接描述需求。若宿主未自动发现技能,发送:“请使用 solution-cli Skill,先查询方案,再告诉我缺哪些部署信息。”安装器只写入被选中的宿主。
|
|
67
|
+
|
|
68
|
+
### 2.3 全局安装与 Profile
|
|
69
|
+
|
|
70
|
+
需要长期使用 `solution-cli` 命令时可以全局安装:
|
|
71
|
+
|
|
75
72
|
```bash
|
|
76
|
-
npm install -g @seeed-studio/solution-cli
|
|
77
|
-
solution-cli
|
|
73
|
+
npm install -g --registry=https://registry.npmjs.org/ @seeed-studio/solution-cli@latest
|
|
74
|
+
solution-cli status
|
|
78
75
|
```
|
|
79
76
|
|
|
80
|
-
|
|
81
|
-
`workbuddy` 替换为当前实际 Agent ID。交互执行 `solution-cli install` 时,
|
|
82
|
-
检测到一个或多个 Agent 后直接回车选择全部已检测的 Agent,输入对应序号选择指定
|
|
83
|
-
宿主;非交互执行 `solution-cli install -y` 且未提供 `--agent` 时,检测到 Agent
|
|
84
|
-
也会选择全部已检测的 Agent。未检测到 Agent 时,这些默认仍使用 CLI 的默认目标集合;
|
|
85
|
-
需要明确控制范围时请提供 `--agent <agent-id>`。
|
|
86
|
-
|
|
87
|
-
The global command targets WorkBuddy explicitly. Replace `workbuddy` with the
|
|
88
|
-
current Agent ID for another host. Interactive `solution-cli install` selects all
|
|
89
|
-
detected Agents on Enter when any are detected, or one host by number;
|
|
90
|
-
non-interactive `solution-cli install -y` without `--agent` also selects all
|
|
91
|
-
detected Agents when any are detected. If none are detected, these defaults still
|
|
92
|
-
use the CLI's default target set; pass `--agent <agent-id>` to control the scope
|
|
93
|
-
explicitly.
|
|
94
|
-
|
|
95
|
-
### 2.3 跨 Agent 平台技能挂载
|
|
96
|
-
执行 `solution-cli install` 时,工具会自动检测本机存在的 Agent 宿主环境,并将 `solution-cli` Skill 和全套参考手册安全复制到对应目录:
|
|
97
|
-
|
|
98
|
-
| Agent 宿主平台 | 技能默认配置路径 | 支持能力 |
|
|
99
|
-
|---|---|---|
|
|
100
|
-
| **Claude Code** | `~/.claude/skills/solution-cli` | 完整方案咨询、工况诊断、BOM 生成、现场部署 |
|
|
101
|
-
| **Codex (OpenAI)** | `~/.agents/skills/solution-cli` 或 `~/.codex/skills/solution-cli` | 代码审查、参数重构、二次开发自动化 |
|
|
102
|
-
| **Google Antigravity (AGY)** | `~/.gemini/config/skills/solution-cli` | 端到端自主诊断、多 Agent 协同实施 |
|
|
103
|
-
| **Work Buddy / Workbody** | `~/.workbuddy/skills/solution-cli` | 桌面端交互、方案展示、一键部署联动 |
|
|
104
|
-
| **CodeBuddy** | `~/.codebuddy/skills/solution-cli` | 代码库配对开发与自研模型构建 |
|
|
77
|
+
不想修改全局 npm 环境时,使用 `npx --package` 临时调用:
|
|
105
78
|
|
|
106
|
-
**非交互式多选安装示例**:
|
|
107
79
|
```bash
|
|
108
|
-
|
|
109
|
-
solution-cli install --agent claude,antigravity -y
|
|
80
|
+
npx -y --registry=https://registry.npmjs.org/ --package=@seeed-studio/solution-cli@latest solution-cli hub search "农业" --json
|
|
110
81
|
```
|
|
111
82
|
|
|
112
|
-
|
|
83
|
+
Hermes 的已配置 profile 可通过 `--agent hermes:<profile>` 选择(安装、更新、卸载通用):具名 profile 使用 `<root>/profiles/<profile>/skills/solution-cli`,`hermes:default` 使用 `<root>/skills/solution-cli`;`<root>` 是 Hermes 安装根目录。Profile ID 为 1–64 位小写字母、数字、`_` 或 `-`,以字母或数字开头。安装器仅复制 Skill,不创建或切换 profile。
|
|
113
84
|
|
|
114
85
|
## 3. 核心功能、使用方法与具体产出
|
|
115
86
|
|
|
116
|
-
|
|
87
|
+
安装后可直接在命令行运行 `solution-cli` 与 `sensecraft-engine`;若未执行安装,也可随时通过 `npx -y @seeed-studio/solution-cli <command>` 免安装即用。
|
|
117
88
|
|
|
118
|
-
|
|
89
|
+
### 场景一:方案探索与工况诊断 (Hub Search)
|
|
119
90
|
|
|
120
91
|
#### 1. 执行命令
|
|
121
|
-
```bash
|
|
122
|
-
# 人类工程师阅读模式 (格式化终端高亮)
|
|
123
|
-
solution-cli hub search "农业"
|
|
124
92
|
|
|
125
|
-
|
|
126
|
-
solution-cli hub search "
|
|
93
|
+
```bash
|
|
94
|
+
solution-cli hub search "锅炉恒温器" --json
|
|
127
95
|
```
|
|
128
96
|
|
|
97
|
+
*(免安装时可用:`npx -y @seeed-studio/solution-cli hub search "锅炉恒温器" --json`)*
|
|
98
|
+
|
|
129
99
|
#### 2. 产出物内容 (What it Outputs)
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
2. **静默商业闭环出口**:自动为该方案生成带有安全追踪标记(`utm_source=sensecraft_agent`)的官方落地页与开发 Wiki;
|
|
133
|
-
3. **官方开源仓库地址**:提供官方维护的 GitHub 源码仓库,为二次开发预留出口;
|
|
134
|
-
4. **现场工况诊断提问指引 (Diagnostic Playbook)**:直接给出当前场景下**必须向客户确认的 2~3 个核心工况问题**及其背后的技术决断理由。
|
|
100
|
+
|
|
101
|
+
Agent 根据结果解释匹配的方案、设备和限制,并追问客户现场信息。方案未确认前只查询,不运行部署。
|
|
135
102
|
|
|
136
103
|
#### 3. 产出示例 (以“农业”搜索为例)
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
104
|
+
|
|
105
|
+
输出应包含匹配方案、适用场景、设备要求和仍需确认的工况问题;具体内容以查询结果为准。
|
|
106
|
+
|
|
107
|
+
#### 4. 页面关系、内容读取与生产链接
|
|
108
|
+
|
|
109
|
+
方案目录按显式关系组织,不把页面名称混用:Scenario 是业务落地页,Tech 是独立技术归属页,Reference Design(RD)是具体方案设计。Scenario 会关联 Tech 和 RD;RD 可继续关联架构图、产品说明和部署文档。只有 RD 存在有效部署映射和 preset 时,才可进入一键部署流程。
|
|
110
|
+
|
|
111
|
+
```bash
|
|
112
|
+
# 全量目录:按页读取,直到 has_more=false
|
|
113
|
+
solution-cli hub list --type reference_design --locale zh --page 1 --limit 50 --json
|
|
114
|
+
# 选定记录:按需要读取关系、链接、架构、产品或部署内容
|
|
115
|
+
solution-cli hub get <id> --locale zh --section overview --json
|
|
116
|
+
solution-cli hub get <id> --locale zh --section links --json
|
|
117
|
+
solution-cli hub get <id> --locale zh --section architecture --json
|
|
118
|
+
solution-cli hub get <id> --locale zh --section products --json
|
|
119
|
+
solution-cli hub get <id> --locale zh --section deployment --json
|
|
150
120
|
```
|
|
151
121
|
|
|
152
|
-
|
|
122
|
+
三种生产语言使用不同域名:英文 `www.seeed.cc`、中文 `www.seeedstudio.com.cn`、日文 `www.seeed.co.jp`。实际链接必须使用 `hub get --section links` 返回的地址;不要从 slug 拼接 Wiki、图片 CDN 或其他语言 URL。Wiki 是单独的已发布文档链接,Tech 页面也不能被当成 Wiki。翻译正文缺失时,保留可用的生产页并说明返回的内容语言。
|
|
153
123
|
|
|
154
|
-
|
|
124
|
+
返回链接或 metadata 不等于已经阅读页面内容。回答方案能力、架构或产品问题时,必须读取对应的 `description`、`architecture`、`products` section;确切落地页或架构图片影响答案时,打开 CLI 返回的确切地址并说明实际核验范围。相对图片路径只有在签名本地内容存在时才可读取,否则标为 source asset 未就绪。
|
|
155
125
|
|
|
156
|
-
|
|
126
|
+
RD 的部署映射只是目录信息,执行前还要读取本机 Engine 的实际配置:
|
|
157
127
|
|
|
158
|
-
#### 1. 执行命令
|
|
159
128
|
```bash
|
|
160
|
-
|
|
161
|
-
|
|
129
|
+
sensecraft-engine deploy-info <solution-id> --lang zh
|
|
130
|
+
```
|
|
131
|
+
|
|
132
|
+
架构部分只引用来源明确标记为 architecture 的图;其余图片按 gallery 呈现。产品说明、BOM、架构来源和部署文档都要保留来源与内容语言。
|
|
133
|
+
|
|
134
|
+
### 场景二:硬件配置与配件选型(“买这个设备需要配什么配件?会不会买错?”)
|
|
135
|
+
|
|
136
|
+
#### 1. 适用场景(客户常问什么)
|
|
137
|
+
|
|
138
|
+
- “这款硬件(如 reComputer J40、SenseCAP Watcher)是什么配置?有几个网口、多大算力?”
|
|
139
|
+
- “我买了这台主机,还需要额外配什么配件?电源、天线、外壳带不带?”
|
|
140
|
+
- “我想加装 4G 模块或 SSD 固态硬盘,哪些型号能兼容?会不会买错插不上?”
|
|
141
|
+
|
|
142
|
+
#### 2. 执行命令
|
|
162
143
|
|
|
163
|
-
|
|
164
|
-
|
|
144
|
+
```bash
|
|
145
|
+
# 1. 查硬件配置参数(算力、电压、物理接口、外形尺寸)
|
|
146
|
+
solution-cli product query <family-id> --json
|
|
147
|
+
|
|
148
|
+
# 2. 查配件推荐与兼容性清单(区分必买配件、可选配件,防踩坑)
|
|
149
|
+
solution-cli product accessories <family-id> --json
|
|
165
150
|
```
|
|
166
151
|
|
|
167
|
-
####
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
-
|
|
173
|
-
|
|
174
|
-
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
152
|
+
#### 3. 它能为你产出什么(解决什么痛点)
|
|
153
|
+
|
|
154
|
+
1. **查清硬件规格**:直接返回 CPU/GPU 算力、供电范围、物理接口(网口/串口/USB)、外形尺寸等真实参数,无需翻找繁琐的说明书。
|
|
155
|
+
2. **分清“必须买”与“按需选配”**:
|
|
156
|
+
- **必需配件(必须购买)**:如匹配功率的电源适配器、国标/美标电源线,不买设备无法开机;
|
|
157
|
+
- **可选配件(扩展使用)**:如安装导轨、外置天线、防护外壳、摄像头模组、M.2 扩展卡等。
|
|
158
|
+
3. **防止买错踩坑(兼容性校验)**:
|
|
159
|
+
- 自动对比接口规格(如 M.2 Key-M 还是 Key-E)、天线频段(4G/Wi-Fi/LoRa)、供电电压与功率;
|
|
160
|
+
- 明确标注 `VERIFIED`(官方实测兼容)、`REQUIRES_ADAPTER`(需搭配转接板)或 `INCOMPATIBLE`(不兼容,严禁搭配使用)。
|
|
161
|
+
4. **一键生成采购清单**:
|
|
162
|
+
- 结果直接包含官方真实 SKU、数量建议与购买链接,方便直接采购下单。
|
|
163
|
+
|
|
164
|
+
### 场景三:方案一键部署与本地/远程运行 (Solution Deployment)
|
|
165
|
+
|
|
166
|
+
方案部署由签名 Rust Engine (`sensecraft-engine`) 驱动,支持**本地一键部署**与**远程边缘设备部署**。
|
|
167
|
+
|
|
168
|
+
#### 1. 读取部署规范与预设
|
|
169
|
+
|
|
170
|
+
```bash
|
|
171
|
+
sensecraft-engine deploy-info <solution-id> --lang zh
|
|
172
|
+
```
|
|
173
|
+
|
|
174
|
+
根据返回的 `presets` 与 `device_connections` 准备参数文件 `./.sensecraft-work/body.json`。
|
|
175
|
+
|
|
176
|
+
#### 2. 参数文件配置
|
|
177
|
+
|
|
178
|
+
- **模式 A:本地快速部署(Local Docker,最简单、零密码配置)**
|
|
179
|
+
适用于在当前本地宿主机(Linux 工作站 / Jetson / 树莓派)上直接运行方案容器:
|
|
180
|
+
```json
|
|
181
|
+
{
|
|
182
|
+
"solution_id": "<solution-id>",
|
|
183
|
+
"preset_id": "default",
|
|
184
|
+
"selected_devices": ["host_device"],
|
|
185
|
+
"device_connections": {
|
|
186
|
+
"host_device": {
|
|
187
|
+
"target": "local_host",
|
|
188
|
+
"target_type": "local"
|
|
200
189
|
}
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
190
|
+
}
|
|
191
|
+
}
|
|
192
|
+
```
|
|
193
|
+
|
|
194
|
+
- **模式 B:远程边缘设备部署(Remote SSH 密钥认证)**
|
|
195
|
+
适用于部署到局域网内的远程边缘硬件。严禁使用明文密码,统一采用 SSH 私钥认证:
|
|
196
|
+
```json
|
|
197
|
+
{
|
|
198
|
+
"solution_id": "<solution-id>",
|
|
199
|
+
"preset_id": "default",
|
|
200
|
+
"selected_devices": ["host_device"],
|
|
201
|
+
"device_connections": {
|
|
202
|
+
"host_device": {
|
|
203
|
+
"target": "remote_edge",
|
|
204
|
+
"target_type": "remote",
|
|
205
|
+
"host": "192.168.1.50",
|
|
206
|
+
"username": "seeed",
|
|
207
|
+
"key_file": "~/.ssh/id_ed25519"
|
|
208
208
|
}
|
|
209
|
-
|
|
209
|
+
}
|
|
210
210
|
}
|
|
211
|
-
|
|
212
|
-
```
|
|
211
|
+
```
|
|
213
212
|
|
|
214
|
-
|
|
213
|
+
#### 3. 一行命令执行部署与状态追踪
|
|
215
214
|
|
|
216
|
-
|
|
215
|
+
```bash
|
|
216
|
+
# 1. 验证参数并启动部署
|
|
217
|
+
sensecraft-engine deploy --params ./.sensecraft-work/body.json --yes
|
|
218
|
+
|
|
219
|
+
# 2. 查询部署进度与容器日志
|
|
220
|
+
sensecraft-engine status <deployment-id> --json
|
|
221
|
+
sensecraft-engine logs <deployment-id>
|
|
222
|
+
```
|
|
217
223
|
|
|
218
|
-
|
|
224
|
+
### 场景四:设备状态感知与参数热修改 (Device Management)
|
|
219
225
|
|
|
220
226
|
#### 1. 核心流程与接口
|
|
221
|
-
系统支持**无需重新编译、无需重装整套系统**的零重启参数热修改:
|
|
222
|
-
1. **查询当前设备活跃部署**:
|
|
223
|
-
`GET http://<host>:5823/api/device-management/active`
|
|
224
|
-
2. **查询可修改参数**:
|
|
225
|
-
`GET http://<host>:5823/api/docker-devices/local/config/<solution_id>`
|
|
226
|
-
检查参数字段中的 `reconfigurable: true` 标记。
|
|
227
|
-
3. **提交热更新**:
|
|
228
|
-
`PUT http://<host>:5823/api/docker-devices/local/config/<solution_id>`
|
|
229
|
-
传入目标键值,容器环境无感热加载生效。
|
|
230
|
-
|
|
231
|
-
---
|
|
232
227
|
|
|
233
|
-
|
|
228
|
+
已部署设备的参数修改要先读取当前部署和可修改字段,确认目标和变更范围,再执行对应管理接口。能否热修改取决于方案返回的 `reconfigurable` 字段;不要假设所有参数都支持无重启修改。
|
|
234
229
|
|
|
235
|
-
|
|
230
|
+
### 场景五:自研模型替换与本地二次开发 (Secondary Dev)
|
|
236
231
|
|
|
237
232
|
#### 1. 开发闭环步骤
|
|
238
|
-
1. **克隆源码**:
|
|
239
|
-
从 `solution-cli hub search` 返回的 `repo_url` 将源码克隆到本地用户工作区:
|
|
240
|
-
```bash
|
|
241
|
-
git clone https://github.com/suharvest/sensecraft-solutions.git ./my-solutions
|
|
242
|
-
```
|
|
243
|
-
2. **端侧模型转换 (以 Jetson Orin 为例)**:
|
|
244
|
-
在设备上使用 TensorRT 将自定义 ONNX 导出为 Engine:
|
|
245
|
-
```bash
|
|
246
|
-
/usr/src/tensorrt/bin/trtexec --onnx=my_model.onnx --saveEngine=my_model.engine --fp16
|
|
247
|
-
```
|
|
248
|
-
3. **覆盖挂载配置**:
|
|
249
|
-
在方案目录创建 `docker-compose.override.yml` 将本地自研模型映射进容器中。
|
|
250
|
-
4. **驱动本地快速联调**:
|
|
251
|
-
使用 `--solutions-dir` 参数,强制底层引擎加载本地修改版方案,彻底不碰官方缓存:
|
|
252
|
-
```bash
|
|
253
|
-
sensecraft-engine deploy fall_detection --solutions-dir ./my-solutions/solutions
|
|
254
|
-
```
|
|
255
|
-
|
|
256
|
-
---
|
|
257
233
|
|
|
258
|
-
|
|
259
|
-
|
|
260
|
-
为了保证在各类严苛现场环境下均能稳定运行,CLI 实现了智能双轨架构:
|
|
261
|
-
|
|
262
|
-
```mermaid
|
|
263
|
-
flowchart TD
|
|
264
|
-
RunCmd["用户 / Agent 触发 CLI 命令"] --> NetCheck{"检查网络与凭证"}
|
|
265
|
-
NetCheck -- "有外网且含烘焙配置" --> Typesense["直连 Seeed Typesense 云端搜索集群"]
|
|
266
|
-
Typesense -- "返回最新上线方案与配件" --> Done["输出 Catalog DTO"]
|
|
267
|
-
NetCheck -- "纯内网 / 无凭证 / 超时" --> LocalCore["无感降级: 读取 catalog/knowledge-core.json"]
|
|
268
|
-
LocalCore -- "331 KB 本地知识库 (18场景/39方案/119硬件)" --> Done
|
|
269
|
-
```
|
|
234
|
+
从查询结果中的官方仓库获取源码,在本地修改后按方案文档使用 `--solutions-dir` 进行测试。部署前展示修改和影响范围;不要把本地开发目录直接当作已验证的生产方案。
|
|
270
235
|
|
|
271
|
-
|
|
272
|
-
- 采用安全方案 B 在构建发布期烘焙了公开的只读 Search-Only 凭证;
|
|
273
|
-
- 自动直连 `https://rel-search.seeedstudio.com`,实时获取最新的方案、Wiki、案例及商城 SKU;
|
|
274
|
-
2. **离线安全托底 (Offline Resilience)**:
|
|
275
|
-
- 打包了全量预生成的 `catalog/knowledge-core.json`(331 KB);
|
|
276
|
-
- 在军工、内网、无公网或云端响应超过 2.5 秒时,**自动毫秒级无感降级到本地内核**,工况诊断、BOM 评估与离线部署 100% 正常可用。
|
|
236
|
+
## 4. 双轨运行机制:在线直连与离线托底
|
|
277
237
|
|
|
278
|
-
|
|
238
|
+
目录和产品查询优先使用在线资源;无法联网时使用已安装包中的本地内容和知识库。离线能力不代表所有在线方案或实时设备状态都可用。部署仍需目标设备可达、凭据有效、目标环境满足 `deploy-info` 和 `validate` 的要求。
|
|
279
239
|
|
|
280
240
|
## 5. 常见问题与环境自检 (Doctor)
|
|
281
241
|
|
|
282
242
|
### 1. 运行自检工具
|
|
283
|
-
|
|
243
|
+
|
|
284
244
|
```bash
|
|
285
|
-
solution-cli doctor
|
|
245
|
+
solution-cli doctor --json
|
|
286
246
|
```
|
|
287
|
-
|
|
288
|
-
|
|
289
|
-
- `Docker Daemon`: 确认 Docker 服务是否正常运行;
|
|
290
|
-
- `Serial / Dialout Permissions`: 确认串口访问权限;
|
|
291
|
-
- `SenseCraft Engine`: 确认底座引擎完整性与版本;
|
|
292
|
-
- `Ledger Integrity`: 校验技能安装账本状态。
|
|
247
|
+
|
|
248
|
+
重点查看操作系统、架构、Engine、PATH、串口权限、Docker 和 Skill ledger 的结果。远程设备的 SSH、sudo、Docker 安装和启动状态需按 `deploy-info`、`validate` 和设备返回信息单独确认;CLI 不会静默取得权限。
|
|
293
249
|
|
|
294
250
|
### 2. 状态查询
|
|
251
|
+
|
|
295
252
|
```bash
|
|
296
253
|
solution-cli status
|
|
297
254
|
```
|
|
298
|
-
实时查看当前 Engine 所在路径、安装版本、本地 Content 方案缓存数量以及各大 Agent 的配置状态。
|
|
299
255
|
|
|
300
|
-
|
|
301
|
-
|
|
256
|
+
查看 Engine 路径、版本、内容缓存和 Skill 挂载状态。
|
|
257
|
+
|
|
258
|
+
### 3. 网络与源排查
|
|
259
|
+
|
|
260
|
+
若遇到 npm 下载或同步延迟,可在命令中显式指定官方源:
|
|
261
|
+
```bash
|
|
262
|
+
npx -y --registry=https://registry.npmjs.org/ @seeed-studio/solution-cli install -y
|
|
263
|
+
```
|
|
264
|
+
|
|
265
|
+
### 4. 干净卸载
|
|
266
|
+
|
|
267
|
+
只卸载指定宿主,并先备份需要保留的用户修改:
|
|
268
|
+
|
|
302
269
|
```bash
|
|
303
|
-
solution-cli uninstall --agent
|
|
270
|
+
solution-cli uninstall --agent workbuddy
|
|
304
271
|
```
|
|
305
|
-
|
|
272
|
+
|
|
273
|
+
卸载依据 ledger 只删除 CLI 自己写入且未被修改的文件,不删除 Engine 或方案内容。旧的非 `solution-cli` Skill 目录需要用户自行备份和清理;不要使用 `rm -rf` 或 `--force` 代替确认。
|