@sokeai/cli 1.0.76 → 1.0.77

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 (123) hide show
  1. package/README.md +7 -7
  2. package/package.json +1 -1
  3. package/scripts/build-binaries.sh +1 -1
  4. package/scripts/e2e-test.sh +75 -3
  5. package/skills/SKILL.md +18 -1
  6. package/skills/soke-ai-coach-director/CHANGELOG.md +203 -0
  7. package/skills/soke-ai-coach-director/README.md +123 -0
  8. package/skills/soke-ai-coach-director/SKILL.md +221 -0
  9. package/skills/soke-ai-coach-director/coaching/knowledge-packager/knowledge-packager.md +91 -0
  10. package/skills/soke-ai-coach-director/coaching/prompt-engineer/parts/part2-roles.md +97 -0
  11. package/skills/{ai-coach-director → soke-ai-coach-director}/coaching/prompt-engineer/parts/part3-flow.md +3 -3
  12. package/skills/soke-ai-coach-director/coaching/prompt-engineer/prompt-engineer.md +76 -0
  13. package/skills/{ai-coach-director → soke-ai-coach-director}/coaching/prompt-optimizer/prompt-optimizer.md +77 -58
  14. package/skills/{ai-coach-director → soke-ai-coach-director}/platform/adapters/workbuddy.md +2 -3
  15. package/skills/soke-ai-coach-director/platform/interaction.md +103 -0
  16. package/skills/{ai-coach-director → soke-ai-coach-director}/platform/publish-gate.md +3 -3
  17. package/skills/{ai-coach-director → soke-ai-coach-director}/platform/resource-finalizer.md +10 -35
  18. package/skills/{ai-coach-director → soke-ai-coach-director}/platform/soke-ai-training/soke-ai-training.md +33 -3
  19. package/skills/soke-ai-coach-director/platform/sync-engine.md +39 -0
  20. package/skills/{ai-coach-director → soke-ai-coach-director}/references/change-log-partwise-refactor.md +1 -1
  21. package/skills/soke-ai-coach-director/references/env-check.md +146 -0
  22. package/skills/soke-ai-coach-director/references/exec-common.md +126 -0
  23. package/skills/soke-ai-coach-director/references/exec-handbook.md +621 -0
  24. package/skills/soke-ai-coach-director/references/exec-part1.md +86 -0
  25. package/skills/soke-ai-coach-director/references/exec-part2.md +145 -0
  26. package/skills/soke-ai-coach-director/references/exec-part3.md +91 -0
  27. package/skills/soke-ai-coach-director/references/exec-part4.md +187 -0
  28. package/skills/soke-ai-coach-director/references/gate-check-matrix.md +46 -0
  29. package/skills/soke-ai-coach-director/references/micro-tune-labels.md +30 -0
  30. package/skills/soke-ai-coach-director/references/platform-api-pitfalls.md +49 -0
  31. package/skills/soke-ai-coach-director/references/role-resource-matching.md +45 -0
  32. package/skills/{ai-coach-director → soke-ai-coach-director}/references/self-improvement-examples.md +2 -0
  33. package/skills/soke-ai-coach-director/references/self-learning-engine.md +489 -0
  34. package/skills/soke-ai-coach-director/references/subs/part1/SOP.md +17 -0
  35. package/skills/soke-ai-coach-director/references/subs/part2/SOP.md +34 -0
  36. package/skills/soke-ai-coach-director/references/subs/part3/SOP.md +27 -0
  37. package/skills/soke-ai-coach-director/references/subs/part4/SOP.md +31 -0
  38. package/skills/soke-ai-coach-director/references/subs/publish/SOP.md +81 -0
  39. package/skills/soke-ai-coach-director/references/subs/tune/SOP.md +92 -0
  40. package/skills/soke-ai-coach-director/references/verified-cli-cheatsheet.md +56 -0
  41. package/skills/{ai-coach-director → soke-ai-coach-director}/scripts/activator.sh +0 -0
  42. package/skills/{ai-coach-director → soke-ai-coach-director}/scripts/error-detector.sh +0 -0
  43. package/skills/{ai-coach-director → soke-ai-coach-director}/scripts/extract-skill.sh +0 -0
  44. package/skills/soke-ai-coach-director/scripts/gate_check.py +112 -0
  45. package/skills/soke-ai-coach-director/scripts/validate_operations.py +403 -0
  46. package/skills/soke-certificate/SKILL.md +717 -0
  47. package/skills/soke-course/README.md +6 -2
  48. package/skills/soke-course/SKILL.md +3 -3
  49. package/skills/soke-course/references/course-list-courses.md +49 -84
  50. package/skills/soke-course/references/intent-cases.md +2 -2
  51. package/skills/soke-course/references/sop-full-workflow.md +4 -2
  52. package/skills/soke-course/references/subs/publish/SOP.md +21 -3
  53. package/skills/soke-course/references/subs/query/SOP.md +9 -7
  54. package/skills/soke-course/references/subs/settings/SOP.md +2 -1
  55. package/skills/soke-exam-question-pool/SKILL.md +2 -2
  56. package/skills/soke-task/SKILL.md +32 -10
  57. package/skills/soke-training-demand/SKILL.md +2 -2
  58. package/skills/ai-coach-director/SKILL.md +0 -1563
  59. package/skills/ai-coach-director/coaching/prompt-engineer/parts/part2-roles.md +0 -317
  60. package/skills/ai-coach-director/coaching/prompt-engineer/prompt-engineer.md +0 -244
  61. package/skills/ai-coach-director/platform/interaction.md +0 -315
  62. package/skills/ai-coach-director/platform/sync-engine.md +0 -1101
  63. package/skills/ai-coach-director/references/cases/create//345/206/234/346/210/267/345/274/240/350/200/201/346/235/277/347/224/265/350/257/235/347/272/246/350/256/277//345/206/234/346/210/267/345/274/240/350/200/201/346/235/277/347/224/265/350/257/235/347/272/246/350/256/277_/346/240/207/345/207/206/347/237/245/350/257/206/345/272/223.md +0 -199
  64. package/skills/ai-coach-director/references/cases/create//345/206/234/346/210/267/345/274/240/350/200/201/346/235/277/347/224/265/350/257/235/347/272/246/350/256/277//345/206/234/346/210/267/345/274/240/350/200/201/346/235/277/347/224/265/350/257/235/347/272/246/350/256/277/347/237/245/350/257/206/345/272/223.md +0 -388
  65. package/skills/ai-coach-director/references/cases/create//346/237/220/345/233/275/351/231/205/346/243/200/346/265/213/346/234/272/346/236/204/tuv-knowledge-base.md +0 -125
  66. package/skills/ai-coach-director/references/cases/create//346/237/220/345/233/275/351/231/205/346/243/200/346/265/213/346/234/272/346/236/204/tuv-p03-first-call-scenario-prompt.md +0 -428
  67. package/skills/ai-coach-director/references/cases/create//346/237/220/345/233/275/351/231/205/346/243/200/346/265/213/346/234/272/346/236/204//346/237/220/345/233/275/351/231/205/346/243/200/346/265/213/346/234/272/346/236/204P03/351/231/252/347/273/203/346/211/247/350/241/214/346/226/271/346/241/210_20260610.md +0 -225
  68. package/skills/ai-coach-director/references/cases/create//346/237/220/345/234/260/346/226/271/351/223/266/350/241/214//346/237/220/345/234/260/346/226/271/351/223/266/350/241/214/345/206/234/346/210/267/345/274/240/350/200/201/346/235/277/347/224/265/350/257/235/347/272/246/350/256/277AI/351/231/252/347/273/203/346/265/213/350/257/225/347/224/250/344/276/213/345/220/210/351/233/206.md +0 -525
  69. package/skills/ai-coach-director/references/cases/create//347/211/251/346/265/201/350/241/214/344/270/232//347/211/251/346/265/201/350/241/214/344/270/232-/345/210/235/346/254/241/346/213/234/350/256/277/351/246/231/347/262/276/351/246/231/346/226/231/345/256/242/346/210/267.md +0 -146
  70. package/skills/ai-coach-director/references/cases/create//351/205/222/345/272/227/351/244/220/351/245/256//351/205/222/345/272/227/351/244/220/351/245/256AI/351/231/252/347/273/203_/346/240/207/346/235/2061_/346/226/260/345/223/201/346/216/250/351/224/200_20260701.md +0 -230
  71. package/skills/ai-coach-director/references/cases/create//351/205/222/345/272/227/351/244/220/351/245/256//351/205/222/345/272/227/351/244/220/351/245/256AI/351/231/252/347/273/203_/346/240/207/346/235/2062_/345/202/254/350/217/234/345/256/211/346/212/232_20260701.md +0 -257
  72. package/skills/ai-coach-director/references/cases/create//351/205/222/345/272/227/351/244/220/351/245/256//351/205/222/345/272/227/351/244/220/351/245/256AI/351/231/252/347/273/203_/346/240/207/346/235/2063_/345/267/256/350/257/204/345/233/236/350/256/277_20260701.md +0 -259
  73. package/skills/ai-coach-director/references/cases/create//351/205/222/345/272/227/351/244/220/351/245/256//351/205/222/345/272/227/351/244/220/351/245/256AI/351/231/252/347/273/203/345/234/272/346/231/257/346/226/271/346/241/210_20260701.md +0 -452
  74. package/skills/ai-coach-director/references/cases/create//351/231/214/346/213/234/344/277/241/346/201/257/346/224/266/351/233/206//351/231/214/346/213/234/344/277/241/346/201/257/346/224/266/351/233/206_/345/256/242/346/210/267/347/241/256/350/256/244/345/217/215/351/246/210/350/241/250.md +0 -133
  75. package/skills/ai-coach-director/references/cases/create//351/231/214/346/213/234/344/277/241/346/201/257/346/224/266/351/233/206//351/231/214/346/213/234/344/277/241/346/201/257/346/224/266/351/233/206_/351/231/252/347/273/203/346/217/220/347/244/272/350/257/215_v1.md +0 -333
  76. package/skills/ai-coach-director/references/cases/create//351/231/214/346/213/234/344/277/241/346/201/257/346/224/266/351/233/206//351/231/214/346/213/234/344/277/241/346/201/257/346/224/266/351/233/206_/351/231/252/347/273/203/346/217/220/347/244/272/350/257/215_v2_Part1-Part5.md +0 -649
  77. package/skills/ai-coach-director/references/env-check.md +0 -167
  78. package/skills/ai-coach-director/references/platform-api-pitfalls.md +0 -232
  79. package/skills/ai-coach-director/references/role-resource-matching.md +0 -349
  80. package/skills/ai-coach-director/references/verified-cli-cheatsheet.md +0 -203
  81. /package/skills/{ai-coach-director → soke-ai-coach-director}/assets/ERRORS-TEMPLATE.md +0 -0
  82. /package/skills/{ai-coach-director → soke-ai-coach-director}/assets/FEATURE_REQUESTS-TEMPLATE.md +0 -0
  83. /package/skills/{ai-coach-director → soke-ai-coach-director}/assets/LEARNINGS-TEMPLATE.md +0 -0
  84. /package/skills/{ai-coach-director → soke-ai-coach-director}/assets/SKILL-TEMPLATE.md +0 -0
  85. /package/skills/{ai-coach-director → soke-ai-coach-director}/coaching/prompt-engineer/parts/part1-basic.md +0 -0
  86. /package/skills/{ai-coach-director → soke-ai-coach-director}/coaching/prompt-engineer/parts/part4-scoring.md +0 -0
  87. /package/skills/{ai-coach-director → soke-ai-coach-director}/coaching/prompt-engineer/parts/part5-constraints.md +0 -0
  88. /package/skills/{ai-coach-director → soke-ai-coach-director}/coaching/role-profiler/role-profiler.md +0 -0
  89. /package/skills/{ai-coach-director → soke-ai-coach-director}/platform/adapters/README.md +0 -0
  90. /package/skills/{ai-coach-director → soke-ai-coach-director}/platform/adapters/qclaw.md +0 -0
  91. /package/skills/{ai-coach-director → soke-ai-coach-director}/platform/adapters/wukong.md +0 -0
  92. /package/skills/{ai-coach-director → soke-ai-coach-director}/platform/adapters/zework.md +0 -0
  93. /package/skills/{ai-coach-director → soke-ai-coach-director}/platform/api-fallback.md +0 -0
  94. /package/skills/{ai-coach-director → soke-ai-coach-director}/references/cases/AI/345/256/242/346/210/267/350/247/222/350/211/262/346/250/241/346/235/277/345/272/223.md" +0 -0
  95. /package/skills/{ai-coach-director → soke-ai-coach-director}/references/cases/AI/351/231/252/347/273/203Bad Case/346/240/267/346/234/254/345/272/223.md" +0 -0
  96. /package/skills/{ai-coach-director → soke-ai-coach-director}/references/cases/AI/351/231/252/347/273/203/345/210/233/345/273/272/351/227/256/351/242/230/345/272/223.md" +0 -0
  97. /package/skills/{ai-coach-director → soke-ai-coach-director}/references/cases/AI/351/231/252/347/273/203/345/234/272/346/231/257/345/210/206/347/261/273/345/272/223.md" +0 -0
  98. /package/skills/{ai-coach-director → soke-ai-coach-director}/references/cases/AI/351/231/252/347/273/203/345/256/242/346/210/267/346/235/220/346/226/231/346/270/205/345/215/225/344/270/216/350/256/277/350/260/210/351/242/230/345/272/223.md" +0 -0
  99. /package/skills/{ai-coach-director → soke-ai-coach-director}/references/cases/AI/351/231/252/347/273/203/345/276/256/350/260/203/351/227/256/351/242/230/345/272/223.md" +0 -0
  100. /package/skills/{ai-coach-director → soke-ai-coach-director}/references/cases/AI/351/231/252/347/273/203/346/212/200/346/234/257/350/276/271/347/225/214/344/270/216/346/216/222/351/232/234/345/272/223.md" +0 -0
  101. /package/skills/{ai-coach-director → soke-ai-coach-director}/references/cases/AI/351/231/252/347/273/203/346/217/220/347/244/272/350/257/215/346/250/241/345/235/227/345/272/223.md" +0 -0
  102. /package/skills/{ai-coach-director → soke-ai-coach-director}/references/cases/AI/351/231/252/347/273/203/346/225/260/346/215/256/346/214/207/346/240/207/344/270/216/347/234/213/346/235/277/345/217/243/345/276/204/345/272/223.md" +0 -0
  103. /package/skills/{ai-coach-director → soke-ai-coach-director}/references/cases/AI/351/231/252/347/273/203/346/265/213/350/257/225/347/224/250/344/276/213/345/272/223.md" +0 -0
  104. /package/skills/{ai-coach-director → soke-ai-coach-director}/references/cases/AI/351/231/252/347/273/203/350/257/204/345/210/206/346/240/207/345/207/206/347/273/204/344/273/266/345/272/223.md" +0 -0
  105. /package/skills/{ai-coach-director → soke-ai-coach-director}/references/cases/AI/351/231/252/347/273/203/351/241/271/347/233/256/346/241/210/344/276/213/345/244/215/347/233/230/345/272/223.md" +0 -0
  106. /package/skills/{ai-coach-director → soke-ai-coach-director}/references/cases/AI/351/241/276/345/256/242/350/247/222/350/211/262/346/250/241/346/213/237_GoodCase_BadCase_20260701.md" +0 -0
  107. /package/skills/{ai-coach-director → soke-ai-coach-director}/references/cases/create//345/206/234/346/210/267/345/274/240/350/200/201/346/235/277/347/224/265/350/257/235/347/272/246/350/256/277//345/206/234/346/210/267/345/274/240/350/200/201/346/235/277/345/256/242/346/210/267/346/235/220/346/226/231/346/261/207/346/200/273_2026-05-19_1341.md" +0 -0
  108. /package/skills/{ai-coach-director → soke-ai-coach-director}/references/cases/create//346/226/260/350/203/275/346/272/220/350/275/246/344/270/273/350/264/267//346/226/260/350/203/275/346/272/220/350/275/246/344/270/273/350/264/267/347/237/245/350/257/206/345/272/223/347/224/237/346/210/220_20260615.md" +0 -0
  109. /package/skills/{ai-coach-director → soke-ai-coach-director}/references/cases/create//346/226/260/350/203/275/346/272/220/350/275/246/344/270/273/350/264/267//346/226/260/350/203/275/346/272/220/350/275/246/344/270/273/350/264/267/351/231/252/347/273/203/346/217/220/347/244/272/350/257/215/347/224/237/346/210/220_20260615.md" +0 -0
  110. /package/skills/{ai-coach-director → soke-ai-coach-director}/references/cases/create//346/237/220/345/233/275/351/231/205/346/243/200/346/265/213/346/234/272/346/236/204//346/237/220/345/233/275/351/231/205/346/243/200/346/265/213/346/234/272/346/236/204/351/231/252/347/273/203/346/211/247/350/241/214/346/226/271/346/241/210/344/272/244/344/273/230/350/256/260/345/275/225_20260610.md" +0 -0
  111. /package/skills/{ai-coach-director → soke-ai-coach-director}/references/cases/create//351/231/214/346/213/234/344/277/241/346/201/257/346/224/266/351/233/206//351/231/214/346/213/234/344/277/241/346/201/257/346/224/266/351/233/206_/346/217/220/347/244/272/350/257/215/346/220/255/345/273/272_20260622.md" +0 -0
  112. /package/skills/{ai-coach-director → soke-ai-coach-director}/references/cases/micro-tune//344/274/201/344/270/232/345/256/266/347/216/213/346/200/273/347/263/273/345/210/227//344/274/201/344/270/232/345/256/266/347/216/213/346/200/273/346/217/220/347/244/272/350/257/215_/344/274/230/345/214/226/347/211/210_V1.1_20260616.md" +0 -0
  113. /package/skills/{ai-coach-director → soke-ai-coach-director}/references/cases/micro-tune//344/274/201/344/270/232/345/256/266/347/216/213/346/200/273/347/263/273/345/210/227//344/274/201/344/270/232/345/256/266/347/216/213/346/200/273/346/217/220/347/244/272/350/257/215_/344/274/230/345/214/226/347/211/210_V1.2_20260616.md" +0 -0
  114. /package/skills/{ai-coach-director → soke-ai-coach-director}/references/cases/micro-tune//344/274/201/344/270/232/345/256/266/347/216/213/346/200/273/347/263/273/345/210/227//344/274/201/344/270/232/345/256/266/347/216/213/346/200/273/346/217/220/347/244/272/350/257/215_/345/216/213/347/274/251/347/211/210_V2.0_20260616.md" +0 -0
  115. /package/skills/{ai-coach-director → soke-ai-coach-director}/references/cases/micro-tune//344/274/201/344/270/232/345/256/266/347/216/213/346/200/273/347/263/273/345/210/227//344/274/201/344/270/232/345/256/266/347/216/213/346/200/273/346/217/220/347/244/272/350/257/215/344/274/230/345/214/226_20260616.md" +0 -0
  116. /package/skills/{ai-coach-director → soke-ai-coach-director}/references/cases/micro-tune//345/206/234/346/210/267/345/274/240/350/200/201/346/235/277/347/263/273/345/210/227//345/206/234/346/210/267/345/274/240/350/200/201/346/235/277AI/351/231/252/347/273/203/347/263/273/347/273/237_/346/265/213/350/257/225/345/217/215/351/246/210/346/261/207/346/200/273_2026-06-01.md" +0 -0
  117. /package/skills/{ai-coach-director → soke-ai-coach-director}/references/cases/micro-tune//345/206/234/346/210/267/345/274/240/350/200/201/346/235/277/347/263/273/345/210/227//345/206/234/346/210/267/345/274/240/350/200/201/346/235/277KYC/344/277/241/344/273/273/345/200/274/347/246/201/344/273/244_2026-06-09_0932.md" +0 -0
  118. /package/skills/{ai-coach-director → soke-ai-coach-director}/references/cases/micro-tune//345/206/234/346/210/267/345/274/240/350/200/201/346/235/277/347/263/273/345/210/227//345/206/234/346/210/267/345/274/240/350/200/201/346/235/277KYC/346/217/220/347/244/272/350/257/215_/344/274/230/345/214/226/347/211/210_v2_20260608.md" +0 -0
  119. /package/skills/{ai-coach-director → soke-ai-coach-director}/references/cases/micro-tune//345/206/234/346/210/267/345/274/240/350/200/201/346/235/277/347/263/273/345/210/227//345/206/234/346/210/267/345/274/240/350/200/201/346/235/277/346/217/220/347/244/272/350/257/215_/344/274/230/345/214/226/347/211/210_v1.1.md" +0 -0
  120. /package/skills/{ai-coach-director → soke-ai-coach-director}/references/cases/micro-tune//345/206/234/346/210/267/345/274/240/350/200/201/346/235/277/347/263/273/345/210/227//345/206/234/346/210/267/345/274/240/350/200/201/346/235/277/346/217/220/347/244/272/350/257/215_/344/274/230/345/214/226/347/211/210_v1.2.md" +0 -0
  121. /package/skills/{ai-coach-director → soke-ai-coach-director}/references/cases/micro-tune//345/206/234/346/210/267/345/274/240/350/200/201/346/235/277/347/263/273/345/210/227//345/206/234/346/210/267/345/274/240/350/200/201/346/235/277/346/217/220/347/244/272/350/257/215/344/274/230/345/214/226_V2_/350/257/212/346/226/255/344/272/244/344/273/230_20260609.md" +0 -0
  122. /package/skills/{ai-coach-director → soke-ai-coach-director}/references/cases//345/233/233/345/244/247/345/234/272/346/231/257_GoodCase_BadCase_20260701.md" +0 -0
  123. /package/skills/{ai-coach-director → soke-ai-coach-director}/references/cases//346/241/210/344/276/213/345/272/223/350/241/245/345/205/205_2026-06-24.md" +0 -0
