@sokeai/cli 1.0.75 → 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 (124) 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 +12 -2
  48. package/skills/soke-course/SKILL.md +12 -10
  49. package/skills/soke-course/references/course-list-courses.md +49 -84
  50. package/skills/soke-course/references/intent-cases.md +8 -8
  51. package/skills/soke-course/references/sop-full-workflow.md +11 -6
  52. package/skills/soke-course/references/sop-publish-check.md +3 -1
  53. package/skills/soke-course/references/subs/publish/SOP.md +34 -4
  54. package/skills/soke-course/references/subs/query/SOP.md +9 -7
  55. package/skills/soke-course/references/subs/settings/SOP.md +87 -25
  56. package/skills/soke-exam-question-pool/SKILL.md +80 -112
  57. package/skills/soke-task/SKILL.md +32 -10
  58. package/skills/soke-training-demand/SKILL.md +150 -43
  59. package/skills/ai-coach-director/SKILL.md +0 -1563
  60. package/skills/ai-coach-director/coaching/prompt-engineer/parts/part2-roles.md +0 -317
  61. package/skills/ai-coach-director/coaching/prompt-engineer/prompt-engineer.md +0 -244
  62. package/skills/ai-coach-director/platform/interaction.md +0 -315
  63. package/skills/ai-coach-director/platform/sync-engine.md +0 -1101
  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_/346/240/207/345/207/206/347/237/245/350/257/206/345/272/223.md +0 -199
  65. 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
  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-knowledge-base.md +0 -125
  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/tuv-p03-first-call-scenario-prompt.md +0 -428
  68. 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
  69. 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
  70. 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
  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/2061_/346/226/260/345/223/201/346/216/250/351/224/200_20260701.md +0 -230
  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/2062_/345/202/254/350/217/234/345/256/211/346/212/232_20260701.md +0 -257
  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_/346/240/207/346/235/2063_/345/267/256/350/257/204/345/233/236/350/256/277_20260701.md +0 -259
  74. 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
  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_/345/256/242/346/210/267/347/241/256/350/256/244/345/217/215/351/246/210/350/241/250.md +0 -133
  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_v1.md +0 -333
  77. 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
  78. package/skills/ai-coach-director/references/env-check.md +0 -167
  79. package/skills/ai-coach-director/references/platform-api-pitfalls.md +0 -232
  80. package/skills/ai-coach-director/references/role-resource-matching.md +0 -349
  81. package/skills/ai-coach-director/references/verified-cli-cheatsheet.md +0 -203
  82. /package/skills/{ai-coach-director → soke-ai-coach-director}/assets/ERRORS-TEMPLATE.md +0 -0
  83. /package/skills/{ai-coach-director → soke-ai-coach-director}/assets/FEATURE_REQUESTS-TEMPLATE.md +0 -0
  84. /package/skills/{ai-coach-director → soke-ai-coach-director}/assets/LEARNINGS-TEMPLATE.md +0 -0
  85. /package/skills/{ai-coach-director → soke-ai-coach-director}/assets/SKILL-TEMPLATE.md +0 -0
  86. /package/skills/{ai-coach-director → soke-ai-coach-director}/coaching/prompt-engineer/parts/part1-basic.md +0 -0
  87. /package/skills/{ai-coach-director → soke-ai-coach-director}/coaching/prompt-engineer/parts/part4-scoring.md +0 -0
  88. /package/skills/{ai-coach-director → soke-ai-coach-director}/coaching/prompt-engineer/parts/part5-constraints.md +0 -0
  89. /package/skills/{ai-coach-director → soke-ai-coach-director}/coaching/role-profiler/role-profiler.md +0 -0
  90. /package/skills/{ai-coach-director → soke-ai-coach-director}/platform/adapters/README.md +0 -0
  91. /package/skills/{ai-coach-director → soke-ai-coach-director}/platform/adapters/qclaw.md +0 -0
  92. /package/skills/{ai-coach-director → soke-ai-coach-director}/platform/adapters/wukong.md +0 -0
  93. /package/skills/{ai-coach-director → soke-ai-coach-director}/platform/adapters/zework.md +0 -0
  94. /package/skills/{ai-coach-director → soke-ai-coach-director}/platform/api-fallback.md +0 -0
  95. /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
  96. /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
  97. /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
  98. /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
  99. /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
  100. /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
  101. /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
  102. /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
  103. /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
  104. /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
  105. /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
  106. /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
  107. /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
  108. /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
  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/347/237/245/350/257/206/345/272/223/347/224/237/346/210/220_20260615.md" +0 -0
  110. /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
  111. /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
  112. /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
  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.1_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_/344/274/230/345/214/226/347/211/210_V1.2_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_/345/216/213/347/274/251/347/211/210_V2.0_20260616.md" +0 -0
  116. /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
  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/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
  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/344/277/241/344/273/273/345/200/274/347/246/201/344/273/244_2026-06-09_0932.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/277KYC/346/217/220/347/244/272/350/257/215_/344/274/230/345/214/226/347/211/210_v2_20260608.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.1.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/347/211/210_v1.2.md" +0 -0
  122. /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
  123. /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
  124. /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
