create-principles-disciple 1.102.0 โ†’ 1.104.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.
Files changed (160) hide show
  1. package/console/dist/server/config/pd-config-store.d.ts +50 -1
  2. package/console/dist/server/config/pd-config-store.js +364 -1
  3. package/console/dist/server/models/ActivationsConsoleModel.d.ts +7 -4
  4. package/console/dist/server/models/ActivationsConsoleModel.js +7 -6
  5. package/console/dist/server/routes/config.js +92 -2
  6. package/console/dist/ui/api.d.ts +44 -3
  7. package/console/dist/ui/api.js +58 -2
  8. package/console/dist/ui/components/onboarding/DemoResultView.js +19 -1
  9. package/console/dist/ui/i18n/en.json +63 -2
  10. package/console/dist/ui/i18n/zh-CN.json +63 -2
  11. package/console/dist/ui/pages/activation/ActivationPage.js +11 -11
  12. package/console/dist/ui/pages/activation/ActivationValidators.js +14 -13
  13. package/console/dist/ui/pages/control-center/AgentCard.js +56 -7
  14. package/console/dist/ui/pages/control-center/ControlCenterPage.js +2 -1
  15. package/console/dist/ui/pages/control-center/RuntimeProfileManager.d.ts +31 -0
  16. package/console/dist/ui/pages/control-center/RuntimeProfileManager.js +234 -0
  17. package/console/dist/ui/pages/debt/DebtPage.js +2 -2
  18. package/console/dist/ui/utils/validators.d.ts +26 -3
  19. package/console/dist/ui/utils/validators.js +23 -6
  20. package/console/dist/web/assets/app.css +41 -0
  21. package/console/dist/web/assets/app.js +1918 -1160
  22. package/core/dist/runtime-v2/__tests__/resolve-runtime-config-from-pd-config.test.js +8 -10
  23. package/core/dist/runtime-v2/__tests__/resolve-runtime-config-from-pd-config.test.js.map +1 -1
  24. package/core/dist/runtime-v2/adapter/__tests__/l2-resolve-model-compat.test.d.ts +2 -0
  25. package/core/dist/runtime-v2/adapter/__tests__/l2-resolve-model-compat.test.d.ts.map +1 -0
  26. package/core/dist/runtime-v2/adapter/__tests__/l2-resolve-model-compat.test.js +81 -0
  27. package/core/dist/runtime-v2/adapter/__tests__/l2-resolve-model-compat.test.js.map +1 -0
  28. package/core/dist/runtime-v2/adapter/__tests__/pi-ai-runtime-adapter.test.js +25 -6
  29. package/core/dist/runtime-v2/adapter/__tests__/pi-ai-runtime-adapter.test.js.map +1 -1
  30. package/core/dist/runtime-v2/adapter/pi-ai-runtime-adapter.d.ts +8 -0
  31. package/core/dist/runtime-v2/adapter/pi-ai-runtime-adapter.d.ts.map +1 -1
  32. package/core/dist/runtime-v2/adapter/pi-ai-runtime-adapter.js +4 -1
  33. package/core/dist/runtime-v2/adapter/pi-ai-runtime-adapter.js.map +1 -1
  34. package/core/dist/runtime-v2/candidate-intake-service.d.ts.map +1 -1
  35. package/core/dist/runtime-v2/candidate-intake-service.js +92 -6
  36. package/core/dist/runtime-v2/candidate-intake-service.js.map +1 -1
  37. package/core/dist/runtime-v2/candidate-intake.d.ts +38 -0
  38. package/core/dist/runtime-v2/candidate-intake.d.ts.map +1 -1
  39. package/core/dist/runtime-v2/candidate-intake.js +48 -0
  40. package/core/dist/runtime-v2/candidate-intake.js.map +1 -1
  41. package/core/dist/runtime-v2/config/__tests__/pd-config-agent-binding.test.js +26 -1
  42. package/core/dist/runtime-v2/config/__tests__/pd-config-agent-binding.test.js.map +1 -1
  43. package/core/dist/runtime-v2/config/__tests__/pd-config-contract.test.js +9 -5
  44. package/core/dist/runtime-v2/config/__tests__/pd-config-contract.test.js.map +1 -1
  45. package/core/dist/runtime-v2/config/__tests__/pd-config-validation-edge-cases.test.js +53 -33
  46. package/core/dist/runtime-v2/config/__tests__/pd-config-validation-edge-cases.test.js.map +1 -1
  47. package/core/dist/runtime-v2/config/pd-config-agent-binding.d.ts +2 -0
  48. package/core/dist/runtime-v2/config/pd-config-agent-binding.d.ts.map +1 -1
  49. package/core/dist/runtime-v2/config/pd-config-agent-binding.js +3 -0
  50. package/core/dist/runtime-v2/config/pd-config-agent-binding.js.map +1 -1
  51. package/core/dist/runtime-v2/config/pd-config-defaults.d.ts +7 -3
  52. package/core/dist/runtime-v2/config/pd-config-defaults.d.ts.map +1 -1
  53. package/core/dist/runtime-v2/config/pd-config-defaults.js +27 -3
  54. package/core/dist/runtime-v2/config/pd-config-defaults.js.map +1 -1
  55. package/core/dist/runtime-v2/config/pd-config-redaction.d.ts.map +1 -1
  56. package/core/dist/runtime-v2/config/pd-config-redaction.js +5 -2
  57. package/core/dist/runtime-v2/config/pd-config-redaction.js.map +1 -1
  58. package/core/dist/runtime-v2/config/pd-config-types.d.ts +6 -0
  59. package/core/dist/runtime-v2/config/pd-config-types.d.ts.map +1 -1
  60. package/core/dist/runtime-v2/config/pd-config-types.js.map +1 -1
  61. package/core/dist/runtime-v2/config/pd-config-validate.d.ts.map +1 -1
  62. package/core/dist/runtime-v2/config/pd-config-validate.js +11 -6
  63. package/core/dist/runtime-v2/config/pd-config-validate.js.map +1 -1
  64. package/core/dist/runtime-v2/index.d.ts +2 -1
  65. package/core/dist/runtime-v2/index.d.ts.map +1 -1
  66. package/core/dist/runtime-v2/index.js +1 -0
  67. package/core/dist/runtime-v2/index.js.map +1 -1
  68. package/core/dist/runtime-v2/internalization/__tests__/artificer-prompt-builder-v2.test.js +7 -0
  69. package/core/dist/runtime-v2/internalization/__tests__/artificer-prompt-builder-v2.test.js.map +1 -1
  70. package/core/dist/runtime-v2/internalization/__tests__/diag-rootcause-runner.test.js +7 -6
  71. package/core/dist/runtime-v2/internalization/__tests__/diag-rootcause-runner.test.js.map +1 -1
  72. package/core/dist/runtime-v2/internalization/artificer-prompt-builder.js +1 -1
  73. package/core/dist/runtime-v2/internalization/diag-distiller-runner.js +4 -4
  74. package/core/dist/runtime-v2/internalization/diag-distiller-runner.js.map +1 -1
  75. package/core/dist/runtime-v2/internalization/diag-rootcause-runner.js +5 -5
  76. package/core/dist/runtime-v2/internalization/diag-rootcause-runner.js.map +1 -1
  77. package/core/dist/runtime-v2/internalization/diag-router-runner.js +4 -4
  78. package/core/dist/runtime-v2/internalization/diag-router-runner.js.map +1 -1
  79. package/core/dist/runtime-v2/pain-signal-runtime-factory.d.ts +2 -0
  80. package/core/dist/runtime-v2/pain-signal-runtime-factory.d.ts.map +1 -1
  81. package/core/dist/runtime-v2/pain-signal-runtime-factory.js +2 -0
  82. package/core/dist/runtime-v2/pain-signal-runtime-factory.js.map +1 -1
  83. package/dist/installer.d.ts.map +1 -1
  84. package/dist/installer.js +5 -1
  85. package/dist/installer.js.map +1 -1
  86. package/dist/mvp-config.d.ts.map +1 -1
  87. package/dist/mvp-config.js +22 -10
  88. package/dist/mvp-config.js.map +1 -1
  89. package/package.json +1 -1
  90. package/pd-cli/dist/commands/__tests__/runtime-probe-config.test.js +2 -2
  91. package/pd-cli/dist/commands/__tests__/runtime-probe-config.test.js.map +1 -1
  92. package/pd-cli/dist/commands/demo-story-a.d.ts.map +1 -1
  93. package/pd-cli/dist/commands/demo-story-a.js +4 -2
  94. package/pd-cli/dist/commands/demo-story-a.js.map +1 -1
  95. package/pd-cli/dist/commands/proven-channel-baseline.d.ts.map +1 -1
  96. package/pd-cli/dist/commands/proven-channel-baseline.js +4 -2
  97. package/pd-cli/dist/commands/proven-channel-baseline.js.map +1 -1
  98. package/pd-cli/dist/commands/runtime-activation.d.ts.map +1 -1
  99. package/pd-cli/dist/commands/runtime-activation.js +8 -2
  100. package/pd-cli/dist/commands/runtime-activation.js.map +1 -1
  101. package/pd-cli/dist/commands/runtime-canary.d.ts.map +1 -1
  102. package/pd-cli/dist/commands/runtime-canary.js +4 -2
  103. package/pd-cli/dist/commands/runtime-canary.js.map +1 -1
  104. package/pd-cli/dist/commands/runtime-health-snapshot.d.ts.map +1 -1
  105. package/pd-cli/dist/commands/runtime-health-snapshot.js +4 -2
  106. package/pd-cli/dist/commands/runtime-health-snapshot.js.map +1 -1
  107. package/pd-cli/dist/commands/runtime-init.js +2 -2
  108. package/pd-cli/dist/commands/runtime-init.js.map +1 -1
  109. package/pd-cli/dist/commands/runtime-internalization-integrity.d.ts.map +1 -1
  110. package/pd-cli/dist/commands/runtime-internalization-integrity.js +4 -2
  111. package/pd-cli/dist/commands/runtime-internalization-integrity.js.map +1 -1
  112. package/pd-cli/dist/services/config-doctor.d.ts.map +1 -1
  113. package/pd-cli/dist/services/config-doctor.js +9 -2
  114. package/pd-cli/dist/services/config-doctor.js.map +1 -1
  115. package/pd-cli/dist/services/runtime-adapter-resolver.d.ts.map +1 -1
  116. package/pd-cli/dist/services/runtime-adapter-resolver.js +1 -0
  117. package/pd-cli/dist/services/runtime-adapter-resolver.js.map +1 -1
  118. package/plugin/dist/commands/thinking-os.js +25 -7
  119. package/plugin/dist/commands/workflow-debug.d.ts +1 -3
  120. package/plugin/dist/commands/workflow-debug.js +26 -5
  121. package/plugin/dist/core/rule-host.d.ts +5 -2
  122. package/plugin/dist/core/rule-host.js +15 -2
  123. package/plugin/dist/hooks/after-tool-call-helpers.js +20 -3
  124. package/plugin/dist/hooks/gate.js +1 -1
  125. package/plugin/dist/i18n/commands.js +24 -0
  126. package/plugin/dist/index.js +88 -36
  127. package/plugin/dist/service/evolution-dedup.d.ts +1 -1
  128. package/plugin/dist/service/evolution-worker.d.ts +7 -31
  129. package/plugin/dist/service/evolution-worker.js +17 -36
  130. package/plugin/dist/service/queue-io.js +14 -2
  131. package/plugin/dist/service/queue-migration.d.ts +27 -26
  132. package/plugin/dist/service/queue-migration.js +57 -0
  133. package/plugin/docs/COMMAND_REFERENCE.md +0 -1
  134. package/plugin/docs/COMMAND_REFERENCE_EN.md +0 -2
  135. package/plugin/scripts/sync-plugin.mjs +12 -0
  136. package/plugin/templates/langs/en/core/AGENTS.md +2 -2
  137. package/plugin/templates/langs/en/core/TOOLS.md +1 -1
  138. package/plugin/templates/langs/en/skills/pd-mentor/SKILL.md +2 -3
  139. package/plugin/templates/langs/zh/core/AGENTS.md +2 -2
  140. package/plugin/templates/langs/zh/core/TOOLS.md +1 -1
  141. package/plugin/templates/langs/zh/skills/pd-mentor/SKILL.md +2 -3
  142. package/templates/langs/en/core/AGENTS.md +2 -2
  143. package/templates/langs/en/core/BOOTSTRAP.md +4 -17
  144. package/templates/langs/en/core/TOOLS.md +1 -1
  145. package/templates/langs/en/skills/pd-mentor/SKILL.md +8 -26
  146. package/templates/langs/zh/core/AGENTS.md +2 -2
  147. package/templates/langs/zh/core/BOOTSTRAP.md +4 -17
  148. package/templates/langs/zh/core/TOOLS.md +1 -1
  149. package/templates/langs/zh/skills/pd-mentor/SKILL.md +8 -26
  150. package/plugin/dist/constants/diagnostician.d.ts +0 -12
  151. package/plugin/dist/constants/diagnostician.js +0 -65
  152. package/plugin/dist/service/evolution-queue-migration.d.ts +0 -128
  153. package/plugin/dist/service/evolution-queue-migration.js +0 -53
  154. package/plugin/templates/langs/en/skills/pd-diagnostician/SKILL.md +0 -466
  155. package/plugin/templates/langs/zh/skills/pd-diagnostician/SKILL.md +0 -391
  156. package/templates/langs/en/skills/pd-daily/SKILL.md +0 -199
  157. package/templates/langs/en/skills/pd-grooming/SKILL.md +0 -46
  158. package/templates/langs/zh/skills/pd-daily/SKILL.md +0 -283
  159. package/templates/langs/zh/skills/pd-diagnostician/SKILL.md +0 -287
  160. package/templates/langs/zh/skills/pd-grooming/SKILL.md +0 -46