@@ -0,0 +1,45 @@
1
+ # Part2 平台资源自动匹配规则
2
+
3
+ > Part2 用户确认后、生成 `part2-operations.json` 前,后台自动执行。头像/语音不在展示阶段预设,匹配结果随 `replace_ai_roles` 整包写入,不向用户二次确认。
4
+
5
+ ## 特征提取(映射为 CLI 过滤参数)
6
+
7
+ **性别 gender**:男/先生/他/男性名字(建国、志强…)→`male`;女/女士/她/女性名字(芳、丽、敏…)→`female`;无则不传。优先级:name > description > background > MBTI推断。
8
+
9
+ **年龄 age_group**:青年/25-35/新手→`youth`;中年/35-50/经理/主管→`middle-aged`;老年/50+/退休→`senior`;无则不传。优先级:background > description > name。
10
+
11
+ ## CLI 查询(v2.37:全重定向,禁止 --pretty 直出)
12
+
13
+ ```bash
14
+ # 头像(全量重定向到 /tmp/avatars.json,Python 按性别/年龄过滤提取 url)
15
+ soke-cli ai-training +list-role-avatars --lang zh --show-detail > /tmp/avatars.json 2>/dev/null
16
+ # 声音(全量重定向到 /tmp/voices.json,Python 按性别过滤提取 id)
17
+ soke-cli ai-training +list-role-voices --lang zh > /tmp/voices.json 2>/dev/null
18
+ ```
19
+
20
+ > ⚠️ v2.37 起 `--gender` / `--age-group` 参数在 `+list-role-avatars` 不可用(CLI 不支持),改为全量重定向后 Python 本地过滤。`+list-role-voices` 支持 `--gender` 但仍重定向。
21
+
22
+ **Python 提取示例**:
23
+ ```python
24
+ import json
25
+ avatars = json.load(open('/tmp/avatars.json'))
26
+ # 按性别/年龄关键词过滤 title 字段
27
+ for a in avatars:
28
+ if '男' in a.get('title','') and '高管' in a.get('title',''):
29
+ print(a['url']) # 取第一个匹配
30
+ break
31
+ ```
32
+
33
+ **P0-P3 选取**:P0 性别+年龄吻合取第 1 条 → P1 仅性别 → P2 仅年龄 → P3 全量第 1 条默认资源。降级链路:一阶 → 去 age-group → 去 gender → 全量,每次降级记录。
34
+
35
+ ## 写入规范
36
+
37
+ - `role_data.avatar` = 头像 **URL**(来自 `+list-role-avatars` 的 `url` 字段,❌ 不能用资源 id)。
38
+ - `role_data.voice_id` = 声音 **ID**(来自 `+list-role-voices` 的 `id` 字段,❌ 不能用 sample_url/名称)。
39
+ - 头像+语音合并写入**同一个角色的 role_data**(随 `replace_ai_roles` 整包一次写入),禁止分开操作(分开会导致 updated_at 竞态)。
40
+
41
+ ## 验证与异常
42
+
43
+ - apply 后 `get-scenario` 验证每个角色 avatar 非空 URL + voice_id 非空 ID,失败重读 updated_at 重试 1 次。
44
+ - 仍失败或库查询失败 → 标注「资源匹配未完成」,**不阻断后续 Part**,仅影响发布闸门时提示。
45
+ - soke-cli 不可用时降级 REST 回填(见 `platform/api-fallback.md`,匹配规则与 CLI 完全一致)。
@@ -1,5 +1,7 @@
1
1
  # Entry Examples
