@sokeai/cli 1.0.21 → 1.0.25
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 +470 -14
- package/package.json +1 -1
- package/scripts/e2e-test.sh +38 -0
- package/scripts/link-skills.sh +203 -0
- package/scripts/local-test.js +503 -0
- package/scripts/local-test.sh +225 -0
- package/scripts/push.sh +0 -10
- package/skills/soke-learning-profile/SKILL.md +223 -0
package/README.md
CHANGED
|
@@ -2,6 +2,17 @@
|
|
|
2
2
|
|
|
3
3
|
`soke-cli` 是授客AI官方提供的命令行工具,旨在帮助开发者和系统管理员更便捷地通过命令行与授客AI开放平台进行交互。该工具使用 Go 语言开发,支持多平台,并提供了 NPM 包的安装方式。
|
|
4
4
|
|
|
5
|
+
## 目录
|
|
6
|
+
|
|
7
|
+
- [核心能力](#核心能力)
|
|
8
|
+
- [安装方法](#安装方法)
|
|
9
|
+
- [快速开始](#快速开始)
|
|
10
|
+
- [开发指南](#开发指南)
|
|
11
|
+
- [从接口封装到发布的完整流程](#从接口封装到发布的完整流程)
|
|
12
|
+
- [本地开发测试](#本地开发测试)
|
|
13
|
+
- [项目结构](#项目结构)
|
|
14
|
+
- [相关文档](#相关文档)
|
|
15
|
+
|
|
5
16
|
## 核心能力
|
|
6
17
|
|
|
7
18
|
`soke-cli` 提供了以下核心能力:
|
|
@@ -15,21 +26,26 @@
|
|
|
15
26
|
|
|
16
27
|
3. **业务模块快捷命令**
|
|
17
28
|
- 针对授客AI核心业务场景提供了丰富的快捷命令集:
|
|
18
|
-
- **通讯录 (contact)**:
|
|
29
|
+
- **通讯录 (contact)**: 部门与用户查询、管理、搜索等。
|
|
19
30
|
- **课程 (course)**: 课程列表、分类、学习记录、人脸识别记录等。
|
|
20
31
|
- **考试 (exam)**: 考试列表、分类、考试成绩与记录查询。
|
|
32
|
+
- **学习档案 (learning-profile)**: 学员学习档案查询、学习情况统计。
|
|
21
33
|
- **学习地图 (learning-map)**: 学习地图、阶段、任务查询与分配。
|
|
22
34
|
- **证书 (certificate)**: 证书发放记录、分类等。
|
|
23
35
|
- **学分 (credit) & 积分 (point)**: 学分/积分日志及用户情况查询。
|
|
24
36
|
- **培训 (training)**: 线下培训查询与分配。
|
|
25
37
|
- **新闻公告 (news)**: 资讯列表与详情。
|
|
26
38
|
|
|
39
|
+
4. **AI Agent Skills**
|
|
40
|
+
- 提供 AI Agent 技能(Skills),使 AI 助手能够自动发现和调用 CLI 功能。
|
|
41
|
+
- 支持自然语言交互,无需记忆复杂的命令参数。
|
|
42
|
+
|
|
27
43
|
## 安装方法
|
|
28
44
|
|
|
29
45
|
### 方式一:通过 NPM 安装 (推荐)
|
|
30
46
|
如果你本地已安装 Node.js,可以直接使用 npm 全局安装:
|
|
31
47
|
```bash
|
|
32
|
-
npm install -g @sokeai/cli
|
|
48
|
+
npm install -g @sokeai/cli@latest
|
|
33
49
|
```
|
|
34
50
|
|
|
35
51
|
### 方式二:通过源码编译安装 (需要 Go 环境)
|
|
@@ -71,6 +87,8 @@ AI Agent 会自动:
|
|
|
71
87
|
|
|
72
88
|
- **soke-shared**: 配置初始化、用户认证、权限处理等基础功能
|
|
73
89
|
- **soke-exam**: 考试管理(查询考试、考试成绩、考试分类)
|
|
90
|
+
- **soke-course**: 课程管理(查询课程、课程分类、学习记录)
|
|
91
|
+
- **soke-learning-profile**: 学习档案查询(查询学员学习档案、学习情况统计)
|
|
74
92
|
- 更多业务模块的 Skills 正在开发中...
|
|
75
93
|
|
|
76
94
|
详细文档:[skills/README.md](skills/README.md)
|
|
@@ -146,18 +164,456 @@ soke-cli api GET /users/me
|
|
|
146
164
|
soke-cli api POST /some/endpoint --data '{"key": "value"}'
|
|
147
165
|
```
|
|
148
166
|
|
|
149
|
-
##
|
|
167
|
+
## 开发指南
|
|
168
|
+
|
|
169
|
+
### 从接口封装到发布的完整流程
|
|
170
|
+
|
|
171
|
+
#### 1️⃣ 接口封装为 CLI 命令
|
|
172
|
+
|
|
173
|
+
**步骤 1: 在 shortcuts 目录下定义接口元数据**
|
|
174
|
+
|
|
175
|
+
```bash
|
|
176
|
+
# 创建新模块目录
|
|
177
|
+
mkdir -p shortcuts/your-module
|
|
178
|
+
|
|
179
|
+
# 创建命令定义文件
|
|
180
|
+
touch shortcuts/your-module/list_items.go
|
|
181
|
+
```
|
|
182
|
+
|
|
183
|
+
**示例:定义一个查询列表的命令**
|
|
184
|
+
|
|
185
|
+
```go
|
|
186
|
+
// shortcuts/your-module/list_items.go
|
|
187
|
+
package yourmodule
|
|
188
|
+
|
|
189
|
+
import "soke-cli/internal/client"
|
|
190
|
+
|
|
191
|
+
// ListItemsShortcut 定义查询列表命令
|
|
192
|
+
func ListItemsShortcut() client.Shortcut {
|
|
193
|
+
return client.Shortcut{
|
|
194
|
+
Name: "list-items", // 命令名称
|
|
195
|
+
Description: "查询项目列表", // 命令描述
|
|
196
|
+
Method: "GET", // HTTP 方法
|
|
197
|
+
Path: "/api/v1/items", // API 路径
|
|
198
|
+
Params: []client.Param{ // 参数定义
|
|
199
|
+
{
|
|
200
|
+
Name: "page",
|
|
201
|
+
Type: "int",
|
|
202
|
+
Description: "页码",
|
|
203
|
+
Required: false,
|
|
204
|
+
Default: "1",
|
|
205
|
+
},
|
|
206
|
+
{
|
|
207
|
+
Name: "page_size",
|
|
208
|
+
Type: "int",
|
|
209
|
+
Description: "每页数量",
|
|
210
|
+
Required: false,
|
|
211
|
+
Default: "10",
|
|
212
|
+
},
|
|
213
|
+
{
|
|
214
|
+
Name: "keyword",
|
|
215
|
+
Type: "string",
|
|
216
|
+
Description: "搜索关键词",
|
|
217
|
+
Required: false,
|
|
218
|
+
},
|
|
219
|
+
},
|
|
220
|
+
}
|
|
221
|
+
}
|
|
222
|
+
```
|
|
223
|
+
|
|
224
|
+
**步骤 2: 注册命令到模块**
|
|
225
|
+
|
|
226
|
+
```go
|
|
227
|
+
// shortcuts/your-module/shortcuts.go
|
|
228
|
+
package yourmodule
|
|
229
|
+
|
|
230
|
+
import "soke-cli/internal/client"
|
|
231
|
+
|
|
232
|
+
// Shortcuts 返回该模块的所有快捷命令
|
|
233
|
+
func Shortcuts() []client.Shortcut {
|
|
234
|
+
return []client.Shortcut{
|
|
235
|
+
ListItemsShortcut(),
|
|
236
|
+
// 添加更多命令...
|
|
237
|
+
}
|
|
238
|
+
}
|
|
239
|
+
```
|
|
240
|
+
|
|
241
|
+
**步骤 3: 在 cmd 层注册模块**
|
|
242
|
+
|
|
243
|
+
```go
|
|
244
|
+
// cmd/your_module/your_module.go
|
|
245
|
+
package yourmodule
|
|
246
|
+
|
|
247
|
+
import (
|
|
248
|
+
"soke-cli/internal/client"
|
|
249
|
+
yourmodule "soke-cli/shortcuts/your-module"
|
|
250
|
+
"github.com/spf13/cobra"
|
|
251
|
+
)
|
|
252
|
+
|
|
253
|
+
// YourModuleCmd 模块根命令
|
|
254
|
+
var YourModuleCmd = &cobra.Command{
|
|
255
|
+
Use: "your-module",
|
|
256
|
+
Short: "你的模块管理",
|
|
257
|
+
Long: "管理你的模块相关功能",
|
|
258
|
+
}
|
|
259
|
+
|
|
260
|
+
func init() {
|
|
261
|
+
// 自动注册所有快捷命令
|
|
262
|
+
client.RegisterShortcuts(YourModuleCmd, yourmodule.Shortcuts())
|
|
263
|
+
}
|
|
264
|
+
```
|
|
265
|
+
|
|
266
|
+
**步骤 4: 在根命令中注册模块**
|
|
267
|
+
|
|
268
|
+
```go
|
|
269
|
+
// cmd/root.go
|
|
270
|
+
import (
|
|
271
|
+
yourmodule "soke-cli/cmd/your_module"
|
|
272
|
+
)
|
|
273
|
+
|
|
274
|
+
func init() {
|
|
275
|
+
// 注册模块命令
|
|
276
|
+
rootCmd.AddCommand(yourmodule.YourModuleCmd)
|
|
277
|
+
}
|
|
278
|
+
```
|
|
279
|
+
|
|
280
|
+
#### 2️⃣ 创建 AI Agent Skill
|
|
281
|
+
|
|
282
|
+
**步骤 1: 创建 Skill 目录和文档**
|
|
283
|
+
|
|
284
|
+
```bash
|
|
285
|
+
# 创建 Skill 目录
|
|
286
|
+
mkdir -p skills/your-module
|
|
287
|
+
|
|
288
|
+
# 创建 Skill 定义文件
|
|
289
|
+
touch skills/your-module/SKILL.md
|
|
290
|
+
```
|
|
291
|
+
|
|
292
|
+
**步骤 2: 编写 Skill 文档**
|
|
293
|
+
|
|
294
|
+
```markdown
|
|
295
|
+
<!-- skills/your-module/SKILL.md -->
|
|
296
|
+
---
|
|
297
|
+
name: your-module
|
|
298
|
+
description: 你的模块管理:查询项目列表、创建项目、更新项目等
|
|
299
|
+
trigger: 当用户需要查询项目、管理项目时使用
|
|
300
|
+
---
|
|
301
|
+
|
|
302
|
+
# 你的模块管理 Skill
|
|
303
|
+
|
|
304
|
+
## 功能说明
|
|
305
|
+
|
|
306
|
+
提供项目管理相关功能,包括:
|
|
307
|
+
- 查询项目列表
|
|
308
|
+
- 创建新项目
|
|
309
|
+
- 更新项目信息
|
|
310
|
+
- 删除项目
|
|
311
|
+
|
|
312
|
+
## 使用场景
|
|
313
|
+
|
|
314
|
+
- 用户询问:"查询所有项目"
|
|
315
|
+
- 用户询问:"创建一个新项目"
|
|
316
|
+
- 用户询问:"更新项目信息"
|
|
317
|
+
|
|
318
|
+
## 可用命令
|
|
319
|
+
|
|
320
|
+
### 查询项目列表
|
|
321
|
+
|
|
322
|
+
\`\`\`bash
|
|
323
|
+
soke-cli your-module +list-items [选项]
|
|
324
|
+
\`\`\`
|
|
325
|
+
|
|
326
|
+
**参数说明:**
|
|
327
|
+
- `--page <number>`: 页码(可选,默认:1)
|
|
328
|
+
- `--page-size <number>`: 每页数量(可选,默认:10)
|
|
329
|
+
- `--keyword <string>`: 搜索关键词(可选)
|
|
330
|
+
|
|
331
|
+
**使用示例:**
|
|
332
|
+
\`\`\`bash
|
|
333
|
+
# 查询第一页
|
|
334
|
+
soke-cli your-module +list-items
|
|
335
|
+
|
|
336
|
+
# 搜索包含"测试"的项目
|
|
337
|
+
soke-cli your-module +list-items --keyword "测试"
|
|
338
|
+
\`\`\`
|
|
339
|
+
|
|
340
|
+
## 交互流程
|
|
341
|
+
|
|
342
|
+
1. 识别用户意图(查询/创建/更新/删除)
|
|
343
|
+
2. 提示用户提供必要参数
|
|
344
|
+
3. 执行对应的 CLI 命令
|
|
345
|
+
4. 解析并展示结果
|
|
346
|
+
|
|
347
|
+
## 错误处理
|
|
348
|
+
|
|
349
|
+
- 如果用户未登录,提示执行 `soke-cli auth login`
|
|
350
|
+
- 如果参数缺失,提示用户补充必要参数
|
|
351
|
+
- 如果 API 返回错误,展示友好的错误信息
|
|
352
|
+
```
|
|
353
|
+
|
|
354
|
+
**步骤 3: 更新 skills/README.md**
|
|
355
|
+
|
|
356
|
+
在 `skills/README.md` 中添加新 Skill 的说明。
|
|
357
|
+
|
|
358
|
+
#### 3️⃣ 本地测试 Skill
|
|
359
|
+
|
|
360
|
+
**方法一:一键测试脚本(推荐)**
|
|
361
|
+
|
|
362
|
+
```bash
|
|
363
|
+
# 1. 编译、安装到全局、运行测试
|
|
364
|
+
bash ./scripts/local-test.sh
|
|
365
|
+
# 提示时输入 'y' 更新全局安装
|
|
366
|
+
|
|
367
|
+
# 2. 链接 Skills 到 AI Agent
|
|
368
|
+
bash ./scripts/link-skills.sh
|
|
369
|
+
# 选择 'all' 链接到所有目录
|
|
370
|
+
|
|
371
|
+
# 3. 在 AI Agent 中测试
|
|
372
|
+
# 打开 Claude Code,输入:"查询所有项目"
|
|
373
|
+
```
|
|
374
|
+
|
|
375
|
+
**方法二:手动测试**
|
|
376
|
+
|
|
377
|
+
```bash
|
|
378
|
+
# 1. 编译项目
|
|
379
|
+
go build -o soke-cli main.go
|
|
380
|
+
|
|
381
|
+
# 2. 测试命令是否正常工作
|
|
382
|
+
./soke-cli your-module +list-items --help
|
|
383
|
+
|
|
384
|
+
# 3. 安装到全局
|
|
385
|
+
sudo cp soke-cli /usr/local/bin/
|
|
386
|
+
|
|
387
|
+
# 4. 链接 Skill 到 Claude
|
|
388
|
+
mkdir -p ~/.claude/skills/your-module
|
|
389
|
+
cp skills/your-module/SKILL.md ~/.claude/skills/your-module/
|
|
390
|
+
|
|
391
|
+
# 5. 在 Claude Code 中测试
|
|
392
|
+
# 输入:"查询所有项目"
|
|
393
|
+
```
|
|
394
|
+
|
|
395
|
+
**测试检查清单:**
|
|
396
|
+
- [ ] CLI 命令能正常执行
|
|
397
|
+
- [ ] 参数验证正确
|
|
398
|
+
- [ ] API 调用成功
|
|
399
|
+
- [ ] 输出格式正确
|
|
400
|
+
- [ ] AI Agent 能识别意图
|
|
401
|
+
- [ ] AI Agent 能正确调用命令
|
|
402
|
+
- [ ] 错误处理友好
|
|
403
|
+
|
|
404
|
+
#### 4️⃣ 用 Go 编译二进制文件
|
|
405
|
+
|
|
406
|
+
**编译单平台二进制**
|
|
407
|
+
|
|
408
|
+
```bash
|
|
409
|
+
# macOS (Intel)
|
|
410
|
+
GOOS=darwin GOARCH=amd64 go build -o bin/soke-cli-darwin-amd64 main.go
|
|
411
|
+
|
|
412
|
+
# macOS (Apple Silicon)
|
|
413
|
+
GOOS=darwin GOARCH=arm64 go build -o bin/soke-cli-darwin-arm64 main.go
|
|
414
|
+
|
|
415
|
+
# Linux
|
|
416
|
+
GOOS=linux GOARCH=amd64 go build -o bin/soke-cli-linux-amd64 main.go
|
|
417
|
+
|
|
418
|
+
# Windows
|
|
419
|
+
GOOS=windows GOARCH=amd64 go build -o bin/soke-cli-windows-amd64.exe main.go
|
|
420
|
+
```
|
|
421
|
+
|
|
422
|
+
**一键编译所有平台**
|
|
423
|
+
|
|
424
|
+
```bash
|
|
425
|
+
# 使用编译脚本
|
|
426
|
+
bash ./scripts/build-binaries.sh
|
|
427
|
+
|
|
428
|
+
# 编译结果在 bin/ 目录下
|
|
429
|
+
ls -lh bin/
|
|
430
|
+
```
|
|
431
|
+
|
|
432
|
+
**编译优化选项**
|
|
433
|
+
|
|
434
|
+
```bash
|
|
435
|
+
# 减小二进制文件大小
|
|
436
|
+
go build -ldflags="-s -w" -o soke-cli main.go
|
|
437
|
+
|
|
438
|
+
# 添加版本信息
|
|
439
|
+
VERSION=$(git describe --tags --always)
|
|
440
|
+
go build -ldflags="-X main.Version=$VERSION" -o soke-cli main.go
|
|
441
|
+
```
|
|
442
|
+
|
|
443
|
+
#### 5️⃣ 发布到 NPM 和 GitHub
|
|
444
|
+
|
|
445
|
+
**准备工作**
|
|
446
|
+
|
|
447
|
+
```bash
|
|
448
|
+
# 1. 确保已登录 NPM
|
|
449
|
+
npm login
|
|
450
|
+
|
|
451
|
+
# 2. 确保已登录 GitHub CLI
|
|
452
|
+
gh auth login
|
|
453
|
+
|
|
454
|
+
# 3. 确保代码已提交
|
|
455
|
+
git add .
|
|
456
|
+
git commit -m "feat: 添加新模块"
|
|
457
|
+
git push
|
|
458
|
+
```
|
|
459
|
+
|
|
460
|
+
**发布流程**
|
|
461
|
+
|
|
462
|
+
**方法一:一键发布(推荐)**
|
|
463
|
+
|
|
464
|
+
```bash
|
|
465
|
+
# 1. 更新版本号
|
|
466
|
+
npm version patch # 1.0.0 -> 1.0.1
|
|
467
|
+
# 或
|
|
468
|
+
npm version minor # 1.0.0 -> 1.1.0
|
|
469
|
+
# 或
|
|
470
|
+
npm version major # 1.0.0 -> 2.0.0
|
|
471
|
+
|
|
472
|
+
# 2. 执行一键发布脚本
|
|
473
|
+
bash ./scripts/release.sh
|
|
474
|
+
|
|
475
|
+
# 脚本会自动完成:
|
|
476
|
+
# - 编译所有平台二进制文件
|
|
477
|
+
# - 创建 Git 标签
|
|
478
|
+
# - 推送标签到 GitHub
|
|
479
|
+
# - 创建 GitHub Release 并上传二进制文件
|
|
480
|
+
# - 发布到 NPM
|
|
481
|
+
```
|
|
482
|
+
|
|
483
|
+
**方法二:手动发布**
|
|
484
|
+
|
|
485
|
+
```bash
|
|
486
|
+
# 1. 更新版本号
|
|
487
|
+
npm version patch
|
|
488
|
+
|
|
489
|
+
# 2. 编译所有平台
|
|
490
|
+
bash ./scripts/build-binaries.sh
|
|
491
|
+
|
|
492
|
+
# 3. 创建并推送标签
|
|
493
|
+
VERSION=$(node -p "require('./package.json').version")
|
|
494
|
+
git tag v$VERSION
|
|
495
|
+
git push origin v$VERSION
|
|
496
|
+
|
|
497
|
+
# 4. 创建 GitHub Release
|
|
498
|
+
gh release create v$VERSION \
|
|
499
|
+
bin/soke-cli-darwin-amd64 \
|
|
500
|
+
bin/soke-cli-darwin-arm64 \
|
|
501
|
+
bin/soke-cli-linux-amd64 \
|
|
502
|
+
bin/soke-cli-windows-amd64.exe \
|
|
503
|
+
--title "v$VERSION" \
|
|
504
|
+
--notes "Release v$VERSION"
|
|
505
|
+
|
|
506
|
+
# 5. 发布到 NPM
|
|
507
|
+
npm publish --access public
|
|
508
|
+
|
|
509
|
+
# 6. 验证发布
|
|
510
|
+
npm view @sokeai/cli version
|
|
511
|
+
```
|
|
512
|
+
|
|
513
|
+
**发布后验证**
|
|
514
|
+
|
|
515
|
+
```bash
|
|
516
|
+
# 1. 测试 NPM 安装
|
|
517
|
+
npm install -g @sokeai/cli@latest
|
|
518
|
+
|
|
519
|
+
# 2. 验证版本
|
|
520
|
+
soke-cli --version
|
|
521
|
+
|
|
522
|
+
# 3. 测试命令
|
|
523
|
+
soke-cli your-module +list-items --help
|
|
524
|
+
|
|
525
|
+
# 4. 测试 Skills 安装
|
|
526
|
+
npx skills add liuchenlong1111/soke-cli -y -g
|
|
527
|
+
|
|
528
|
+
# 5. 在 AI Agent 中测试
|
|
529
|
+
# 打开 Claude Code,输入:"查询所有项目"
|
|
530
|
+
```
|
|
531
|
+
|
|
532
|
+
### 本地开发测试
|
|
533
|
+
|
|
534
|
+
**🚀 快速测试流程(推荐)**
|
|
535
|
+
|
|
536
|
+
```bash
|
|
537
|
+
# 1. 一键测试:编译、安装到全局、运行测试(一条命令)
|
|
538
|
+
bash ./scripts/local-test.sh
|
|
539
|
+
# 提示时输入 'y' 更新全局安装
|
|
540
|
+
|
|
541
|
+
# 2. 链接 Skills 到 Claude(首次需要)
|
|
542
|
+
bash ./scripts/link-skills.sh
|
|
543
|
+
# 选择 'all' 链接到所有目录
|
|
544
|
+
|
|
545
|
+
# 3. 在 AI Agent 中测试
|
|
546
|
+
# 打开 Claude Code,输入:"查询张三的学习档案"
|
|
547
|
+
```
|
|
548
|
+
|
|
549
|
+
**📖 详细指南:** [docs/LOCAL_TESTING.md](docs/LOCAL_TESTING.md)
|
|
150
550
|
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
-
|
|
551
|
+
**完整开发流程**
|
|
552
|
+
|
|
553
|
+
```bash
|
|
554
|
+
# 1. 修改代码后,运行本地测试(会提示是否更新全局安装)
|
|
555
|
+
bash ./scripts/local-test.sh
|
|
556
|
+
|
|
557
|
+
# 2. 运行完整 E2E 测试
|
|
558
|
+
bash ./scripts/e2e-test.sh
|
|
559
|
+
|
|
560
|
+
# 3. 测试 Skills(需要先更新全局安装)
|
|
561
|
+
npx skills add liuchenlong1111/soke-cli -y -g
|
|
562
|
+
|
|
563
|
+
# 4. 在 AI Agent 中测试自然语言交互
|
|
564
|
+
# 例如:"查询张三的学习档案"
|
|
565
|
+
```
|
|
566
|
+
|
|
567
|
+
**运行完整 E2E 测试**
|
|
568
|
+
|
|
569
|
+
```bash
|
|
570
|
+
# 测试所有模块
|
|
571
|
+
bash ./scripts/e2e-test.sh
|
|
572
|
+
|
|
573
|
+
# 测试特定模块
|
|
574
|
+
bash ./scripts/e2e-test.sh learning-profile
|
|
575
|
+
bash ./scripts/e2e-test.sh contact
|
|
576
|
+
```
|
|
577
|
+
|
|
578
|
+
## 项目结构
|
|
579
|
+
|
|
580
|
+
```
|
|
581
|
+
soke-cli/
|
|
582
|
+
├── cmd/ # CLI 子命令定义(按业务模块划分)
|
|
583
|
+
│ ├── root.go # 根命令和命令注册
|
|
584
|
+
│ ├── auth/ # 认证相关命令
|
|
585
|
+
│ ├── config/ # 配置管理命令
|
|
586
|
+
│ ├── api/ # 通用 API 调用命令
|
|
587
|
+
│ └── your_module/ # 你的业务模块命令
|
|
588
|
+
├── internal/ # 核心逻辑(不对外暴露)
|
|
589
|
+
│ ├── auth/ # 认证逻辑(OAuth Device Flow)
|
|
590
|
+
│ ├── client/ # API 客户端封装
|
|
591
|
+
│ ├── core/ # 配置管理
|
|
592
|
+
│ └── output/ # 输出格式化
|
|
593
|
+
├── shortcuts/ # 业务模块快捷命令元数据定义
|
|
594
|
+
│ └── your-module/ # 各模块的 API 路径、参数、默认值等
|
|
595
|
+
├── skills/ # AI Agent Skills 定义
|
|
596
|
+
│ ├── README.md # Skills 使用说明
|
|
597
|
+
│ └── your-module/ # 各模块的 Skill 文档
|
|
598
|
+
│ └── SKILL.md
|
|
599
|
+
├── scripts/ # 构建和发布脚本
|
|
600
|
+
│ ├── install.js # NPM 安装时下载二进制文件
|
|
601
|
+
│ ├── run.js # NPM 运行时入口
|
|
602
|
+
│ ├── build-binaries.sh # 编译所有平台二进制
|
|
603
|
+
│ ├── release.sh # 一键发布脚本
|
|
604
|
+
│ ├── local-test.sh # 本地测试脚本
|
|
605
|
+
│ └── link-skills.sh # 链接 Skills 到 AI Agent
|
|
606
|
+
├── main.go # CLI 主入口
|
|
607
|
+
├── go.mod # Go 依赖管理
|
|
608
|
+
├── package.json # NPM 包配置
|
|
609
|
+
├── Makefile # 编译和安装脚本
|
|
610
|
+
└── README.md # 项目说明文档
|
|
611
|
+
```
|
|
156
612
|
|
|
157
|
-
##
|
|
613
|
+
## 相关文档
|
|
158
614
|
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
615
|
+
- **[QUICKSTART.md](QUICKSTART.md)** - 快速开始指南
|
|
616
|
+
- **[CLAUDE.md](CLAUDE.md)** - 项目架构和开发规范
|
|
617
|
+
- **[docs/LOCAL_TESTING.md](docs/LOCAL_TESTING.md)** - 本地测试详细指南
|
|
618
|
+
- **[skills/README.md](skills/README.md)** - AI Agent Skills 使用说明
|
|
619
|
+
- **[npm.md](npm.md)** - NPM 包发布详细文档
|
package/package.json
CHANGED
package/scripts/e2e-test.sh
CHANGED
|
@@ -42,6 +42,35 @@ if [ ! -f "./soke-cli" ]; then
|
|
|
42
42
|
echo ""
|
|
43
43
|
fi
|
|
44
44
|
|
|
45
|
+
# 检查全局安装的 CLI 版本
|
|
46
|
+
echo -e "${YELLOW}检查全局 CLI 安装...${NC}"
|
|
47
|
+
GLOBAL_CLI=$(which soke-cli 2>/dev/null)
|
|
48
|
+
if [ -n "$GLOBAL_CLI" ]; then
|
|
49
|
+
echo -e " 全局 CLI 路径: ${BLUE}${GLOBAL_CLI}${NC}"
|
|
50
|
+
|
|
51
|
+
# 检查全局版本是否支持 learning-profile
|
|
52
|
+
if ! $GLOBAL_CLI learning-profile --help &>/dev/null; then
|
|
53
|
+
echo -e "${YELLOW} 警告: 全局 CLI 不支持 learning-profile 模块${NC}"
|
|
54
|
+
echo -e "${YELLOW} 需要更新全局安装以支持 skill 测试${NC}"
|
|
55
|
+
echo ""
|
|
56
|
+
echo -e "${YELLOW}是否要将本地编译版本安装到全局? (y/n)${NC}"
|
|
57
|
+
read -r INSTALL_GLOBAL
|
|
58
|
+
if [ "$INSTALL_GLOBAL" = "y" ] || [ "$INSTALL_GLOBAL" = "Y" ]; then
|
|
59
|
+
echo -e "${YELLOW}安装到全局...${NC}"
|
|
60
|
+
sudo cp ./soke-cli $GLOBAL_CLI
|
|
61
|
+
echo -e "${GREEN}✓ 全局 CLI 已更新${NC}"
|
|
62
|
+
else
|
|
63
|
+
echo -e "${YELLOW}跳过全局安装,将仅测试本地版本${NC}"
|
|
64
|
+
fi
|
|
65
|
+
else
|
|
66
|
+
echo -e "${GREEN}✓ 全局 CLI 支持 learning-profile 模块${NC}"
|
|
67
|
+
fi
|
|
68
|
+
else
|
|
69
|
+
echo -e "${YELLOW} 未找到全局 CLI 安装${NC}"
|
|
70
|
+
echo -e "${YELLOW} Skill 测试需要全局安装 soke-cli${NC}"
|
|
71
|
+
fi
|
|
72
|
+
echo ""
|
|
73
|
+
|
|
45
74
|
# 检查是否已登录
|
|
46
75
|
echo -e "${YELLOW}检查登录状态...${NC}"
|
|
47
76
|
if ! ./soke-cli config show &>/dev/null; then
|
|
@@ -99,6 +128,15 @@ if should_test_module "contact"; then
|
|
|
99
128
|
test_command "contact" "+list-lectors" "" "获取讲师列表"
|
|
100
129
|
test_command "contact" "+list-groups" "--start-time 1672502400000 --end-time 1704038400000" "获取用户组列表"
|
|
101
130
|
test_command "contact" "+search-user" "--dept-user-name 测试" "搜索用户"
|
|
131
|
+
test_command "contact" "+search-dept" "--dept-name 测试" "搜索部门"
|
|
132
|
+
echo ""
|
|
133
|
+
fi
|
|
134
|
+
|
|
135
|
+
# ==================== Learning Profile 模块 ====================
|
|
136
|
+
if should_test_module "learning-profile"; then
|
|
137
|
+
echo -e "${YELLOW}[Learning Profile 模块]${NC}"
|
|
138
|
+
test_command "learning-profile" "+list" "--offset 0 --page-size 10" "获取学习档案列表"
|
|
139
|
+
test_command "learning-profile" "+list" "--is-new 1 --page-size 5" "获取新员工学习档案"
|
|
102
140
|
echo ""
|
|
103
141
|
fi
|
|
104
142
|
|