@pwddd/skills-scanner 2.4.1 → 2026.3.10
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.
Potentially problematic release.
This version of @pwddd/skills-scanner might be problematic. Click here for more details.
- package/CHANGELOG.md +31 -0
- package/INSTALL.md +280 -0
- package/QUICKSTART.md +106 -0
- package/README.md +199 -431
- package/SUMMARY.md +272 -0
- package/openclaw.plugin.json +41 -59
- package/package.json +14 -19
- package/src/commands.ts +269 -0
- package/src/config.ts +170 -0
- package/src/cron.ts +82 -0
- package/src/deps.ts +71 -0
- package/src/report.ts +113 -0
- package/src/scanner.ts +45 -0
- package/src/state.ts +66 -0
- package/src/types.ts +47 -0
- package/src/watcher.ts +124 -0
package/CHANGELOG.md
ADDED
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
# Changelog
|
|
2
|
+
|
|
3
|
+
## [2026.3.10] - 2024-03-10
|
|
4
|
+
|
|
5
|
+
### Added
|
|
6
|
+
- 初始版本发布
|
|
7
|
+
- 自动扫描新安装的 Skills
|
|
8
|
+
- 定时日报功能(每天 08:00)
|
|
9
|
+
- 支持三种扫描策略:strict/balanced/permissive
|
|
10
|
+
- 可选的 LLM 语义分析
|
|
11
|
+
- 自动隔离/删除不安全的 Skills
|
|
12
|
+
- 聊天命令:/skills-scanner
|
|
13
|
+
- CLI 命令:openclaw skills-scan
|
|
14
|
+
- Gateway RPC 方法:skills-scanner.scan, skills-scanner.report
|
|
15
|
+
- 首次运行配置向导
|
|
16
|
+
|
|
17
|
+
### Features
|
|
18
|
+
- Python 依赖自动安装(使用 uv)
|
|
19
|
+
- 文件监控(fs.watch)
|
|
20
|
+
- 状态持久化
|
|
21
|
+
- 告警队列
|
|
22
|
+
- 健康检查
|
|
23
|
+
|
|
24
|
+
### Configuration
|
|
25
|
+
- apiUrl: API 服务地址
|
|
26
|
+
- scanDirs: 扫描目录列表
|
|
27
|
+
- behavioral: 行为分析开关
|
|
28
|
+
- useLLM: LLM 分析开关
|
|
29
|
+
- policy: 扫描策略
|
|
30
|
+
- preInstallScan: 安装前扫描开关
|
|
31
|
+
- onUnsafe: 不安全 Skill 处理方式
|
package/INSTALL.md
ADDED
|
@@ -0,0 +1,280 @@
|
|
|
1
|
+
# Skills Scanner 安装指南
|
|
2
|
+
|
|
3
|
+
## 快速开始
|
|
4
|
+
|
|
5
|
+
### 1. 安装插件
|
|
6
|
+
|
|
7
|
+
```bash
|
|
8
|
+
# 从本地安装(开发模式)
|
|
9
|
+
cd /path/to/openclaw
|
|
10
|
+
openclaw plugins install ./extensions/skills-scanner
|
|
11
|
+
|
|
12
|
+
# 或从 npm 安装(发布后)
|
|
13
|
+
openclaw plugins install @openclaw/skills-scanner
|
|
14
|
+
```
|
|
15
|
+
|
|
16
|
+
### 2. 安装前置依赖
|
|
17
|
+
|
|
18
|
+
#### 安装 uv(Python 包管理器)
|
|
19
|
+
|
|
20
|
+
```bash
|
|
21
|
+
# macOS/Linux
|
|
22
|
+
curl -LsSf https://astral.sh/uv/install.sh | sh
|
|
23
|
+
|
|
24
|
+
# 或使用 Homebrew
|
|
25
|
+
brew install uv
|
|
26
|
+
|
|
27
|
+
# Windows
|
|
28
|
+
powershell -c "irm https://astral.sh/uv/install.ps1 | iex"
|
|
29
|
+
```
|
|
30
|
+
|
|
31
|
+
#### 启动扫描 API 服务
|
|
32
|
+
|
|
33
|
+
插件需要连接到 `skill-scanner-api` 服务。请确保该服务正在运行:
|
|
34
|
+
|
|
35
|
+
```bash
|
|
36
|
+
# 假设你已经有这个服务
|
|
37
|
+
skill-scanner-api
|
|
38
|
+
# 默认监听 http://localhost:8000
|
|
39
|
+
```
|
|
40
|
+
|
|
41
|
+
### 3. 配置插件
|
|
42
|
+
|
|
43
|
+
编辑 `~/.openclaw/config.json` 或工作区配置:
|
|
44
|
+
|
|
45
|
+
```json
|
|
46
|
+
{
|
|
47
|
+
"plugins": {
|
|
48
|
+
"entries": {
|
|
49
|
+
"skills-scanner": {
|
|
50
|
+
"enabled": true,
|
|
51
|
+
"config": {
|
|
52
|
+
"apiUrl": "http://localhost:8000",
|
|
53
|
+
"scanDirs": [
|
|
54
|
+
"~/.openclaw/skills",
|
|
55
|
+
"~/.openclaw/workspace/skills"
|
|
56
|
+
],
|
|
57
|
+
"behavioral": false,
|
|
58
|
+
"useLLM": false,
|
|
59
|
+
"policy": "balanced",
|
|
60
|
+
"preInstallScan": "on",
|
|
61
|
+
"onUnsafe": "quarantine"
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
```
|
|
68
|
+
|
|
69
|
+
### 4. 重启 Gateway
|
|
70
|
+
|
|
71
|
+
```bash
|
|
72
|
+
openclaw gateway restart
|
|
73
|
+
```
|
|
74
|
+
|
|
75
|
+
### 5. 验证安装
|
|
76
|
+
|
|
77
|
+
```bash
|
|
78
|
+
# 检查插件状态
|
|
79
|
+
openclaw plugins list
|
|
80
|
+
|
|
81
|
+
# 检查 Python 依赖
|
|
82
|
+
openclaw skills-scan health
|
|
83
|
+
|
|
84
|
+
# 在聊天中测试
|
|
85
|
+
/skills-scanner status
|
|
86
|
+
```
|
|
87
|
+
|
|
88
|
+
## 配置说明
|
|
89
|
+
|
|
90
|
+
### apiUrl
|
|
91
|
+
- 类型:`string`
|
|
92
|
+
- 默认:`http://localhost:8000`
|
|
93
|
+
- 说明:扫描 API 服务的地址
|
|
94
|
+
|
|
95
|
+
### scanDirs
|
|
96
|
+
- 类型:`string[]`
|
|
97
|
+
- 默认:自动检测 `~/.openclaw/skills` 等目录
|
|
98
|
+
- 说明:要监控的 Skills 目录列表,支持 `~` 路径
|
|
99
|
+
|
|
100
|
+
### behavioral
|
|
101
|
+
- 类型:`boolean`
|
|
102
|
+
- 默认:`false`
|
|
103
|
+
- 说明:是否启用行为分析(深度扫描,较慢但更准确)
|
|
104
|
+
|
|
105
|
+
### useLLM
|
|
106
|
+
- 类型:`boolean`
|
|
107
|
+
- 默认:`false`
|
|
108
|
+
- 说明:是否使用 LLM 进行语义分析
|
|
109
|
+
|
|
110
|
+
### policy
|
|
111
|
+
- 类型:`"strict" | "balanced" | "permissive"`
|
|
112
|
+
- 默认:`"balanced"`
|
|
113
|
+
- 说明:扫描策略
|
|
114
|
+
- `strict`: 严格模式,发现任何可疑行为都标记为不安全
|
|
115
|
+
- `balanced`: 平衡模式(推荐)
|
|
116
|
+
- `permissive`: 宽松模式,只标记明确的威胁
|
|
117
|
+
|
|
118
|
+
### preInstallScan
|
|
119
|
+
- 类型:`"on" | "off"`
|
|
120
|
+
- 默认:`"on"`
|
|
121
|
+
- 说明:是否在安装时自动扫描新 Skill
|
|
122
|
+
|
|
123
|
+
### onUnsafe
|
|
124
|
+
- 类型:`"quarantine" | "delete" | "warn"`
|
|
125
|
+
- 默认:`"quarantine"`
|
|
126
|
+
- 说明:发现不安全 Skill 的处理方式
|
|
127
|
+
- `quarantine`: 移入隔离目录(推荐)
|
|
128
|
+
- `delete`: 直接删除
|
|
129
|
+
- `warn`: 仅警告,不处理
|
|
130
|
+
|
|
131
|
+
## 使用方法
|
|
132
|
+
|
|
133
|
+
### 聊天命令
|
|
134
|
+
|
|
135
|
+
```
|
|
136
|
+
# 扫描单个 Skill
|
|
137
|
+
/skills-scanner scan ~/.openclaw/skills/my-skill
|
|
138
|
+
|
|
139
|
+
# 扫描目录(递归)
|
|
140
|
+
/skills-scanner scan ~/.openclaw/skills --recursive
|
|
141
|
+
|
|
142
|
+
# 生成日报
|
|
143
|
+
/skills-scanner scan ~/.openclaw/skills --report
|
|
144
|
+
|
|
145
|
+
# 查看状态
|
|
146
|
+
/skills-scanner status
|
|
147
|
+
|
|
148
|
+
# 配置管理
|
|
149
|
+
/skills-scanner config show
|
|
150
|
+
/skills-scanner config reset
|
|
151
|
+
|
|
152
|
+
# 定时任务管理
|
|
153
|
+
/skills-scanner cron status
|
|
154
|
+
/skills-scanner cron register
|
|
155
|
+
/skills-scanner cron unregister
|
|
156
|
+
|
|
157
|
+
# 帮助
|
|
158
|
+
/skills-scanner help
|
|
159
|
+
```
|
|
160
|
+
|
|
161
|
+
### CLI 命令
|
|
162
|
+
|
|
163
|
+
```bash
|
|
164
|
+
# 扫描单个 Skill
|
|
165
|
+
openclaw skills-scan scan ~/.openclaw/skills/my-skill
|
|
166
|
+
|
|
167
|
+
# 批量扫描(递归)
|
|
168
|
+
openclaw skills-scan batch ~/.openclaw/skills --recursive
|
|
169
|
+
|
|
170
|
+
# 生成日报
|
|
171
|
+
openclaw skills-scan report
|
|
172
|
+
|
|
173
|
+
# 健康检查
|
|
174
|
+
openclaw skills-scan health
|
|
175
|
+
```
|
|
176
|
+
|
|
177
|
+
## 故障排除
|
|
178
|
+
|
|
179
|
+
### Python 依赖安装失败
|
|
180
|
+
|
|
181
|
+
如果自动安装失败,可以手动安装:
|
|
182
|
+
|
|
183
|
+
```bash
|
|
184
|
+
cd extensions/skills-scanner/skills/skills-scanner
|
|
185
|
+
uv venv .venv --python 3.10
|
|
186
|
+
uv pip install --python .venv/bin/python requests>=2.31.0
|
|
187
|
+
```
|
|
188
|
+
|
|
189
|
+
### API 服务连接失败
|
|
190
|
+
|
|
191
|
+
1. 确保 `skill-scanner-api` 服务正在运行
|
|
192
|
+
2. 检查配置中的 `apiUrl` 是否正确
|
|
193
|
+
3. 运行健康检查:
|
|
194
|
+
|
|
195
|
+
```bash
|
|
196
|
+
openclaw skills-scan health
|
|
197
|
+
```
|
|
198
|
+
|
|
199
|
+
### 定时任务未注册
|
|
200
|
+
|
|
201
|
+
手动注册定时任务:
|
|
202
|
+
|
|
203
|
+
```bash
|
|
204
|
+
openclaw cron add \
|
|
205
|
+
--name "skills-daily-report" \
|
|
206
|
+
--cron "0 8 * * *" \
|
|
207
|
+
--tz "Asia/Shanghai" \
|
|
208
|
+
--session isolated \
|
|
209
|
+
--message "请执行 /skills-scanner scan --report 并把结果发送到此渠道" \
|
|
210
|
+
--announce
|
|
211
|
+
```
|
|
212
|
+
|
|
213
|
+
或在聊天中:
|
|
214
|
+
|
|
215
|
+
```
|
|
216
|
+
/skills-scanner cron register
|
|
217
|
+
```
|
|
218
|
+
|
|
219
|
+
### 文件监控不工作
|
|
220
|
+
|
|
221
|
+
1. 检查 `preInstallScan` 配置是否为 `"on"`
|
|
222
|
+
2. 检查 `scanDirs` 配置是否正确
|
|
223
|
+
3. 查看 Gateway 日志:
|
|
224
|
+
|
|
225
|
+
```bash
|
|
226
|
+
openclaw logs gateway
|
|
227
|
+
```
|
|
228
|
+
|
|
229
|
+
### 查看详细日志
|
|
230
|
+
|
|
231
|
+
```bash
|
|
232
|
+
# Gateway 日志
|
|
233
|
+
openclaw logs gateway
|
|
234
|
+
|
|
235
|
+
# 或查看状态
|
|
236
|
+
/skills-scanner status
|
|
237
|
+
```
|
|
238
|
+
|
|
239
|
+
## 开发模式
|
|
240
|
+
|
|
241
|
+
如果你要修改插件代码:
|
|
242
|
+
|
|
243
|
+
```bash
|
|
244
|
+
# 1. 修改代码
|
|
245
|
+
cd extensions/skills-scanner
|
|
246
|
+
|
|
247
|
+
# 2. 重新安装
|
|
248
|
+
openclaw plugins install ./
|
|
249
|
+
|
|
250
|
+
# 3. 重启 Gateway
|
|
251
|
+
openclaw gateway restart
|
|
252
|
+
|
|
253
|
+
# 4. 查看日志
|
|
254
|
+
openclaw logs gateway | grep skills-scanner
|
|
255
|
+
```
|
|
256
|
+
|
|
257
|
+
## 卸载
|
|
258
|
+
|
|
259
|
+
```bash
|
|
260
|
+
# 卸载插件
|
|
261
|
+
openclaw plugins uninstall skills-scanner
|
|
262
|
+
|
|
263
|
+
# 清理状态文件(可选)
|
|
264
|
+
rm -rf ~/.openclaw/skills-scanner
|
|
265
|
+
```
|
|
266
|
+
|
|
267
|
+
## 支持
|
|
268
|
+
|
|
269
|
+
如果遇到问题:
|
|
270
|
+
|
|
271
|
+
1. 查看日志:`openclaw logs gateway | grep skills-scanner`
|
|
272
|
+
2. 检查状态:`/skills-scanner status`
|
|
273
|
+
3. 运行健康检查:`openclaw skills-scan health`
|
|
274
|
+
4. 查看配置:`/skills-scanner config show`
|
|
275
|
+
|
|
276
|
+
## 下一步
|
|
277
|
+
|
|
278
|
+
- 阅读 [README.md](./README.md) 了解更多功能
|
|
279
|
+
- 查看 [CHANGELOG.md](./CHANGELOG.md) 了解版本历史
|
|
280
|
+
- 自定义配置以适应你的需求
|
package/QUICKSTART.md
ADDED
|
@@ -0,0 +1,106 @@
|
|
|
1
|
+
# Skills Scanner - 快速开始
|
|
2
|
+
|
|
3
|
+
## 5 分钟快速上手
|
|
4
|
+
|
|
5
|
+
### 1. 安装 uv(如果还没有)
|
|
6
|
+
|
|
7
|
+
```bash
|
|
8
|
+
# macOS/Linux
|
|
9
|
+
curl -LsSf https://astral.sh/uv/install.sh | sh
|
|
10
|
+
|
|
11
|
+
# 或使用 Homebrew
|
|
12
|
+
brew install uv
|
|
13
|
+
```
|
|
14
|
+
|
|
15
|
+
### 2. 安装插件
|
|
16
|
+
|
|
17
|
+
```bash
|
|
18
|
+
# 在 openclaw 项目根目录
|
|
19
|
+
openclaw plugins install ./extensions/skills-scanner
|
|
20
|
+
```
|
|
21
|
+
|
|
22
|
+
### 3. 配置插件
|
|
23
|
+
|
|
24
|
+
创建或编辑 `~/.openclaw/config.json`:
|
|
25
|
+
|
|
26
|
+
```json
|
|
27
|
+
{
|
|
28
|
+
"plugins": {
|
|
29
|
+
"entries": {
|
|
30
|
+
"skills-scanner": {
|
|
31
|
+
"enabled": true,
|
|
32
|
+
"config": {
|
|
33
|
+
"apiUrl": "http://localhost:8000",
|
|
34
|
+
"policy": "balanced",
|
|
35
|
+
"preInstallScan": "on",
|
|
36
|
+
"onUnsafe": "quarantine"
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
```
|
|
43
|
+
|
|
44
|
+
### 4. 重启 Gateway
|
|
45
|
+
|
|
46
|
+
```bash
|
|
47
|
+
openclaw gateway restart
|
|
48
|
+
```
|
|
49
|
+
|
|
50
|
+
### 5. 测试插件
|
|
51
|
+
|
|
52
|
+
```bash
|
|
53
|
+
# 在聊天中
|
|
54
|
+
/skills-scanner status
|
|
55
|
+
|
|
56
|
+
# 或使用 CLI
|
|
57
|
+
openclaw skills-scan health
|
|
58
|
+
```
|
|
59
|
+
|
|
60
|
+
## 常用命令
|
|
61
|
+
|
|
62
|
+
```bash
|
|
63
|
+
# 扫描单个 Skill
|
|
64
|
+
/skills-scanner scan ~/.openclaw/skills/my-skill
|
|
65
|
+
|
|
66
|
+
# 扫描所有 Skills
|
|
67
|
+
/skills-scanner scan ~/.openclaw/skills --recursive
|
|
68
|
+
|
|
69
|
+
# 查看状态
|
|
70
|
+
/skills-scanner status
|
|
71
|
+
|
|
72
|
+
# 生成日报
|
|
73
|
+
/skills-scanner scan ~/.openclaw/skills --report
|
|
74
|
+
```
|
|
75
|
+
|
|
76
|
+
## 注意事项
|
|
77
|
+
|
|
78
|
+
⚠️ **重要**:当前 `scan.py` 是占位脚本,需要连接到实际的 `skill-scanner-api` 服务。
|
|
79
|
+
|
|
80
|
+
如果你还没有 API 服务,插件仍然可以运行,但扫描功能会返回模拟结果。
|
|
81
|
+
|
|
82
|
+
## 下一步
|
|
83
|
+
|
|
84
|
+
1. 实现 `scan.py` 连接到你的 API 服务
|
|
85
|
+
2. 启动 `skill-scanner-api` 服务
|
|
86
|
+
3. 配置扫描目录和策略
|
|
87
|
+
4. 开始使用!
|
|
88
|
+
|
|
89
|
+
## 获取帮助
|
|
90
|
+
|
|
91
|
+
```bash
|
|
92
|
+
# 查看帮助
|
|
93
|
+
/skills-scanner help
|
|
94
|
+
|
|
95
|
+
# 查看配置
|
|
96
|
+
/skills-scanner config show
|
|
97
|
+
|
|
98
|
+
# 查看日志
|
|
99
|
+
openclaw logs gateway | grep skills-scanner
|
|
100
|
+
```
|
|
101
|
+
|
|
102
|
+
## 完整文档
|
|
103
|
+
|
|
104
|
+
- [README.md](./README.md) - 完整功能说明
|
|
105
|
+
- [INSTALL.md](./INSTALL.md) - 详细安装指南
|
|
106
|
+
- [SUMMARY.md](./SUMMARY.md) - 实现总结
|