2
2
 
3
+ > **v2.35 标注:本文件仅微调型任务加载,创建型任务不读。**
4
+
3
5
  Concrete examples of well-formatted entries with all fields.
4
6
 
5
7
  ## Learning: Correction
@@ -0,0 +1,489 @@
1
+ # 自主学习与自我进化引擎
2
+
3
+ > **v2.35 标注:本文件仅微调型任务加载,创建型任务不读**(创建型只读 SKILL.md + exec-handbook + parts/ + 对应 SOP)。
4
+ > 核心思想:每一次诊断纠错、闸门漏拦、资产选错、子技能调度失败、用户纠正,都被自动记录并推广为永久规则。
5
+ > 本引擎是独立 self-improving-agent 思想与 AI 陪练领域的深度整合,在泛用框架之上注入了 12 个 AI 陪练专属 Area、诊断分流触发规则和陪练推广目标表。
6
+
7
+ ## 引擎架构
8
+
9
+ ```
10
+ 用户纠正 / 命令失败 / 闸门漏拦 / 新需求
11
+ ↓ 自动捕获
12
+ ├─ 修正/洞察/缺口/最佳实践 → .learnings/LEARNINGS.md
13
+ ├─ 命令失败/集成异常 → .learnings/ERRORS.md
14
+ ├─ 用户请求的新能力 → .learnings/FEATURE_REQUESTS.md
15
+ ↓ 自我反思(每次完成任务后)
16
+ ├─ 结果是否达到预期?
17
+ ├─ 哪里可以更好?
18
+ ├─ 这是反复出现的模式吗?
19
+ ↓ 模式检测(同类 ≥ 3 次 + 跨 ≥ 2 任务 + 30 天内)
20
+ ↓ 自动推广
21
+ ├─ 行为改进 → 本 SKILL.md(诊断标签/闸门/资产规则/调度流程)
22
+ ├─ 工具坑点 → TOOLS.md
23
+ ├─ 调度规则 → AGENTS.md
24
+ ├─ 长期记忆 → MEMORY.md
25
+ └─ 高价值 → 提取为独立 skill
26
+ ```
27
+
28
+ ## 学习存储分层
29
+
30
+ | 层级 | 位置 | 容量限制 | 加载策略 |
31
+ |------|------|---------|---------|
32
+ | **HOT** | `.learnings/` 中 Priority=critical/high 且 Status=pending 的条目 | 无限制 | 任务开始时扫描 |
33
+ | **WARM** | `.learnings/` 中 Priority=medium 或已 resolved 的条目 | 无限制 | 按 Area 匹配时加载 |
34
+ | **COLD** | 已 promoted / wont_fix / 90 天以上未触发的条目 | 无限 | 显式查询时加载 |
35
+
36
+ ### 分层规则
37
+
38
+ - Pattern 触发 3 次/7 天内 → 提升 Priority 至 high
39
+ - Pattern 30 天未触发 → 降 Priority 至 low
40
+ - Pattern 90 天未触发 → 归档为 COLD(不改动,仅标记)
41
+ - **绝不删除**已确认的学习条目
42
+
43
+ ## 学习文件初始化
44
+
45
+ 首次使用时,确保 `.learnings/` 目录及文件存在:
46
+
47
+ ```bash
48
+ mkdir -p .learnings
49
+ [ -f .learnings/LEARNINGS.md ] || printf "# AI 陪练 - 学习日志\n\n修正、洞察、知识缺口、最佳实践。\n\n**类别**: correction | insight | knowledge_gap | best_practice\n\n---\n" > .learnings/LEARNINGS.md
50
+ [ -f .learnings/ERRORS.md ] || printf "# AI 陪练 - 错误日志\n\n命令失败与集成异常。\n\n---\n" > .learnings/ERRORS.md
51
+ [ -f .learnings/FEATURE_REQUESTS.md ] || printf "# AI 陪练 - 功能请求\n\n用户请求的新能力。\n\n---\n" > .learnings/FEATURE_REQUESTS.md
52
+ ```
53
+
54
+ 不覆盖已有文件。**绝不记录**密钥、token、完整对话抄本或敏感环境变量。
55
+
56
+ ---
57
+
58
+ ## AI 陪练专属 Area 标签
59
+
60
+ | Area | 范围 |
61
+ |------|------|
62
+ | `coaching/prompt` | 提示词创建、优化、微调 |
63
+ | `coaching/role` | 角色生成、拟真度(按需画像为增强能力) |
64
+ | `coaching/script` | 交互剧本、流程设置 |
65
+ | `coaching/knowledge` | 知识库构建、内容提取 |
66
+ | `coaching/scoring` | 评分标准、评分逻辑 |
67
+ | `diagnosis` | 诊断标签(F/I/O/P/N/L/E/S/R/K/T/D)的判定与排序 |
68
+ | `quality-gate` | 创建闸门、微调闸门 |
69
+ | `asset` | 资产库调用、匹配规则 |
70
+ | `platform/sync` | 平台同步、环境检测、平台创建 |
71
+ | `delivery` | 客户交付、培训包、看板 |
72
+ | `cfg` | 配置、路径、环境变量 |
73
+
74
+ ---
75
+
76
+ ## 学习信号检测
77
+
78
+ ### 自动触发记录的场景
79
+
80
+ | 场景 | 写入位置 | 类别 |
81
+ |------|---------|------|
82
+ | 用户纠正诊断标签归属 | LEARNINGS.md | `correction` |
83
+ | 诊断顺序导致误判(如先P后O) | LEARNINGS.md | `correction` |
84
+ | 闸门漏拦导致交付问题 | LEARNINGS.md | `correction` |
85
+ | 资产选错导致分析偏差 | LEARNINGS.md | `correction` |
86
+ | 子技能输出异常 | ERRORS.md | - |
87
+ | 平台同步环境检测失败 | ERRORS.md | - |
88
+ | 命令返回非零/超时/权限拒绝 | ERRORS.md | - |
89
+ | "能不能也支持XX场景" | FEATURE_REQUESTS.md | - |
90
+ | "为什么不能XX" | FEATURE_REQUESTS.md | - |
91
+ | 发现新的诊断模式或标签 | LEARNINGS.md | `insight` |
92
+ | 用户传授新的陪练业务规则 | LEARNINGS.md | `knowledge_gap` |
93
+ | 找到比现有方法更好的流程 | LEARNINGS.md | `best_practice` |
94
+
95
+ ### 识别人工纠正的关键词
96
+
97
+ - "不对"、"不是这样"、"应该是"、"实际上"、"你搞错了"
98
+ - "这不是X标签,是Y标签"
99
+ - "先查X再查Y"
100
+ - "这个资产不对,应该用XX"
101
+ - "闸门没拦住,少检查了XX"
102
+ - "别"、"停止"、"以后不要"
103
+ - "我更喜欢"、"我一向都是"
104
+
105
+ ### 识别偏好信号的关键词(直接记录到 SKILL.md 对应节)
106
+
107
+ - "我喜欢你这样" → 强化当前行为
108
+ - "每次都帮我做X" → 写入对应流程
109
+ - "不要做Y" → 写入对应约束
110
+ - "我的风格是" → 写入输出格式
111
+
112
+ ### 识别新需求的关键词
113
+
114
+ - "能不能也"、"可以支持吗"、"为什么不"、"有没有办法"、"我想"
115
+
116
+ ### 以下情况不记录
117
+
118
+ - 一次性指令("查一下这个文件")
119
+ - 上下文相关("在这个场景里")
120
+ - 假设性问题("如果怎么做会怎样")
121
+ - 用户没有反馈时的沉默推断
122
+
123
+ ---
124
+
125
+ ## 日志格式
126
+
127
+ ### 学习条目(LEARNINGS.md)
128
+
129
+ ```markdown
130
+ ## [LRN-YYYYMMDD-XXX] category
131
+
132
+ **Logged**: ISO-8601 timestamp
133
+ **Priority**: low | medium | high | critical
134
+ **Status**: pending
135
+ **Area**: coaching/prompt | diagnosis | quality-gate | asset | ...
136
+
137
+ ### Summary
138
+ 一句话描述学到了什么
139
+
140
+ ### Details
141
+ 完整上下文:发生了什么、错在哪、正确的是什么
142
+
143
+ ### Suggested Action
144
+ 具体的修复或改进措施
145
+
146
+ ### Metadata
147
+ - Source: conversation | error | user_feedback | self_reflection
148
+ - Related Files: 涉及的文件路径
149
+ - Tags: 标签
150
+ - See Also: LRN-xxxxxxxxx-xxx(如与已有条目关联)
151
+ - Pattern-Key: 可选,用于跨任务模式追踪
152
+ - Recurrence-Count: 1
153
+ - First-Seen: YYYY-MM-DD
154
+ - Last-Seen: YYYY-MM-DD
155
+
156
+ ---
157
+ ```
158
+
159
+ ### 错误条目(ERRORS.md)
160
+
161
+ ```markdown
162
+ ## [ERR-YYYYMMDD-XXX] skill_or_command
163
+
164
+ **Logged**: ISO-8601 timestamp
165
+ **Priority**: high
166
+ **Status**: pending
167
+ **Area**: ...
168
+
169
+ ### Summary
170
+ 简要描述失败原因
171
+
172
+ ### Error
173
+ \`\`\`
174
+ 实际错误消息
175
+ \`\`\`
176
+
177
+ ### Context
178
+ - 执行的命令/操作
179
+ - 输入参数
180
+ - 环境信息(如有)
181
+
182
+ ### Suggested Fix
183
+ 可识别的修复方案
184
+
185
+ ### Metadata
186
+ - Reproducible: yes | no | unknown
187
+ - Related Files: 路径
188
+ - See Also: ERR-xxxxxxxxx-xxx(如反复出现)
189
+
190
+ ---
191
+ ```
192
+
193
+ ### 功能请求(FEATURE_REQUESTS.md)
194
+
195
+ ```markdown
196
+ ## [FEAT-YYYYMMDD-XXX] capability_name
197
+
198
+ **Logged**: ISO-8601 timestamp
199
+ **Priority**: medium
200
+ **Status**: pending
201
+ **Area**: ...
202
+
203
+ ### Requested Capability
204
+ 用户想要什么能力
205
+
206
+ ### User Context
207
+ 为什么需要、解决什么问题
208
+
209
+ ### Complexity Estimate
210
+ simple | medium | complex
211
+
212
+ ### Suggested Implementation
213
+ 可能的实现方式
214
+
215
+ ### Metadata
216
+ - Frequency: first_time | recurring
217
+ - Related Features: 关联现有功能
218
+
219
+ ---
220
+ ```
221
+
222
+ ### ID 生成规则
223
+
224
+ 格式:`TYPE-YYYYMMDD-XXX`
225
+ - TYPE: `LRN`(学习)、`ERR`(错误)、`FEAT`(功能请求)
226
+ - 日期: 当前日期
227
+ - 序号: 三位数 `001`、`002`...
228
+
229
+ 示例:`LRN-20260708-001`、`ERR-20260708-001`、`FEAT-20260708-001`
230
+
231
+ ---
232
+
233
+ ## 自我反思机制
234
+
235
+ 每完成一个完整任务后,主动执行三问反思:
236
+
237
+ ### 反思模板
238
+
239
+ ```
240
+ CONTEXT: [任务类型] - [场景名称]
241
+ REFLECTION: [我注意到什么]
242
+ LESSON: [下次应该怎么做不同]
243
+ ```
244
+
245
+ ### 示例
246
+
247
+ ```
248
+ CONTEXT: 微调型任务 - XX保险公司电话约访
249
+ REFLECTION: 先P后O诊断,结果O误判导致P误报。用户指正后调整顺序才找到真正问题
250
+ LESSON: 诊断顺序硬约束:必须先O再P,跳过必错
251
+ ```
252
+
253
+ ### 何时反思
254
+
255
+ - 完成多步骤任务后
256
+ - 收到反馈后(正面或负面)
257
+ - 修复错误后
258
+ - 发现自己的输出可以更好时
259
+
260
+ 反思条目同样遵循推广规则:成功应用 3 次 → 提升 Priority → 满足推广条件后写入本 SKILL.md。
261
+
262
+ ---
263
+
264
+ ## 冲突解决
265
+
266
+ 当学习条目相互矛盾时:
267
+
268
+ 1. **最具体的优先**:项目级 > Area级 > 全局
269
+ 2. **最新的优先**(同级时):尊重演化
270
+ 3. **模糊不清时** → 追问用户确认
271
+
272
+ **示例**:
273
+ - 全局规则:"微调时必须跑全部资产库"
274
+ - 项目级规则:"药店场景微调时跳过客户角色模板库(因为药店角色已定型)"
275
+ - → 执行时采用项目级规则
276
+
277
+ ---
278
+
279
+ ## 条目生命周期
280
+
281
+ ### 状态流转
282
+
283
+ ```
284
+ pending → resolved | promoted | promoted_to_skill | wont_fix
285
+ ```
286
+
287
+ ### 解决后
288
+
289
+ 1. 改 `**Status**: pending` → `**Status**: resolved`
290
+ 2. 追加 Resolution 块:
291
+
292
+ ```markdown
293
+ ### Resolution
294
+ - **Resolved**: ISO-8601
295
+ - **Notes**: 简述做了什么
296
+ ```
297
+
298
+ ### 推广后
299
+
300
+ 1. 改 `**Status**: pending` → `**Status**: promoted`
301
+ 2. 加 `**Promoted**: SKILL.md | AGENTS.md | TOOLS.md | MEMORY.md`
302
+
303
+ ---
304
+
305
+ ## 模式检测与自动推广
306
+
307
+ ### 写入前先查重
308
+
309
+ ```bash
310
+ grep -rn "关键词" .learnings/
311
+ ```
312
+
313
+ - 已有类似条目 → 加 `See Also` 链接,bump 优先级,递增 `Recurrence-Count`
314
+ - 没有 → 新建
315
+
316
+ ### 自动推广条件(满足全部 3 条)
317
+
318
+ - `Recurrence-Count ≥ 3`
319
+ - 跨至少 2 个不同任务
320
+ - 30 天内出现
321
+
322
+ ### 推广目标
323
+
324
+ | 学习类型 | 推广到 | 示例 |
325
+ |---------|--------|------|
326
+ | 诊断标签判定修正 | 本 SKILL.md「微调诊断标签」节 | "模板化万能回应归N不归O" |
327
+ | 闸门漏拦 | 本 SKILL.md「质量闸门」节 | "新增第11项:每阶段退出条件" |
328
+ | 资产选错规则 | 本 SKILL.md「资产调用规则」节 | "评分不准时同步查Bad Case库" |
329
+ | 调度顺序优化 | AGENTS.md | "微调前必须先查err-detected" |
330
+ | 工具/命令坑点 | TOOLS.md | "soke-cli login 需要先 node>=14" |
331
+ | 行为模式改进 | SOUL.md | "诊断报告不含未经标签的猜测" |
332
+ | 业务经验 | MEMORY.md | "XX客户偏好电话约访场景" |
333
+ | 高复发价值 | 提取为独立 skill | LRN → skills/coaching-fix-name/ |
334
+
335
+ ### 推广时保持简洁
336
+
337
+ 推广到系统文件时,只写短规则,不写长篇事件描述:
338
+
339
+ ```
340
+ ❌ 坏:"2026年7月8日,在处理XX保险公司的陪练微调时,用户指出...经过排查发现..."
341
+ ✅ 好:"诊断顺序硬约束:必须先O再P再N,禁止跳过。"
342
+ ```
343
+
344
+ ---
345
+
346
+ ## 常见陷阱与应对
347
+
348
+ | 陷阱 | 为什么危险 | 正确做法 |
349
+ |------|-----------|---------|
350
+ | **从沉默中学习** | 创造虚假规则 | 等待显式纠正或重复证据 |
351
+ | **推广太快** | 污染 HOT 记忆 | 新教训保持 tentative,等待重复 |
352
+ | **把一次性指令当规则** | 过度泛化 | 只有重复 ≥ 3 次且跨任务的才推广 |
353
+ | **压缩时删除** | 丢失信任和历史 | 合并、汇总、或降级,不删除 |
354
+ | **把技术问题当提示词问题** | 无效修改、故障不修复 | 严格走技术分流流程 |
355
+ | **先P后O诊断** | 角色OOC导致P误判 | 强制 T→O→P→N 顺序 |
356
+ | **忽略沉默中的偏好** | 用户懒得说但你该记住 | 偏好信号("我喜欢")→ 立即记录 |
357
+
358
+ ---
359
+
360
+ ## 学习推广示例
361
+
362
+ ### 案例 1:标签判定修正
363
+
364
+ ```
365
+ 用户:"这不是N(自然度违规),这是O(角色OOC)"
366
+ → [LRN-20260708-001] correction,Area: diagnosis
367
+ → 复发 3 次后推广
368
+ → 本 SKILL.md「诊断分析顺序」节写入新规则
369
+ ```
370
+
371
+ ### 案例 2:闸门漏拦
372
+
373
+ ```
374
+ 交付后用户发现结束条件不清晰
375
+ → [LRN-20260708-002] correction,Area: quality-gate
376
+ → 推广到「创建闸门」新增:"每个阶段有明确的退出条件"
377
+ ```
378
+
379
+ ### 案例 3:资产选错
380
+
381
+ ```
382
+ 微调"评分不准"时只查了评分组件库,漏了Bad Case库
383
+ → [LRN-20260708-003] correction,Area: asset
384
+ → 推广到「资产调用规则」微调按需选读:
385
+ "评分不准:必读评分组件库 + 同步查 Bad Case 中同类问题"
386
+ ```
387
+
388
+ ---
389
+
390
+ ## 周期性审查
391
+
392
+ ### 何时审查
393
+
394
+ - 每次大任务开始前
395
+ - 每次交付完成后
396
+ - 每周主动检查一次
397
+
398
+ ### 快速状态
399
+
400
+ ```bash
401
+ # 待处理数量
402
+ grep -ch 'Status\*\*: pending' .learnings/*.md
403
+
404
+ # 高优先级条目
405
+ grep -B5 'Priority\*\*: high' .learnings/*.md | grep '^## \['
406
+ ```
407
+
408
+ ### 审查动作
409
+
410
+ - 待处理 → 解决 → resolved
411
+ - 满足推广条件 → promoted
412
+ - 关联相关条目 → 加 See Also
413
+ - 反复出现的问题 → 升级为独立 issue
414
+
415
+ ---
416
+
417
+ ## 技能自动提取
418
+
419
+ ### 提取条件(满足任一)
420
+
421
+ - 有 2+ 个 See Also 关联(反复出现)
422
+ - 状态 resolved 且有可工作修复
423
+ - 需要实际排查才能发现(非显而易见)
424
+ - 跨项目适用
425
+ - 用户明确说"记下来"、"下次别忘了"
426
+
427
+ ### 提取流程
428
+
429
+ 1. 确认候选 learning 满足条件
430
+ 2. 使用 `assets/SKILL-TEMPLATE.md` 模板,创建 `skills/<skill-name>/SKILL.md`
431
+ 3. 更新原 learning:`**Status**: promoted_to_skill`、加 `Skill-Path`
432
+ 4. 在新 session 验证 skill 可独立使用
433
+
434
+ ---
435
+
436
+ ## 与主流程的集成点
437
+
438
+ ### 意图识别阶段
439
+
440
+ - 检查 `.learnings/` 中是否有与当前任务 Area 匹配的 Priority=high/critical 且 Status=pending 的条目
441
+ - 如有,在「意图识别」输出中追加:`⚠️ 历史学习提醒:XX(LRN-XXX)`
442
+
443
+ ### 诊断阶段
444
+
445
+ - 每次打完诊断标签后,自动扫描用户反馈中的纠正关键词
446
+ - 如检测到纠正 → 立即修正当前行为 → 异步写入 LEARNINGS.md,任务结束后推广
447
+
448
+ ### 交付阶段
449
+
450
+ - 交付前跑闸门清单
451
+ - 如闸门漏拦 → 写 LEARNINGS.md,标注 quality-gate Area
452
+
453
+ ### 任务收尾阶段
454
+
455
+ 每个完整任务结束时:
456
+
457
+ - 执行自我反思(三问)
458
+ - 输出简洁的学习摘要(新条目数量 + 关键洞察)
459
+ - 如有反思 → 写入 LEARNINGS.md
460
+
461
+ ---
462
+
463
+ ## 辅助脚本与模板
464
+
465
+ | 文件 | 用途 |
466
+ |------|------|
467
+ | `scripts/activator.sh` | 每轮对话后提醒评估学习(可选启用) |
468
+ | `scripts/error-detector.sh` | 命令执行失败时自动检测并提示记录 |
469
+ | `scripts/extract-skill.sh` | 从 learning 提取为新 skill |
470
+ | `scripts/sync.sh` | Part3-5 统一脚本代理执行器(统一返回 success/failed/fail_stage/next_action/updated_at/validation_result) |
471
+ | `assets/LEARNINGS-TEMPLATE.md` | 学习条目记录模板 |
472
+ | `assets/ERRORS-TEMPLATE.md` | 错误条目记录模板 |
473
+ | `assets/FEATURE_REQUESTS-TEMPLATE.md` | 功能请求记录模板 |
474
+ | `assets/SKILL-TEMPLATE.md` | 新技能创建模板 |
475
+
476
+ ---
477
+
478
+ ## 最佳实践
479
+
480
+ 1. **立刻记录** - 上下文在问题刚发生时最新鲜
481
+ 2. **具体明确** - 后续的自己需要快速理解
482
+ 3. **包含复现步骤** - 特别是错误
483
+ 4. **链接相关文件** - 方便修复
484
+ 5. **给出具体修复建议** - 不只是"调查一下"
485
+ 6. **积极推广** - 拿不准时,推广到本 SKILL.md 比漏掉好
486
+ 7. **定期审查** - 过时的 learning 没有价值
487
+ 8. **屏蔽敏感信息** - 不记录密钥、token、完整对话抄本
488
+ 9. **从纠正中学习,不从沉默中学习** - 没有显式纠正 = 没有教训
489
+ 10. **推广前先确认** - 3 次同类纠正后,问一句"这是否可以作为永久规则?"
@@ -0,0 +1,17 @@
1
+ # Part1 基础信息创建子 SOP
2
+
3
+ > 由 SKILL.md Step 5 调用。生成前先读 `coaching/prompt-engineer/parts/part1-basic.md` 加载内容框架。执行流程遵循「展示 → 自检 → 弹窗确认(模板1)→ 后台创建」。
4
+
5
+ ## 固定约束
6
+
7
+ - 场景语言 `scene_lang` 固定 `"简体中文"`(永不随场景变)。
8
+ - 封面固定默认 URL `https://newsokeeditorcdn.soke.cn/public/ai/cover/lingshou_daogou.png`(确认后后台写入)。
9
+ - `key_points` 必须**单个字符串**(多条用分号/编号拼接,非数组)。
10
+
11
+ ## 执行流程
12
+
13
+ 1. 完整展示 Part1 → 自检 → 2. 弹窗确认 → 3. 生成 step1-create.json → 4. 执行 `+create-scenario` → 5. 回读验收 name/description/tags/key_points 一致,scenario_id 非空(为空禁止进 Part2)。
14
+
15
+ ## 自查清单(7 项)
16
+
17
+ 1. name 非空 ≤15 字;2. description 100-200 字;3. scene_lang="简体中文";4. cover 非空(固定 URL);5. **key_points 是字符串非数组(最高频错误)**;6. category_id 非空;7. tags 3-5 个。
@@ -0,0 +1,34 @@
1
+ # Part2 角色生成与同步子 SOP
2
+
3
+ > 由 SKILL.md Step 5 调用。生成前先读 `coaching/prompt-engineer/parts/part2-roles.md` 加载内容框架。执行遵循「展示 → 自检 → 弹窗确认(模板2)→ 后台资源匹配+整包同步」。
4
+
5
+ ## 角色结构(1 OS + N 角色)
6
+
7
+ 每种顾客状态必须拆为**独立角色**(禁止单角色内部状态机切换)。每角色含:name / description / communication_style / background(四段画像)/ personality_type(单 MBTI)/ personality / tags / knowledge_level / taboos_objections。
8
+
9
+ ## 关键结构规则
10
+
11
+ - `replace_ai_roles` 数据键 `data.roles`(非 `data.ai_roles`)— 最高频错误。
12
+ - 外壳 10 字段(scenario_role_id / customization_level="full" / is_custom_role=true / customized_fields 列全 12 字段 / created_at / updated_at / template_id=null / template_name=null / template_version=null)在 `role_data` 外层;`source_type="custom"` 在 `role_data` 内。
13
+ - `avatar` 写 URL(`+list-role-avatars` 的 `url`),`voice_id` 写 ID(`+list-role-voices` 的 `id`)。
14
+ - 资源匹配后台执行(见 `role-resource-matching.md`),随整包一次写入,不二次确认。
15
+
16
+ ## 同步写入策略
17
+
18
+ 默认整包 `replace_ai_roles` 一次写全部角色 + OS(OS 用 update_basic 单独写)。整包失败降级为逐个 `add_ai_role` + 单独 update_basic 写 OS。
19
+
20
+ ### 异常处理:最小稳定结构降级
21
+
22
+ 回读出现 `name="角色数据异常"` / 字段 null 时:
23
+ 1. **字段级排雷**:personality_type 收敛单值、source_type 内外层不重复、customized_fields 与实际字段一致。
24
+ 2. **最小稳定结构重试**:仅保留 name/description/communication_style/background/avatar/voice_id,移除 knowledge_level/taboos_objections/tags/personality。
25
+ 3. **回读即准**:name≠"角色数据异常"、background 四段完整、avatar/voice_id 非空、OS 非空。
26
+ 4. **禁止带病续流**:仍有异常停在 Part2,不进 Part3。
27
+
28
+ ## background 强制闸门
29
+
30
+ 生成 JSON 后 preview 前:逐字比对 JSON 的 background 与展示文本一致 + 四段画像完整,任一不过驳回修正。
31
+
32
+ ## 自查清单(14 项)
33
+
34
+ 1. `data.roles`(非 data.ai_roles);2. 每角色含 scenario_role_id;3. 角色数≥2;4. name 非空;5. description 非空;6. background 四段完整;7. communication_style 非空;8. personality_type 单值;9. avatar 非空 URL;10. voice_id 非空 ID;11. 外壳字段在外层、source_type 在 role_data 内;12. OS 非空;13. background 展示=JSON 一致;14. 无空 background。
@@ -0,0 +1,27 @@
1
+ # Part3 流程设置同步子 SOP
2
+
3
+ > 由 SKILL.md Step 5 调用。生成前先读 `coaching/prompt-engineer/parts/part3-flow.md` 加载内容框架。环节数 3-7、每阶段 3-5 轮、编号连续。
4
+
5
+ ## 原子性约束
6
+
7
+ 开场语(update_basic)+ 所有环节(add_conversation_step)必须合并为**同一批 operations 一次 preview+apply**,禁止拆分多次。失败则整个 Part3 判失败,不允许部分成功静默续流。
8
+
9
+ ## 回读判定矩阵(preview 证据优先于 get-scenario)
10
+
11
+ | preview 证据 | get-scenario 回读 | 判定 |
12
+ |-------------|-------------------|------|
13
+ | opening + steps 双项有 add 证据 | 双项非空 | ✅ 通过 |
14
+ | 双项有证据 | opening 非空、steps 为空 | ✅ 通过(CLI bug 白名单) |
15
+ | opening 无证据 | 任意 | ❌ 失败 |
16
+ | steps 无 add 证据 | steps 为空 | ❌ 失败 |
17
+ | preview/apply 报错 | 任意 | ❌ 失败 |
18
+
19
+ 核心原则:preview 确认平台接收了操作即视为原子成功;get-scenario 回读 `conversation_steps` 为空是 CLI 已知 bug(v1.0.65+),不改变成功判定。
20
+
21
+ ## 已知 CLI 回读口径差异
22
+
23
+ `add_conversation_step` apply 返回成功但 get-scenario 回读 `conversation_steps: []`,opening_dialogue 也可能不同步反映——这是已知差异,不代表数据未写入。验收时 preview/apply 成功即默认进 Part4,记录「平台回读异常待观察」,不要求先去 Web 后台确认。仅 preview/apply 本身失败才停下排查。
24
+
25
+ ## 自查清单(8 项)
26
+
27
+ 1. opening_dialogue_type 固定整数 1;2. 每环节含 step_name/student_objective/ai_task/max_rounds;3. 编号从 1 连续;4. 无空缺;5. 字段结构正确;6. opening_dialogue 第一人称无后台痕迹;7. information 不含考核/评分信息;8. status=1。
@@ -0,0 +1,31 @@
1
+ # Part4 评分配置同步子 SOP
2
+
3
+ > 由 SKILL.md Step 5 调用。生成前先读 `coaching/prompt-engineer/parts/part4-scoring.md` 加载内容框架。`scoring_rule`/`criteria` 禁止示例对话,一票否决嵌入各维度 scoring_rule 末尾。
4
+
5
+ ## shell 字段位置铁律(v2.26 硬阻断)
6
+
7
+ 4 个 shell 字段必须写在 `data.config` **顶层**,不能放进 `criteria_data` 内(错放导致 UI 显示"请选择或创建评分标准",API 不报错 warnings=[]):
8
+
9
+ | 字段 | 必须位置 |
10
+ |------|---------|
11
+ | `scenario_criteria_id` | `data.config` 顶层 |
12
+ | `customization_level="full"` | `data.config` 顶层 |
13
+ | `is_custom_criteria=true` | `data.config` 顶层 |
14
+ | `customized_fields=["criteria_data"]` | `data.config` 顶层 |
15
+
16
+ `criteria_data` 内只放业务字段:`name` / `description` / `dimensions` / `total_weight` / `source_type="enterprise"` / `status=1` / `tags`。
17
+
18
+ apply 后 get-scenario 回读确认 shell 字段在 `scoring_criteria_config` 顶层全部存在,任一缺失 = 失败,调整后重新 apply。
19
+
20
+ ## 执行流程
21
+
22
+ 用户确认 → 生成 part4-operations.json → 对照自查清单 → preview → apply → get-scenario 回读验证 shell 字段位置 + 权重和 100。
23
+
24
+ ## 自查清单(19 项,关键项)
25
+
26
+ **shell 位置**:1. config 顶层含 scenario_criteria_id;2. customization_level="full";3. is_custom_criteria=true;4. customized_fields=["criteria_data"](均不在 criteria_data 内)。
27
+ **业务字段**:5. 用 replace_scoring_criteria_config;6. data.config.criteria_data 三层嵌套;7. 维度≥2;8. 权重和=100;9. 每维度含名称/权重/评分规则/评分点;10. scoring_rule 无示例对话;11. 一票否决嵌入维度末尾;12. 无全局 one_vote_veto;13. 每维度≥2 评分点;14. status=1;15. source_type="enterprise";16. tags 非空;17. 每维度含 id(dim_{code});18. sort_order 数字;19. apply 后回读 shell 字段在顶层。
28
+
29
+ ## 评分维度设计原则
30
+
31
+ 维度数:简单场景 3-4、复杂 4-5;权重:沟通类 50-60%、专业类 40-50%;一票否决格式"以下行为触犯即该维度 0 分且总分不合格:…"。