@@ -1,349 +0,0 @@
1
- # Part2 平台资源自动匹配规则
2
-
3
- > 本节是 Part2 用户确认后、角色 JSON 生成前自动执行的资源匹配流程。头像和语音不在 Part2 内容展示阶段预设或展示,而是在后台查询系统资源库自动匹配,并随角色主体一次写入。
4
- >
5
- > **v2.0 升级**:匹配模式从"拉全量→文本匹配"升级为"提取角色性别/年龄特征→CLI 参数精准过滤→取结果",利用 CLI 原生的 `--gender` / `--age-group` 服务端过滤能力,提升匹配精度和效率。
6
-
7
- ## 资源匹配时机
8
-
9
- Part2 完整内容已展示(先 OS,再逐个角色)并由用户确认 → 后台立即执行资源匹配流程 → 将 avatar URL 与 voice_id 写入角色级 JSON → 逐个角色 apply + 回读验证。资源匹配、写入、回读校验不等待用户触发,也不向用户二次确认。
10
-
11
- ---
12
-
13
- ## 前置步骤:从角色卡提取性别与年龄
14
-
15
- 在执行任何 CLI 查询之前,必须先从每个角色的 `role_data` 中提取性别和年龄段特征,映射为 CLI 参数:
16
-
17
- ### 性别映射表(gender)
18
-
19
- | 角色描述中的特征词 | → gender |
20
- |---|---|
21
- | 男、先生、他、男士、男性、(男性名字:建国/振国/志强/伟等) | `male` |
22
- | 女、女士、她、太太、小姐、女性、(女性名字:芳/丽/敏/娟/婷等) | `female` |
23
- | 无明显性别特征 | 不传 `--gender` |
24
-
25
- > **提取优先级**:角色名称(.name) > 角色描述(.description) > 角色背景(.background) > MBTI+沟通风格交叉推断
26
-
27
- ### 年龄段映射表(age_group)
28
-
29
- | 角色描述中的特征词 | → age_group |
30
- |---|---|
31
- | 青年、年轻、刚毕业、新手、25-35、初级、新入职、小张/小李等年轻称呼 | `youth` |
32
- | 中年、35-50、资深、经理、主管、部门负责人、有多年经验 | `middle-aged` |
33
- | 老年、50+、退休、资深专家、老前辈、临近退休、老张/老李等长辈称呼 | `senior` |
34
- | 无明显年龄特征 | 不传 `--age-group` |
35
-
36
- > **提取优先级**:角色背景(.background) > 角色描述(.description) > 角色名称(.name)
37
-
38
- ---
39
-
40
- ## 头像资源匹配
41
-
42
- ### Step 1:CLI 精准过滤查询
43
-
44
- 根据前置步骤提取的 `gender` 和 `age_group`,使用 CLI 过滤参数查询:
45
-
46
- ```bash
47
- # 性别+年龄都明确 → 一阶精准查询
48
- soke-cli ai-training +list-role-avatars \
49
- --gender <gender> \
50
- --age-group <age_group> \
51
- --lang zh \
52
- --show-detail \
53
- --pretty
54
-
55
- # 仅性别明确 → 仅按性别过滤
56
- soke-cli ai-training +list-role-avatars \
57
- --gender <gender> \
58
- --lang zh \
59
- --show-detail \
60
- --pretty
61
-
62
- # 特征信息不足 → 不传过滤参数
63
- soke-cli ai-training +list-role-avatars \
64
- --lang zh \
65
- --show-detail \
66
- --pretty
67
- ```
68
-
69
- ### Step 2:从过滤结果中选最佳匹配
70
-
71
- CLI 返回的头像列表已经是服务端按 `sort` 排序的过滤结果。按以下优先级选取:
72
-
73
- | 优先级 | 匹配条件 | 选取规则 |
74
- |---|---|---|
75
- | P0 | 性别 + 年龄都吻合 | 取过滤结果中 `sort` 最小的第 1 条 |
76
- | P1 | 仅性别吻合(年龄无精确匹配) | 取 `--gender` 过滤结果的第 1 条 |
77
- | P2 | 仅年龄吻合(性别无精确匹配) | 取 `--age-group` 过滤结果的第 1 条 |
78
- | P3 | 性别年龄均无匹配 | 不传过滤参数,全量取第 1 条通用/中性头像,并标注「无精确匹配」 |
79
-
80
- > **降级链路**:一阶查询返回空 → 去掉 `--age-group`(仅性别)→ 仍空则去掉 `--gender`(仅年龄)→ 仍空则全量无过滤。每次降级记录一次。
81
-
82
- ### Step 3:写入角色级 JSON
83
-
84
- > ⚠️ **必须与语音资源合并写入角色级同步单元**:头像和语音写入同一个角色级操作,不可分两次。
85
-
86
- 将匹配到的头像资源 URL 写入该角色的 `role_data.avatar`(与 voice_id 一起进入 `part2-role-XX.json`):
87
-
88
- ```json
89
- [
90
- {
91
- "type": "patch_ai_role",
92
- "data": {
93
- "scenario_role_id": "<角色ID>",
94
- "patch": {
95
- "role_data": {
96
- "avatar": "<头像资源URL>"
97
- },
98
- "customized_fields": ["avatar"]
99
- }
100
- }
101
- }
102
- ]
103
- ```
104
-
105
- > ⚠️ `avatar` 字段传入头像资源 **URL**(如 `https://newsokeeditorcdn.soke.cn/public/ai/avatars/business_owner_female.png`),来自 `+list-role-avatars` 返回的 `url` 字段,**不能**传资源 `id`。
106
- > ⚠️ `patch` 中必须包含 `customized_fields`,指明被修改的字段,否则平台可能不识别该更新。
107
-
108
- 匹配过程默认不在聊天中展示;只有失败且影响后续发布时,才输出最小必要异常。
109
-
110
- ---
111
-
112
- ## 语音资源匹配
113
-
114
- ### Step 1:CLI 精准过滤查询
115
-
116
- ```bash
117
- # 性别+年龄都明确 → 一阶精准查询
118
- soke-cli ai-training +list-role-voices \
119
- --gender <gender> \
120
- --age-group <age_group> \
121
- --lang zh \
122
- --pretty
123
-
124
- # 降级查询(同头像降级链路)
125
- ```
126
-
127
- ### Step 2:从过滤结果中选最佳匹配
128
-
129
- | 优先级 | 匹配条件 | 选取规则 |
130
- |---|---|---|
131
- | P0 | 性别 + 年龄都吻合 | 取过滤结果的第 1 条 |
132
- | P1 | 仅性别吻合 | 取 `--gender` 过滤结果的第 1 条 |
133
- | P2 | 仅年龄吻合 | 取 `--age-group` 过滤结果的第 1 条 |
134
- | P3 | 性别年龄均无匹配 | 全量取第 1 条通用默认音色,标注「无精确匹配」 |
135
-
136
- > **降级链路**:同头像匹配——一阶→去年龄→去性别→全量。每次降级记录一次。
137
-
138
- ### Step 3:写入角色级 JSON
139
-
140
- > ⚠️ **必须与头像资源合并写入角色级同步单元**:语音和头像写入同一个角色级操作,不可分两次。
141
-
142
- 将匹配到的语音资源 ID 写入该角色的 `role_data.voice_id`(与 avatar 一起进入 `part2-role-XX.json`):
143
-
144
- ```json
145
- [
146
- {
147
- "type": "patch_ai_role",
148
- "data": {
149
- "scenario_role_id": "<角色ID>",
150
- "patch": {
151
- "role_data": {
152
- "voice_id": "<语音资源ID>"
153
- },
154
- "customized_fields": ["voice_id"]
155
- }
156
- }
157
- }
158
- ]
159
- ```
160
-
161
- > ⚠️ `voice_id` 传入声音资源 **ID**(如 `zh_female_warm_01`),来自 `+list-role-voices` 返回的 `id` 字段,**不能**传 `sample_url` 或名称字符串。
162
- > ⚠️ `patch` 中必须包含 `customized_fields`,指明被修改的字段。
163
-
164
- 匹配过程默认不在聊天中展示;只有失败且影响后续发布时,才输出最小必要异常。
165
-
166
- ---
167
-
168
- ## 完整流程时序
169
-
170
- ```
171
- Part2 完整展示并由用户确认
172
- → 提取每个角色的性别(gender) + 年龄(age_group)
173
- → CLI 并行精准过滤查询:
174
- +list-role-avatars --gender <g> --age-group <a> --lang zh --show-detail --pretty
175
- +list-role-voices --gender <g> --age-group <a> --lang zh --pretty
176
- → 任一返回空则降级(去年龄→去性别→全量)
177
- → ⚠️ 将 avatar + voice_id 写入对应角色级 JSON
178
- → 角色1 preview + apply → get-scenario 强制验证该角色 avatar 非空 URL + voice_id 非空 ID
179
- → 角色2 preview + apply → get-scenario 强制验证
180
- → 角色3 preview + apply → get-scenario 强制验证
181
- → OS preview + apply → get-scenario 强制验证 OS 完整写入
182
- → 验证失败 → 重新读取 updated_at → 重试 1 次
183
- → 仍失败 → 标注「资源匹配未完成」,不阻断后续 Part
184
- → 全部同步完成后,再输出 Part3
185
- ```
186
-
187
- > **头像/语音必须在同一角色同步单元内写入**,avatar 和 voice_id 放在同一个角色的 `role_data` 中,`customized_fields` 同时包含 `avatar` 和 `voice_id`。**禁止分两次 patch**——分开调用会导致 updated_at 竞态。
188
-
189
- ---
190
-
191
- ## 端到端示例
192
-
193
- 角色卡摘要:
194
- - 名称:谨慎型小微企业主
195
- - 描述:经营农资批发门店的女性老板,40多岁,关注融资成本和审批速度。
196
- - 背景:经营农资批发门店十余年,旺季前需短期周转资金 30-50 万……
197
-
198
- ### 特征提取
199
-
200
- | 特征 | 来源字段 | 提取结果 | CLI 参数 |
201
- |---|---|---|---|
202
- | 性别 | 描述中"女性" | female | `--gender female` |
203
- | 年龄 | 描述中"40多岁"、背景中"十余年" | middle-aged | `--age-group middle-aged` |
204
-
205
- ### CLI 查询
206
-
207
- ```bash
208
- # 头像
209
- soke-cli ai-training +list-role-avatars \
210
- --gender female \
211
- --age-group middle-aged \
212
- --lang zh \
213
- --show-detail \
214
- --pretty
215
-
216
- # 声音
217
- soke-cli ai-training +list-role-voices \
218
- --gender female \
219
- --age-group middle-aged \
220
- --lang zh \
221
- --pretty
222
- ```
223
-
224
- ### 写入
225
-
226
- ```json
227
- {
228
- "role_data": {
229
- "avatar": "https://newsokeeditorcdn.soke.cn/public/ai/avatars/business_owner_female.png",
230
- "voice_id": "zh_female_warm_01"
231
- }
232
- }
233
- ```
234
-
235
- ---
236
-
237
- ## 异常处理
238
-
239
- | 情况 | 处理 |
240
- |---|---|
241
- | 头像/语音库 CLI 查询失败(网络/权限) | 跳过资源匹配,标注「资源匹配未完成」,Part3 不受影响 |
242
- | 角色特征信息不足(无性别/年龄暗示) | 不传过滤参数,全量查询取第 1 条默认头像 + 默认音色,不标注匹配摘要 |
243
- | 过滤查询返回空 → 降级后仍空 | 全量查询取第 1 条,标注「无精确匹配,已使用默认资源」 |
244
- | patch_ai_role 失败 | 重新读取 updated_at 后重试 1 次;仍失败则标注,不阻断 Part3 |
245
- | patch_ai_role 返回成功但 avatar/voice_id 验证为空 | 重新读取 updated_at 后重试 1 次;仍失败则标注,不阻断 Part3 |
246
-
247
- ---
248
-
249
- ## 合并写入模板
250
-
251
- > ⚠️ **强制规则**:头像和语音必须合并为**单次** `patch_ai_role` 操作写入。禁止分两次 patch——分两次调用会导致第二次 patch 后 `updated_at` 变化,后续验收时可能误判第一次写入丢失。
252
-
253
- ### operations JSON 结构
254
-
255
- ```json
256
- [
257
- {
258
- "type": "patch_ai_role",
259
- "data": {
260
- "scenario_role_id": "<角色ID>",
261
- "patch": {
262
- "role_data": {
263
- "avatar": "<头像资源URL>",
264
- "voice_id": "<语音资源ID>"
265
- },
266
- "customized_fields": ["avatar", "voice_id"]
267
- }
268
- }
269
- }
270
- ]
271
- ```
272
-
273
- ### 完整 CLI 命令序列
274
-
275
- ```bash
276
- # 1. 读取最新场景状态
277
- soke-cli ai-training +get-scenario \
278
- --scenario-id <scenario_id> \
279
- --pretty
280
-
281
- # 2. 写入合并的 operations JSON(Python json.dump)
282
-
283
- # 3. 预览
284
- soke-cli ai-training +preview-scenario-update \
285
- --scenario-id <scenario_id> \
286
- --base-updated-at <updated_at> \
287
- --operations-file ./part2-resources.json \
288
- --reason "Part2: 头像声音资源回填" \
289
- --pretty
290
-
291
- # 4. 应用
292
- soke-cli ai-training +apply-scenario-update \
293
- --scenario-id <scenario_id> \
294
- --base-updated-at <updated_at> \
295
- --operations-file ./part2-resources.json \
296
- --idempotency-key "cli-<scenario_short>-part2-resources" \
297
- --reason "Part2: 头像声音资源回填" \
298
- --pretty
299
-
300
- # 5. 强制验证
301
- soke-cli ai-training +get-scenario \
302
- --scenario-id <scenario_id> \
303
- --pretty
304
- # 检查每个角色的 avatar 为非空 URL、voice_id 为非空 ID
305
- ```
306
-
307
- ### 验证失败重试
308
-
309
- ```bash
310
- # 验证失败 → 重新读取 updated_at
311
- soke-cli ai-training +get-scenario --scenario-id <scenario_id> --pretty
312
-
313
- # 重新生成 patch → 重新 preview + apply(新 idempotency_key)
314
- # 仍失败 → 标注并继续 Part3
315
- ```
316
-
317
- ---
318
-
319
- ## REST API 回填路径(soke-cli 不可用时)
320
-
321
- > 当 soke-cli 不可用(如悟空/QClaw/Zework 等非 WorkBuddy 平台,或企业安全策略禁止 CLI 执行),头像和语音资源回填**不得跳过**,必须降级为 REST API 路径。
322
-
323
- 完整流程详见 `platform/api-fallback.md`「资源回填完整流程」,本节仅说明与 CLI 路径的差异点。
324
-
325
- ### 执行条件
326
-
327
- - soke-cli 未安装、执行持续失败、或 `which soke-cli` 返回空
328
- - 所在平台支持 HTTP 请求(curl / Python requests)
329
-
330
- ### 差异点
331
-
332
- | 步骤 | CLI 路径 | REST API 路径 |
333
- |------|---------|---------------|
334
- | 头像查询 | `soke-cli ai-training +list-role-avatars --gender <g> --age-group <a>` | `GET /api/v1/ai-training/role-avatars?gender=<g>&age_group=<a>` |
335
- | 语音查询 | `soke-cli ai-training +list-role-voices --gender <g> --age-group <a>` | `GET /api/v1/ai-training/role-voices?gender=<g>&age_group=<a>` |
336
- | 回填 | `+preview-scenario-update` → `+apply-scenario-update` | 单次 `PATCH /api/v1/ai-training/scenarios/<id>`(无 preview 步骤,PATCH 前先 GET 对比) |
337
- | 验证 | `soke-cli ai-training +get-scenario` | `GET /api/v1/ai-training/scenarios/<id>` |
338
- | 沙箱 | `dangerouslyDisableSandbox: true` | 不适用(HTTP 请求) |
339
-
340
- ### 相同点(保证回填质量一致)
341
-
342
- - 性别/年龄段特征提取与映射表**完全相同**(本文件「性别映射表」「年龄段映射表」)
343
- - P0-P3 降级链路**完全相同**
344
- - 合并写入(单次 patch avatar+voice_id)规则**完全相同**
345
- - 写入值规范:`avatar` = URL,`voice_id` = ID,**完全相同**
346
- - 强制验证 + 重试 1 次 + 失败标注不阻断 Part3,**完全相同**
347
- - 匹配摘要一行输出(「张总 → 威严中年男性头像 + 沉稳男中音」),**完全相同**
348
-
349
- > ⚠️ **关键原则**:REST API 路径**不是简化版**——它和 CLI 路径共享完全相同的匹配规则和验证标准。唯一的区别是数据传输方式(CLI 命令 vs HTTP 请求)。头像和语音的匹配质量和写入结果必须等价。
@@ -1,203 +0,0 @@
1
- # MentorAI CLI 已验证命令清单
2
-
3
- > 用于 AI 陪练场景的标准命令速查。凡涉及场景创建、读取、预览、应用、封面上传、知识包同步,统一使用 `soke-cli ai-training +...`,不要省略 `ai-training`。
4
-
5
- ## 0. 总规则
6
-
7
- - 错误写法:`soke-cli +create-scenario`
8
- - 正确写法:`soke-cli ai-training +create-scenario`
9
- - 同理,`+get-scenario`、`+preview-scenario-update`、`+apply-scenario-update`、`+upload-scenario-cover`、`+sync`、`+bind-scenario` 都必须挂在 `ai-training` 子命令下
10
- - 每次 `preview` / `apply` 前,先重新执行一次 `soke-cli ai-training +get-scenario`
11
- - 默认优先使用 `--request-file <partX-update.json>` 传完整更新请求;排障时再改用 `--operations-file <partX-operations.json>`
12
- - 每次 `apply` 后,立刻执行一次 `soke-cli ai-training +get-scenario --raw` 做验收
13
- - ⚠️ **所有 soke-cli 命令通过 Bash 工具执行时,必须设置 `dangerouslyDisableSandbox: true`**。soke-cli 是 Go 编译二进制,在沙箱中会被限制执行(`permission denied` 或静默无输出)。此规则适用于本文件中全部命令,不限于创建型流程
14
-
15
- ## 1. Step1 创建场景
16
-
17
- ### 1.1 上传封面
18
-
19
- ```bash
20
- soke-cli ai-training +upload-scenario-cover \
21
- --file ./scenario-cover.png \
22
- --pretty
23
- ```
24
-
25
- ### 1.2 创建场景
26
-
27
- ```bash
28
- soke-cli ai-training +create-scenario \
29
- --request-file ./step1-create.json \
30
- --pretty
31
- ```
32
-
33
- ### 1.3 创建后立即回读
34
-
35
- ```bash
36
- soke-cli ai-training +get-scenario \
37
- --scenario-id <scenario_id> \
38
- --raw \
39
- --pretty
40
- ```
41
-
42
- ## 2. Part2-Part5 通用同步模板
43
-
44
- ### 2.1 先获取最新基线
45
-
46
- ```bash
47
- soke-cli ai-training +get-scenario \
48
- --scenario-id <scenario_id> \
49
- --pretty
50
- ```
51
-
52
- ### 2.2 预览更新(默认 request-file 模式)
53
-
54
- ```bash
55
- soke-cli ai-training +preview-scenario-update \
56
- --scenario-id <scenario_id> \
57
- --request-file ./partX-update.json \
58
- --pretty
59
- ```
60
-
61
- ### 2.3 应用更新(默认 request-file 模式)
62
-
63
- ```bash
64
- soke-cli ai-training +apply-scenario-update \
65
- --scenario-id <scenario_id> \
66
- --request-file ./partX-update.json \
67
- --pretty
68
- ```
69
-
70
- ### 2.3A 排障时退回 operations 模式
71
-
72
- ```bash
73
- soke-cli ai-training +preview-scenario-update \
74
- --scenario-id <scenario_id> \
75
- --operations-file ./partX-operations.json \
76
- --base-updated-at <updated_at> \
77
- --reason "PartX: 更新说明" \
78
- --pretty
79
-
80
- soke-cli ai-training +apply-scenario-update \
81
- --scenario-id <scenario_id> \
82
- --operations-file ./partX-operations.json \
83
- --base-updated-at <updated_at> \
84
- --idempotency-key "cli-<scenario_short>-partX-apply" \
85
- --reason "PartX: 更新说明" \
86
- --pretty
87
- ```
88
-
89
- ### 2.4 应用后强制验收
90
-
91
- ```bash
92
- soke-cli ai-training +get-scenario \
93
- --scenario-id <scenario_id> \
94
- --raw \
95
- --pretty
96
- ```
97
-
98
- ## 3. 各 Part 推荐文件名
99
-
100
- - Part2:`./part2-operations.json` + `./part2-update.json`
101
- - Part3:`./part3-operations.json` + `./part3-update.json`
102
- - Part4:`./part4-operations.json` + `./part4-update.json`
103
- - Part5:`./part5-operations.json` + `./part5-update.json`
104
- - 微调:`./optimize-operations.json` + `./optimize-update.json`
105
-
106
- ## 4. 知识包同步与场景绑定
107
-
108
- ### 4.1 同步知识包
109
-
110
- ```bash
111
- soke-cli ai-training +sync \
112
- --manifest ./knowledge-package.json \
113
- --idempotency-key "cli-<package_id>-sync" \
114
- --pretty
115
- ```
116
-
117
- ### 4.2 绑定到场景
118
-
119
- ```bash
120
- soke-cli ai-training +bind-scenario \
121
- --scenario-id <scenario_id> \
122
- --version-ids <version_id> \
123
- --compile-plan
124
- ```
125
-
126
- ## 5. 发布场景
127
-
128
- ### 5.1 发布
129
-
130
- ```bash
131
- soke-cli ai-training +publish-scenario \
132
- --scenario-id <scenario_id> \
133
- --version 1 \
134
- --version-description "CLI发布" \
135
- --pretty
136
- ```
137
-
138
- ### 5.2 发布后验收
139
-
140
- ```bash
141
- soke-cli ai-training +get-scenario \
142
- --scenario-id <scenario_id> \
143
- --raw \
144
- --pretty
145
- ```
146
-
147
- ## 6. 快照与恢复
148
-
149
- ### 6.1 查询快照
150
-
151
- ```bash
152
- soke-cli ai-training +list-scenario-snapshots \
153
- --scenario-id <scenario_id> \
154
- --page 1 \
155
- --page-size 20 \
156
- --pretty
157
- ```
158
-
159
- ### 6.2 恢复快照
160
-
161
- ```bash
162
- soke-cli ai-training +restore-scenario-snapshot \
163
- --scenario-id <scenario_id> \
164
- --snapshot-id <snapshot_id> \
165
- --reason "回滚本次 CLI 更新" \
166
- --pretty
167
- ```
168
-
169
- ## 7. 当前已验证可用命令
170
-
171
- - `soke-cli ai-training +upload-scenario-cover`
172
- - `soke-cli ai-training +create-scenario`
173
- - `soke-cli ai-training +get-scenario`
174
- - `soke-cli ai-training +list-scenarios`
175
- - `soke-cli ai-training +preview-scenario-update`
176
- - `soke-cli ai-training +apply-scenario-update`
177
- - `soke-cli ai-training +publish-scenario`
178
- - `soke-cli ai-training +list-scenario-snapshots`
179
- - `soke-cli ai-training +restore-scenario-snapshot`
180
- - `soke-cli ai-training +sync`
181
- - `soke-cli ai-training +bind-scenario`
182
-
183
- ## 8. 常见误抄与纠正
184
-
185
- - 误抄:`soke-cli +create-scenario`
186
- - 改成:`soke-cli ai-training +create-scenario`
187
- - 误抄:`soke-cli +get-scenario`
188
- - 改成:`soke-cli ai-training +get-scenario`
189
- - 误抄:`soke-cli +preview-scenario-update`
190
- - 改成:`soke-cli ai-training +preview-scenario-update`
191
- - 误抄:`soke-cli +apply-scenario-update`
192
- - 改成:`soke-cli ai-training +apply-scenario-update`
193
- - 误抄:`soke-cli +sync`
194
- - 改成:`soke-cli ai-training +sync`
195
- - 误抄:`soke-cli +bind-scenario`
196
- - 改成:`soke-cli ai-training +bind-scenario`
197
-
198
- ## 7. 推荐阅读顺序
199
-
200
- 1. 先看 `platform-api-pitfalls.md`
201
- 2. 再看 `platform/sync-engine.md`
202
- 3. 真正执行前,按本文件复制命令模板
203
- 4. 若平台返回与历史文档冲突,以最新 CLI 实证为准