@liangjie559567/ultrapower 5.1.0 → 5.2.0
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/.claude-plugin/plugin.json +1 -1
- package/dist/__tests__/skills.test.js +3 -2
- package/dist/__tests__/skills.test.js.map +1 -1
- package/dist/hooks/nexus/__tests__/config.test.d.ts +2 -0
- package/dist/hooks/nexus/__tests__/config.test.d.ts.map +1 -0
- package/dist/hooks/nexus/__tests__/config.test.js +38 -0
- package/dist/hooks/nexus/__tests__/config.test.js.map +1 -0
- package/dist/hooks/nexus/__tests__/consciousness-sync.test.d.ts +2 -0
- package/dist/hooks/nexus/__tests__/consciousness-sync.test.d.ts.map +1 -0
- package/dist/hooks/nexus/__tests__/consciousness-sync.test.js +28 -0
- package/dist/hooks/nexus/__tests__/consciousness-sync.test.js.map +1 -0
- package/dist/hooks/nexus/__tests__/data-collector.test.d.ts +2 -0
- package/dist/hooks/nexus/__tests__/data-collector.test.d.ts.map +1 -0
- package/dist/hooks/nexus/__tests__/data-collector.test.js +61 -0
- package/dist/hooks/nexus/__tests__/data-collector.test.js.map +1 -0
- package/dist/hooks/nexus/__tests__/improvement-puller.test.d.ts +2 -0
- package/dist/hooks/nexus/__tests__/improvement-puller.test.d.ts.map +1 -0
- package/dist/hooks/nexus/__tests__/improvement-puller.test.js +49 -0
- package/dist/hooks/nexus/__tests__/improvement-puller.test.js.map +1 -0
- package/dist/hooks/nexus/__tests__/session-end-hook.test.d.ts +2 -0
- package/dist/hooks/nexus/__tests__/session-end-hook.test.d.ts.map +1 -0
- package/dist/hooks/nexus/__tests__/session-end-hook.test.js +39 -0
- package/dist/hooks/nexus/__tests__/session-end-hook.test.js.map +1 -0
- package/dist/hooks/nexus/config.d.ts +5 -0
- package/dist/hooks/nexus/config.d.ts.map +1 -0
- package/dist/hooks/nexus/config.js +35 -0
- package/dist/hooks/nexus/config.js.map +1 -0
- package/dist/hooks/nexus/consciousness-sync.d.ts +8 -0
- package/dist/hooks/nexus/consciousness-sync.d.ts.map +1 -0
- package/dist/hooks/nexus/consciousness-sync.js +57 -0
- package/dist/hooks/nexus/consciousness-sync.js.map +1 -0
- package/dist/hooks/nexus/data-collector.d.ts +4 -0
- package/dist/hooks/nexus/data-collector.d.ts.map +1 -0
- package/dist/hooks/nexus/data-collector.js +23 -0
- package/dist/hooks/nexus/data-collector.js.map +1 -0
- package/dist/hooks/nexus/improvement-puller.d.ts +9 -0
- package/dist/hooks/nexus/improvement-puller.d.ts.map +1 -0
- package/dist/hooks/nexus/improvement-puller.js +42 -0
- package/dist/hooks/nexus/improvement-puller.js.map +1 -0
- package/dist/hooks/nexus/session-end-hook.d.ts +16 -0
- package/dist/hooks/nexus/session-end-hook.d.ts.map +1 -0
- package/dist/hooks/nexus/session-end-hook.js +49 -0
- package/dist/hooks/nexus/session-end-hook.js.map +1 -0
- package/dist/hooks/nexus/types.d.ts +54 -0
- package/dist/hooks/nexus/types.d.ts.map +1 -0
- package/dist/hooks/nexus/types.js +2 -0
- package/dist/hooks/nexus/types.js.map +1 -0
- package/dist/hooks/session-end/__tests__/nexus-integration.test.d.ts +2 -0
- package/dist/hooks/session-end/__tests__/nexus-integration.test.d.ts.map +1 -0
- package/dist/hooks/session-end/__tests__/nexus-integration.test.js +30 -0
- package/dist/hooks/session-end/__tests__/nexus-integration.test.js.map +1 -0
- package/dist/hooks/session-end/index.d.ts.map +1 -1
- package/dist/hooks/session-end/index.js +15 -0
- package/dist/hooks/session-end/index.js.map +1 -1
- package/docs/CLAUDE.md +1 -1
- package/docs/README.codex.md +6 -0
- package/docs/plans/2026-01-17-visual-brainstorming.md +571 -0
- package/docs/plans/2026-02-26-nexus-design.md +354 -0
- package/docs/plans/2026-02-26-nexus-implementation-plan.md +2538 -0
- package/docs/plans/2026-02-26-phase2-active-learning-design.md +377 -0
- package/docs/standards/contribution-guide.md +52 -1
- package/docs/superpowers/plans/2026-01-22-document-review-system.md +301 -0
- package/docs/superpowers/plans/2026-02-19-visual-brainstorming-refactor.md +523 -0
- package/docs/superpowers/specs/2026-01-22-document-review-system-design.md +136 -0
- package/docs/superpowers/specs/2026-02-19-visual-brainstorming-refactor-design.md +162 -0
- package/hooks/run-hook.cmd +32 -29
- package/package.json +4 -2
- package/skills/brainstorming/spec-document-reviewer-prompt.md +50 -0
- package/skills/brainstorming/visual-companion.md +249 -0
- package/skills/nexus/SKILL.md +35 -0
- package/skills/nexus/nexus-evolve/SKILL.md +31 -0
- package/skills/nexus/nexus-review/SKILL.md +39 -0
- package/skills/nexus/nexus-status/SKILL.md +31 -0
- package/skills/release/SKILL.md +3 -0
- package/skills/requesting-code-review/SKILL.md +1 -1
- package/skills/using-superpowers/references/codex-tools.md +25 -0
- package/skills/writing-plans/plan-document-reviewer-prompt.md +52 -0
- /package/hooks/{session-start.sh → session-start} +0 -0
|
@@ -0,0 +1,377 @@
|
|
|
1
|
+
# Phase 2 主动学习架构设计
|
|
2
|
+
|
|
3
|
+
> **状态:** 设计草稿 | **日期:** 2026-02-26 | **分支:** feat/phase2-active-learning
|
|
4
|
+
|
|
5
|
+
## 背景
|
|
6
|
+
|
|
7
|
+
Phase 1(被动学习 MVP)已完成并合并到 main。它建立了:
|
|
8
|
+
- Skill 文件发现、解析、匹配、注入基础设施
|
|
9
|
+
- 基于触发词的被动注入(用户消息 → 匹配 → 注入上下文)
|
|
10
|
+
- 模式检测(`auto-learner.ts`):问题-解决方案对,置信度评分
|
|
11
|
+
- 自动调用决策(`auto-invoke.ts`):置信度阈值、冷却时间
|
|
12
|
+
- 使用指标追踪(`usage-tracker.ts`)
|
|
13
|
+
- 会话结束自动反思(`session-reflector.ts`)
|
|
14
|
+
- 进化引擎编排(`orchestrator.ts`)
|
|
15
|
+
|
|
16
|
+
**Phase 1 的核心局限:**
|
|
17
|
+
1. 没有用户反馈回路——skill 注入后不知道是否有用
|
|
18
|
+
2. 没有 skill 效果验证——无法知道注入的 skill 是否被采纳
|
|
19
|
+
3. 没有主动推荐界面——只是静默注入,用户无感知
|
|
20
|
+
4. 没有 skill 质量迭代——无法基于使用结果改进 skill 内容
|
|
21
|
+
5. 没有跨会话学习聚合——每次会话独立,无法积累洞见
|
|
22
|
+
|
|
23
|
+
## Phase 2 目标
|
|
24
|
+
|
|
25
|
+
**主动学习** = 系统能主动感知、评估、改进自身的 skill 库
|
|
26
|
+
|
|
27
|
+
核心能力:
|
|
28
|
+
1. **反馈收集**:用户对注入 skill 的有用性评分
|
|
29
|
+
2. **效果追踪**:检测 skill 是否被实际采纳(行为变化检测)
|
|
30
|
+
3. **主动推荐**:在合适时机主动建议用户保存新 skill
|
|
31
|
+
4. **质量迭代**:基于反馈自动改进 skill 内容
|
|
32
|
+
5. **跨会话聚合**:将多会话的学习结果合并为更强的 skill
|
|
33
|
+
|
|
34
|
+
---
|
|
35
|
+
|
|
36
|
+
## 架构设计
|
|
37
|
+
|
|
38
|
+
### 核心模块(新增)
|
|
39
|
+
|
|
40
|
+
```
|
|
41
|
+
src/hooks/learner/
|
|
42
|
+
├── [Phase 1 已有文件...]
|
|
43
|
+
│
|
|
44
|
+
├── feedback/ # 新增:反馈系统
|
|
45
|
+
│ ├── collector.ts # 反馈收集接口
|
|
46
|
+
│ ├── storage.ts # 反馈持久化
|
|
47
|
+
│ └── types.ts # 反馈类型定义
|
|
48
|
+
│
|
|
49
|
+
├── effectiveness/ # 新增:效果追踪
|
|
50
|
+
│ ├── tracker.ts # 行为变化检测
|
|
51
|
+
│ ├── adoption-detector.ts # Skill 采纳检测
|
|
52
|
+
│ └── types.ts
|
|
53
|
+
│
|
|
54
|
+
├── recommender/ # 新增:主动推荐
|
|
55
|
+
│ ├── engine.ts # 推荐决策引擎
|
|
56
|
+
│ ├── timing.ts # 推荐时机判断
|
|
57
|
+
│ └── formatter.ts # 推荐消息格式化
|
|
58
|
+
│
|
|
59
|
+
└── quality/ # 新增:质量迭代
|
|
60
|
+
├── improver.ts # Skill 内容改进
|
|
61
|
+
├── aggregator.ts # 跨会话聚合
|
|
62
|
+
└── types.ts
|
|
63
|
+
```
|
|
64
|
+
|
|
65
|
+
### 数据流
|
|
66
|
+
|
|
67
|
+
```
|
|
68
|
+
用户消息
|
|
69
|
+
↓
|
|
70
|
+
[Phase 1] 触发词匹配 → 被动注入
|
|
71
|
+
↓
|
|
72
|
+
助手响应
|
|
73
|
+
↓
|
|
74
|
+
[Phase 2] 效果追踪 → 采纳检测
|
|
75
|
+
↓
|
|
76
|
+
[Phase 2] 反馈收集 → 用户评分(可选)
|
|
77
|
+
↓
|
|
78
|
+
[Phase 2] 质量评估 → 更新 skill 置信度
|
|
79
|
+
↓
|
|
80
|
+
[Phase 2] 主动推荐 → 建议保存新 skill
|
|
81
|
+
↓
|
|
82
|
+
[Phase 2] 跨会话聚合 → 改进 skill 内容
|
|
83
|
+
```
|
|
84
|
+
|
|
85
|
+
---
|
|
86
|
+
|
|
87
|
+
## 模块详细设计
|
|
88
|
+
|
|
89
|
+
### 1. 反馈系统(`feedback/`)
|
|
90
|
+
|
|
91
|
+
**目标:** 收集用户对注入 skill 的有用性评分
|
|
92
|
+
|
|
93
|
+
**`collector.ts`**
|
|
94
|
+
```typescript
|
|
95
|
+
interface FeedbackRequest {
|
|
96
|
+
skillId: string;
|
|
97
|
+
skillName: string;
|
|
98
|
+
sessionId: string;
|
|
99
|
+
injectedAt: number;
|
|
100
|
+
context: string; // 注入时的用户消息摘要
|
|
101
|
+
}
|
|
102
|
+
|
|
103
|
+
interface FeedbackResponse {
|
|
104
|
+
skillId: string;
|
|
105
|
+
rating: 'helpful' | 'not_helpful' | 'partially_helpful';
|
|
106
|
+
comment?: string;
|
|
107
|
+
timestamp: number;
|
|
108
|
+
}
|
|
109
|
+
|
|
110
|
+
// 在助手响应后,如果注入了 skill,生成反馈请求
|
|
111
|
+
function generateFeedbackPrompt(request: FeedbackRequest): string;
|
|
112
|
+
|
|
113
|
+
// 解析用户的反馈响应
|
|
114
|
+
function parseFeedbackFromMessage(message: string): FeedbackResponse | null;
|
|
115
|
+
```
|
|
116
|
+
|
|
117
|
+
**`storage.ts`**
|
|
118
|
+
- 存储路径:`.omc/axiom/evolution/skill_feedback.json`
|
|
119
|
+
- 结构:`{ skillId: { ratings: [], averageScore: number, lastUpdated: string } }`
|
|
120
|
+
- 使用 `atomicWriteJson` 防止并发写入
|
|
121
|
+
|
|
122
|
+
**触发时机:**
|
|
123
|
+
- 注入 skill 后的第 2-3 条消息(给用户时间使用 skill)
|
|
124
|
+
- 每个 skill 每会话最多请求一次反馈
|
|
125
|
+
- 置信度 > 80% 的 skill 才请求反馈(避免噪音)
|
|
126
|
+
|
|
127
|
+
---
|
|
128
|
+
|
|
129
|
+
### 2. 效果追踪(`effectiveness/`)
|
|
130
|
+
|
|
131
|
+
**目标:** 无需用户主动反馈,自动检测 skill 是否被采纳
|
|
132
|
+
|
|
133
|
+
**`adoption-detector.ts`**
|
|
134
|
+
|
|
135
|
+
检测信号:
|
|
136
|
+
- **代码模式匹配**:助手响应中是否出现 skill 建议的代码模式
|
|
137
|
+
- **行为关键词**:响应中是否包含 skill 中的关键术语
|
|
138
|
+
- **问题解决**:用户后续消息是否表明问题已解决("谢谢"、"成功了"、"works")
|
|
139
|
+
|
|
140
|
+
```typescript
|
|
141
|
+
interface AdoptionSignal {
|
|
142
|
+
type: 'code_pattern' | 'keyword_match' | 'problem_solved' | 'user_confirmed';
|
|
143
|
+
confidence: number; // 0-100
|
|
144
|
+
evidence: string; // 具体证据
|
|
145
|
+
}
|
|
146
|
+
|
|
147
|
+
interface AdoptionResult {
|
|
148
|
+
skillId: string;
|
|
149
|
+
adopted: boolean;
|
|
150
|
+
signals: AdoptionSignal[];
|
|
151
|
+
overallConfidence: number;
|
|
152
|
+
}
|
|
153
|
+
|
|
154
|
+
function detectAdoption(
|
|
155
|
+
skillContent: string,
|
|
156
|
+
assistantResponse: string,
|
|
157
|
+
subsequentMessages: string[]
|
|
158
|
+
): AdoptionResult;
|
|
159
|
+
```
|
|
160
|
+
|
|
161
|
+
**`tracker.ts`**
|
|
162
|
+
- 维护会话内的 skill 注入记录
|
|
163
|
+
- 在每条助手响应后检测采纳信号
|
|
164
|
+
- 将采纳结果写入 `usage_metrics.json`(扩展 Phase 1 的 `UsageMetrics`)
|
|
165
|
+
|
|
166
|
+
---
|
|
167
|
+
|
|
168
|
+
### 3. 主动推荐引擎(`recommender/`)
|
|
169
|
+
|
|
170
|
+
**目标:** 在合适时机主动建议用户保存新 skill
|
|
171
|
+
|
|
172
|
+
**`timing.ts`** — 推荐时机判断
|
|
173
|
+
|
|
174
|
+
触发条件(AND 逻辑):
|
|
175
|
+
1. `auto-learner.ts` 检测到置信度 ≥ 70 的模式
|
|
176
|
+
2. 该模式在本会话出现 ≥ 2 次
|
|
177
|
+
3. 距上次推荐 ≥ 10 条消息(冷却)
|
|
178
|
+
4. 本会话推荐次数 < 3(避免打扰)
|
|
179
|
+
|
|
180
|
+
```typescript
|
|
181
|
+
interface RecommendationTiming {
|
|
182
|
+
shouldRecommend: boolean;
|
|
183
|
+
reason: string;
|
|
184
|
+
pattern: PatternDetection;
|
|
185
|
+
urgency: 'low' | 'medium' | 'high';
|
|
186
|
+
}
|
|
187
|
+
|
|
188
|
+
function evaluateRecommendationTiming(
|
|
189
|
+
state: AutoLearnerState,
|
|
190
|
+
sessionState: SessionDetectionState
|
|
191
|
+
): RecommendationTiming;
|
|
192
|
+
```
|
|
193
|
+
|
|
194
|
+
**`engine.ts`** — 推荐决策引擎
|
|
195
|
+
|
|
196
|
+
```typescript
|
|
197
|
+
interface SkillRecommendation {
|
|
198
|
+
pattern: PatternDetection;
|
|
199
|
+
suggestedName: string;
|
|
200
|
+
suggestedContent: string; // 预生成的 skill 内容草稿
|
|
201
|
+
targetScope: 'user' | 'project';
|
|
202
|
+
confidence: number;
|
|
203
|
+
}
|
|
204
|
+
|
|
205
|
+
// 生成 skill 推荐
|
|
206
|
+
function generateRecommendation(pattern: PatternDetection): SkillRecommendation;
|
|
207
|
+
|
|
208
|
+
// 用户确认后保存 skill
|
|
209
|
+
function saveRecommendedSkill(
|
|
210
|
+
recommendation: SkillRecommendation,
|
|
211
|
+
userApproved: boolean,
|
|
212
|
+
userEdits?: Partial<SkillRecommendation>
|
|
213
|
+
): Promise<string>; // 返回保存路径
|
|
214
|
+
```
|
|
215
|
+
|
|
216
|
+
**`formatter.ts`** — 推荐消息格式化
|
|
217
|
+
|
|
218
|
+
```typescript
|
|
219
|
+
// 生成向用户展示的推荐消息
|
|
220
|
+
function formatRecommendationMessage(rec: SkillRecommendation): string;
|
|
221
|
+
|
|
222
|
+
// 解析用户对推荐的响应(yes/no/edit)
|
|
223
|
+
function parseRecommendationResponse(message: string): {
|
|
224
|
+
action: 'save' | 'skip' | 'edit';
|
|
225
|
+
edits?: string;
|
|
226
|
+
};
|
|
227
|
+
```
|
|
228
|
+
|
|
229
|
+
---
|
|
230
|
+
|
|
231
|
+
### 4. 质量迭代(`quality/`)
|
|
232
|
+
|
|
233
|
+
**目标:** 基于反馈和采纳数据自动改进 skill 内容
|
|
234
|
+
|
|
235
|
+
**`improver.ts`** — Skill 内容改进
|
|
236
|
+
|
|
237
|
+
改进策略:
|
|
238
|
+
- **触发词优化**:基于实际触发场景,添加/删除触发词
|
|
239
|
+
- **内容精炼**:基于采纳模式,突出最有效的部分
|
|
240
|
+
- **示例更新**:用实际使用案例替换通用示例
|
|
241
|
+
|
|
242
|
+
```typescript
|
|
243
|
+
interface ImprovementSuggestion {
|
|
244
|
+
skillId: string;
|
|
245
|
+
type: 'trigger_update' | 'content_refinement' | 'example_update';
|
|
246
|
+
currentValue: string;
|
|
247
|
+
suggestedValue: string;
|
|
248
|
+
reason: string;
|
|
249
|
+
confidence: number;
|
|
250
|
+
}
|
|
251
|
+
|
|
252
|
+
function generateImprovements(
|
|
253
|
+
skill: LearnedSkill,
|
|
254
|
+
feedbackHistory: FeedbackResponse[],
|
|
255
|
+
adoptionHistory: AdoptionResult[]
|
|
256
|
+
): ImprovementSuggestion[];
|
|
257
|
+
|
|
258
|
+
// 应用改进(需用户确认或自动应用低风险改进)
|
|
259
|
+
function applyImprovement(
|
|
260
|
+
skillPath: string,
|
|
261
|
+
suggestion: ImprovementSuggestion,
|
|
262
|
+
autoApply: boolean
|
|
263
|
+
): Promise<void>;
|
|
264
|
+
```
|
|
265
|
+
|
|
266
|
+
**`aggregator.ts`** — 跨会话聚合
|
|
267
|
+
|
|
268
|
+
```typescript
|
|
269
|
+
interface AggregatedInsight {
|
|
270
|
+
pattern: string;
|
|
271
|
+
occurrences: number;
|
|
272
|
+
sessions: string[];
|
|
273
|
+
averageAdoptionRate: number;
|
|
274
|
+
suggestedSkillContent: string;
|
|
275
|
+
}
|
|
276
|
+
|
|
277
|
+
// 从多会话的 usage_metrics.json 聚合洞见
|
|
278
|
+
function aggregateInsights(directory: string): AggregatedInsight[];
|
|
279
|
+
|
|
280
|
+
// 将聚合洞见转化为 skill 改进建议
|
|
281
|
+
function insightsToImprovements(insights: AggregatedInsight[]): ImprovementSuggestion[];
|
|
282
|
+
```
|
|
283
|
+
|
|
284
|
+
---
|
|
285
|
+
|
|
286
|
+
## 集成点
|
|
287
|
+
|
|
288
|
+
### Hook 集成
|
|
289
|
+
|
|
290
|
+
**`UserPromptSubmit` hook(`skill-injector.mjs`)**
|
|
291
|
+
- 现有:触发词匹配 → 被动注入
|
|
292
|
+
- 新增:检查是否有待推荐的 skill → 附加推荐消息
|
|
293
|
+
|
|
294
|
+
**`PostToolUse` hook(新增 `skill-feedback.mjs`)**
|
|
295
|
+
- 在助手响应后触发
|
|
296
|
+
- 运行采纳检测
|
|
297
|
+
- 判断是否需要请求反馈
|
|
298
|
+
|
|
299
|
+
**`SessionEnd` hook(`session-reflector.ts`)**
|
|
300
|
+
- 现有:触发 Axiom 反思
|
|
301
|
+
- 新增:运行跨会话聚合,生成改进建议
|
|
302
|
+
|
|
303
|
+
### 配置扩展(`.omc-config.json`)
|
|
304
|
+
|
|
305
|
+
```json
|
|
306
|
+
{
|
|
307
|
+
"learner": {
|
|
308
|
+
"enabled": true,
|
|
309
|
+
"phase2": {
|
|
310
|
+
"feedbackEnabled": true,
|
|
311
|
+
"feedbackCooldownMessages": 3,
|
|
312
|
+
"recommendationEnabled": true,
|
|
313
|
+
"recommendationCooldownMessages": 10,
|
|
314
|
+
"maxRecommendationsPerSession": 3,
|
|
315
|
+
"autoImproveEnabled": false,
|
|
316
|
+
"adoptionDetectionEnabled": true
|
|
317
|
+
}
|
|
318
|
+
}
|
|
319
|
+
}
|
|
320
|
+
```
|
|
321
|
+
|
|
322
|
+
---
|
|
323
|
+
|
|
324
|
+
## 存储结构
|
|
325
|
+
|
|
326
|
+
```
|
|
327
|
+
.omc/axiom/evolution/
|
|
328
|
+
├── usage_metrics.json # Phase 1 已有,扩展采纳数据
|
|
329
|
+
├── skill_feedback.json # 新增:用户反馈记录
|
|
330
|
+
├── skill_adoption.json # 新增:采纳检测结果
|
|
331
|
+
├── recommendations.json # 新增:推荐历史
|
|
332
|
+
└── improvement_queue.json # 新增:待处理改进建议
|
|
333
|
+
```
|
|
334
|
+
|
|
335
|
+
---
|
|
336
|
+
|
|
337
|
+
## 实现优先级
|
|
338
|
+
|
|
339
|
+
### P0(核心功能,必须实现)
|
|
340
|
+
1. **反馈收集**(`feedback/collector.ts` + `storage.ts`)
|
|
341
|
+
2. **主动推荐引擎**(`recommender/engine.ts` + `timing.ts`)
|
|
342
|
+
3. **Hook 集成**(扩展 `skill-injector.mjs`,新增 `skill-feedback.mjs`)
|
|
343
|
+
|
|
344
|
+
### P1(重要功能)
|
|
345
|
+
4. **采纳检测**(`effectiveness/adoption-detector.ts`)
|
|
346
|
+
5. **触发词优化**(`quality/improver.ts` 的触发词部分)
|
|
347
|
+
6. **配置扩展**(`config.ts` 扩展)
|
|
348
|
+
|
|
349
|
+
### P2(增强功能)
|
|
350
|
+
7. **跨会话聚合**(`quality/aggregator.ts`)
|
|
351
|
+
8. **内容精炼**(`quality/improver.ts` 的内容部分)
|
|
352
|
+
9. **效果仪表盘**(`/ultrapower:learner` skill 扩展)
|
|
353
|
+
|
|
354
|
+
---
|
|
355
|
+
|
|
356
|
+
## 风险与约束
|
|
357
|
+
|
|
358
|
+
| 风险 | 影响 | 缓解策略 |
|
|
359
|
+
|------|------|---------|
|
|
360
|
+
| 反馈请求打扰用户 | 高 | 严格冷却时间 + 每会话上限 |
|
|
361
|
+
| 采纳检测误报 | 中 | 多信号 AND 逻辑,高置信度阈值 |
|
|
362
|
+
| 自动改进破坏 skill | 高 | 默认关闭自动改进,需用户确认 |
|
|
363
|
+
| 存储文件过大 | 低 | 定期清理 + 条目上限 |
|
|
364
|
+
| Hook 性能影响 | 中 | 异步处理,3s 超时保护 |
|
|
365
|
+
|
|
366
|
+
---
|
|
367
|
+
|
|
368
|
+
## 验收标准
|
|
369
|
+
|
|
370
|
+
- [ ] 用户注入 skill 后,系统能在适当时机请求反馈
|
|
371
|
+
- [ ] 反馈数据正确持久化到 `skill_feedback.json`
|
|
372
|
+
- [ ] 系统能检测到 skill 被采纳的信号(≥ 70% 准确率)
|
|
373
|
+
- [ ] 当模式置信度 ≥ 70 且出现 ≥ 2 次时,系统主动推荐保存 skill
|
|
374
|
+
- [ ] 用户确认后,推荐的 skill 正确保存到 `.omc/skills/`
|
|
375
|
+
- [ ] 所有新功能可通过配置独立开关
|
|
376
|
+
- [ ] 新增代码通过 `npm test` 和 `tsc --noEmit`
|
|
377
|
+
- [ ] 不破坏 Phase 1 的任何现有功能
|
|
@@ -173,7 +173,58 @@ npm test # 所有测试通过
|
|
|
173
173
|
|
|
174
174
|
---
|
|
175
175
|
|
|
176
|
-
## 6.
|
|
176
|
+
## 6. 版本与分支管理
|
|
177
|
+
|
|
178
|
+
### 6.1 动态版本读取模式
|
|
179
|
+
|
|
180
|
+
`src/installer/index.ts` 使用 `getRuntimePackageVersion()` 从 `package.json` 动态读取版本号,无需硬编码 `VERSION` 常量。
|
|
181
|
+
|
|
182
|
+
**推荐模式:**
|
|
183
|
+
|
|
184
|
+
```typescript
|
|
185
|
+
// ✅ 动态读取(推荐)
|
|
186
|
+
import { getRuntimePackageVersion } from '../lib/version';
|
|
187
|
+
const version = getRuntimePackageVersion(); // 从 package.json 读取
|
|
188
|
+
|
|
189
|
+
// ❌ 硬编码(不推荐)
|
|
190
|
+
export const VERSION = '5.1.0'; // 发布时容易遗漏更新
|
|
191
|
+
```
|
|
192
|
+
|
|
193
|
+
**优势:** 发布时只需更新 `package.json`,所有使用 `getRuntimePackageVersion()` 的模块自动跟随,无需逐一同步。
|
|
194
|
+
|
|
195
|
+
**适用场景:** 新模块需要读取当前版本时,优先使用 `getRuntimePackageVersion()` 而非硬编码常量。
|
|
196
|
+
|
|
197
|
+
### 6.2 特性分支生命周期
|
|
198
|
+
|
|
199
|
+
特性分支合并后必须及时清理,避免积累过时分支。
|
|
200
|
+
|
|
201
|
+
**正确时序:**
|
|
202
|
+
|
|
203
|
+
```
|
|
204
|
+
PR merge → 删除特性分支(本地 + 远程)→ dev 同步到 main(发布时)→ main 同步回 dev
|
|
205
|
+
```
|
|
206
|
+
|
|
207
|
+
**操作命令:**
|
|
208
|
+
|
|
209
|
+
```bash
|
|
210
|
+
# PR 合并后删除远程分支(GitHub 可配置自动删除)
|
|
211
|
+
git push origin --delete feat/my-feature
|
|
212
|
+
|
|
213
|
+
# 删除本地分支
|
|
214
|
+
git branch -d feat/my-feature
|
|
215
|
+
|
|
216
|
+
# 确认清理完成
|
|
217
|
+
git branch -a | grep feat/my-feature # 应无输出
|
|
218
|
+
```
|
|
219
|
+
|
|
220
|
+
**规则:**
|
|
221
|
+
- PR merge 后 24 小时内删除对应特性分支
|
|
222
|
+
- 禁止在已合并的特性分支上继续开发
|
|
223
|
+
- 发布完成后:`dev` → `main`(tag + push),然后 `main` → `dev`(同步)
|
|
224
|
+
|
|
225
|
+
---
|
|
226
|
+
|
|
227
|
+
## 7. PR 提交流程
|
|
177
228
|
|
|
178
229
|
```bash
|
|
179
230
|
# 1. 确保基于最新 dev
|