@sokeai/cli 1.0.79 → 1.0.81
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/package.json +1 -1
- package/scripts/install.js +8 -0
- package/scripts/run.js +3 -2
- package/skills/mono/.workbuddy/memory/2026-09-01.md +2 -0
- package/skills/mono/.workbuddy/memory/MEMORY.md +4 -0
- package/skills/mono/ARCHITECTURE_AND_EXTENSION_GUIDE.md +572 -0
- package/skills/mono/README.md +2 -0
- package/skills/mono/SKILL.md +125 -119
- package/skills/mono/SKILL_MD_/344/274/230/345/214/226/346/226/271/346/241/210.md +478 -0
- package/skills/mono/references/modules/README.md +74 -0
- package/skills/mono/references/modules/soke-ai-coach-director/CHANGELOG.md +1 -1
- package/skills/mono/references/modules/soke-ai-coach-director/MODULE.md +12 -0
- package/skills/mono/references/modules/soke-ai-coach-director/README.md +1 -1
- package/skills/mono/references/modules/soke-ai-coach-director/coaching/prompt-optimizer/prompt-optimizer.md +3 -3
- package/skills/mono/references/modules/soke-ai-coach-director/platform/adapters/README.md +4 -2
- package/skills/mono/references/modules/soke-ai-coach-director/platform/adapters/qclaw.md +3 -1
- package/skills/mono/references/modules/soke-ai-coach-director/platform/adapters/{wukong.md → qwen.md} +18 -18
- package/skills/mono/references/modules/soke-ai-coach-director/platform/adapters/workbuddy.md +1 -1
- package/skills/mono/references/modules/soke-ai-coach-director/platform/api-fallback.md +1 -1
- package/skills/mono/references/modules/soke-ai-coach-director/platform/interaction.md +1 -1
- package/skills/mono/references/modules/soke-ai-coach-director/platform/platform-support-matrix.md +28 -0
- package/skills/mono/references/modules/soke-ai-coach-director/platform/soke-ai-training/soke-ai-training.md +5 -3
- package/skills/mono/references/modules/soke-ai-coach-director/platform/sync-engine.md +2 -2
- package/skills/mono/references/modules/soke-ai-coach-director/references/env-check.md +3 -0
- package/skills/mono/references/modules/soke-ai-coach-director/references/exec-handbook.md +2 -2
- package/skills/mono/references/modules/soke-ai-coach-director/references/subs/publish/SOP.md +3 -3
- package/skills/mono/references/modules/soke-ai-training/MODULE.md +55 -7
- package/skills/mono/references/modules/soke-assign/MODULE.md +50 -11
- package/skills/mono/references/modules/soke-certificate/MODULE.md +47 -1
- package/skills/mono/references/modules/soke-course/CHANGELOG.md +93 -0
- package/skills/mono/references/modules/soke-course/MODULE.md +110 -352
- package/skills/mono/references/modules/soke-course/README.md +45 -291
- package/skills/mono/references/modules/soke-course/cli-facts.md +107 -0
- package/skills/mono/references/modules/soke-course/intent-cases.md +41 -0
- package/skills/mono/references/modules/soke-course/scripts/check_readiness.sh +45 -0
- package/skills/mono/references/modules/soke-course/sop-publish-check.md +46 -0
- package/skills/mono/references/modules/soke-course/subs/assign/SOP.md +40 -0
- package/skills/mono/references/modules/soke-course/subs/batch/SOP.md +96 -0
- package/skills/mono/references/modules/soke-course/{references/subs → subs}/category/SOP.md +18 -27
- package/skills/mono/references/modules/soke-course/subs/charge/SOP.md +22 -0
- package/skills/mono/references/modules/soke-course/subs/copy/SOP.md +35 -0
- package/skills/mono/references/modules/soke-course/subs/exam/SOP.md +39 -0
- package/skills/mono/references/modules/soke-course/subs/phase1-create/SOP.md +66 -0
- package/skills/mono/references/modules/soke-course/subs/phase2-lesson/SOP.md +34 -0
- package/skills/mono/references/modules/soke-course/subs/photo/SOP.md +26 -0
- package/skills/mono/references/modules/soke-course/subs/publish/SOP.md +26 -0
- package/skills/mono/references/modules/soke-course/subs/query/SOP.md +36 -0
- package/skills/mono/references/modules/soke-course/{references/subs → subs}/settings/SOP.md +3 -4
- package/skills/mono/references/modules/soke-course/subs/template/SOP.md +58 -0
- package/skills/mono/references/modules/soke-exam/MODULE.md +49 -1
- package/skills/mono/references/modules/soke-exam-question-pool/MODULE.md +45 -5
- package/skills/mono/references/modules/soke-learning-map/MODULE.md +71 -12
- package/skills/mono/references/modules/soke-learning-profile/MODULE.md +46 -3
- package/skills/mono/references/modules/soke-lesson/MODULE.md +34 -20
- package/skills/mono/references/modules/soke-material/MODULE.md +33 -19
- package/skills/mono/references/modules/soke-photo-gallery/MODULE.md +40 -20
- package/skills/mono/references/modules/soke-shared/MODULE.md +9 -0
- package/skills/mono/references/modules/soke-supervisor/MODULE.md +32 -1
- package/skills/mono/references/modules/soke-task/MODULE.md +48 -1
- package/skills/mono/references/modules/soke-training-demand/MODULE.md +38 -17
- package/skills/mono/references/shared/README.md +50 -0
- package/skills/mono/references/shared/async-task.md +30 -0
- package/skills/mono/references/shared/auth-check.md +57 -0
- package/skills/mono/references/shared/command-discovery.md +34 -0
- package/skills/mono/references/shared/environment-check.md +31 -0
- package/skills/mono/references/shared/error-handling.md +27 -0
- package/skills/mono/references/shared/file-input.md +31 -0
- package/skills/mono/references/shared/interaction.md +39 -0
- package/skills/mono/references/shared/object-context.md +51 -0
- package/skills/mono/references/shared/output-policy.md +39 -0
- package/skills/mono/references/shared/pagination.md +41 -0
- package/skills/mono/references/shared/rule-ownership.md +57 -0
- package/skills/mono/references/shared/state-machine.md +35 -0
- package/skills/mono/references/shared/write-guard.md +34 -0
- package/skills/mono/references/shared/write-verify.md +33 -0
- package/skills/mono/references/workflows/README.md +115 -0
- package/skills/mono/scripts/check_package.py +310 -0
- package/skills/mono/scripts/check_readiness.py +1 -1
- package/skills/mono/scripts/check_syntax.py +35 -0
- package/skills/mono//357/275/223/357/275/217/357/275/213/357/275/205/357/274/215/357/275/203/357/275/214/357/275/211/346/225/264/344/275/223/346/236/266/346/236/204.html +13 -0
- package/skills/multi/soke-course/.skill-metadata.yaml +40 -0
- package/skills/multi/soke-course/CHANGELOG.md +77 -0
- package/skills/multi/soke-course/README.md +27 -274
- package/skills/multi/soke-course/SKILL.md +135 -353
- package/skills/multi/soke-course/_user_meta.json +5 -0
- package/skills/multi/soke-course/agents/openai.yaml +1 -5
- package/skills/multi/soke-course/references/cli-facts.md +105 -0
- package/skills/multi/soke-course/references/examples.md +30 -454
- package/skills/multi/soke-course/references/intent-cases.md +65 -99
- package/skills/multi/soke-course/references/sop-full-workflow.md +81 -177
- package/skills/multi/soke-course/references/sop-lesson-types.md +21 -58
- package/skills/multi/soke-course/references/sop-publish-check.md +14 -71
- package/skills/multi/soke-course/references/subs/assign/SOP.md +37 -0
- package/skills/multi/soke-course/references/subs/category/SOP.md +18 -27
- package/skills/multi/soke-course/references/subs/exam/SOP.md +28 -0
- package/skills/multi/soke-course/references/subs/lesson/SOP.md +28 -0
- package/skills/multi/soke-course/references/subs/material/SOP.md +24 -0
- package/skills/multi/soke-course/references/subs/photo/SOP.md +23 -0
- package/skills/multi/soke-course/references/subs/publish/SOP.md +15 -157
- package/skills/multi/soke-course/references/subs/query/SOP.md +22 -151
- package/skills/multi/soke-course/references/subs/settings/SOP.md +3 -4
- package/skills/multi/soke-course/references/subs/template/SOP.md +37 -210
- package/skills/multi/soke-course/references/troubleshoot.md +37 -54
- package/skills/multi/soke-course/scripts/check_readiness.sh +45 -0
- package/skills/multi/soke-course/{references/installation.md → soke-cli-install-guide.md} +3 -0
- package/skills/mono/references/modules/soke-course/agents/openai.yaml +0 -7
- package/skills/mono/references/modules/soke-course/references/course-list-courses.md +0 -216
- package/skills/mono/references/modules/soke-course/references/examples.md +0 -480
- package/skills/mono/references/modules/soke-course/references/intent-cases.md +0 -99
- package/skills/mono/references/modules/soke-course/references/sop-full-workflow.md +0 -177
- package/skills/mono/references/modules/soke-course/references/sop-lesson-types.md +0 -66
- package/skills/mono/references/modules/soke-course/references/sop-publish-check.md +0 -76
- package/skills/mono/references/modules/soke-course/references/subs/ai/SOP.md +0 -153
- package/skills/mono/references/modules/soke-course/references/subs/charge/SOP.md +0 -107
- package/skills/mono/references/modules/soke-course/references/subs/copy/SOP.md +0 -80
- package/skills/mono/references/modules/soke-course/references/subs/publish/SOP.md +0 -168
- package/skills/mono/references/modules/soke-course/references/subs/query/SOP.md +0 -165
- package/skills/mono/references/modules/soke-course/references/subs/template/SOP.md +0 -223
- package/skills/mono/references/modules/soke-course/references/troubleshoot.md +0 -68
- package/skills/multi/soke-course/examples/create-basic.md +0 -70
- package/skills/multi/soke-course/references/course-list-courses.md +0 -216
- package/skills/multi/soke-course/references/dependencies/soke-assign.md +0 -103
- package/skills/multi/soke-course/references/dependencies/soke-lesson.md +0 -119
- package/skills/multi/soke-course/references/dependencies/soke-material.md +0 -105
- package/skills/multi/soke-course/references/shared.md +0 -185
- package/skills/multi/soke-course/references/subs/ai/SOP.md +0 -153
- package/skills/multi/soke-course/scripts/check_readiness.py +0 -87
- /package/skills/mono/references/{installation.md → shared/installation.md} +0 -0
package/package.json
CHANGED
package/scripts/install.js
CHANGED
|
@@ -504,6 +504,12 @@ downloadFile(downloadURL, binaryPath)
|
|
|
504
504
|
}
|
|
505
505
|
}
|
|
506
506
|
|
|
507
|
+
/***
|
|
508
|
+
// WorkBuddy manages Connector Skills, PATH and the runtime sandbox.
|
|
509
|
+
// Temporarily disabled for WorkBuddy compatibility. Keep the original
|
|
510
|
+
// integration code here until WorkBuddy exposes a reliable install marker.
|
|
511
|
+
// Do not enable this unconditionally: these operations write to external
|
|
512
|
+
// agent workspaces, create system symlinks, and may restart GUI processes.
|
|
507
513
|
try {
|
|
508
514
|
syncSkillsToSokeclawWorkspace();
|
|
509
515
|
} catch (_) {}
|
|
@@ -513,6 +519,8 @@ downloadFile(downloadURL, binaryPath)
|
|
|
513
519
|
} catch (_) {}
|
|
514
520
|
|
|
515
521
|
return maybeAssistGuiPath();
|
|
522
|
+
****/
|
|
523
|
+
return Promise.resolve();
|
|
516
524
|
})
|
|
517
525
|
.then(() => {
|
|
518
526
|
console.log('soke-cli 安装成功!');
|
package/scripts/run.js
CHANGED
|
@@ -4,7 +4,8 @@ const { spawn, execSync } = require('child_process');
|
|
|
4
4
|
const path = require('path');
|
|
5
5
|
const fs = require('fs');
|
|
6
6
|
|
|
7
|
-
//
|
|
7
|
+
// Legacy compatibility command. Connector installations do not invoke this
|
|
8
|
+
// command; WorkBuddy manages PATH and GUI integration itself.
|
|
8
9
|
if (process.argv[2] === 'setup-gui-env') {
|
|
9
10
|
console.log('正在为 SokeClaw GUI 注入环境变量 PATH...');
|
|
10
11
|
try {
|
|
@@ -138,4 +139,4 @@ child.on('exit', (code, signal) => {
|
|
|
138
139
|
child.on('error', (err) => {
|
|
139
140
|
console.error('执行 soke-cli 时出错:', err.message);
|
|
140
141
|
process.exit(1);
|
|
141
|
-
});
|
|
142
|
+
});
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
- Completed course module decomposition: `soke-course` now only handles course orchestration, while `soke-material`, `soke-lesson`, and `soke-assign` remain independent modules.
|
|
2
|
+
- Updated `references/modules/soke-course/MODULE.md` and synced the top-level route table in `SKILL.md`.
|
|
@@ -0,0 +1,572 @@
|
|
|
1
|
+
# Soke CLI Mono 架构与子技能开发指南
|
|
2
|
+
|
|
3
|
+
> 面向后续功能开发、多人协作和代码审查的长期参考文档。
|
|
4
|
+
>
|
|
5
|
+
> 当前版本:v1.0
|
|
6
|
+
> 适用范围:`skills/mono/` 独立技能包
|
|
7
|
+
|
|
8
|
+
## 1. 文档目标
|
|
9
|
+
|
|
10
|
+
本指南回答四个问题:
|
|
11
|
+
|
|
12
|
+
1. Mono Skill 当前由哪些层组成?
|
|
13
|
+
2. 一个新需求应该放在哪一层?
|
|
14
|
+
3. 如何新增一个子功能或子技能?
|
|
15
|
+
4. 多人并行开发时如何避免重复、越界和冲突?
|
|
16
|
+
|
|
17
|
+
核心原则:
|
|
18
|
+
|
|
19
|
+
```text
|
|
20
|
+
共享规则只定义通用约束
|
|
21
|
+
业务模块只定义业务差异
|
|
22
|
+
跨模块工作流只定义对象交接
|
|
23
|
+
平台适配器只定义平台差异
|
|
24
|
+
机器检查只定义可自动验证的质量规则
|
|
25
|
+
```
|
|
26
|
+
|
|
27
|
+
## 2. 总体架构
|
|
28
|
+
|
|
29
|
+
```text
|
|
30
|
+
用户自然语言
|
|
31
|
+
↓
|
|
32
|
+
SKILL.md:入口、意图识别、模块路由
|
|
33
|
+
↓
|
|
34
|
+
references/shared/:共享能力
|
|
35
|
+
↓
|
|
36
|
+
references/modules/:业务模块
|
|
37
|
+
↓
|
|
38
|
+
references/workflows/:跨模块对象链路
|
|
39
|
+
↓
|
|
40
|
+
platform/adapters/:平台交互差异
|
|
41
|
+
↓
|
|
42
|
+
scripts/:静态检查、字段校验、质量闸门
|
|
43
|
+
```
|
|
44
|
+
|
|
45
|
+
### 2.1 入口调度层
|
|
46
|
+
|
|
47
|
+
文件:`SKILL.md`
|
|
48
|
+
|
|
49
|
+
负责:
|
|
50
|
+
|
|
51
|
+
- 识别用户动作:查询、创建、更新、发布、指派、删除、导出、同步;
|
|
52
|
+
- 将业务语言路由到正确模块;
|
|
53
|
+
- 规定读取顺序和确认边界;
|
|
54
|
+
- 提供全局禁止事项与输出规则;
|
|
55
|
+
- 引导复杂需求进入对应工作流。
|
|
56
|
+
|
|
57
|
+
不负责:具体业务字段、完整 API 参数、平台专属交互和模块内部异常。
|
|
58
|
+
|
|
59
|
+
### 2.2 共享能力层
|
|
60
|
+
|
|
61
|
+
目录:`references/shared/`
|
|
62
|
+
|
|
63
|
+
典型能力:
|
|
64
|
+
|
|
65
|
+
- 安装与环境检测;
|
|
66
|
+
- 认证与权限;
|
|
67
|
+
- CLI 命令发现;
|
|
68
|
+
- 真实对象 ID;
|
|
69
|
+
- 分页和去重;
|
|
70
|
+
- 交互确认;
|
|
71
|
+
- 高风险写操作保护;
|
|
72
|
+
- 输出脱敏;
|
|
73
|
+
- 写后验证、幂等和重试;
|
|
74
|
+
- 异步任务;
|
|
75
|
+
- 本地文件输入;
|
|
76
|
+
- 状态机;
|
|
77
|
+
- 错误分类。
|
|
78
|
+
|
|
79
|
+
抽取标准:同一规则至少被两个业务模块以相同语义、相同输入和相同异常处理复用,才考虑抽取。
|
|
80
|
+
|
|
81
|
+
### 2.3 业务模块层
|
|
82
|
+
|
|
83
|
+
目录:`references/modules/`
|
|
84
|
+
|
|
85
|
+
模块按业务对象划分,例如:
|
|
86
|
+
|
|
87
|
+
- 内容域:课程、素材、课件;
|
|
88
|
+
- 测评域:考试、题库、试卷;
|
|
89
|
+
- 路径域:学习地图、阶段;
|
|
90
|
+
- 结果域:任务、档案、证书;
|
|
91
|
+
- 运营域:培训需求、图片库;
|
|
92
|
+
- AI 域:知识包、AI 陪练、AI 督导。
|
|
93
|
+
|
|
94
|
+
每个模块入口统一采用同一套合同结构(`check_package.py` 的 `module-contracts` 按语义校验,标题可用等价别名):
|
|
95
|
+
|
|
96
|
+
```text
|
|
97
|
+
共享前置 → 职责 → 输入 → 流程 → 业务产出/完成判定 → 失败降级 → 验证 → 业务特例 → 输出
|
|
98
|
+
```
|
|
99
|
+
|
|
100
|
+
- 「共享前置」也可写作「共用前置」,两者等价;
|
|
101
|
+
- 编排主管型模块(如 `soke-course`、`soke-ai-coach-director`)在骨架之上可扩展额外的结构性章节(意图路由、加载白名单、分阶段编排等),但必须保留上述合同语义;
|
|
102
|
+
- 机器检查按「标题或显式粗体合同标签」识别,不强制同名标题。
|
|
103
|
+
|
|
104
|
+
### 2.4 跨模块工作流层
|
|
105
|
+
|
|
106
|
+
目录:`references/workflows/`
|
|
107
|
+
|
|
108
|
+
只描述模块之间的对象交接,不复制模块内部流程。
|
|
109
|
+
|
|
110
|
+
示例:
|
|
111
|
+
|
|
112
|
+
```text
|
|
113
|
+
soke-material
|
|
114
|
+
→ 真实素材 ID
|
|
115
|
+
soke-lesson
|
|
116
|
+
→ 课件记录
|
|
117
|
+
soke-course
|
|
118
|
+
→ 已发布课程
|
|
119
|
+
soke-assign
|
|
120
|
+
→ 指派记录
|
|
121
|
+
```
|
|
122
|
+
|
|
123
|
+
### 2.5 平台适配层
|
|
124
|
+
|
|
125
|
+
目录:`references/modules/soke-ai-coach-director/platform/adapters/`
|
|
126
|
+
|
|
127
|
+
适配器只负责:
|
|
128
|
+
|
|
129
|
+
- 运行环境检测;
|
|
130
|
+
- 内容展示;
|
|
131
|
+
- 选项确认;
|
|
132
|
+
- CLI 执行;
|
|
133
|
+
- 平台能力不足时的降级。
|
|
134
|
+
|
|
135
|
+
当前支持矩阵见:
|
|
136
|
+
|
|
137
|
+
```text
|
|
138
|
+
references/modules/soke-ai-coach-director/platform/platform-support-matrix.md
|
|
139
|
+
```
|
|
140
|
+
|
|
141
|
+
### 2.6 质量保障层
|
|
142
|
+
|
|
143
|
+
目录:`scripts/`
|
|
144
|
+
|
|
145
|
+
当前主要检查器:
|
|
146
|
+
|
|
147
|
+
- `check_package.py`:包级结构、链接、路径、命令、模块和平台一致性;
|
|
148
|
+
- `check_syntax.py`:使用 AST 做无缓存 Python 语法检查;
|
|
149
|
+
- AI 陪练专项脚本:质量闸门和操作校验。
|
|
150
|
+
|
|
151
|
+
## 3. 模块关系图
|
|
152
|
+
|
|
153
|
+
### 3.1 课程链路
|
|
154
|
+
|
|
155
|
+
```text
|
|
156
|
+
soke-material(上传素材)
|
|
157
|
+
↓ 真实素材 ID
|
|
158
|
+
soke-lesson(创建课件)
|
|
159
|
+
↓ 课件记录
|
|
160
|
+
soke-course(配置/发布课程)
|
|
161
|
+
↓ 已发布课程
|
|
162
|
+
soke-assign(指派学习对象)
|
|
163
|
+
```
|
|
164
|
+
|
|
165
|
+
### 3.2 考试链路
|
|
166
|
+
|
|
167
|
+
```text
|
|
168
|
+
soke-exam(题库、试题、试卷、考试)
|
|
169
|
+
↓
|
|
170
|
+
soke-assign(指派考试)
|
|
171
|
+
↓
|
|
172
|
+
soke-exam-question-pool(独立答题练习)
|
|
173
|
+
```
|
|
174
|
+
|
|
175
|
+
答题练习不能替代考试发布,也不能替代考试成绩查询。
|
|
176
|
+
|
|
177
|
+
### 3.3 学习地图链路
|
|
178
|
+
|
|
179
|
+
```text
|
|
180
|
+
soke-course
|
|
181
|
+
↓
|
|
182
|
+
soke-learning-map(地图和阶段)
|
|
183
|
+
↓
|
|
184
|
+
soke-assign
|
|
185
|
+
↓
|
|
186
|
+
soke-task(统计导出)
|
|
187
|
+
↓
|
|
188
|
+
soke-learning-profile(学习档案查询)
|
|
189
|
+
```
|
|
190
|
+
|
|
191
|
+
### 3.4 AI 链路
|
|
192
|
+
|
|
193
|
+
```text
|
|
194
|
+
原始材料
|
|
195
|
+
↓ 一次提炼
|
|
196
|
+
soke-ai-coach-director
|
|
197
|
+
├─ Part1-Part5
|
|
198
|
+
├─ 场景同步
|
|
199
|
+
├─ 质量闸门
|
|
200
|
+
└─ 发布
|
|
201
|
+
↓ 复用提炼稿
|
|
202
|
+
soke-ai-training
|
|
203
|
+
├─ source
|
|
204
|
+
├─ entries
|
|
205
|
+
├─ 知识包版本
|
|
206
|
+
└─ 场景绑定
|
|
207
|
+
```
|
|
208
|
+
|
|
209
|
+
知识包模块不重新提炼原始材料,也不负责陪练 Part1-Part5。
|
|
210
|
+
|
|
211
|
+
## 4. 新增子技能的判定流程
|
|
212
|
+
|
|
213
|
+
新增需求先回答:
|
|
214
|
+
|
|
215
|
+
| 判断问题 | 放置位置 |
|
|
216
|
+
|---|---|
|
|
217
|
+
| 是通用能力,多个模块会复用? | `references/shared/` |
|
|
218
|
+
| 是已有业务对象的新动作? | 修改现有模块 |
|
|
219
|
+
| 是新的业务对象? | 新建模块 |
|
|
220
|
+
| 是两个以上模块的串联? | `references/workflows/` |
|
|
221
|
+
| 是平台显示、交互或命令差异? | 平台适配器 |
|
|
222
|
+
| 是可自动验证的规则? | `scripts/` |
|
|
223
|
+
| 是单一模块的专项规则、子流程或命令事实? | 模块内部:`subs/<主题>/SOP.md`(子流程)、`cli-facts.md`(命令事实);规则繁多时可用 `references/` 一级分组 |
|
|
224
|
+
|
|
225
|
+
### 禁止的错误做法
|
|
226
|
+
|
|
227
|
+
```text
|
|
228
|
+
看到一个 CLI 命令 → 直接新建技能
|
|
229
|
+
遇到一次重复 → 立刻抽取共享规则
|
|
230
|
+
把平台差异写进业务模块
|
|
231
|
+
把业务特例上提到 shared
|
|
232
|
+
把所有新增说明都塞进 SKILL.md
|
|
233
|
+
```
|
|
234
|
+
|
|
235
|
+
正确顺序:
|
|
236
|
+
|
|
237
|
+
```text
|
|
238
|
+
业务对象 → 用户动作 → 前置数据 → 状态变化 → CLI 命令 → 输出对象
|
|
239
|
+
```
|
|
240
|
+
|
|
241
|
+
## 5. 新业务模块开发模板
|
|
242
|
+
|
|
243
|
+
目录建议:
|
|
244
|
+
|
|
245
|
+
```text
|
|
246
|
+
references/modules/soke-new-feature/
|
|
247
|
+
├── MODULE.md
|
|
248
|
+
├── README.md
|
|
249
|
+
├── cli-facts.md # 命令参数事实源
|
|
250
|
+
├── subs/
|
|
251
|
+
│ └── <主题>/SOP.md # 子流程 / 专项 SOP
|
|
252
|
+
└── scripts/
|
|
253
|
+
└── validate_new_feature.py
|
|
254
|
+
```
|
|
255
|
+
|
|
256
|
+
规则繁多、需要二级分组时,可把 `subs/` 与 `cli-facts.md` 收进 `references/` 一级分组(如 `soke-ai-coach-director`);默认新模块按上表扁平结构,避免 `references/modules/<模块>/references/` 的双重 references 冗余。
|
|
257
|
+
|
|
258
|
+
初始开发不必一次创建全部文件。推荐增量顺序:
|
|
259
|
+
|
|
260
|
+
```text
|
|
261
|
+
MODULE.md → README.md → 子流程 subs/ 与 cli-facts.md → 可自动验证 scripts/ → 真实案例
|
|
262
|
+
```
|
|
263
|
+
|
|
264
|
+
### MODULE.md 最小模板
|
|
265
|
+
|
|
266
|
+
```markdown
|
|
267
|
+
# soke-new-feature
|
|
268
|
+
|
|
269
|
+
## 共享前置
|
|
270
|
+
|
|
271
|
+
读取 `../../shared/README.md`,按需读取环境、认证、对象、交互、写后验证和错误处理规则。
|
|
272
|
+
|
|
273
|
+
## 职责
|
|
274
|
+
|
|
275
|
+
说明本模块负责的业务对象和动作,并写清不负责(相邻模块与跨模块工作流的边界)。
|
|
276
|
+
|
|
277
|
+
## 输入
|
|
278
|
+
|
|
279
|
+
列出用户输入、必需真实 ID、可选参数和文件要求。
|
|
280
|
+
|
|
281
|
+
## 流程
|
|
282
|
+
|
|
283
|
+
查询前置 → 用户确认 → 执行动作 → 写后验证 → 输出摘要。
|
|
284
|
+
|
|
285
|
+
## 业务产出 / 完成判定
|
|
286
|
+
|
|
287
|
+
说明每一步产生什么真实对象或状态,以及什么条件才算完成(不能把「命令执行过」当作成功)。
|
|
288
|
+
|
|
289
|
+
## 失败降级
|
|
290
|
+
|
|
291
|
+
说明缺少输入、对象不存在、权限不足、部分成功、写后异常时如何停止或降级。
|
|
292
|
+
|
|
293
|
+
## 验证
|
|
294
|
+
|
|
295
|
+
说明用哪个查询/回读确认结果真实落盘。
|
|
296
|
+
|
|
297
|
+
## 业务特例
|
|
298
|
+
|
|
299
|
+
只写本模块专属字段、状态、约束和异常。
|
|
300
|
+
|
|
301
|
+
## 输出
|
|
302
|
+
|
|
303
|
+
说明对用户展示的摘要,以及供后续模块复用的真实对象信息。
|
|
304
|
+
```
|
|
305
|
+
|
|
306
|
+
## 6. 新增子功能的九步开发法
|
|
307
|
+
|
|
308
|
+
### 第 1 步:写需求边界
|
|
309
|
+
|
|
310
|
+
用一句话定义:
|
|
311
|
+
|
|
312
|
+
```text
|
|
313
|
+
谁,在什么对象上,执行什么动作,得到什么结果。
|
|
314
|
+
```
|
|
315
|
+
|
|
316
|
+
同时写“不负责”。
|
|
317
|
+
|
|
318
|
+
### 第 2 步:确认对象和状态
|
|
319
|
+
|
|
320
|
+
明确:
|
|
321
|
+
|
|
322
|
+
- 对象名称;
|
|
323
|
+
- 创建前状态;
|
|
324
|
+
- 执行后状态;
|
|
325
|
+
- 依赖的父对象;
|
|
326
|
+
- 输出的真实 ID;
|
|
327
|
+
- 是否可重复执行。
|
|
328
|
+
|
|
329
|
+
### 第 3 步:选择归属层
|
|
330
|
+
|
|
331
|
+
依次判断共享层、现有模块、新模块、工作流、适配器或检查器。
|
|
332
|
+
|
|
333
|
+
### 第 4 步:查询当前 CLI 帮助
|
|
334
|
+
|
|
335
|
+
先确认父命令,再确认叶子命令:
|
|
336
|
+
|
|
337
|
+
```bash
|
|
338
|
+
soke-cli --help
|
|
339
|
+
soke-cli <domain> --help
|
|
340
|
+
soke-cli <domain> +<verb> --help
|
|
341
|
+
```
|
|
342
|
+
|
|
343
|
+
文档示例不能替代当前 CLI 帮助。
|
|
344
|
+
|
|
345
|
+
### 第 5 步:编写最小闭环
|
|
346
|
+
|
|
347
|
+
先实现:
|
|
348
|
+
|
|
349
|
+
```text
|
|
350
|
+
环境/认证
|
|
351
|
+
→ 查询真实 ID
|
|
352
|
+
→ 确认写入范围
|
|
353
|
+
→ 执行一次主动作
|
|
354
|
+
→ 验证结果
|
|
355
|
+
→ 输出摘要
|
|
356
|
+
```
|
|
357
|
+
|
|
358
|
+
### 第 6 步:接入入口和索引
|
|
359
|
+
|
|
360
|
+
至少更新:
|
|
361
|
+
|
|
362
|
+
- `SKILL.md` 意图路由;
|
|
363
|
+
- `references/modules/README.md` 模块矩阵;
|
|
364
|
+
- 相关工作流 README;
|
|
365
|
+
- 适配器矩阵(如适用)。
|
|
366
|
+
|
|
367
|
+
### 第 7 步:补充专项规则
|
|
368
|
+
|
|
369
|
+
只保留当前模块独有的:
|
|
370
|
+
|
|
371
|
+
- 字段格式;
|
|
372
|
+
- 状态转换;
|
|
373
|
+
- 业务红线;
|
|
374
|
+
- 资源限制;
|
|
375
|
+
- 特殊异常。
|
|
376
|
+
|
|
377
|
+
### 第 8 步:加入自动检查
|
|
378
|
+
|
|
379
|
+
至少确保:
|
|
380
|
+
|
|
381
|
+
```text
|
|
382
|
+
文件存在
|
|
383
|
+
入口已登记
|
|
384
|
+
共享入口存在
|
|
385
|
+
链接有效
|
|
386
|
+
无旧路径
|
|
387
|
+
无旧命令
|
|
388
|
+
无重复认证
|
|
389
|
+
无复制共享规则
|
|
390
|
+
语法通过
|
|
391
|
+
无缓存残留
|
|
392
|
+
```
|
|
393
|
+
|
|
394
|
+
### 第 9 步:真实场景验收
|
|
395
|
+
|
|
396
|
+
静态检查通过后,用一条真实业务链路验证:
|
|
397
|
+
|
|
398
|
+
```text
|
|
399
|
+
输入 → 路由 → 前置查询 → 确认 → 执行 → 验证 → 输出
|
|
400
|
+
```
|
|
401
|
+
|
|
402
|
+
## 7. 多人开发协作规则
|
|
403
|
+
|
|
404
|
+
### 7.1 按层和边界分工
|
|
405
|
+
|
|
406
|
+
推荐拆分:
|
|
407
|
+
|
|
408
|
+
| 角色 | 负责范围 |
|
|
409
|
+
|---|---|
|
|
410
|
+
| 架构维护者 | `SKILL.md`、共享规则、规则归属矩阵 |
|
|
411
|
+
| 业务开发者 | 单个 `references/modules/soke-xxx/` |
|
|
412
|
+
| 工作流开发者 | `references/workflows/` 和交接契约 |
|
|
413
|
+
| 平台开发者 | 单个平台适配器及支持矩阵 |
|
|
414
|
+
| 质量维护者 | `scripts/check_package.py` 和检查规则 |
|
|
415
|
+
| 验收人员 | 真实场景、CLI 帮助和回归验证 |
|
|
416
|
+
|
|
417
|
+
同一时间尽量不要让多人修改同一个入口文件。
|
|
418
|
+
|
|
419
|
+
### 7.2 任务领取前检查
|
|
420
|
+
|
|
421
|
+
每位开发者开始前先确认:
|
|
422
|
+
|
|
423
|
+
```bash
|
|
424
|
+
git status --short
|
|
425
|
+
git diff --stat
|
|
426
|
+
```
|
|
427
|
+
|
|
428
|
+
并查看:
|
|
429
|
+
|
|
430
|
+
- 当前模块是否已有未提交修改;
|
|
431
|
+
- 是否已有同名任务;
|
|
432
|
+
- 是否已经存在相邻功能;
|
|
433
|
+
- 共享规则是否已有唯一来源。
|
|
434
|
+
|
|
435
|
+
### 7.3 变更声明
|
|
436
|
+
|
|
437
|
+
开发前先声明四项:
|
|
438
|
+
|
|
439
|
+
```text
|
|
440
|
+
修改文件
|
|
441
|
+
不修改文件
|
|
442
|
+
依赖模块
|
|
443
|
+
验收命令
|
|
444
|
+
```
|
|
445
|
+
|
|
446
|
+
例如:
|
|
447
|
+
|
|
448
|
+
```text
|
|
449
|
+
修改:soke-new-feature/MODULE.md、modules/README.md
|
|
450
|
+
不修改:shared/、其他业务模块
|
|
451
|
+
依赖:object-context、write-verify
|
|
452
|
+
验收:check_package.py、git diff --check
|
|
453
|
+
```
|
|
454
|
+
|
|
455
|
+
### 7.4 冲突处理
|
|
456
|
+
|
|
457
|
+
出现以下情况必须暂停并对齐:
|
|
458
|
+
|
|
459
|
+
- 两人同时修改共享规则;
|
|
460
|
+
- 两个模块都声称负责同一对象;
|
|
461
|
+
- 新功能既像模块又像工作流;
|
|
462
|
+
- 需要修改多个入口文件;
|
|
463
|
+
- 机器检查规则与业务特例冲突。
|
|
464
|
+
|
|
465
|
+
优先建立唯一事实源,再继续开发。
|
|
466
|
+
|
|
467
|
+
### 7.5 合并前质量闸门
|
|
468
|
+
|
|
469
|
+
每个分支合并前必须运行:
|
|
470
|
+
|
|
471
|
+
```bash
|
|
472
|
+
/Users/edy/.workbuddy/binaries/python/versions/3.13.12/bin/python3 skills/mono/scripts/check_package.py
|
|
473
|
+
git diff --check
|
|
474
|
+
```
|
|
475
|
+
|
|
476
|
+
若新增 Python 脚本,禁止用会生成缓存的方式作为唯一验证;使用 AST 检查。
|
|
477
|
+
|
|
478
|
+
## 8. 唯一来源矩阵
|
|
479
|
+
|
|
480
|
+
| 内容 | 唯一来源 |
|
|
481
|
+
|---|---|
|
|
482
|
+
| 安装与认证 | `references/shared/` |
|
|
483
|
+
| 通用分页、确认、脱敏、重试 | `references/shared/` |
|
|
484
|
+
| 模块职责和对象边界 | `references/modules/README.md` + 各模块 `MODULE.md` |
|
|
485
|
+
| 跨模块交接 | `references/workflows/` |
|
|
486
|
+
| AI 陪练通用执行规则 | `exec-common.md` |
|
|
487
|
+
| AI 陪练 Part 规则 | 对应 `exec-partN.md` |
|
|
488
|
+
| AI 平台支持状态 | `platform-support-matrix.md` |
|
|
489
|
+
| 平台交互差异 | 对应 `platform/adapters/*.md` |
|
|
490
|
+
| 机器质量规则 | `scripts/check_package.py` |
|
|
491
|
+
|
|
492
|
+
## 9. 变更类型与影响范围
|
|
493
|
+
|
|
494
|
+
### 新增共享规则
|
|
495
|
+
|
|
496
|
+
必须:
|
|
497
|
+
|
|
498
|
+
1. 证明至少两个模块复用;
|
|
499
|
+
2. 更新规则归属矩阵;
|
|
500
|
+
3. 删除模块内重复版本;
|
|
501
|
+
4. 回归所有模块。
|
|
502
|
+
|
|
503
|
+
### 新增业务模块
|
|
504
|
+
|
|
505
|
+
必须:
|
|
506
|
+
|
|
507
|
+
1. 创建标准 `MODULE.md`;
|
|
508
|
+
2. 更新入口路由和模块矩阵;
|
|
509
|
+
3. 明确依赖和不负责范围;
|
|
510
|
+
4. 加入检查器;
|
|
511
|
+
5. 用真实流程验收。
|
|
512
|
+
|
|
513
|
+
### 新增平台
|
|
514
|
+
|
|
515
|
+
必须:
|
|
516
|
+
|
|
517
|
+
1. 创建适配器文件;
|
|
518
|
+
2. 更新支持矩阵;
|
|
519
|
+
3. 更新适配器索引;
|
|
520
|
+
4. 写明稳定、可选或待验证状态;
|
|
521
|
+
5. 通过平台一致性检查。
|
|
522
|
+
|
|
523
|
+
### 删除平台
|
|
524
|
+
|
|
525
|
+
必须同步删除或更新:
|
|
526
|
+
|
|
527
|
+
- 适配器文件;
|
|
528
|
+
- 支持矩阵行;
|
|
529
|
+
- 适配器索引;
|
|
530
|
+
- 路由说明;
|
|
531
|
+
- 变更日志;
|
|
532
|
+
- 检查器清单。
|
|
533
|
+
|
|
534
|
+
通用降级路径不得删除。
|
|
535
|
+
|
|
536
|
+
## 10. Definition of done
|
|
537
|
+
|
|
538
|
+
新增子功能只有同时满足以下条件,才算完成:
|
|
539
|
+
|
|
540
|
+
- [ ] 业务对象和边界已定义;
|
|
541
|
+
- [ ] 归属层级已确定;
|
|
542
|
+
- [ ] 不重复已有共享能力;
|
|
543
|
+
- [ ] 模块入口具备完整合同结构(共享前置 + 职责/输入/流程/业务产出/失败降级/验证/业务特例/输出);
|
|
544
|
+
- [ ] 真实 ID 来源明确;
|
|
545
|
+
- [ ] 写操作有确认和验证;
|
|
546
|
+
- [ ] 入口路由和索引已更新;
|
|
547
|
+
- [ ] 跨模块交接已定义;
|
|
548
|
+
- [ ] 机器检查通过;
|
|
549
|
+
- [ ] `git diff --check` 通过;
|
|
550
|
+
- [ ] 至少完成一条真实场景验收;
|
|
551
|
+
- [ ] 变更范围和后续风险已记录。
|
|
552
|
+
|
|
553
|
+
## 11. 当前建议
|
|
554
|
+
|
|
555
|
+
规则统一治理阶段已完成,后续进入能力建设和真实验证阶段:
|
|
556
|
+
|
|
557
|
+
1. 优先验证 WorkBuddy 主路径;
|
|
558
|
+
2. 再验证千问适配器;
|
|
559
|
+
3. 根据真实需求决定 QClaw 是否保留;
|
|
560
|
+
4. 对 Zework 完成最小可行验收;
|
|
561
|
+
5. 新增功能按本指南逐项落地;
|
|
562
|
+
6. 只有真实复用出现时才继续抽取共享规则。
|
|
563
|
+
|
|
564
|
+
## 12. 最终原则
|
|
565
|
+
|
|
566
|
+
```text
|
|
567
|
+
先判层级,再定边界;
|
|
568
|
+
先定义对象,再选命令;
|
|
569
|
+
先复用共享,再写特例;
|
|
570
|
+
先完成闭环,再扩展异常;
|
|
571
|
+
先机器检查,再真实验收。
|
|
572
|
+
```
|