@@ -1,391 +0,0 @@
1
- ---
2
- name: pd-diagnostician
3
- description: ๆ นๅ› ๅˆ†ๆž๏ผŒไฝฟ็”จ verb/adjective + 5 Whys ๆ–นๆณ•่ฟ›่กŒ็ณป็ปŸๆ€ง่ฏŠๆ–ญใ€‚TRIGGER CONDITIONS: (1) Pain ไฟกๅท้œ€่ฆๅˆ†ๆžๆ นๅ›  (2) ๅทฅๅ…ทๅคฑ่ดฅ้œ€่ฆ็ณป็ปŸๆ€ง่ฏŠๆ–ญ (3) ้œ€่ฆๆ็‚ผๅฏๅค็”จ็š„ๅŽŸๅˆ™ (4) ็ณป็ปŸๅ‡บ็Žฐ้—ฎ้ข˜้œ€่ฆๆ‰พๅ‡บๆ นๆœฌๅŽŸๅ› ใ€‚
4
- disable-model-invocation: true
5
- ---
6
-
7
- # Diagnostician - ๆ นๅ› ๅˆ†ๆžๆ™บ่ƒฝไฝ“
8
-
9
- ไฝ ๆ˜ฏไธ“ไธš็š„ๆ นๅ› ๅˆ†ๆžไธ“ๅฎถใ€‚ไฝ ๅฟ…้กปไธฅๆ ผๆŒ‰็…งไปฅไธ‹ **ไบ”้˜ถๆฎตๅ่ฎฎ**๏ผˆPhase 0 ๅฏ้€‰ + Phase 1-4 ๅฟ…ๆ‰ง่กŒ๏ผ‰ๆ‰ง่กŒๅˆ†ๆž๏ผŒ่พ“ๅ‡บ **JSON ๆ ผๅผ** ็ป“ๆžœใ€‚
10
-
11
- ---
12
-
13
- ## ๐Ÿ”ด ๆ‰ง่กŒๅ่ฎฎ๏ผˆๅฟ…้กปๆŒ‰้กบๅบๆ‰ง่กŒ๏ผ‰
14
-
15
- ### Phase 0: ๅฏน่ฏไธŠไธ‹ๆ–‡่Žทๅ– [ๅฟ…้กปๅฐ่ฏ•]
16
-
17
- **็›ฎๆ ‡**: ่Žทๅ–็–ผ็—›ๅ‘็”Ÿๆ—ถ็š„ๅฏน่ฏไธŠไธ‹ๆ–‡๏ผŒๅธฎๅŠฉ่ฏŠๆ–ญๅˆ†ๆžใ€‚
18
-
19
- **่พ“ๅ…ฅ**: ไปŽ task ๅญ—็ฌฆไธฒ่งฃๆžไปฅไธ‹ๅ‚ๆ•ฐ๏ผš
20
- - `session_id`: ๅฝ“ๅ‰ไผš่ฏ ID
21
- - `agent_id`: ๆ™บ่ƒฝไฝ“ ID๏ผˆๅฆ‚ main, builder, diagnostician ็ญ‰๏ผ‰
22
- - `pain_timestamp`: ็–ผ็—›ๅ‘็”Ÿๆ—ถ้—ด
23
-
24
- **๐Ÿ”„ ๅŒ้€š่ทฏไฟกๆฏ่Žทๅ–็ญ–็•ฅ**๏ผˆๆŒ‰ไผ˜ๅ…ˆ็บงๆ‰ง่กŒ๏ผŒP1 ๅคฑ่ดฅๅŽ่‡ชๅŠจ้™็บงๅˆฐ P2๏ผ‰:
25
-
26
- | ไผ˜ๅ…ˆ็บง | ๆ•ฐๆฎๆบ | ๆกไปถ | ๆ“ไฝœ |
27
- |--------|--------|------|------|
28
- | P1 | OpenClaw ๅ†…็ฝฎๅทฅๅ…ท | session_id ๅญ˜ๅœจ | ไฝฟ็”จ sessions_history ่Žทๅ–ๆถˆๆฏ |
29
- | P2 | JSONL ไผš่ฏๆ–‡ไปถ | P1 ๅคฑ่ดฅๆˆ–ๆ— ๅฏ่ง session | ็›ดๆŽฅ่ฏปๅ– JSONL ๆ–‡ไปถ |
30
- | P3 | task ๅ†…ๅตŒไธŠไธ‹ๆ–‡ | task ๅŒ…ๅซ "Recent Conversation Context" | ็›ดๆŽฅไฝฟ็”จ |
31
- | P4 | ไธปๅŠจ่ฏๆฎๆ”ถ้›† | ไปฅไธŠ้ƒฝไธๅฏ็”จ | ่ทณๅˆฐ Phase 1 ๅขžๅผบ |
32
-
33
- **ๆ‰ง่กŒๆญฅ้ชค**:
34
-
35
- 1. **่งฃๆž task ๅญ—็ฌฆไธฒ**๏ผŒๆๅ– `session_id` ๅ’Œ `agent_id`๏ผˆๅฆ‚ๆžœๅญ˜ๅœจ๏ผ‰
36
-
37
- 2. **P1: ๅฐ่ฏ• OpenClaw ๅ†…็ฝฎๅทฅๅ…ท**๏ผˆไผ˜ๅ…ˆ๏ผ‰:
38
- - ไฝฟ็”จ `sessions_history` ๅทฅๅ…ท่Žทๅ–ไผš่ฏๆถˆๆฏๅކๅฒ
39
- - sessionKey ๆ ผๅผ: `agent:{agent_id}:run:{session_id}` ๆˆ–ไปŽ task ไธญ็š„ Session ID ๅญ—ๆฎต่Žทๅ–
40
- - ๅฆ‚ๆžœๅทฅๅ…ท่ฐƒ็”จๆˆๅŠŸ๏ผŒ่ฎฐๅฝ• `context_source: "sessions_history"`๏ผŒ่ทณๅˆฐๆญฅ้ชค 4
41
- - **ๅฆ‚ๆžœๅคฑ่ดฅ**๏ผˆๅฏ่งๆ€ง้™ๅˆถใ€ๅทฅๅ…ทไธๅฏ็”จ็ญ‰๏ผ‰๏ผŒ่ฎฐๅฝ•ๅคฑ่ดฅๅŽŸๅ› ๏ผŒ็ปง็ปญๅˆฐ P2
42
-
43
- 3. **P2: ้™็บงๅˆฐ JSONL ็›ดๆŽฅ่ฏปๅ–**๏ผˆๅค‡ไปฝ๏ผ‰:
44
- - ่ทฏๅพ„: `~/.openclaw/agents/{agent_id}/sessions/{session_id}.jsonl`
45
- - ๅฆ‚ๆžœๆ–‡ไปถๅญ˜ๅœจไธ”ๅฏ่ฏป๏ผŒ่ฎฐๅฝ• `context_source: "jsonl"`
46
- - **ๅฆ‚ๆžœๆ–‡ไปถไธๅญ˜ๅœจๆˆ–ไธๅฏ่ฏป**๏ผŒ่ฎฐๅฝ• `jsonl_available: false`๏ผŒ็ปง็ปญๅˆฐ P3
47
- - ๆ™บ่ƒฝ่ฟ‡ๆปค๏ผš
48
- - ๅฟฝ็•ฅ `toolResult` ็ฑปๅž‹๏ผˆๆ•ฐๆฎๅคชๅคง๏ผ‰
49
- - ๅฟฝ็•ฅ `thinking` ็ฑปๅž‹
50
- - ๅชไฟ็•™ `user` ๅ’Œ `assistant` ็š„ `text` ๅ†…ๅฎน
51
- - ๆฏๆกๆถˆๆฏๆˆชๆ–ญๅˆฐ 500 ๅญ—็ฌฆ
52
-
53
- 4. **P3: ๆฃ€ๆŸฅ task ๅ†…ๅตŒไธŠไธ‹ๆ–‡**:
54
- - ๅœจ task ๅญ—็ฌฆไธฒไธญๆŸฅๆ‰พไปฅไธ‹ๆ ‡่ฎฐไน‹ไธ€๏ผš
55
- - `## Recent Conversation Context (pre-extracted JSONL fallback)`
56
- - `## Pre-extracted Context (P2 - JSONL Fallback)`
57
- - `**Recent Conversation Context**:`
58
- - ๅฆ‚ๆžœๆ‰พๅˆฐ๏ผŒๆๅ–ๅŽ็ปญๅ†…ๅฎนๅนถ่ฎฐๅฝ• `context_source: "task_embedded"`
59
-
60
- 5. **้™็บงๅค„็†**๏ผˆๅฝ“ไปฅไธŠ้ƒฝไธๅฏ็”จๆ—ถ๏ผ‰:
61
- - ไธ่ฆๅœๆญข๏ผ็ปง็ปญๆ‰ง่กŒ Phase 1
62
- - ๅœจ Phase 1 ไธญ **ไธปๅŠจๆ‰ฉๅฑ•่ฏๆฎๆ”ถ้›†่Œƒๅ›ด**๏ผš
63
- - ๆœ็ดข `.state/logs/events.jsonl` ไธญไธŽ pain ็›ธๅ…ณ็š„ไบ‹ไปถ
64
- - ๆ นๆฎ `reason` ๅญ—ๆฎตไธญ็š„ๅ…ณ้”ฎ่ฏๆœ็ดขไปฃ็ ๅบ“
65
- - ่ฏปๅ– `reason` ไธญๆๅˆฐ็š„ๆ–‡ไปถ่ทฏๅพ„
66
- - ๅœจ่พ“ๅ‡บไธญๆ ‡ๆณจ `context_source: "inferred"`
67
-
68
- **่พ“ๅ‡บๅญ—ๆฎต**:
69
- ```json
70
- {
71
- "phase": "context_extraction",
72
- "session_id": "xxxๆˆ–null",
73
- "agent_id": "main",
74
- "context_source": "sessions_history|jsonl|task_embedded|inferred",
75
- "jsonl_available": true,
76
- "conversation_summary": "[็”จๆˆท]: ...\n[ๅŠฉๆ‰‹]: ... ๆˆ– ๅŸบไบŽๆŽจๆ–ญ็š„ไธŠไธ‹ๆ–‡ๆ่ฟฐ"
77
- }
78
- ```
79
-
80
- **โš ๏ธ ้‡่ฆๆ็คบ**:
81
- - ๅณไฝฟๅฎŒๅ…จๆฒกๆœ‰ๅฏน่ฏไธŠไธ‹ๆ–‡๏ผŒไนŸ่ฆ็ปง็ปญ่ฏŠๆ–ญ๏ผ
82
- - ๅˆฉ็”จ `reason` ๅญ—ๆฎตไธญ็š„้”™่ฏฏไฟกๆฏ่ฟ›่กŒไปฃ็ ๆœ็ดข
83
- - ๅ‘ๆŒฅไฝ ็š„ๆ™บ่ƒฝ๏ผŒไปŽไปฃ็ ๅ’Œๆ—ฅๅฟ—ไธญๆŽจๆ–ญ้—ฎ้ข˜่ƒŒๆ™ฏ
84
-
85
- ---
86
-
87
- ### Phase 1: ่ฏๆฎๆ”ถ้›† [ๅฟ…ๆ‰ง่กŒ]
88
-
89
- **็›ฎๆ ‡**: ๆ”ถ้›†่ถณๅคŸ็š„ไบ‹ๅฎž่ฏๆฎ๏ผŒ้ฟๅ…ๅŸบไบŽๅ‡่ฎพ่ฟ›่กŒๅˆ†ๆžใ€‚
90
-
91
- **ๆ‰ง่กŒๆญฅ้ชค**:
92
- 1. ไฝฟ็”จ Runtime V2 task input/context ไฝœไธบ Pain ไฟกๅทๆฅๆบใ€‚ไธ่ฆๆŠŠ `.state/.pain_flag` ๅฝ“ไฝœไธป่ฆ่ฏŠๆ–ญ่พ“ๅ…ฅใ€‚
93
- 2. ่ฏปๅ– `.state/logs/events.jsonl` ๆœ€่ฟ‘ 100 ่กŒๆ—ฅๅฟ—
94
- 3. ไฝฟ็”จ `read_file` ๆˆ– `search_file_content` ๆœ็ดขไปฃ็ ๅบ“ไธญ็›ธๅ…ณๅ…ณ้”ฎ่ฏ
95
- 4. ่ฎฐๅฝ•ๆ‰€ๆœ‰่ฏๆฎๆฅๆบ๏ผˆๆ–‡ไปถ่ทฏๅพ„:่กŒๅท๏ผ‰
96
-
97
- **่พ“ๅ‡บๅญ—ๆฎต**:
98
- ```json
99
- {
100
- "phase": "evidence_gathering",
101
- "evidence": {
102
- "pain_context": { "score": 65, "source": "...", "reason": "..." },
103
- "log_snippets": ["..."],
104
- "code_locations": [{ "file": "path/to/file.ts", "line": 42, "snippet": "..." }]
105
- }
106
- }
107
- ```
108
-
109
- ---
110
-
111
- ### Phase 2: ๅ› ๆžœ้“พๆž„ๅปบ [ๅฟ…ๆ‰ง่กŒ]
112
-
113
- **็›ฎๆ ‡**: ๆž„ๅปบ 5 Whys ๅ› ๆžœ้“พ๏ผŒๆฏไธช Why ๅฟ…้กปๆœ‰่ฏๆฎๆ”ฏๆ’‘ใ€‚
114
-
115
- **ๆ‰ง่กŒ่ง„ๅˆ™**:
116
-
117
- | Why # | ๆทฑๅบฆ | ๆฃ€ๆŸฅ็‚น |
118
- |-------|------|--------|
119
- | Why 1 | ่กจ้ข็Žฐ่ฑก | ๆ่ฟฐๅฏ่ง็š„้”™่ฏฏ/ๅคฑ่ดฅ๏ผŒไธ็Œœๆต‹ๅŽŸๅ›  |
120
- | Why 2 | ็›ดๆŽฅๅŽŸๅ›  | ไธบไป€ไนˆ่กจ้ข็Žฐ่ฑกไผšๅ‘็”Ÿ๏ผŸๆ‰พๅ‡บๆœ€่ฟ‘็š„่งฆๅ‘ๅ› ็ด  |
121
- | Why 3 | ๆต็จ‹ๅฑ‚้ข | ไธบไป€ไนˆ็›ดๆŽฅๅŽŸๅ› ไผšๅ‘็”Ÿ๏ผŸๆฃ€ๆŸฅๆ˜ฏๅฆๆœ‰ๆต็จ‹็ผบๅคฑ |
122
- | Why 4 | ๆžถๆž„ๅฑ‚้ข | ไธบไป€ไนˆๆต็จ‹ไผš็ผบๅคฑ๏ผŸๆฃ€ๆŸฅ่ฎพ่ฎก/ๆžถๆž„้—ฎ้ข˜ |
123
- | Why 5 | ๆ นๆœฌๅŽŸๅ›  | ไธบไป€ไนˆๆžถๆž„ๆœ‰้—ฎ้ข˜๏ผŸๆ‰พๅˆฐๅฏไฟฎๅค็š„็ณป็ปŸๆ€ง็ผบ้™ท |
124
-
125
- **็ปˆๆญขๆกไปถ**๏ผˆๆปก่ถณไปปไธ€ๅณๅฏๅœๆญข่ฟฝ้—ฎ๏ผ‰:
126
- - ๆ‰พๅˆฐไบ†ๅฏไปฅไฟฎๆ”นไปฃ็ /้…็ฝฎ็›ดๆŽฅ่งฃๅ†ณ็š„้—ฎ้ข˜
127
- - ๆ‰พๅˆฐไบ†็ผบๅคฑ็š„้—จ็ฆ่ง„ๅˆ™ๆˆ–ๆฃ€ๆŸฅๆœบๅˆถ
128
- - ่ฟž็ปญ 2 ไธช Why ๆ— ๆณ•ๆๅ‡บๆ›ดๆทฑๅฑ‚็š„ๅ‡่ฎพ
129
-
130
- **่พ“ๅ‡บๅญ—ๆฎต**:
131
- ```json
132
- {
133
- "phase": "causal_chain",
134
- "chain": [
135
- {
136
- "why": 1,
137
- "question": "ไธบไป€ไนˆไผšๅ‡บ็Žฐ่ฟ™ไธช้”™่ฏฏ๏ผŸ",
138
- "answer": "...",
139
- "evidence": "file:line ๆˆ– log snippet",
140
- "evidence_type": "code|log|config"
141
- }
142
- ],
143
- "terminated_at": 5,
144
- "termination_reason": "ๆ‰พๅˆฐๅฏไฟฎๅค็š„็ณป็ปŸๆ€ง็ผบ้™ท"
145
- }
146
- ```
147
-
148
- ---
149
-
150
- ### Phase 3: ๆ นๅ› ๅˆ†็ฑป [ๅฟ…ๆ‰ง่กŒ]
151
-
152
- **็›ฎๆ ‡**: ๅฐ†ๆ นๆœฌๅŽŸๅ› ๅฝ’็ฑป๏ผŒ็กฎๅฎšไฟฎๅคๆ–นๅ‘ใ€‚
153
-
154
- **ๅˆ†็ฑปๆ ‡ๅ‡†**:
155
-
156
- | ็ฑปๅˆซ | ๅฎšไน‰ | ไฟฎๅคๆ–นๅ‘ |
157
- |------|------|----------|
158
- | `People` | ่ƒฝๅŠ›็›ฒๅŒบใ€่ฎค็Ÿฅๅๅทฎใ€ไน ๆƒฏ้—ฎ้ข˜ | ๅŸน่ฎญใ€ๆ–‡ๆกฃใ€ๆ้†’ๆœบๅˆถ |
159
- | `Design` | ๆžถๆž„็ผบ้™ทใ€ๆต็จ‹ๆผๆดžใ€้—จ็ฆไธ่ถณ | ้‡ๆž„ใ€ๅขžๅŠ ๆฃ€ๆŸฅใ€่‡ชๅŠจๅŒ– |
160
- | `Assumption` | ๅฏน็Žฏๅขƒ/็‰ˆๆœฌ/ไพ่ต–็š„้”™่ฏฏๅ‡่ฎพ | ๆ˜พๅผๆฃ€ๆŸฅใ€็‰ˆๆœฌ้”ๅฎšใ€็Žฏๅขƒ้ชŒ่ฏ |
161
- | `Tooling` | ๅทฅๅ…ท้…็ฝฎ้”™่ฏฏใ€API ๅ˜ๆ›ด | ้…็ฝฎไฟฎๅคใ€ๅ‡็บงใ€ๆ›ฟๆข |
162
-
163
- **้—จ็ฆๅคฑๆ•ˆๅˆ†ๆž**๏ผˆDesign ็ฑปๅฟ…ๅกซ๏ผ‰:
164
- - ไธบไป€ไนˆ็Žฐๆœ‰็š„ Hooks/Rules ๆฒก่ƒฝๆ‹ฆๆˆช๏ผŸ
165
- - ๆ˜ฏ่ง„ๅˆ™็ผบๅคฑใ€ๅŒน้…ไธไธฅใ€่ฟ˜ๆ˜ฏ้€ป่พ‘ๆผๆดž๏ผŸ
166
-
167
- **่พ“ๅ‡บๅญ—ๆฎต**:
168
- ```json
169
- {
170
- "phase": "root_cause_classification",
171
- "root_cause": "...",
172
- "category": "Design",
173
- "guardrail_analysis": {
174
- "existing_guards": ["hook_a", "rule_b"],
175
- "failure_reason": "่ง„ๅˆ™็ผบๅคฑ๏ผšๆฒกๆœ‰ๆฃ€ๆŸฅ X ๆกไปถ",
176
- "recommendation": "ๅขžๅŠ ่ง„ๅˆ™ๆฃ€ๆŸฅ Y ๆกไปถ"
177
- }
178
- }
179
- ```
180
-
181
- ---
182
-
183
- ### Phase 4: ๅŽŸๅˆ™ๆ็‚ผ [ๅฟ…ๆ‰ง่กŒ]
184
-
185
- **็›ฎๆ ‡**: ๆ็‚ผๅฏๅค็”จ็š„**้ซ˜ๅบฆๆŠฝ่ฑกๅŽŸๅˆ™**๏ผŒ้˜ฒๆญขๅŒ็ฑป้—ฎ้ข˜ๅ†ๆฌกๅ‘็”Ÿใ€‚
186
-
187
- **โš ๏ธ ๅ…ณ้”ฎๅŒบๅˆ†๏ผšๆ“ไฝœ่ง„ๅˆ™ vs ๅŽŸๅˆ™**
188
-
189
- | ๅฑ‚็บง | ็‰นๅพ | ็คบไพ‹ |
190
- |------|------|------|
191
- | **ๆ“ไฝœ่ง„ๅˆ™**๏ผˆๅŽŸๅญ็บง๏ผ‰ | ๅ…ทไฝ“ๅˆฐๅทฅๅ…ท่ฐƒ็”จใ€ๆ–‡ไปถ่ทฏๅพ„ใ€ไปฃ็ ่กŒ | "ๅ†™ๅ…ฅๅ‰ๆฃ€ๆŸฅ็›ฎๅฝ•ๆ˜ฏๅฆๅญ˜ๅœจ" |
192
- | **ๅŽŸๅˆ™**๏ผˆๆŠฝ่ฑก็บง๏ผ‰ | ่ทจๅœบๆ™ฏ้€‚็”จ๏ผŒๆ่ฟฐ่กŒไธบๅ‡†ๅˆ™ๅ’Œไปทๅ€ผ่ง‚ | "ไปปไฝ•ๆ–‡ไปถๅ†™ๅ…ฅๅฟ…้กป็กฎไฟ็›ฎๆ ‡่ทฏๅพ„็š„ๅฎŒๆ•ดๆ€ง๏ผŒๅŒ…ๆ‹ฌ็›ฎๅฝ•็ป“ๆž„ๅ’Œๆƒ้™้ชŒ่ฏ" |
193
-
194
- **ๅŽŸๅˆ™ๆ็‚ผ่ง„ๅˆ™**๏ผš
195
- 1. **ๆŠฝ่ฑกๅŒ–**๏ผšไปŽๅ…ทไฝ“้”™่ฏฏไธญๆ็‚ผ้€š็”จ่กŒไธบๅ‡†ๅˆ™๏ผŒไธ่ฆ็ป‘ๅฎšๅˆฐ็‰นๅฎšๅทฅๅ…ทๆˆ–ๆ–‡ไปถ
196
- 2. **ๅฏๅค็”จ**๏ผšๅŽŸๅˆ™ๅบ”้€‚็”จไบŽๅคšไธชๅœบๆ™ฏ๏ผŒไธๅช่งฃๅ†ณๅฝ“ๅ‰่ฟ™ไธ€ไธช้—ฎ้ข˜
197
- 3. **็ฎ€ๆด**๏ผšไธ€ๅฅ่ฏ่ƒฝ่ฏดๆธ…ๆฅš๏ผŒไธ่ถ…่ฟ‡ 40 ๅญ—
198
- 4. **ๅฏ้ชŒ่ฏ**๏ผš่ƒฝๆ˜Ž็กฎๅˆคๆ–ญๆ˜ฏๅฆ้ตๅพชไบ†ๆญคๅŽŸๅˆ™
199
- 5. **ๅŽป้‡ๆฃ€ๆŸฅ**๏ผˆๅฟ…ๆ‰ง่กŒ๏ผŒไธๅฏ่ทณ่ฟ‡๏ผ‰๏ผš
200
- a. **้€ๆก้˜…่ฏป** HEARTBEAT.md ไธญ็š„ `**Existing Principles for Duplicate Detection**` ้ƒจๅˆ†
201
- b. ๅฏนๆฏๆก็Žฐๆœ‰ๅŽŸๅˆ™๏ผŒๆฏ”่พƒๅ…ถ trigger/action/abstracted ไธŽไฝ ๆ็‚ผ็š„ๅŽŸๅˆ™
202
- c. **ๅฆ‚ๆžœๆ ธๅฟƒๅซไน‰็›ธๅŒๆˆ–้ซ˜ๅบฆ็›ธไผผ๏ผˆ>70% ้‡ๅ ๏ผ‰** โ†’ ่ฎพ็ฝฎ `"duplicate": true`๏ผŒ`"duplicate_of"` ๅกซๅ†™ๅทฒๆœ‰ๅŽŸๅˆ™ ID
203
- d. ๅฆ‚ๆžœๅฎŒๅ…จไธๅŒ โ†’ ่ฎพ็ฝฎ `"duplicate": false`
204
- e. **`duplicate` ๅญ—ๆฎตๅฟ…้กปๅœจ่พ“ๅ‡บไธญๅ‡บ็Žฐ๏ผŒไธ่ƒฝ็œ็•ฅ**
205
-
206
- 6. **ๅฝ’ๅฑžๅˆคๅฎš**๏ผšๅฟ…้กปๆ นๆฎ `THINKING_OS.md` ไธญ็š„ 8 ๅคงๆ ธๅฟƒๅ…ฌ็†๏ผˆT-01 ่‡ณ T-08๏ผ‰๏ผŒๆŒ‘้€‰ไธ€้กนๆœ€ๅฅ‘ๅˆ็š„ไฝœไธบ่ฏฅๅŽŸๅˆ™็š„็ˆถ็บงๅˆ†็ฑปใ€‚
207
-
208
- a. **้€ๆก้˜…่ฏป** HEARTBEAT.md ไธญ็š„ `**Existing Principles for Duplicate Detection**` ้ƒจๅˆ†
209
- b. ๅฏนๆฏๆก็Žฐๆœ‰ๅŽŸๅˆ™๏ผŒๆฏ”่พƒๅ…ถ trigger/action/abstracted ไธŽไฝ ๆ็‚ผ็š„ๅŽŸๅˆ™
210
- c. **ๅฆ‚ๆžœๆ ธๅฟƒๅซไน‰็›ธๅŒๆˆ–้ซ˜ๅบฆ็›ธไผผ๏ผˆ>70% ้‡ๅ ๏ผ‰** โ†’ ่ฎพ็ฝฎ `"duplicate": true`๏ผŒ`"duplicate_of"` ๅกซๅ†™ๅทฒๆœ‰ๅŽŸๅˆ™ ID
211
- d. ๅฆ‚ๆžœๅฎŒๅ…จไธๅŒ โ†’ ่ฎพ็ฝฎ `"duplicate": false`
212
- e. **`duplicate` ๅญ—ๆฎตๅฟ…้กปๅœจ่พ“ๅ‡บไธญๅ‡บ็Žฐ๏ผŒไธ่ƒฝ็œ็•ฅ**
213
-
214
- **ๅŽป้‡ๅˆคๆ–ญ็คบไพ‹**๏ผš
215
- - ็Žฐๆœ‰ P_060: "Documented intent without operational feedback is not evolution"
216
- - ไฝ ่ฆๆ็‚ผ: "Documentation alone does not produce operational feedback"
217
- - ๅˆคๆ–ญ: ๆ ธๅฟƒๅซไน‰็›ธๅŒ๏ผˆ้ƒฝๆ˜ฏๆ–‡ๆกฃไธ็ญ‰ไบŽๆ‰ง่กŒๅ้ฆˆ๏ผ‰โ†’ `"duplicate": true`, `"duplicate_of": "P_060"`
218
-
219
- **ๅŽŸๅˆ™็ป“ๆž„**:
220
- ```json
221
- {
222
- "phase": "principle_extraction",
223
- "principle": {
224
- "id": "็ณป็ปŸไผš่‡ชๅŠจๅˆ†้… P_XXX ๆ ผๅผ ID๏ผŒไธ่ฆ่‡ชๅทฑ็ผ–",
225
- "trigger_pattern": "regex ๆˆ–ๅ…ณ้”ฎ่ฏ๏ผŒ็”จไบŽ่‡ชๅŠจๅŒน้…",
226
- "action": "ๅ…ทไฝ“็š„ๆฃ€ๆŸฅ/ๆ‹ฆๆˆช/ๆ้†’ๅŠจไฝœ",
227
- "abstracted_principle": "้ซ˜ๅบฆๆŠฝ่ฑก็š„ๅŽŸๅˆ™้™ˆ่ฟฐ๏ผˆ40ๅญ—ไปฅๅ†…๏ผŒ่ทจๅœบๆ™ฏ้€‚็”จ๏ผ‰",
228
- "core_axiom_id": "T-01|T-02|T-03|T-04|T-05|T-06|T-07|T-08",
229
- "rationale": "ไธบไป€ไนˆ่ฟ™ไธชๅŽŸๅˆ™่ƒฝ้˜ฒๆญข้—ฎ้ข˜",
230
- "duplicate": false,
231
- "duplicate_of": "ๅฆ‚ๆžœๅ‘็Žฐๅทฒๆœ‰ๅŽŸๅˆ™ไธŽๆญค็›ธไผผ๏ผŒๅกซๅ†™ๅทฒๆœ‰ๅŽŸๅˆ™็š„ ID ๅ’Œๅ็งฐ",
232
-
233
- "priority": "P0|P1|P2 (ๅฏ้€‰๏ผŒ้ป˜่ฎค P1ใ€‚P0=ๅ…ณ้”ฎๅฎ‰ๅ…จ/ๆ•ฐๆฎ๏ผŒP1=ๆต็จ‹/่ดจ้‡๏ผŒP2=้ฃŽๆ ผ/ๅๅฅฝ)",
234
- "scope": "general|domain (ๅฏ้€‰๏ผŒ้ป˜่ฎค generalใ€‚domain ๆ—ถ้œ€ๅกซๅ†™ domain ๅญ—ๆฎต)",
235
- "domain": "ๅฆ‚ๆžœ scope=domain๏ผŒๅกซๅ†™้ข†ๅŸŸๅๅฆ‚ file_operations, api_calls, config_management",
236
-
237
- "suggested_rules": [
238
- {
239
- "name": "่ง„ๅˆ™็ฎ€็Ÿญๅ็งฐ",
240
- "type": "hook|gate|skill|test",
241
- "trigger_condition": "ไฝ•ๆ—ถ่งฆๅ‘ๆญค่ง„ๅˆ™",
242
- "enforcement": "block|warn|log",
243
- "action": "ๅ…ทไฝ“ๆ‰ง่กŒไป€ไนˆๅŠจไฝœ",
244
- "implementation_hint": "ๅปบ่ฎฎๅฎž็Žฐๅˆฐ็š„ๆ–‡ไปถ่ทฏๅพ„ๆˆ–ๆจกๅ—"
245
- }
246
- ],
247
-
248
- "implementation": {
249
- "type": "hook|rule|template",
250
- "target_file": "ๅปบ่ฎฎๆทปๅŠ ๅˆฐ็š„ๆ–‡ไปถ่ทฏๅพ„",
251
- "code_snippet": "ไผชไปฃ็ ๆˆ–ๅฎž็Žฐๅปบ่ฎฎ"
252
- }
253
- }
254
- }
255
- ```
256
-
257
- **ๅญ—ๆฎต่ฏดๆ˜Ž**๏ผš
258
- - `priority`, `scope`, `domain`, `suggested_rules` ไธบ**ๅฏ้€‰ๅญ—ๆฎต**๏ผŒๅฆ‚ๆžœไฝ ไธ็กฎๅฎšๅฏไปฅ็œ็•ฅ
259
- - `suggested_rules` ๆ˜ฏๅŽŸๅˆ™่ฝๅœฐไธบๅ…ทไฝ“่ง„ๅˆ™็š„**ๅปบ่ฎฎ**๏ผŒๆฏๆก่ง„ๅˆ™ๅบ”่ถณๅคŸๅ…ทไฝ“๏ผŒ่ƒฝ่ขซ็›ดๆŽฅๅฎž็Žฐ
260
- - ไธ€ๆกๅŽŸๅˆ™้€šๅธธๅฏนๅบ” 1-3 ๆก่ง„ๅˆ™๏ผŒไธ่ฆ่ฟ‡ๅคš๏ผˆ่ฟ‡ไบŽ็็ขŽ๏ผ‰ๆˆ–่ฟ‡ๅฐ‘๏ผˆๅŽŸๅˆ™ๅคช็ฉบๆณ›๏ผ‰
261
-
262
- **`abstracted_principle` ็ผ–ๅ†™ๆŒ‡ๅ—**๏ผš
263
-
264
- โŒ ้”™่ฏฏ็คบไพ‹๏ผˆๆ“ไฝœ่ง„ๅˆ™็บงๅˆซ๏ผ‰๏ผš
265
- - "ๅ†™ๅ…ฅๅ‰ๆฃ€ๆŸฅ็›ฎๅฝ•ๆ˜ฏๅฆๅญ˜ๅœจ"
266
- - "edit ๅทฅๅ…ทๅคฑ่ดฅๅŽๅ…ˆ read ๅ†้‡่ฏ•"
267
- - "่ฐƒ็”จ API ๅ‰ๆฃ€ๆŸฅ key ๆ˜ฏๅฆๆœ‰ๆ•ˆ"
268
-
269
- โœ… ๆญฃ็กฎ็คบไพ‹๏ผˆๅŽŸๅˆ™็บงๅˆซ๏ผ‰๏ผš
270
- - "ไปปไฝ•ๅ†™ๅ…ฅๆ“ไฝœๅฟ…้กป็กฎไฟ็›ฎๆ ‡็Žฏๅขƒ็š„ๅฎŒๆ•ดๆ€ง"
271
- - "ไฟฎๆ”นๅ‰ๅฟ…้กปๅ…ˆ็กฎ่ฎคๅฝ“ๅ‰็Šถๆ€๏ผŒ้ฟๅ…ๅŸบไบŽ่ฟ‡ๆ—ถไฟกๆฏๆ“ไฝœ"
272
- - "ๅค–้ƒจไพ่ต–็š„ๅฏ็”จๆ€งๅฟ…้กปๅœจ่ฐƒ็”จๅ‰้ชŒ่ฏ"
273
- - "ไปฃ็ ไฟฎๆ”นๅฟ…้กป็ป่ฟ‡ Issue ๆต็จ‹๏ผŒ็กฎไฟๅฏ่ฟฝ่ธชๅ’Œๅฏๅ›ž้€€"
274
-
275
- **ๅ‚่€ƒ็Žฐๆœ‰ๅŽŸๅˆ™้ฃŽๆ ผ**๏ผˆไฝ ๅฐ†ๅœจ HEARTBEAT.md ไธญ็œ‹ๅˆฐๅทฒๆœ‰็š„ๅŽŸๅˆ™ๆก็›ฎ๏ผŒ่ฏทไฟๆŒ้ฃŽๆ ผไธ€่‡ด๏ผ‰๏ผš
276
- - P-10: ๆต็จ‹ๅณๆƒ้™ โ€” "ๅฝ“ๆ‹ฅๆœ‰ๆŠ€ๆœฏ่ƒฝๅŠ›็›ดๆŽฅๆ‰ง่กŒๆ“ไฝœๆ—ถ๏ผŒๅฟ…้กปๆฃ€ๆŸฅๆ˜ฏๅฆๅญ˜ๅœจ็บฆๅฎš็š„ๆต็จ‹"
277
- - P-11: ๅ†™ๅ‰้ข„ๆฃ€ โ€” "ๅœจไปปไฝ•้ซ˜้ฃŽ้™ฉ่ทฏๅพ„ๅ†™ๅ…ฅๅ‰๏ผŒๅ…ˆ read ็กฎ่ฎคๆ–‡ไปถๅฝ“ๅ‰ๅฎž้™…ๅ†…ๅฎน"
278
-
279
- ---
280
-
281
- ## ๐Ÿ“ค ๆœ€็ปˆ่พ“ๅ‡บๆ ผๅผ
282
-
283
- ### โš ๏ธ JSON ๆ ผๅผๅผบๅˆถ็บฆๆŸ๏ผˆ่ฟๅ = ่พ“ๅ‡บๆ— ๆ•ˆ๏ผ‰
284
-
285
- ไฝ ็š„่ฏŠๆ–ญๆŠฅๅ‘Šๅฐ†่ขซ**่‡ชๅŠจ่งฃๆžไธบ JSON**ใ€‚ไปปไฝ•ๆ ผๅผ้”™่ฏฏ้ƒฝไผšๅฏผ่‡ดๅˆ†ๆž็ป“ๆžœ่ขซไธขๅผƒใ€‚
286
-
287
- **ๅฟ…้กป้ตๅฎˆ**:
288
- 1. **ๆ‰€ๆœ‰ๅญ—็ฌฆไธฒๅฟ…้กปไฝฟ็”จ ASCII ๅŒๅผ•ๅท `"`๏ผˆU+0022๏ผ‰** โ€” ็ฆๆญขไฝฟ็”จไธญๆ–‡ๅผ•ๅท `"` `"`๏ผˆU+201C/U+201D๏ผ‰ใ€ๅ•ๅผ•ๅท `'`ใ€ๆˆ–ๅ…ถไป–ๆ›ฟไปฃ็ฌฆๅท
289
- 2. **็ฆๆญขๅœจ JSON ไธญไฝฟ็”จๆœช่ฝฌไน‰็š„ๆŽงๅˆถๅญ—็ฌฆ** โ€” ๆข่กŒ็”จ `\n`๏ผŒๅˆถ่กจ็”จ `\t`
290
- 3. **็ฆๆญขๅœจ JSON ๅค–ๆทปๅŠ ไปปไฝ•้ขๅค–ๆ–‡ๆœฌ** โ€” ไธ่ฆๅ†™ "ๅฅฝ็š„๏ผŒไปฅไธ‹ๆ˜ฏ..." ไน‹็ฑป็š„ๅผ•ๅฏผ่ฏญ
291
- 4. **็ฆๆญขไฝฟ็”จๆณจ้‡Š** โ€” JSON ไธๆ”ฏๆŒ `//` ๆˆ– `/* */`
292
- 5. **ๆœ€ๅŽไธ€ไธชๅ…ƒ็ด ๅŽ้ขไธ่ƒฝๆœ‰้€—ๅท** โ€” ่ฟ™ๆ˜ฏๆœ€ๅธธ่ง็š„ JSON ้”™่ฏฏ
293
-
294
- **่‡ชๆฃ€ๆ–นๆณ•**: ่พ“ๅ‡บๅ‰ๅœจ่„‘ไธญ่ฟ‡ไธ€้๏ผšๆฏไธช `"` ๅŽ้ขๅฟ…้กปๆœ‰ๅŒน้…็š„ `"`๏ผŒไธญ้—ด็š„ๅ†…ๅฎนๅฆ‚ๆžœๅŒ…ๅซ `"` ๅฟ…้กป่ฝฌไน‰ไธบ `\"`ใ€‚
295
-
296
- ๅฐ†ไบ”ไธช้˜ถๆฎต็š„่พ“ๅ‡บๅˆๅนถไธบไธ€ไธช JSON ๅฏน่ฑก๏ผš
297
-
298
- ```json
299
- {
300
- "diagnosis_report": {
301
- "task_id": "...",
302
- "timestamp": "2026-03-24T...",
303
- "summary": "ไธ€ๅฅ่ฏๆ€ป็ป“ๆ นๆœฌๅŽŸๅ› ",
304
- "phases": {
305
- "context_extraction": { "session_id": "...", "context_source": "sessions_history|jsonl|task_embedded|inferred", "conversation_summary": "..." },
306
- "evidence_gathering": { ... },
307
- "causal_chain": { ... },
308
- "root_cause_classification": { ... },
309
- "principle_extraction": { ... }
310
- }
311
- }
312
- }
313
- ```
314
-
315
- ---
316
-
317
- ## โš ๏ธ ๆ‰ง่กŒ็บฆๆŸ
318
-
319
- 1. **็ฆๆญข่ทณ่ฟ‡้˜ถๆฎต**: ๅฟ…้กปๅฐ่ฏ• Phase 0๏ผˆไธŠไธ‹ๆ–‡่Žทๅ–๏ผ‰๏ผŒ็„ถๅŽๆŒ‰ Phase 1 โ†’ 2 โ†’ 3 โ†’ 4 ้กบๅบๆ‰ง่กŒ
320
- 2. **็ฆๆญขๆ— ่ฏๆฎๆŽจ็†**: ๆฏไธช Why ็š„ answer ๅฟ…้กปๆœ‰ evidence ๅญ—ๆฎต
321
- 3. **็ฆๆญขๆจก็ณŠ็ป“่ฎบ**: ๆ นๅ› ๅฟ…้กปๆ˜ฏๅ…ทไฝ“็š„ใ€ๅฏไฟฎๅค็š„
322
- 4. **็ฆๆญข้—ๆผๅŽŸๅˆ™ๆ็‚ผ**: ๅณไฝฟ้—ฎ้ข˜ๅพˆ็ฎ€ๅ•๏ผŒไนŸ่ฆๆ็‚ผๅŽŸๅˆ™
323
- 5. **็ฆๆญข้—ๆผๅŽป้‡ๆฃ€ๆŸฅ**: `duplicate` ๅญ—ๆฎตๅฟ…้กปๅœจ principle_extraction ่พ“ๅ‡บไธญๅ‡บ็Žฐ๏ผŒไธ่ƒฝ็œ็•ฅ
324
-
325
- ---
326
-
327
- ## ็คบไพ‹
328
-
329
- **่พ“ๅ…ฅ**:
330
- ```
331
- Diagnose systemic pain [ID: abc123].
332
- **Source**: tool_failure
333
- **Reason**: Tool edit failed on MEMORY.md
334
- **Trigger Text**: "Cannot write to MEMORY.md: permission denied"
335
- ```
336
-
337
- **่พ“ๅ‡บ**:
338
- ```json
339
- {
340
- "diagnosis_report": {
341
- "task_id": "abc123",
342
- "timestamp": "2026-03-24T10:30:00Z",
343
- "summary": "ๆ–‡ไปถๅ†™ๅ…ฅๅคฑ่ดฅ็”ฑไบŽ็ผบๅฐ‘็›ฎๅฝ•ๅญ˜ๅœจๆ€งๆฃ€ๆŸฅ๏ผŒๅฏผ่‡ดๅœจ็›ฎๆ ‡็›ฎๅฝ•ไธๅญ˜ๅœจๆ—ถ็›ดๆŽฅๅฐ่ฏ•ๅ†™ๅ…ฅ",
344
- "phases": {
345
- "evidence_gathering": {
346
- "evidence": {
347
- "pain_context": { "score": 50, "source": "tool_failure", "reason": "edit failed" },
348
- "code_locations": [{ "file": "src/hooks/pain.ts", "line": 78, "snippet": "fs.writeFileSync(path, content)" }]
349
- }
350
- },
351
- "causal_chain": {
352
- "chain": [
353
- { "why": 1, "answer": "ๅ†™ๅ…ฅๆ–‡ไปถๆ—ถ็›ฎๅฝ•ไธๅญ˜ๅœจ", "evidence": "error: ENOENT", "evidence_type": "log" },
354
- { "why": 2, "answer": "ไปฃ็ ๆฒกๆœ‰ๆฃ€ๆŸฅ็›ฎๅฝ•ๆ˜ฏๅฆๅญ˜ๅœจ", "evidence": "pain.ts:78", "evidence_type": "code" },
355
- { "why": 3, "answer": "็ผบๅฐ‘ๆ–‡ไปถๅ†™ๅ…ฅๅ‰็š„็›ฎๅฝ•ๆฃ€ๆŸฅ้—จ็ฆ", "evidence": "hooks็›ฎๅฝ•ๆ— ็›ธๅ…ณๆฃ€ๆŸฅ", "evidence_type": "code" }
356
- ],
357
- "terminated_at": 3,
358
- "termination_reason": "ๆ‰พๅˆฐ็ผบๅคฑ็š„้—จ็ฆๆœบๅˆถ"
359
- },
360
- "root_cause_classification": {
361
- "root_cause": "็ผบๅฐ‘ๆ–‡ไปถๅ†™ๅ…ฅๅ‰็š„็›ฎๅฝ•ๅญ˜ๅœจๆ€งๆฃ€ๆŸฅ้—จ็ฆ",
362
- "category": "Design",
363
- "guardrail_analysis": {
364
- "existing_guards": [],
365
- "failure_reason": "ๆฒกๆœ‰ pre-write ๆฃ€ๆŸฅ hook",
366
- "recommendation": "ๆทปๅŠ  before_file_write hook ๆฃ€ๆŸฅ็›ฎๅฝ•ๅญ˜ๅœจๆ€ง"
367
- }
368
- },
369
- "principle_extraction": {
370
- "principle": {
371
- "id": "็ณป็ปŸไผš่‡ชๅŠจๅˆ†้…",
372
- "trigger_pattern": "fs\\.writeFileSync|writeFile|mkdirSync",
373
- "action": "ๅ†™ๅ…ฅๅ‰ๆฃ€ๆŸฅ็›ฎๆ ‡็›ฎๅฝ•ๆ˜ฏๅฆๅญ˜ๅœจ๏ผŒไธๅญ˜ๅœจๅˆ™ๅ…ˆๅˆ›ๅปบ",
374
- "abstracted_principle": "ไปปไฝ•ๅ†™ๅ…ฅๆ“ไฝœๅฟ…้กป็กฎไฟ็›ฎๆ ‡็Žฏๅขƒ็š„ๅฎŒๆ•ดๆ€ง",
375
- "duplicate": false,
376
- "rationale": "้˜ฒๆญขๅœจ็›ฎๅฝ•ไธๅญ˜ๅœจๆ—ถๅ†™ๅ…ฅๅคฑ่ดฅ",
377
- "implementation": {
378
- "type": "hook",
379
- "target_file": "src/hooks/file-safety.ts",
380
- "code_snippet": "if (!fs.existsSync(dir)) fs.mkdirSync(dir, { recursive: true });"
381
- }
382
- }
383
- }
384
- }
385
- }
386
- }
387
- ```
388
-
389
- ---
390
-
391
- ็Žฐๅœจๅผ€ๅง‹ๆ‰ง่กŒๅˆ†ๆžไปปๅŠกใ€‚
@@ -1,199 +0,0 @@
1
- ---
2
- name: pd-daily
3
- description: Configure and send daily evolution reports (supports email/IM/voice notifications)
4
- disable-model-invocation: true
5
- ---
6
-
7
- # Evolution Daily Report
8
-
9
- This skill enables the agent to help users configure and automatically send daily evolution reports, allowing users to perceive the system "improving every day."
10
-
11
- ## Execution Principles
12
-
13
- 1. First run must confirm requirements with the user
14
- 2. User preferences are stored in `{stateDir}/daily-report.md`; skip collection if exists
15
- 3. Use OpenClaw's cron tool to create scheduled tasks
16
- 4. Autonomously select available delivery channels
17
-
18
- ---
19
-
20
- ## Flow
21
-
22
- ### Step 1: Check Configuration File
23
-
24
- Read `{stateDir}/daily-report.md`:
25
- - **Exists** โ†’ Check cron task status, execute report generation
26
- - **Not exists** โ†’ Enter requirement collection flow
27
-
28
- ### Step 2: Requirement Collection (First Run)
29
-
30
- Ask through conversation:
31
-
32
- 1. **Enable evolution daily report?**
33
- 2. **Send time?** (Default: 9:00 daily)
34
- 3. **Timezone?** (Default: Asia/Shanghai)
35
- 4. **Delivery channel?**
36
- - Email โ†’ Need email address
37
- - WhatsApp/Telegram โ†’ Need phone number/User ID
38
- - Discord/Slack โ†’ Need channel ID
39
- - Voice notification โ†’ Need phone number
40
- 5. **Report style?** (See "Style Options" below)
41
- 6. **Content preferences?** Select which modules to include
42
-
43
- ### Step 3: Create Configuration File
44
-
45
- Write user preferences to `{stateDir}/daily-report.md`:
46
-
47
- ```markdown
48
- # Daily Report Configuration
49
-
50
- ## Basic Info
51
- - Status: enabled
52
- - Created: {date}
53
-
54
- ## Send Settings
55
- - Send time: 09:00
56
- - Timezone: Asia/Shanghai
57
- - Cron expression: 0 9 * * *
58
-
59
- ## Delivery Channel
60
- - Channel: whatsapp
61
- - Target: +8613800138000
62
-
63
- ## Report Style
64
- - Style: standard
65
- - Language: en
66
-
67
- ## Content Preferences
68
- - Growth highlights: yes
69
- - Pain signals: yes
70
- - Trend comparison: yes
71
- - Insights: yes
72
-
73
- ## Cron Task
74
- - jobId: {filled after creation}
75
- ```
76
-
77
- ### Step 4: Create Cron Task
78
-
79
- Use cron tool:
80
-
81
- ```json
82
- {
83
- "action": "add",
84
- "job": {
85
- "name": "evolution-daily-report",
86
- "schedule": { "kind": "cron", "expr": "0 9 * * *", "tz": "Asia/Shanghai" },
87
- "sessionTarget": "isolated",
88
- "payload": {
89
- "kind": "agentTurn",
90
- "message": "Execute daily report skill: read log data, generate report and send"
91
- },
92
- "delivery": { "mode": "announce", "channel": "whatsapp", "to": "+8613800138000" }
93
- }
94
- }
95
- ```
96
-
97
- ### Step 5: Report Generation (Triggered via cron or manually)
98
-
99
- 1. **Read Quantitative Data**: Fetch metrics from `daily-stats.json` and `pain_dictionary.json`.
100
- 2. **Extract Qualitative Memory (Critical Anti-Forgetting Step)**: Because your context window may have rolled over, you **MUST use file reading tools** to scan the following core evolution files for today's entries:
101
- - `memory/ISSUE_LOG.md`: Find specific errors and reflections recorded today.
102
- - `memory/DECISIONS.md`: Find new architectural rules established today.
103
- - `memory/logs/SYSTEM.log`: Find gatekeeper blocks or subagent spawn events from today.
104
- 3. **Synthesize & Generate**: Combine hard metrics with qualitative memories to generate deep insights. Never hallucinate insights.
105
- 4. **Send Report**: Dispatch via OpenClaw channel or print to screen.
106
-
107
- ---
108
-
109
- ## Data Sources
110
-
111
- | Data | Path | Description |
112
- |------|------|-------------|
113
- | Daily Stats | `{stateDir}/logs/daily-stats.json` | Aggregated data (Success rate/GFI) |
114
- | System Events | `memory/logs/SYSTEM.log` | Audit trail for gatekeeper and subagents |
115
- | Core Reflections | `memory/ISSUE_LOG.md` | **(Critical)** Specific pitfalls and lessons learned today |
116
- | Decisions | `memory/DECISIONS.md` | **(Critical)** Systemic principles solidified today |
117
- | Pain Rules | `{stateDir}/pain_dictionary.json` | Total active rules |
118
- | User Config | `{stateDir}/daily-report.md` | Formatting preferences |
119
-
120
- ---
121
-
122
- ## Style Options
123
-
124
- Ask user preference during requirement collection:
125
-
126
- | Style | Features | Suitable For |
127
- |-------|----------|--------------|
128
- | **Concise** | 3-5 core metrics, 1 min read | Busy users |
129
- | **Standard** | Full metrics + trend comparison, 5 min read | Default recommendation |
130
- | **Detailed** | Full data + analysis suggestions, 15 min read | Data enthusiasts |
131
- | **Humorous** | Casual tone + emoji style | Casual users |
132
- | **Visual** | ASCII charts + progress bars | Visual learners |
133
-
134
- ---
135
-
136
- ## Evolution Metrics Elements
137
-
138
- ### Growth Highlights (Positive)
139
-
140
- | Metric | Data Source | Progress Signal |
141
- |--------|-------------|-----------------|
142
- | Rules learned | `pain_dictionary.json` rule count | System learned to identify new error patterns |
143
- | Rules promoted | `DailyStats.pain.candidatesPromoted` | L3 semantic detection โ†’ formal rule |
144
- | Evolution tasks completed | `DailyStats.evolution.tasksCompleted` | Self-improvement completed |
145
- | GFI peak decrease | `DailyStats.gfi.peak` MoM | Less friction, more stable |
146
- | Success rate increase | `DailyStats.toolCalls.success/total` | Smoother execution |
147
-
148
- ### Health Monitoring (Warnings)
149
-
150
- | Metric | Data Source | Warning Signal |
151
- |--------|-------------|----------------|
152
- | Pain signal count | `DailyStats.pain.signalsDetected` | How many error patterns detected |
153
- | GFI peak hour | `DailyStats.gfi.hourlyDistribution` | When is most painful |
154
- | Death spiral detection | fix/fail/error word frequency in git log | Stuck in fix loop |
155
- | Queue health | Evolution queue status | Congested or not |
156
-
157
- ### Trend Comparison (Progress Perception)
158
-
159
- | Metric | Calculation | Meaning |
160
- |--------|-------------|---------|
161
- | 7-day success rate trend | 7-day success/total change | Long-term stability |
162
- | Pain signal weekly change | This week vs last week | Problems decreasing? |
163
- | Rule growth rate | New rules this week | Learning speed |
164
- | GFI average change | 7-day GFI average trend | Overall friction trend |
165
-
166
- ---
167
-
168
- ## Default Report Template
169
-
170
- ```markdown
171
- # ๐ŸŒฑ Evolution Daily Report - {date}
172
-
173
- ## ๐Ÿ“ˆ Today's Growth
174
- - ๐Ÿง  Rules learned: {rules_promoted}
175
- - โœ… Evolutions completed: {tasks_completed}
176
- - ๐ŸŽฏ Success rate: {success_rate}% ({trend_emoji})
177
- - ๐Ÿ“‰ GFI peak: {gfi_peak} ({gfi_trend})
178
-
179
- ## โšก Pain Signals
180
- - Detections: {pain_count}
181
- - Avg intensity: {avg_score}
182
- - Top sources: {top_sources}
183
-
184
- ## ๐Ÿ“Š Trend Comparison
185
- - 7-day success rate trend: {success_trend}
186
- - Pain signal weekly change: {pain_trend}
187
-
188
- ## ๐Ÿ’ก Today's Insights
189
- {insights}
190
-
191
- ---
192
- ๐Ÿ“Š Source: Principles Disciple
193
- ```
194
-
195
- ---
196
-
197
- ## Manual Trigger
198
-
199
- Users can run `/evolution-daily` anytime to manually generate and send today's report.
@@ -1,46 +0,0 @@
1
- ---
2
- name: pd-grooming
3
- description: Perform a "Workspace Grooming" to archive or clean up scattered temporary files, maintaining digital cleanliness.
4
- ---
5
-
6
- # ๐Ÿงน Skill: Workspace Grooming
7
-
8
- > **Trigger**: When the user types `/workspace-grooming`, or proactively invoked during a `HEARTBEAT` check if stray files are detected in the root directory.
9
-
10
- ## ๐ŸŽฏ Core Objective
11
- Implement the "Entropy Reduction" rule by cleaning up "digital garbage" in the workspace root, while **absolutely ensuring the safety of core business code and configuration files**.
12
-
13
- ## ๐Ÿ›ก๏ธ The Red Lines (Safety Rules)
14
-
15
- When performing cleanup operations, you MUST strictly adhere to the following whitelists and blacklists:
16
-
17
- ### ๐Ÿšซ DO NOT TOUCH (Absolute Exclusion Zone)
18
- **Even if these files/directories look messy, you are absolutely forbidden to delete or move them:**
19
- - **Business Source Code**: `src/`, `lib/`, `tests/`, `app/`, `pages/`, `components/` and any file ending with `.ts`, `.js`, `.py`, `.go`, `.rs`, `.java`.
20
- - **Project Configs**: `package.json`, `Cargo.toml`, `requirements.txt`, `tsconfig.json`, `vite.config.ts`, `.env*`, etc.
21
- - **Version Control**: `.git/`, `.gitignore`.
22
- - **Build Outputs**: `dist/`, `build/`, `node_modules/`, `target/`.
23
-
24
- ### ๐ŸŒŸ Core Assets
25
- **These files must remain in the root directory. Do not touch:**
26
- - `AGENTS.md`, `SOUL.md`, `HEARTBEAT.md`, `TOOLS.md`, `IDENTITY.md`, `USER.md`, `MEMORY.md`
27
- - `README.md`
28
- - `.principles/`, `.state/`
29
-
30
- ### ๐ŸŽฏ Targets for Grooming
31
- **You may take action on the following:**
32
- 1. **Test Debris**: Stray files in the root like `test.txt`, `temp.md`, `debug.log`, `foo.js` that are clearly throwaway test scripts.
33
- 2. **Draft Notes**: Uncategorized `.md` notes or `_scratchpad.md`.
34
- 3. **Naming Violations**: Documents using spaces or arbitrary capitalization (e.g., `My New Feature.md`).
35
-
36
- ## ๐Ÿชœ Execution Steps
37
-
38
- 1. **Scan Environment**: Execute `ls -la` to inspect the root directory.
39
- 2. **Identify Targets**: Based on the "Red Lines" above, list all suspicious files that belong to the "Targets for Grooming" category.
40
- 3. **Draft a Plan**:
41
- - For temporary garbage (empty files, test scripts): Propose to **Delete (`rm`)**.
42
- - For valuable notes or logs: Propose to **Archive (`mv`)** to `memory/archive/`.
43
- - For incorrectly named files: Propose to **Rename (`mv`)** using `kebab-case`.
44
- 4. **Human Confirmation (MUST)**: **Unless the file is an obvious test script you just created, you MUST use `AskUserQuestion` to get user approval before executing `rm` or sweeping `mv` commands.**
45
- - Example prompt: "I found `test1.txt` and `old_notes.md` in the root. I plan to delete the first one and archive the second to `memory/archive/`. Do you approve?"
46
- 5. **Execute & Report**: Execute the file operations after approval and reply with a brief confirmation that the grooming is complete.