openfeel 1.0.0 → 1.0.2

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.
@@ -230,107 +230,107 @@ description: 标准化 Bug 验收流程,供测试 Agent 或代码 Agent(自
230
230
 
231
231
  验收通过后,核心结论写入 \`.openfeel/bugs/{module}.md\`,并在公共日志简要记录。
232
232
  `,
233
- 'check-kb': `---
234
- name: check-kb
235
- description: 渐进式查阅 .openfeel/kb/ 项目知识库,按当前任务需求返回最相关的参考信息。精确匹配无结果时自动触发语义检索回退,避免一次加载全量内容。
236
- ---
237
-
238
- # 查阅知识库
239
-
240
- ## 输入
241
-
242
- 无(自动按当前任务上下文推断阅读范围)
243
-
244
- ## 执行步骤
245
-
246
- ### 1. 读取总索引
247
-
248
- 读取 \`.openfeel/kb/index.md\`,获取所有分类文件的摘要和最近更新时间。
249
-
250
- ### 2. 匹配相关分类
251
-
252
- 根据当前任务特征,确定需要查阅的分类:
253
-
254
- | 任务特征 | 优先查阅 |
255
- |----------|----------|
256
- | 新功能开发、架构变更 | \`architecture.md\` |
257
- | 代码编写、重构 | \`patterns.md\` |
258
- | 编译/运行报错 | \`troubleshooting.md\` |
259
- | 环境搭建、依赖变更 | \`setup.md\` |
260
- | 跨领域任务或不熟悉模块 | 全部 \`index.md\` 摘要 |
261
-
262
- ### 3. 提取相关条目
263
-
264
- 读取匹配的分类文件,提取与当前任务相关的 \`[+]\` 条目。不加载标记为 \`[-]\` 的已禁用条目。
265
-
266
- ### 4. 输出摘要
267
-
268
- 按以下格式输出:
269
-
270
- \`\`\`
271
- 📁 知识库查阅结果({分类})
272
-
273
- [index.md 中的分类摘要]
274
-
275
- 相关条目:
276
- - [architecture] "登录流程使用 OAuth2..." — 与当前任务相关:是
277
- - [troubleshooting] "Module not found 时运行 npm ci" — 与当前任务相关:否
278
- \`\`\`
279
-
280
- 若无相关条目,输出:\`知识库中暂无与当前任务相关的记录。\`
281
-
282
- ### 5. 语义检索回退(自动)
283
-
284
- 当精确匹配未找到任何相关条目(无 \`[+]\` 条目或所有条目与当前任务无关)时,**本技能自行执行语义检索**,无需调用方另行加载 \`search-kb\`:
285
-
286
- 1. **索引就绪检查**:检查 \`.openfeel/tmp/vectors/index.json\` 是否存在
287
- 2. **索引缺失时**:输出以下提示后结束,不再继续回退:
288
- \`\`\`
289
- 💡 精确匹配未找到相关条目,语义检索的向量索引尚未构建。
290
-
291
- 运行以下命令构建索引后再重试:
292
- pip install sentence-transformers
293
- python scripts/build_kb_index.py
294
- \`\`\`
295
- 3. **索引就绪时**:从当前任务上下文中提取关键词和需求描述,构造查询文本,执行:
296
- \`\`\`
297
- python scripts/search_kb.py "<查询文本>" --top-k 10 --verbose
298
- \`\`\`
299
- 4. **解析并输出**:将检索结果格式化输出:
300
-
301
- \`\`\`
302
- 💡 精确匹配未找到相关条目,已自动回退到语义检索。
303
-
304
- 🔍 语义检索结果(共 {N} 条)
305
-
306
- #{1} [{分类}] {条目标题}
307
- 文件: {分类}.md | 得分: {score}
308
- 内容: {摘要}
309
-
310
- #{2} ...
311
- \`\`\`
312
-
313
- 5. **低分提示**:若所有结果得分均低于 0.3,追加提示:
314
- \`\`\`
315
- ⚠️ 所有语义检索结果得分均低于 0.3,建议优化查询词或确认知识库覆盖范围。
316
- \`\`\`
317
-
318
- 6. **索引过期提示**:检索完成后追加:
319
- \`\`\`
320
- 💡 如需确保索引为最新,可运行: python scripts/build_kb_index.py --dry-run
321
- \`\`\`
322
-
323
- > 注:语义检索是 \`check-kb\` 的内置回退能力。调用方只需 \`skill("check-kb")\` 一次,无需再手动调用 \`search-kb\`。
324
-
325
- ### 6. 强制检索标记
326
-
327
- Skill 加载后,根据步骤 3 的匹配结果决定是否追加提示:
328
-
329
- - **若步骤 3 找到 ≥1 条相关条目**:在返回内容末尾追加以下提示:
330
- > ⚠️ 执行任务前,若知识库中有相关条目,务必参考。重复踩过的坑不可再犯。
331
- 此提示确保 Agent 不会跳过知识库查询直接编码。
332
-
333
- - **若步骤 3 无相关条目**:不追加强制提示,静默返回(已在步骤 4 输出"知识库中暂无相关记录,可继续执行")。
233
+ 'check-kb': `---
234
+ name: check-kb
235
+ description: 渐进式查阅 .openfeel/kb/ 项目知识库,按当前任务需求返回最相关的参考信息。精确匹配无结果时自动触发语义检索回退,避免一次加载全量内容。
236
+ ---
237
+
238
+ # 查阅知识库
239
+
240
+ ## 输入
241
+
242
+ 无(自动按当前任务上下文推断阅读范围)
243
+
244
+ ## 执行步骤
245
+
246
+ ### 1. 读取总索引
247
+
248
+ 读取 \`.openfeel/kb/index.md\`,获取所有分类文件的摘要和最近更新时间。
249
+
250
+ ### 2. 匹配相关分类
251
+
252
+ 根据当前任务特征,确定需要查阅的分类:
253
+
254
+ | 任务特征 | 优先查阅 |
255
+ |----------|----------|
256
+ | 新功能开发、架构变更 | \`architecture.md\` |
257
+ | 代码编写、重构 | \`patterns.md\` |
258
+ | 编译/运行报错 | \`troubleshooting.md\` |
259
+ | 环境搭建、依赖变更 | \`setup.md\` |
260
+ | 跨领域任务或不熟悉模块 | 全部 \`index.md\` 摘要 |
261
+
262
+ ### 3. 提取相关条目
263
+
264
+ 读取匹配的分类文件,提取与当前任务相关的 \`[+]\` 条目。不加载标记为 \`[-]\` 的已禁用条目。
265
+
266
+ ### 4. 输出摘要
267
+
268
+ 按以下格式输出:
269
+
270
+ \`\`\`
271
+ 📁 知识库查阅结果({分类})
272
+
273
+ [index.md 中的分类摘要]
274
+
275
+ 相关条目:
276
+ - [architecture] "登录流程使用 OAuth2..." — 与当前任务相关:是
277
+ - [troubleshooting] "Module not found 时运行 npm ci" — 与当前任务相关:否
278
+ \`\`\`
279
+
280
+ 若无相关条目,输出:\`知识库中暂无与当前任务相关的记录。\`
281
+
282
+ ### 5. 语义检索回退(自动)
283
+
284
+ 当精确匹配未找到任何相关条目(无 \`[+]\` 条目或所有条目与当前任务无关)时,**本技能自行执行语义检索**,无需调用方另行加载 \`search-kb\`:
285
+
286
+ 1. **索引就绪检查**:检查 \`.openfeel/tmp/vectors/index.json\` 是否存在
287
+ 2. **索引缺失时**:输出以下提示后结束,不再继续回退:
288
+ \`\`\`
289
+ 💡 精确匹配未找到相关条目,语义检索的向量索引尚未构建。
290
+
291
+ 运行以下命令构建索引后再重试:
292
+ pip install sentence-transformers
293
+ python scripts/build_kb_index.py
294
+ \`\`\`
295
+ 3. **索引就绪时**:从当前任务上下文中提取关键词和需求描述,构造查询文本,执行:
296
+ \`\`\`
297
+ python scripts/search_kb.py "<查询文本>" --top-k 10 --verbose
298
+ \`\`\`
299
+ 4. **解析并输出**:将检索结果格式化输出:
300
+
301
+ \`\`\`
302
+ 💡 精确匹配未找到相关条目,已自动回退到语义检索。
303
+
304
+ 🔍 语义检索结果(共 {N} 条)
305
+
306
+ #{1} [{分类}] {条目标题}
307
+ 文件: {分类}.md | 得分: {score}
308
+ 内容: {摘要}
309
+
310
+ #{2} ...
311
+ \`\`\`
312
+
313
+ 5. **低分提示**:若所有结果得分均低于 0.3,追加提示:
314
+ \`\`\`
315
+ ⚠️ 所有语义检索结果得分均低于 0.3,建议优化查询词或确认知识库覆盖范围。
316
+ \`\`\`
317
+
318
+ 6. **索引过期提示**:检索完成后追加:
319
+ \`\`\`
320
+ 💡 如需确保索引为最新,可运行: python scripts/build_kb_index.py --dry-run
321
+ \`\`\`
322
+
323
+ > 注:语义检索是 \`check-kb\` 的内置回退能力。调用方只需 \`skill("check-kb")\` 一次,无需再手动调用 \`search-kb\`。
324
+
325
+ ### 6. 强制检索标记
326
+
327
+ Skill 加载后,根据步骤 3 的匹配结果决定是否追加提示:
328
+
329
+ - **若步骤 3 找到 ≥1 条相关条目**:在返回内容末尾追加以下提示:
330
+ > ⚠️ 执行任务前,若知识库中有相关条目,务必参考。重复踩过的坑不可再犯。
331
+ 此提示确保 Agent 不会跳过知识库查询直接编码。
332
+
333
+ - **若步骤 3 无相关条目**:不追加强制提示,静默返回(已在步骤 4 输出"知识库中暂无相关记录,可继续执行")。
334
334
  `,
335
335
  'get-bugs': `---
336
336
  name: get-bugs
@@ -369,132 +369,132 @@ description: 获取当前模块下状态为 open 或 fixing 的 Bug 列表,供
369
369
 
370
370
  输出:\`模块 [模块名] 当前无待处理 Bug。\`
371
371
  `,
372
- 'get-stage-status': `---
373
- name: get-stage-status
374
- description: 读取 .openfeel/plan/{stage}/status.md,判断当前子计划状态、责任 Agent、是否允许自动推进以及下一步建议。用于 Reviewer/Executor/Feel Tester 在处理阶段任务前确认流程状态。
375
- ---
376
-
377
- # 获取子计划状态
378
-
379
- ## 输入
380
-
381
- - 计划阶段名 \`{stage}\`(如 \`stage01\`、\`auth-login\`)
382
- - 若用户未提供阶段名,先读取 \`.openfeel/plan/index.md\` 查找当前活跃阶段;仍不明确时询问用户
383
-
384
- ## 执行步骤
385
-
386
- ### 0. 读取全局配置
387
-
388
- 读取 \`.openfeel/config.yaml\`,解析 \`defaults\` 中的 \`execution_mode\`、\`auto_advance\`、\`test_enabled\`、\`merge_mode\`。
389
-
390
- ### 1. 定位状态文件
391
-
392
- 读取 \`.openfeel/plan/{stage}/status.md\`。
393
-
394
- 若文件不存在:
395
- - 不要自行进入自动流程。
396
- - 返回 \`missing_status\`,提示需要 Architect 先创建状态文件。
397
-
398
- ### 2. 提取字段
399
-
400
- 解析以下字段:
401
-
402
- - \`执行模式\`
403
- - \`自动推进\`
404
- - \`状态\`
405
- - \`当前责任 Agent\`
406
- - \`上一责任 Agent\`
407
- - \`更新时间\`
408
- - \`当前任务\`
409
- - \`阻塞 / 暂停原因\`
410
- - \`前置依赖\`
411
- - \`依赖状态\`
412
-
413
- ### 3. 依赖就绪检查
414
-
415
- 若 \`status.md\` 中存在 \`前置依赖\` 字段且不为 \`无\`:
416
-
417
- 1. 读取 \`.openfeel/plan/deps.yaml\`,查找当前阶段的 \`depends_on\` 列表。
418
- 2. 对每条依赖检查其阶段状态:
419
- - \`type: hard\` 且依赖阶段状态为 \`done\` → 已满足
420
- - \`type: hard\` 且依赖阶段状态非 \`done\` → 未满足,阻塞
421
- - \`type: soft\` 且依赖阶段状态为 \`done\` → 已满足
422
- - \`type: soft\` 且依赖阶段状态非 \`done\` → 弱阻塞(警告但可启动)
423
- - \`type: mutual_exclusion\` 且依赖阶段状态为 \`done\` → 已满足
424
- - \`type: mutual_exclusion\` 且依赖阶段状态非 \`done\` → 阻塞,必须等待
425
- 3. 综合判断 \`deps_satisfied\`:
426
- - 所有 \`hard\` 和 \`mutual_exclusion\` 依赖满足 → \`true\`
427
- - 任一 \`hard\` 或 \`mutual_exclusion\` 依赖未满足 → \`false\`
428
- 4. 若 \`deps.yaml\` 不存在,视为无依赖声明,\`deps_satisfied = true\`。
429
-
430
- ### 4. 并行候选检测
431
-
432
- 当 \`deps_satisfied = true\` 时:
433
-
434
- 1. 读取所有阶段的 \`status.md\`,筛选满足以下条件的阶段:
435
- - \`deps_satisfied = true\`(本 Skill 递归判断)
436
- - \`状态\` 为 \`ready_for_code\` 或 \`auto_running\`
437
- - \`自动推进\` 为 \`enabled\`(若 status.md 未填则回退到 config.yaml \`auto_advance\`)
438
- 2. 收集为 \`parallel_candidates\` 列表,供 Feel 批量调度执行。
439
-
440
- ### 5. 判断自动推进资格
441
-
442
- **字段回退**:若 \`status.md\` 未填写 \`执行模式\` 或 \`自动推进\`,从 \`.openfeel/config.yaml\` \`defaults\` 中读取对应值。
443
-
444
- **测试状态排除**:若 \`.openfeel/config.yaml\` 中 \`test_enabled=false\`,则以下测试链路状态视为已禁用,不参与自动推进:
445
- - \`ready_for_test\`、\`test_writing\`、\`testing\`、\`bug_found\`、\`bug_fixing\`
446
- - 当前处于上述任一状态时,建议直接切换至 \`done\`(跳过测试链路)
447
- - \`review_passed\` 在 \`test_enabled=false\` 时等价于 \`done\`
448
-
449
- 只有同时满足以下条件才返回 \`can_auto_continue = true\`:
450
-
451
- - \`执行模式\` 为 \`auto\`
452
- - \`自动推进\` 为 \`enabled\`
453
- - \`状态\` 不是 \`done\` 或 \`paused\`
454
- - \`当前责任 Agent\` 不是 \`user\`
455
- - \`依赖状态\` 不为 \`blocked\`(所有 hard 依赖必须满足)
456
-
457
- 否则返回 \`can_auto_continue = false\`,并说明原因。
458
-
459
- ### 6. 输出格式
460
-
461
- \`\`\`markdown
462
- ## 子计划状态
463
-
464
- - 阶段:{stage}
465
- - 执行模式:manual | auto
466
- - 自动推进:disabled | enabled
467
- - 状态:{status}
468
- - 当前责任 Agent:{agent}
469
- - 前置依赖:{依赖列表 或 无}
470
- - 依赖就绪:true | false
471
- - 可自动推进:true | false
472
- - 阻塞原因:{reason 或 无}
473
-
474
- ## 并行候选
475
- {若依赖就绪且可自动推进,列出同批次可并行启动的其他阶段}
476
-
477
- ## 下一步建议
478
- {根据状态给出下一步,例如:启动 Code、等待用户、启动 Tester、停止流程;若存在并行候选则建议批量启动}
479
- \`\`\`
480
-
481
- ## 状态到下一步映射
482
-
483
- | 状态 | 下一步建议 |
484
- |------|------------|
485
- | \`planned\` | 等待用户确认或 Planner 细化计划 |
486
- | \`ready_for_code\` | Planner 可启动 Executor |
487
- | \`coding\` | Executor 正在开发 |
488
- | \`ready_for_review\` | Executor 可启动 Reviewer 审查,或等待用户触发 |
489
- | \`review_failed\` | Reviewer 可启动 Executor 修复审查问题 |
490
- | \`review_passed\` | Feel 可推进到 ready_for_test |
491
- | \`ready_for_test\` | Feel 可启动 Feel Tester |
492
- | \`test_writing\` | Feel Tester 正在写测试 |
493
- | \`testing\` | Feel Tester 正在测试 |
494
- | \`bug_found\` | Feel Tester 可启动 Executor 修复 Bug |
495
- | \`bug_fixing\` | Executor 正在修复 Bug |
496
- | \`done\` | 流程完成,停止 |
497
- | \`paused\` | 等待用户处理暂停原因 |
372
+ 'get-stage-status': `---
373
+ name: get-stage-status
374
+ description: 读取 .openfeel/plan/{stage}/status.md,判断当前子计划状态、责任 Agent、是否允许自动推进以及下一步建议。用于 Reviewer/Executor/Feel Tester 在处理阶段任务前确认流程状态。
375
+ ---
376
+
377
+ # 获取子计划状态
378
+
379
+ ## 输入
380
+
381
+ - 计划阶段名 \`{stage}\`(如 \`stage01\`、\`auth-login\`)
382
+ - 若用户未提供阶段名,先读取 \`.openfeel/plan/index.md\` 查找当前活跃阶段;仍不明确时询问用户
383
+
384
+ ## 执行步骤
385
+
386
+ ### 0. 读取全局配置
387
+
388
+ 读取 \`.openfeel/config.yaml\`,解析 \`defaults\` 中的 \`execution_mode\`、\`auto_advance\`、\`test_enabled\`、\`merge_mode\`。
389
+
390
+ ### 1. 定位状态文件
391
+
392
+ 读取 \`.openfeel/plan/{stage}/status.md\`。
393
+
394
+ 若文件不存在:
395
+ - 不要自行进入自动流程。
396
+ - 返回 \`missing_status\`,提示需要 Architect 先创建状态文件。
397
+
398
+ ### 2. 提取字段
399
+
400
+ 解析以下字段:
401
+
402
+ - \`执行模式\`
403
+ - \`自动推进\`
404
+ - \`状态\`
405
+ - \`当前责任 Agent\`
406
+ - \`上一责任 Agent\`
407
+ - \`更新时间\`
408
+ - \`当前任务\`
409
+ - \`阻塞 / 暂停原因\`
410
+ - \`前置依赖\`
411
+ - \`依赖状态\`
412
+
413
+ ### 3. 依赖就绪检查
414
+
415
+ 若 \`status.md\` 中存在 \`前置依赖\` 字段且不为 \`无\`:
416
+
417
+ 1. 读取 \`.openfeel/plan/deps.yaml\`,查找当前阶段的 \`depends_on\` 列表。
418
+ 2. 对每条依赖检查其阶段状态:
419
+ - \`type: hard\` 且依赖阶段状态为 \`done\` → 已满足
420
+ - \`type: hard\` 且依赖阶段状态非 \`done\` → 未满足,阻塞
421
+ - \`type: soft\` 且依赖阶段状态为 \`done\` → 已满足
422
+ - \`type: soft\` 且依赖阶段状态非 \`done\` → 弱阻塞(警告但可启动)
423
+ - \`type: mutual_exclusion\` 且依赖阶段状态为 \`done\` → 已满足
424
+ - \`type: mutual_exclusion\` 且依赖阶段状态非 \`done\` → 阻塞,必须等待
425
+ 3. 综合判断 \`deps_satisfied\`:
426
+ - 所有 \`hard\` 和 \`mutual_exclusion\` 依赖满足 → \`true\`
427
+ - 任一 \`hard\` 或 \`mutual_exclusion\` 依赖未满足 → \`false\`
428
+ 4. 若 \`deps.yaml\` 不存在,视为无依赖声明,\`deps_satisfied = true\`。
429
+
430
+ ### 4. 并行候选检测
431
+
432
+ 当 \`deps_satisfied = true\` 时:
433
+
434
+ 1. 读取所有阶段的 \`status.md\`,筛选满足以下条件的阶段:
435
+ - \`deps_satisfied = true\`(本 Skill 递归判断)
436
+ - \`状态\` 为 \`ready_for_code\` 或 \`auto_running\`
437
+ - \`自动推进\` 为 \`enabled\`(若 status.md 未填则回退到 config.yaml \`auto_advance\`)
438
+ 2. 收集为 \`parallel_candidates\` 列表,供 Feel 批量调度执行。
439
+
440
+ ### 5. 判断自动推进资格
441
+
442
+ **字段回退**:若 \`status.md\` 未填写 \`执行模式\` 或 \`自动推进\`,从 \`.openfeel/config.yaml\` \`defaults\` 中读取对应值。
443
+
444
+ **测试状态排除**:若 \`.openfeel/config.yaml\` 中 \`test_enabled=false\`,则以下测试链路状态视为已禁用,不参与自动推进:
445
+ - \`ready_for_test\`、\`test_writing\`、\`testing\`、\`bug_found\`、\`bug_fixing\`
446
+ - 当前处于上述任一状态时,建议直接切换至 \`done\`(跳过测试链路)
447
+ - \`review_passed\` 在 \`test_enabled=false\` 时等价于 \`done\`
448
+
449
+ 只有同时满足以下条件才返回 \`can_auto_continue = true\`:
450
+
451
+ - \`执行模式\` 为 \`auto\`
452
+ - \`自动推进\` 为 \`enabled\`
453
+ - \`状态\` 不是 \`done\` 或 \`paused\`
454
+ - \`当前责任 Agent\` 不是 \`user\`
455
+ - \`依赖状态\` 不为 \`blocked\`(所有 hard 依赖必须满足)
456
+
457
+ 否则返回 \`can_auto_continue = false\`,并说明原因。
458
+
459
+ ### 6. 输出格式
460
+
461
+ \`\`\`markdown
462
+ ## 子计划状态
463
+
464
+ - 阶段:{stage}
465
+ - 执行模式:manual | auto
466
+ - 自动推进:disabled | enabled
467
+ - 状态:{status}
468
+ - 当前责任 Agent:{agent}
469
+ - 前置依赖:{依赖列表 或 无}
470
+ - 依赖就绪:true | false
471
+ - 可自动推进:true | false
472
+ - 阻塞原因:{reason 或 无}
473
+
474
+ ## 并行候选
475
+ {若依赖就绪且可自动推进,列出同批次可并行启动的其他阶段}
476
+
477
+ ## 下一步建议
478
+ {根据状态给出下一步,例如:启动 Code、等待用户、启动 Tester、停止流程;若存在并行候选则建议批量启动}
479
+ \`\`\`
480
+
481
+ ## 状态到下一步映射
482
+
483
+ | 状态 | 下一步建议 |
484
+ |------|------------|
485
+ | \`planned\` | 等待用户确认或 Planner 细化计划 |
486
+ | \`ready_for_code\` | Planner 可启动 Executor |
487
+ | \`coding\` | Executor 正在开发 |
488
+ | \`ready_for_review\` | Executor 可启动 Reviewer 审查,或等待用户触发 |
489
+ | \`review_failed\` | Reviewer 可启动 Executor 修复审查问题 |
490
+ | \`review_passed\` | Feel 可推进到 ready_for_test |
491
+ | \`ready_for_test\` | Feel 可启动 Feel Tester |
492
+ | \`test_writing\` | Feel Tester 正在写测试 |
493
+ | \`testing\` | Feel Tester 正在测试 |
494
+ | \`bug_found\` | Feel Tester 可启动 Executor 修复 Bug |
495
+ | \`bug_fixing\` | Executor 正在修复 Bug |
496
+ | \`done\` | 流程完成,停止 |
497
+ | \`paused\` | 等待用户处理暂停原因 |
498
498
  `,
499
499
  'health': `---
500
500
  name: health
@@ -827,129 +827,129 @@ description: 加载项目路线图,供 Agent 查看版本规划和里程碑。
827
827
 
828
828
  格式化路线图摘要:版本清单 + 各版本阶段进度
829
829
  `,
830
- 'search-kb': `---
831
- name: search-kb
832
- description: 语义检索 .openfeel/kb/ 项目知识库。当精确匹配无结果或任务描述模糊时,通过向量相似度搜索语义相关的知识条目。支持图谱遍历返回关联条目。
833
- ---
834
-
835
- # 语义检索知识库
836
-
837
- ## 输入
838
-
839
- - \`query\`(必需):查询文本,描述当前任务需求、遇到的问题或想要查找的知识点。
840
- - \`top_k\`(可选):返回结果数量,默认 10。
841
- - \`min_score\`(可选):最低分数阈值,默认 0.1。分数低于此值的结果将被过滤。
842
-
843
- ## 前置条件
844
-
845
- - 向量索引已构建(运行 \`python scripts/build_kb_index.py\`)
846
- - 已安装 \`sentence-transformers\`(\`pip install sentence-transformers\`)
847
- - 索引文件 \`.openfeel/tmp/vectors/index.json\` 存在
848
- - (可选)图谱已构建(运行 \`python scripts/build_kb_index.py --graph\`),用于返回关联条目
849
-
850
- ## 执行步骤
851
-
852
- ### 1. 检查索引就绪
853
-
854
- 确认 \`.openfeel/tmp/vectors/index.json\` 文件存在。若不存在,拒绝执行并提示先运行 \`build_kb_index.py\`。
855
-
856
- ### 2. 执行语义检索
857
-
858
- 执行 \`python scripts/search_kb.py "<query>" --top-k <top_k> --min-score <min_score> --verbose\`。
859
-
860
- ### 3. 解析结果
861
-
862
- 输出格式化的检索结果摘要:
863
-
864
- \`\`\`
865
- 🔍 语义检索结果(共 {N} 条)
866
-
867
- #{1} [architecture] OAuth2 登录流程设计
868
- 文件: architecture.md | 得分: 0.87
869
- 内容: 采用 Authorization Code Grant 流程...
870
-
871
- #{2} [patterns] 状态机模式使用约定
872
- 文件: patterns.md | 得分: 0.72
873
- 内容: 项目中所有状态流转统一使用 Switch + Enum...
874
- \`\`\`
875
-
876
- ### 4. 图谱遍历(关联条目发现)
877
-
878
- 当查询命中条目后,若 \`.openfeel/tmp/graph.json\` 存在且命中条目在其中,按以下步骤执行图谱遍历:
879
-
880
- #### 4.1 一度关联(直接关联)
881
-
882
- 读取 \`graph.json\`,查找命中条目的所有**直接引用**和**被直接引用**的条目:
883
-
884
- \`\`\`
885
- 🔗 一度关联条目(直接关联)
886
-
887
- 引用 → {N} 个条目:[[条目A]]、[[条目B]]
888
- 被引用 ← {M} 个条目:[[条目C]]
889
- \`\`\`
890
-
891
- #### 4.2 二度关联(间接关联)
892
-
893
- 在一度关联的基础上,再展开一层,返回间接关联的条目:
894
-
895
- \`\`\`
896
- 🔗🔗 二度关联条目(间接关联)
897
-
898
- 引用 → [[条目D]](经由 [[条目A]])
899
- 被引用 ← [[条目E]](经由 [[条目C]])
900
- \`\`\`
901
-
902
- 二度关联按"经由哪个一度节点"分组展示,便于理解关联路径。
903
-
904
- #### 4.3 遍历实现
905
-
906
- 执行 \`python scripts/kb_graph.py --from "<命中条目标题>" --depth 2\`,解析子图输出提取关联节点和边。
907
-
908
- ### 5. 智能解读
909
-
910
- 结合当前任务上下文解读检索结果:
911
- - 标注与当前任务高度相关的条目
912
- - 标注可能需要进一步查阅的条目
913
- - 若所有结果得分均低于 0.3,建议用户优化查询词或确认知识库覆盖范围
914
- - 若图谱返回的关联条目与检索结果重叠,合并去重并标注来源(语义匹配 / 图谱关联)
915
-
916
- ## 输出格式
917
-
918
- \`\`\`
919
- ## 语义检索结果
920
-
921
- 查询: "{query}"
922
- 结果数: {N}
923
-
924
- {格式化结果列表}
925
-
926
- ## 关联条目(图遍历)
927
-
928
- {一度关联条目列表}
929
-
930
- {二度关联条目列表}
931
-
932
- ### 解读
933
- - 相关条目(得分 ≥ 0.5): {count} 条,可直接参考
934
- - 弱相关条目(0.3 ≤ 得分 < 0.5): {count} 条,建议进一步确认
935
- - 低相关条目(得分 < 0.3): {count} 条,可能不适用
936
- - 图关联条目(未被语义检索命中): {count} 条
937
- \`\`\`
938
-
939
- ## 参数扩展
940
-
941
- 新增可选参数:
942
-
943
- - \`--with-graph\`:启用图谱遍历返回关联条目(默认启用,若 graph.json 不可用则静默跳过)
944
- - \`--graph-depth\`:图谱遍历深度,1=一度关联,2=二度关联(默认: 2)
945
-
946
- ## 注意事项
947
-
948
- - 向量索引是缓存层,文件系统始终是 single source of truth。若检索结果与预期不符,检查索引是否过期(运行 \`--dry-run\` 查看变更文件)
949
- - 图谱链接亦是缓存层,Markdown 文件中 \`[[wikilink]]\` 是真实数据源;图谱可随时通过 \`python scripts/build_kb_index.py --graph\` 重建
950
- - 语义检索适合模糊查询和探索性搜索,精确关键词匹配优先使用 \`check-kb\`
951
- - 此技能是 \`check-kb\` 的回退方案——当 \`check-kb\` 精确匹配无结果时可自动调用
952
- - 图遍历返回的关联条目仅基于已建立的 wikilink 链接,若条目未引用或被引用其他条目,图谱中不会出现对应关联
830
+ 'search-kb': `---
831
+ name: search-kb
832
+ description: 语义检索 .openfeel/kb/ 项目知识库。当精确匹配无结果或任务描述模糊时,通过向量相似度搜索语义相关的知识条目。支持图谱遍历返回关联条目。
833
+ ---
834
+
835
+ # 语义检索知识库
836
+
837
+ ## 输入
838
+
839
+ - \`query\`(必需):查询文本,描述当前任务需求、遇到的问题或想要查找的知识点。
840
+ - \`top_k\`(可选):返回结果数量,默认 10。
841
+ - \`min_score\`(可选):最低分数阈值,默认 0.1。分数低于此值的结果将被过滤。
842
+
843
+ ## 前置条件
844
+
845
+ - 向量索引已构建(运行 \`python scripts/build_kb_index.py\`)
846
+ - 已安装 \`sentence-transformers\`(\`pip install sentence-transformers\`)
847
+ - 索引文件 \`.openfeel/tmp/vectors/index.json\` 存在
848
+ - (可选)图谱已构建(运行 \`python scripts/build_kb_index.py --graph\`),用于返回关联条目
849
+
850
+ ## 执行步骤
851
+
852
+ ### 1. 检查索引就绪
853
+
854
+ 确认 \`.openfeel/tmp/vectors/index.json\` 文件存在。若不存在,拒绝执行并提示先运行 \`build_kb_index.py\`。
855
+
856
+ ### 2. 执行语义检索
857
+
858
+ 执行 \`python scripts/search_kb.py "<query>" --top-k <top_k> --min-score <min_score> --verbose\`。
859
+
860
+ ### 3. 解析结果
861
+
862
+ 输出格式化的检索结果摘要:
863
+
864
+ \`\`\`
865
+ 🔍 语义检索结果(共 {N} 条)
866
+
867
+ #{1} [architecture] OAuth2 登录流程设计
868
+ 文件: architecture.md | 得分: 0.87
869
+ 内容: 采用 Authorization Code Grant 流程...
870
+
871
+ #{2} [patterns] 状态机模式使用约定
872
+ 文件: patterns.md | 得分: 0.72
873
+ 内容: 项目中所有状态流转统一使用 Switch + Enum...
874
+ \`\`\`
875
+
876
+ ### 4. 图谱遍历(关联条目发现)
877
+
878
+ 当查询命中条目后,若 \`.openfeel/tmp/graph.json\` 存在且命中条目在其中,按以下步骤执行图谱遍历:
879
+
880
+ #### 4.1 一度关联(直接关联)
881
+
882
+ 读取 \`graph.json\`,查找命中条目的所有**直接引用**和**被直接引用**的条目:
883
+
884
+ \`\`\`
885
+ 🔗 一度关联条目(直接关联)
886
+
887
+ 引用 → {N} 个条目:[[条目A]]、[[条目B]]
888
+ 被引用 ← {M} 个条目:[[条目C]]
889
+ \`\`\`
890
+
891
+ #### 4.2 二度关联(间接关联)
892
+
893
+ 在一度关联的基础上,再展开一层,返回间接关联的条目:
894
+
895
+ \`\`\`
896
+ 🔗🔗 二度关联条目(间接关联)
897
+
898
+ 引用 → [[条目D]](经由 [[条目A]])
899
+ 被引用 ← [[条目E]](经由 [[条目C]])
900
+ \`\`\`
901
+
902
+ 二度关联按"经由哪个一度节点"分组展示,便于理解关联路径。
903
+
904
+ #### 4.3 遍历实现
905
+
906
+ 执行 \`python scripts/kb_graph.py --from "<命中条目标题>" --depth 2\`,解析子图输出提取关联节点和边。
907
+
908
+ ### 5. 智能解读
909
+
910
+ 结合当前任务上下文解读检索结果:
911
+ - 标注与当前任务高度相关的条目
912
+ - 标注可能需要进一步查阅的条目
913
+ - 若所有结果得分均低于 0.3,建议用户优化查询词或确认知识库覆盖范围
914
+ - 若图谱返回的关联条目与检索结果重叠,合并去重并标注来源(语义匹配 / 图谱关联)
915
+
916
+ ## 输出格式
917
+
918
+ \`\`\`
919
+ ## 语义检索结果
920
+
921
+ 查询: "{query}"
922
+ 结果数: {N}
923
+
924
+ {格式化结果列表}
925
+
926
+ ## 关联条目(图遍历)
927
+
928
+ {一度关联条目列表}
929
+
930
+ {二度关联条目列表}
931
+
932
+ ### 解读
933
+ - 相关条目(得分 ≥ 0.5): {count} 条,可直接参考
934
+ - 弱相关条目(0.3 ≤ 得分 < 0.5): {count} 条,建议进一步确认
935
+ - 低相关条目(得分 < 0.3): {count} 条,可能不适用
936
+ - 图关联条目(未被语义检索命中): {count} 条
937
+ \`\`\`
938
+
939
+ ## 参数扩展
940
+
941
+ 新增可选参数:
942
+
943
+ - \`--with-graph\`:启用图谱遍历返回关联条目(默认启用,若 graph.json 不可用则静默跳过)
944
+ - \`--graph-depth\`:图谱遍历深度,1=一度关联,2=二度关联(默认: 2)
945
+
946
+ ## 注意事项
947
+
948
+ - 向量索引是缓存层,文件系统始终是 single source of truth。若检索结果与预期不符,检查索引是否过期(运行 \`--dry-run\` 查看变更文件)
949
+ - 图谱链接亦是缓存层,Markdown 文件中 \`[[wikilink]]\` 是真实数据源;图谱可随时通过 \`python scripts/build_kb_index.py --graph\` 重建
950
+ - 语义检索适合模糊查询和探索性搜索,精确关键词匹配优先使用 \`check-kb\`
951
+ - 此技能是 \`check-kb\` 的回退方案——当 \`check-kb\` 精确匹配无结果时可自动调用
952
+ - 图遍历返回的关联条目仅基于已建立的 wikilink 链接,若条目未引用或被引用其他条目,图谱中不会出现对应关联
953
953
  `,
954
954
  'sync-status': `---
955
955
  name: sync-status
@@ -1021,124 +1021,124 @@ description: 聚合所有成员的任务进度视图,供任意 Agent 快速了
1021
1021
 
1022
1022
  Base directory for this skill: file:///C:/Code/AI/AI_Prompt/.kilo/skills/sync-status
1023
1023
  `,
1024
- 'update-stage-status': `---
1025
- name: update-stage-status
1026
- description: 标准化更新 .openfeel/plan/{stage}/status.md 的子计划状态、责任 Agent 和状态记录,避免各 Agent 随意改写状态文件。适用于自动闭环和人工流程中的阶段状态变更。
1027
- ---
1028
-
1029
- # 更新子计划状态
1030
-
1031
- ## 输入
1032
-
1033
- - 计划阶段名 \`{stage}\`
1034
- - 新状态 \`{status}\`
1035
- - 当前责任 Agent \`{current_agent}\`
1036
- - 上一责任 Agent \`{previous_agent}\`
1037
- - 说明 \`{note}\`
1038
- - 是否保持自动推进 \`{keep_auto}\`(默认保持原值)
1039
-
1040
- ### 可选输入(Worktree / 并行 管理)
1041
-
1042
- 当阶段以 worktree 模式运行时,可额外传入以下字段:
1043
-
1044
- - \`worktree_branch\`:worktree 分支名(如 \`auto-stage-02\`)
1045
- - \`parallel_batch\`:并行批次标识(如 \`batch-2026-05-15-001\`),同一批次并行启动的 worktree 共享此标识
1046
- - \`parallel_stages\`:同批次并行阶段列表(如 \`[stage-04]\`)
1047
- - \`merge_status\`:合并状态(\`not_started\` / \`pending_merge\` / \`merged\` / \`cleanup_ready\` / \`cleaned\`)
1048
- - \`depends_status\`:依赖状态(\`pending\` / \`satisfied\` / \`blocked\`),当依赖阶段完成时更新
1049
-
1050
- ## 执行步骤
1051
-
1052
- ### 0. 读取全局配置
1053
-
1054
- 读取 \`.openfeel/config.yaml\`,获取 \`defaults\` 中的 \`execution_mode\`、\`auto_advance\`、\`merge_mode\`。
1055
-
1056
- ### 1. 读取状态文件
1057
-
1058
- 读取 \`.openfeel/plan/{stage}/status.md\`。
1059
-
1060
- 若文件不存在且当前 Agent 为 Architect:
1061
- 1. 从 \`.openfeel/config.yaml\` \`defaults\` 读取 \`execution_mode\`、\`auto_advance\` 作为初始值
1062
- 2. 按模板创建 \`status.md\`,将 config 默认值写入对应字段
1063
- 其他 Agent 不得自行创建,必须提示用户或 Architect 先初始化阶段状态。
1064
-
1065
- ### 2. 校验状态变更
1066
-
1067
- 允许的状态值:
1068
-
1069
- \`\`\`text
1070
- planned | ready_for_code | coding | ready_for_review | review_failed | review_passed | ready_for_test | test_writing | testing | bug_found | bug_fixing | done | paused
1071
- \`\`\`
1072
-
1073
- 若新状态不在列表中,停止并说明错误。
1074
-
1075
- ### 3. 更新字段
1076
-
1077
- **常规更新**(每次状态变更必须更新):
1078
-
1079
- - \`状态\`
1080
- - \`当前责任 Agent\`
1081
- - \`上一责任 Agent\`
1082
- - \`更新时间\`
1083
-
1084
- **Worktree / 并行 更新**(仅在可选输入传入时更新,位于 \`## Worktree / Session\` 块):
1085
-
1086
- - \`分支名\` → \`worktree_branch\`(如 \`auto-stage-02\`)
1087
- - \`并行批次\` → \`parallel_batch\`
1088
- - \`并行阶段\` → \`parallel_stages\`
1089
- - \`合并状态\` → \`merge_status\`
1090
-
1091
- **依赖状态更新**(位于文件顶部字段):
1092
-
1093
- - \`依赖状态\` → \`depends_status\`(当 Architect 检测到依赖阶段完成时更新,典型值:\`pending → satisfied\`)
1094
-
1095
- 除非用户明确要求,否则不得改变:
1096
-
1097
- - \`执行模式\`
1098
- - \`自动推进\`
1099
- - \`前置依赖\`(由 Architect 在 Phase 3.5 中声明,运行时不应修改)
1100
-
1101
- ### 4. 追加状态记录
1102
-
1103
- 在 \`## 状态记录\` 表格末尾追加:
1104
-
1105
- \`\`\`markdown
1106
- | yyyy-mm-dd HH:MM | {agent} | {旧状态} → {新状态} | {note} |
1107
- \`\`\`
1108
-
1109
- ### 5. 安全暂停规则
1110
-
1111
- 遇到以下情况必须将状态改为 \`paused\`,当前责任 Agent 改为 \`user\`:
1112
-
1113
- - 计划外架构变更
1114
- - 需要修改范围超过原计划
1115
- - 权限不明确
1116
- - 测试环境缺失
1117
- - 连续两次验收失败
1118
- - 自动推进链路无法判断下一步
1119
-
1120
- ### 6. 合并状态处理
1121
-
1122
- 当子计划状态变为 \`done\` 或 \`review_passed\`(且 Reviewer 验收完毕)时,根据 \`.openfeel/config.yaml\` 中的 \`merge_mode\` 决定合并行为:
1123
-
1124
- - **\`merge_mode=auto\`**:
1125
- 1. 将 \`合并状态\` 更新为 \`merged\`(实际合并由 Executor 执行 git 操作,Skill 仅更新状态字段)
1126
- 2. 将 \`合并状态\` 更新为 \`cleaned\`
1127
- 3. 在状态记录中注明"自动合并"
1128
- - **\`merge_mode=manual\`**:
1129
- 1. 将 \`合并状态\` 设为 \`pending_merge\`
1130
- 2. 输出提示:合并与清理需手动完成
1131
-
1132
- ### 7. 输出结果
1133
-
1134
- 输出更新摘要:
1135
-
1136
- \`\`\`markdown
1137
- 已更新 {stage}/status.md:
1138
- - 状态:{旧状态} → {新状态}
1139
- - 当前责任 Agent:{current_agent}
1140
- - 自动推进:保持 {enabled/disabled}
1141
- \`\`\`
1024
+ 'update-stage-status': `---
1025
+ name: update-stage-status
1026
+ description: 标准化更新 .openfeel/plan/{stage}/status.md 的子计划状态、责任 Agent 和状态记录,避免各 Agent 随意改写状态文件。适用于自动闭环和人工流程中的阶段状态变更。
1027
+ ---
1028
+
1029
+ # 更新子计划状态
1030
+
1031
+ ## 输入
1032
+
1033
+ - 计划阶段名 \`{stage}\`
1034
+ - 新状态 \`{status}\`
1035
+ - 当前责任 Agent \`{current_agent}\`
1036
+ - 上一责任 Agent \`{previous_agent}\`
1037
+ - 说明 \`{note}\`
1038
+ - 是否保持自动推进 \`{keep_auto}\`(默认保持原值)
1039
+
1040
+ ### 可选输入(Worktree / 并行 管理)
1041
+
1042
+ 当阶段以 worktree 模式运行时,可额外传入以下字段:
1043
+
1044
+ - \`worktree_branch\`:worktree 分支名(如 \`auto-stage-02\`)
1045
+ - \`parallel_batch\`:并行批次标识(如 \`batch-2026-05-15-001\`),同一批次并行启动的 worktree 共享此标识
1046
+ - \`parallel_stages\`:同批次并行阶段列表(如 \`[stage-04]\`)
1047
+ - \`merge_status\`:合并状态(\`not_started\` / \`pending_merge\` / \`merged\` / \`cleanup_ready\` / \`cleaned\`)
1048
+ - \`depends_status\`:依赖状态(\`pending\` / \`satisfied\` / \`blocked\`),当依赖阶段完成时更新
1049
+
1050
+ ## 执行步骤
1051
+
1052
+ ### 0. 读取全局配置
1053
+
1054
+ 读取 \`.openfeel/config.yaml\`,获取 \`defaults\` 中的 \`execution_mode\`、\`auto_advance\`、\`merge_mode\`。
1055
+
1056
+ ### 1. 读取状态文件
1057
+
1058
+ 读取 \`.openfeel/plan/{stage}/status.md\`。
1059
+
1060
+ 若文件不存在且当前 Agent 为 Architect:
1061
+ 1. 从 \`.openfeel/config.yaml\` \`defaults\` 读取 \`execution_mode\`、\`auto_advance\` 作为初始值
1062
+ 2. 按模板创建 \`status.md\`,将 config 默认值写入对应字段
1063
+ 其他 Agent 不得自行创建,必须提示用户或 Architect 先初始化阶段状态。
1064
+
1065
+ ### 2. 校验状态变更
1066
+
1067
+ 允许的状态值:
1068
+
1069
+ \`\`\`text
1070
+ planned | ready_for_code | coding | ready_for_review | review_failed | review_passed | ready_for_test | test_writing | testing | bug_found | bug_fixing | done | paused
1071
+ \`\`\`
1072
+
1073
+ 若新状态不在列表中,停止并说明错误。
1074
+
1075
+ ### 3. 更新字段
1076
+
1077
+ **常规更新**(每次状态变更必须更新):
1078
+
1079
+ - \`状态\`
1080
+ - \`当前责任 Agent\`
1081
+ - \`上一责任 Agent\`
1082
+ - \`更新时间\`
1083
+
1084
+ **Worktree / 并行 更新**(仅在可选输入传入时更新,位于 \`## Worktree / Session\` 块):
1085
+
1086
+ - \`分支名\` → \`worktree_branch\`(如 \`auto-stage-02\`)
1087
+ - \`并行批次\` → \`parallel_batch\`
1088
+ - \`并行阶段\` → \`parallel_stages\`
1089
+ - \`合并状态\` → \`merge_status\`
1090
+
1091
+ **依赖状态更新**(位于文件顶部字段):
1092
+
1093
+ - \`依赖状态\` → \`depends_status\`(当 Architect 检测到依赖阶段完成时更新,典型值:\`pending → satisfied\`)
1094
+
1095
+ 除非用户明确要求,否则不得改变:
1096
+
1097
+ - \`执行模式\`
1098
+ - \`自动推进\`
1099
+ - \`前置依赖\`(由 Architect 在 Phase 3.5 中声明,运行时不应修改)
1100
+
1101
+ ### 4. 追加状态记录
1102
+
1103
+ 在 \`## 状态记录\` 表格末尾追加:
1104
+
1105
+ \`\`\`markdown
1106
+ | yyyy-mm-dd HH:MM | {agent} | {旧状态} → {新状态} | {note} |
1107
+ \`\`\`
1108
+
1109
+ ### 5. 安全暂停规则
1110
+
1111
+ 遇到以下情况必须将状态改为 \`paused\`,当前责任 Agent 改为 \`user\`:
1112
+
1113
+ - 计划外架构变更
1114
+ - 需要修改范围超过原计划
1115
+ - 权限不明确
1116
+ - 测试环境缺失
1117
+ - 连续两次验收失败
1118
+ - 自动推进链路无法判断下一步
1119
+
1120
+ ### 6. 合并状态处理
1121
+
1122
+ 当子计划状态变为 \`done\` 或 \`review_passed\`(且 Reviewer 验收完毕)时,根据 \`.openfeel/config.yaml\` 中的 \`merge_mode\` 决定合并行为:
1123
+
1124
+ - **\`merge_mode=auto\`**:
1125
+ 1. 将 \`合并状态\` 更新为 \`merged\`(实际合并由 Executor 执行 git 操作,Skill 仅更新状态字段)
1126
+ 2. 将 \`合并状态\` 更新为 \`cleaned\`
1127
+ 3. 在状态记录中注明"自动合并"
1128
+ - **\`merge_mode=manual\`**:
1129
+ 1. 将 \`合并状态\` 设为 \`pending_merge\`
1130
+ 2. 输出提示:合并与清理需手动完成
1131
+
1132
+ ### 7. 输出结果
1133
+
1134
+ 输出更新摘要:
1135
+
1136
+ \`\`\`markdown
1137
+ 已更新 {stage}/status.md:
1138
+ - 状态:{旧状态} → {新状态}
1139
+ - 当前责任 Agent:{current_agent}
1140
+ - 自动推进:保持 {enabled/disabled}
1141
+ \`\`\`
1142
1142
  `,
1143
1143
  'wizard': `---
1144
1144
  name: wizard