@sokeai/cli 1.0.77 → 1.0.78
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/package.json +1 -1
- package/scripts/install.js +2 -2
- package/scripts/local-test.js +1 -1
- package/scripts/test-auto-detect.js +20 -3
- package/skills/README.md +25 -174
- package/skills/SKILL.md +17 -239
- package/skills/mono/README.md +10 -0
- package/skills/mono/SKILL.md +223 -0
- package/skills/{soke-course/soke-cli/345/256/211/350/243/205/346/214/207/345/215/227.md → mono/references/installation.md} +0 -3
- package/skills/{soke-ai-coach-director → mono/references/modules/soke-ai-coach-director}/README.md +1 -3
- package/skills/mono/references/modules/soke-ai-coach-director/platform/soke-ai-training/soke-ai-training.md +123 -0
- package/skills/{soke-ai-coach-director → mono/references/modules/soke-ai-coach-director}/references/self-learning-engine.md +0 -4
- package/skills/{soke-ai-training/SKILL.md → mono/references/modules/soke-ai-training/MODULE.md} +1 -1
- package/skills/mono/references/modules/soke-assign/README.md +308 -0
- package/skills/{soke-certificate/SKILL.md → mono/references/modules/soke-certificate/MODULE.md} +2 -2
- package/skills/mono/references/modules/soke-course/MODULE.md +402 -0
- package/skills/mono/references/modules/soke-course/README.md +291 -0
- package/skills/{soke-course → mono/references/modules/soke-course}/references/examples.md +3 -3
- package/skills/{soke-exam/SKILL.md → mono/references/modules/soke-exam/MODULE.md} +1 -1
- package/skills/{soke-learning-map/SKILL.md → mono/references/modules/soke-learning-map/MODULE.md} +5 -6
- package/skills/{soke-learning-profile/SKILL.md → mono/references/modules/soke-learning-profile/MODULE.md} +2 -2
- package/skills/mono/references/modules/soke-lesson/README.md +53 -0
- package/skills/mono/references/modules/soke-material/README.md +49 -0
- package/skills/{soke-photo-gallery/SKILL.md → mono/references/modules/soke-photo-gallery/MODULE.md} +2 -3
- package/skills/mono/references/modules/soke-supervisor/MODULE.md +186 -0
- package/skills/mono/references/modules/soke-task/MODULE.md +146 -0
- package/skills/{soke-training-demand/SKILL.md → mono/references/modules/soke-training-demand/MODULE.md} +1 -1
- package/skills/mono/references/shared/cli-basics.md +185 -0
- package/skills/mono/scripts/check_readiness.py +28 -0
- package/skills/mono/scripts/gate_check.py +112 -0
- package/skills/mono/scripts/validate_operations.py +403 -0
- package/skills/multi/README.md +18 -0
- package/skills/multi/soke-ai-coach-director/CHANGELOG.md +203 -0
- package/skills/multi/soke-ai-coach-director/README.md +121 -0
- package/skills/multi/soke-ai-coach-director/SKILL.md +220 -0
- package/skills/multi/soke-ai-coach-director/assets/ERRORS-TEMPLATE.md +5 -0
- package/skills/multi/soke-ai-coach-director/assets/FEATURE_REQUESTS-TEMPLATE.md +5 -0
- package/skills/multi/soke-ai-coach-director/assets/LEARNINGS-TEMPLATE.md +44 -0
- package/skills/multi/soke-ai-coach-director/assets/SKILL-TEMPLATE.md +177 -0
- package/skills/multi/soke-ai-coach-director/coaching/knowledge-packager/knowledge-packager.md +91 -0
- package/skills/multi/soke-ai-coach-director/coaching/prompt-engineer/parts/part1-basic.md +59 -0
- package/skills/multi/soke-ai-coach-director/coaching/prompt-engineer/parts/part2-roles.md +97 -0
- package/skills/multi/soke-ai-coach-director/coaching/prompt-engineer/parts/part3-flow.md +72 -0
- package/skills/multi/soke-ai-coach-director/coaching/prompt-engineer/parts/part4-scoring.md +87 -0
- package/skills/multi/soke-ai-coach-director/coaching/prompt-engineer/parts/part5-constraints.md +48 -0
- package/skills/multi/soke-ai-coach-director/coaching/prompt-engineer/prompt-engineer.md +76 -0
- package/skills/multi/soke-ai-coach-director/coaching/prompt-optimizer/prompt-optimizer.md +381 -0
- package/skills/multi/soke-ai-coach-director/coaching/role-profiler/role-profiler.md +87 -0
- package/skills/multi/soke-ai-coach-director/platform/adapters/README.md +68 -0
- package/skills/multi/soke-ai-coach-director/platform/adapters/qclaw.md +67 -0
- package/skills/multi/soke-ai-coach-director/platform/adapters/workbuddy.md +44 -0
- package/skills/multi/soke-ai-coach-director/platform/adapters/wukong.md +70 -0
- package/skills/multi/soke-ai-coach-director/platform/adapters/zework.md +89 -0
- package/skills/multi/soke-ai-coach-director/platform/api-fallback.md +262 -0
- package/skills/multi/soke-ai-coach-director/platform/interaction.md +103 -0
- package/skills/multi/soke-ai-coach-director/platform/publish-gate.md +44 -0
- package/skills/multi/soke-ai-coach-director/platform/resource-finalizer.md +103 -0
- package/skills/{soke-ai-coach-director → multi/soke-ai-coach-director}/platform/soke-ai-training/soke-ai-training.md +1 -1
- package/skills/multi/soke-ai-coach-director/platform/sync-engine.md +39 -0
- package/skills/multi/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 +265 -0
- package/skills/multi/soke-ai-coach-director/references/cases/AI/351/231/252/347/273/203Bad Case/346/240/267/346/234/254/345/272/223.md" +206 -0
- package/skills/multi/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 +666 -0
- package/skills/multi/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 +213 -0
- package/skills/multi/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 +229 -0
- package/skills/multi/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 +833 -0
- package/skills/multi/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 +239 -0
- package/skills/multi/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 +249 -0
- package/skills/multi/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 +282 -0
- package/skills/multi/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 +254 -0
- package/skills/multi/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 +264 -0
- package/skills/multi/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 +223 -0
- package/skills/multi/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 +304 -0
- package/skills/multi/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 +42 -0
- package/skills/multi/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 +23 -0
- package/skills/multi/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 +34 -0
- package/skills/multi/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 +26 -0
- package/skills/multi/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 +30 -0
- package/skills/multi/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 +254 -0
- package/skills/multi/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 +96 -0
- package/skills/multi/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 +20 -0
- package/skills/multi/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 +434 -0
- package/skills/multi/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 +22 -0
- package/skills/multi/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 +261 -0
- package/skills/multi/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 +354 -0
- package/skills/multi/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 +26 -0
- package/skills/multi/soke-ai-coach-director/references/cases//345/233/233/345/244/247/345/234/272/346/231/257_GoodCase_BadCase_20260701.md +194 -0
- package/skills/multi/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 +41 -0
- package/skills/multi/soke-ai-coach-director/references/change-log-partwise-refactor.md +74 -0
- package/skills/multi/soke-ai-coach-director/references/env-check.md +146 -0
- package/skills/multi/soke-ai-coach-director/references/exec-common.md +126 -0
- package/skills/multi/soke-ai-coach-director/references/exec-handbook.md +621 -0
- package/skills/multi/soke-ai-coach-director/references/exec-part1.md +86 -0
- package/skills/multi/soke-ai-coach-director/references/exec-part2.md +145 -0
- package/skills/multi/soke-ai-coach-director/references/exec-part3.md +91 -0
- package/skills/multi/soke-ai-coach-director/references/exec-part4.md +187 -0
- package/skills/multi/soke-ai-coach-director/references/gate-check-matrix.md +46 -0
- package/skills/{soke-learning-map/soke-cli/345/256/211/350/243/205/346/214/207/345/215/227.md → multi/soke-ai-coach-director/references/installation.md} +0 -3
- package/skills/multi/soke-ai-coach-director/references/micro-tune-labels.md +30 -0
- package/skills/multi/soke-ai-coach-director/references/platform-api-pitfalls.md +49 -0
- package/skills/multi/soke-ai-coach-director/references/role-resource-matching.md +45 -0
- package/skills/multi/soke-ai-coach-director/references/self-improvement-examples.md +373 -0
- package/skills/multi/soke-ai-coach-director/references/self-learning-engine.md +485 -0
- package/skills/multi/soke-ai-coach-director/references/shared.md +185 -0
- package/skills/multi/soke-ai-coach-director/references/subs/part1/SOP.md +17 -0
- package/skills/multi/soke-ai-coach-director/references/subs/part2/SOP.md +34 -0
- package/skills/multi/soke-ai-coach-director/references/subs/part3/SOP.md +27 -0
- package/skills/multi/soke-ai-coach-director/references/subs/part4/SOP.md +31 -0
- package/skills/multi/soke-ai-coach-director/references/subs/publish/SOP.md +81 -0
- package/skills/multi/soke-ai-coach-director/references/subs/tune/SOP.md +92 -0
- package/skills/multi/soke-ai-coach-director/references/verified-cli-cheatsheet.md +56 -0
- package/skills/multi/soke-ai-coach-director/scripts/gate_check.py +112 -0
- package/skills/multi/soke-ai-coach-director/scripts/validate_operations.py +403 -0
- package/skills/multi/soke-ai-training/SKILL.md +247 -0
- package/skills/{soke-cli/345/256/211/350/243/205/346/214/207/345/215/227.md → multi/soke-ai-training/references/installation.md} +0 -3
- package/skills/multi/soke-ai-training/references/shared.md +185 -0
- package/skills/{soke-assign → multi/soke-assign}/README.md +3 -5
- package/skills/multi/soke-assign/SKILL.md +101 -0
- package/skills/{soke-course/SKILL.md → multi/soke-assign/references/dependencies/soke-course.md} +1 -1
- package/skills/multi/soke-assign/references/dependencies/soke-exam.md +600 -0
- package/skills/multi/soke-assign/references/installation.md +451 -0
- package/skills/multi/soke-assign/references/shared.md +185 -0
- package/skills/multi/soke-certificate/SKILL.md +715 -0
- package/skills/multi/soke-certificate/references/installation.md +451 -0
- package/skills/multi/soke-certificate/references/shared.md +185 -0
- package/skills/{soke-course → multi/soke-course}/README.md +5 -7
- package/skills/multi/soke-course/SKILL.md +399 -0
- package/skills/multi/soke-course/agents/openai.yaml +7 -0
- package/skills/multi/soke-course/examples/create-basic.md +70 -0
- package/skills/multi/soke-course/references/course-list-courses.md +216 -0
- package/skills/multi/soke-course/references/dependencies/soke-assign.md +103 -0
- package/skills/multi/soke-course/references/dependencies/soke-lesson.md +119 -0
- package/skills/multi/soke-course/references/dependencies/soke-material.md +105 -0
- package/skills/multi/soke-course/references/examples.md +480 -0
- package/skills/multi/soke-course/references/installation.md +451 -0
- package/skills/multi/soke-course/references/intent-cases.md +99 -0
- package/skills/multi/soke-course/references/shared.md +185 -0
- package/skills/multi/soke-course/references/sop-full-workflow.md +177 -0
- package/skills/multi/soke-course/references/sop-lesson-types.md +66 -0
- package/skills/multi/soke-course/references/sop-publish-check.md +76 -0
- package/skills/multi/soke-course/references/subs/ai/SOP.md +153 -0
- package/skills/multi/soke-course/references/subs/category/SOP.md +112 -0
- package/skills/multi/soke-course/references/subs/charge/SOP.md +107 -0
- package/skills/multi/soke-course/references/subs/copy/SOP.md +80 -0
- package/skills/multi/soke-course/references/subs/publish/SOP.md +168 -0
- package/skills/multi/soke-course/references/subs/query/SOP.md +165 -0
- package/skills/multi/soke-course/references/subs/settings/SOP.md +136 -0
- package/skills/multi/soke-course/references/subs/template/SOP.md +223 -0
- package/skills/multi/soke-course/references/troubleshoot.md +68 -0
- package/skills/multi/soke-course/scripts/check_readiness.py +87 -0
- package/skills/multi/soke-exam/SKILL.md +598 -0
- package/skills/multi/soke-exam/references/exam-get-exam-user.md +212 -0
- package/skills/multi/soke-exam/references/installation.md +451 -0
- package/skills/multi/soke-exam/references/shared.md +185 -0
- package/skills/multi/soke-exam-question-pool/SKILL.md +121 -0
- package/skills/multi/soke-exam-question-pool/references/installation.md +451 -0
- package/skills/multi/soke-exam-question-pool/references/shared.md +185 -0
- package/skills/multi/soke-learning-map/SKILL.md +553 -0
- package/skills/multi/soke-learning-map/references/dependencies/soke-assign.md +103 -0
- package/skills/{soke-task/SKILL.md → multi/soke-learning-map/references/dependencies/soke-task.md} +1 -1
- package/skills/multi/soke-learning-map/references/installation.md +451 -0
- package/skills/multi/soke-learning-map/references/shared.md +185 -0
- package/skills/multi/soke-learning-profile/SKILL.md +221 -0
- package/skills/multi/soke-learning-profile/references/installation.md +451 -0
- package/skills/multi/soke-learning-profile/references/shared.md +185 -0
- package/skills/multi/soke-lesson/SKILL.md +117 -0
- package/skills/multi/soke-lesson/references/installation.md +451 -0
- package/skills/multi/soke-lesson/references/shared.md +185 -0
- package/skills/multi/soke-material/SKILL.md +103 -0
- package/skills/multi/soke-material/references/installation.md +451 -0
- package/skills/multi/soke-material/references/shared.md +185 -0
- package/skills/multi/soke-photo-gallery/SKILL.md +284 -0
- package/skills/multi/soke-photo-gallery/references/installation.md +451 -0
- package/skills/multi/soke-photo-gallery/references/shared.md +185 -0
- package/skills/multi/soke-shared/SKILL.md +183 -0
- package/skills/multi/soke-supervisor/SKILL.md +184 -0
- package/skills/multi/soke-supervisor/references/installation.md +451 -0
- package/skills/multi/soke-supervisor/references/shared.md +185 -0
- package/skills/multi/soke-task/SKILL.md +144 -0
- package/skills/multi/soke-task/references/installation.md +451 -0
- package/skills/multi/soke-task/references/shared.md +185 -0
- package/skills/multi/soke-training-demand/SKILL.md +219 -0
- package/skills/multi/soke-training-demand/references/installation.md +451 -0
- package/skills/multi/soke-training-demand/references/shared.md +185 -0
- package/skills/soke-ai-coach-director/scripts/activator.sh +0 -4
- package/skills/soke-ai-coach-director/scripts/error-detector.sh +0 -4
- package/skills/soke-ai-coach-director/scripts/extract-skill.sh +0 -7
- package/skills/soke-course/scripts/check_readiness.sh +0 -82
- /package/skills/{soke-ai-coach-director → mono}/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
- /package/skills/{soke-ai-coach-director → mono}/references/cases/AI/351/231/252/347/273/203Bad Case/346/240/267/346/234/254/345/272/223.md" +0 -0
- /package/skills/{soke-ai-coach-director → mono}/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
- /package/skills/{soke-ai-coach-director → mono}/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
- /package/skills/{soke-ai-coach-director → mono}/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
- /package/skills/{soke-ai-coach-director → mono}/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
- /package/skills/{soke-ai-coach-director → mono}/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
- /package/skills/{soke-ai-coach-director → mono}/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
- /package/skills/{soke-ai-coach-director → mono}/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
- /package/skills/{soke-ai-coach-director → mono}/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
- /package/skills/{soke-ai-coach-director → mono}/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
- /package/skills/{soke-ai-coach-director → mono}/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
- /package/skills/{soke-ai-coach-director → mono}/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
- /package/skills/{soke-ai-coach-director → mono}/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
- /package/skills/{soke-ai-coach-director → mono}/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
- /package/skills/{soke-ai-coach-director → mono}/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
- /package/skills/{soke-ai-coach-director → mono}/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
- /package/skills/{soke-ai-coach-director → mono}/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
- /package/skills/{soke-ai-coach-director → mono}/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
- /package/skills/{soke-ai-coach-director → mono}/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
- /package/skills/{soke-ai-coach-director → mono}/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
- /package/skills/{soke-ai-coach-director → mono}/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
- /package/skills/{soke-ai-coach-director → mono}/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
- /package/skills/{soke-ai-coach-director → mono}/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
- /package/skills/{soke-ai-coach-director → mono}/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
- /package/skills/{soke-ai-coach-director → mono}/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
- /package/skills/{soke-ai-coach-director → mono}/references/cases//345/233/233/345/244/247/345/234/272/346/231/257_GoodCase_BadCase_20260701.md" +0 -0
- /package/skills/{soke-ai-coach-director → mono}/references/cases//346/241/210/344/276/213/345/272/223/350/241/245/345/205/205_2026-06-24.md" +0 -0
- /package/skills/{soke-ai-coach-director → mono/references/modules/soke-ai-coach-director}/CHANGELOG.md +0 -0
- /package/skills/{soke-ai-coach-director/SKILL.md → mono/references/modules/soke-ai-coach-director/MODULE.md} +0 -0
- /package/skills/{soke-ai-coach-director → mono/references/modules/soke-ai-coach-director}/assets/ERRORS-TEMPLATE.md +0 -0
- /package/skills/{soke-ai-coach-director → mono/references/modules/soke-ai-coach-director}/assets/FEATURE_REQUESTS-TEMPLATE.md +0 -0
- /package/skills/{soke-ai-coach-director → mono/references/modules/soke-ai-coach-director}/assets/LEARNINGS-TEMPLATE.md +0 -0
- /package/skills/{soke-ai-coach-director → mono/references/modules/soke-ai-coach-director}/assets/SKILL-TEMPLATE.md +0 -0
- /package/skills/{soke-ai-coach-director → mono/references/modules/soke-ai-coach-director}/coaching/knowledge-packager/knowledge-packager.md +0 -0
- /package/skills/{soke-ai-coach-director → mono/references/modules/soke-ai-coach-director}/coaching/prompt-engineer/parts/part1-basic.md +0 -0
- /package/skills/{soke-ai-coach-director → mono/references/modules/soke-ai-coach-director}/coaching/prompt-engineer/parts/part2-roles.md +0 -0
- /package/skills/{soke-ai-coach-director → mono/references/modules/soke-ai-coach-director}/coaching/prompt-engineer/parts/part3-flow.md +0 -0
- /package/skills/{soke-ai-coach-director → mono/references/modules/soke-ai-coach-director}/coaching/prompt-engineer/parts/part4-scoring.md +0 -0
- /package/skills/{soke-ai-coach-director → mono/references/modules/soke-ai-coach-director}/coaching/prompt-engineer/parts/part5-constraints.md +0 -0
- /package/skills/{soke-ai-coach-director → mono/references/modules/soke-ai-coach-director}/coaching/prompt-engineer/prompt-engineer.md +0 -0
- /package/skills/{soke-ai-coach-director → mono/references/modules/soke-ai-coach-director}/coaching/prompt-optimizer/prompt-optimizer.md +0 -0
- /package/skills/{soke-ai-coach-director → mono/references/modules/soke-ai-coach-director}/coaching/role-profiler/role-profiler.md +0 -0
- /package/skills/{soke-ai-coach-director → mono/references/modules/soke-ai-coach-director}/platform/adapters/README.md +0 -0
- /package/skills/{soke-ai-coach-director → mono/references/modules/soke-ai-coach-director}/platform/adapters/qclaw.md +0 -0
- /package/skills/{soke-ai-coach-director → mono/references/modules/soke-ai-coach-director}/platform/adapters/workbuddy.md +0 -0
- /package/skills/{soke-ai-coach-director → mono/references/modules/soke-ai-coach-director}/platform/adapters/wukong.md +0 -0
- /package/skills/{soke-ai-coach-director → mono/references/modules/soke-ai-coach-director}/platform/adapters/zework.md +0 -0
- /package/skills/{soke-ai-coach-director → mono/references/modules/soke-ai-coach-director}/platform/api-fallback.md +0 -0
- /package/skills/{soke-ai-coach-director → mono/references/modules/soke-ai-coach-director}/platform/interaction.md +0 -0
- /package/skills/{soke-ai-coach-director → mono/references/modules/soke-ai-coach-director}/platform/publish-gate.md +0 -0
- /package/skills/{soke-ai-coach-director → mono/references/modules/soke-ai-coach-director}/platform/resource-finalizer.md +0 -0
- /package/skills/{soke-ai-coach-director → mono/references/modules/soke-ai-coach-director}/platform/sync-engine.md +0 -0
- /package/skills/{soke-ai-coach-director → mono/references/modules/soke-ai-coach-director}/references/change-log-partwise-refactor.md +0 -0
- /package/skills/{soke-ai-coach-director → mono/references/modules/soke-ai-coach-director}/references/env-check.md +0 -0
- /package/skills/{soke-ai-coach-director → mono/references/modules/soke-ai-coach-director}/references/exec-common.md +0 -0
- /package/skills/{soke-ai-coach-director → mono/references/modules/soke-ai-coach-director}/references/exec-handbook.md +0 -0
- /package/skills/{soke-ai-coach-director → mono/references/modules/soke-ai-coach-director}/references/exec-part1.md +0 -0
- /package/skills/{soke-ai-coach-director → mono/references/modules/soke-ai-coach-director}/references/exec-part2.md +0 -0
- /package/skills/{soke-ai-coach-director → mono/references/modules/soke-ai-coach-director}/references/exec-part3.md +0 -0
- /package/skills/{soke-ai-coach-director → mono/references/modules/soke-ai-coach-director}/references/exec-part4.md +0 -0
- /package/skills/{soke-ai-coach-director → mono/references/modules/soke-ai-coach-director}/references/gate-check-matrix.md +0 -0
- /package/skills/{soke-ai-coach-director → mono/references/modules/soke-ai-coach-director}/references/micro-tune-labels.md +0 -0
- /package/skills/{soke-ai-coach-director → mono/references/modules/soke-ai-coach-director}/references/platform-api-pitfalls.md +0 -0
- /package/skills/{soke-ai-coach-director → mono/references/modules/soke-ai-coach-director}/references/role-resource-matching.md +0 -0
- /package/skills/{soke-ai-coach-director → mono/references/modules/soke-ai-coach-director}/references/self-improvement-examples.md +0 -0
- /package/skills/{soke-ai-coach-director → mono/references/modules/soke-ai-coach-director}/references/subs/part1/SOP.md +0 -0
- /package/skills/{soke-ai-coach-director → mono/references/modules/soke-ai-coach-director}/references/subs/part2/SOP.md +0 -0
- /package/skills/{soke-ai-coach-director → mono/references/modules/soke-ai-coach-director}/references/subs/part3/SOP.md +0 -0
- /package/skills/{soke-ai-coach-director → mono/references/modules/soke-ai-coach-director}/references/subs/part4/SOP.md +0 -0
- /package/skills/{soke-ai-coach-director → mono/references/modules/soke-ai-coach-director}/references/subs/publish/SOP.md +0 -0
- /package/skills/{soke-ai-coach-director → mono/references/modules/soke-ai-coach-director}/references/subs/tune/SOP.md +0 -0
- /package/skills/{soke-ai-coach-director → mono/references/modules/soke-ai-coach-director}/references/verified-cli-cheatsheet.md +0 -0
- /package/skills/{soke-ai-coach-director → mono/references/modules/soke-ai-coach-director}/scripts/gate_check.py +0 -0
- /package/skills/{soke-ai-coach-director → mono/references/modules/soke-ai-coach-director}/scripts/validate_operations.py +0 -0
- /package/skills/{soke-assign/SKILL.md → mono/references/modules/soke-assign/MODULE.md} +0 -0
- /package/skills/{soke-course → mono/references/modules/soke-course}/agents/openai.yaml +0 -0
- /package/skills/{soke-course → mono/references/modules/soke-course}/examples/create-basic.md +0 -0
- /package/skills/{soke-course → mono/references/modules/soke-course}/references/course-list-courses.md +0 -0
- /package/skills/{soke-course → mono/references/modules/soke-course}/references/intent-cases.md +0 -0
- /package/skills/{soke-course → mono/references/modules/soke-course}/references/sop-full-workflow.md +0 -0
- /package/skills/{soke-course → mono/references/modules/soke-course}/references/sop-lesson-types.md +0 -0
- /package/skills/{soke-course → mono/references/modules/soke-course}/references/sop-publish-check.md +0 -0
- /package/skills/{soke-course → mono/references/modules/soke-course}/references/subs/ai/SOP.md +0 -0
- /package/skills/{soke-course → mono/references/modules/soke-course}/references/subs/category/SOP.md +0 -0
- /package/skills/{soke-course → mono/references/modules/soke-course}/references/subs/charge/SOP.md +0 -0
- /package/skills/{soke-course → mono/references/modules/soke-course}/references/subs/copy/SOP.md +0 -0
- /package/skills/{soke-course → mono/references/modules/soke-course}/references/subs/publish/SOP.md +0 -0
- /package/skills/{soke-course → mono/references/modules/soke-course}/references/subs/query/SOP.md +0 -0
- /package/skills/{soke-course → mono/references/modules/soke-course}/references/subs/settings/SOP.md +0 -0
- /package/skills/{soke-course → mono/references/modules/soke-course}/references/subs/template/SOP.md +0 -0
- /package/skills/{soke-course → mono/references/modules/soke-course}/references/troubleshoot.md +0 -0
- /package/skills/{soke-exam → mono/references/modules/soke-exam}/references/exam-get-exam-user.md +0 -0
- /package/skills/{soke-exam-question-pool/SKILL.md → mono/references/modules/soke-exam-question-pool/MODULE.md} +0 -0
- /package/skills/{soke-lesson/SKILL.md → mono/references/modules/soke-lesson/MODULE.md} +0 -0
- /package/skills/{soke-material/SKILL.md → mono/references/modules/soke-material/MODULE.md} +0 -0
- /package/skills/{soke-shared/SKILL.md → mono/references/modules/soke-shared/MODULE.md} +0 -0
- /package/skills/{soke-ai-coach-director → multi/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
- /package/skills/{soke-ai-coach-director → multi/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
- /package/skills/{soke-lesson → multi/soke-lesson}/README.md +0 -0
- /package/skills/{soke-material → multi/soke-material}/README.md +0 -0
|
@@ -0,0 +1,86 @@
|
|
|
1
|
+
# Part1 · 基础信息(创建场景)
|
|
2
|
+
|
|
3
|
+
> v2.41 从 exec-handbook.md 拆分。通用约束见 `exec-common.md`。
|
|
4
|
+
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
## 必做操作清单
|
|
8
|
+
|
|
9
|
+
| # | 操作 | CLI 命令 | 产物 |
|
|
10
|
+
|---|------|---------|------|
|
|
11
|
+
| 1 | 创建场景 | `soke-cli +create-scenario --request-file /tmp/part1.json` | `scenario_id` |
|
|
12
|
+
| 2 | 回读验证 | `soke-cli +get-scenario --scenario-id <id>` | name/description/key_points/tags 一致 |
|
|
13
|
+
|
|
14
|
+
> Part1 走**创建链路**,不是 preview/apply 更新链路。没有 operations 数组。
|
|
15
|
+
|
|
16
|
+
---
|
|
17
|
+
|
|
18
|
+
## 完整 JSON 模板(part1-create.json)
|
|
19
|
+
|
|
20
|
+
```json
|
|
21
|
+
{
|
|
22
|
+
"name": "<场景名称,1-100 字符>",
|
|
23
|
+
"description": "<场景描述全文,完整搬运不缩略>",
|
|
24
|
+
"tags": ["标签1", "标签2", "标签3"],
|
|
25
|
+
"key_points": "1) 考核点1;2) 考核点2;3) 考核点3",
|
|
26
|
+
"scene_lang": "简体中文",
|
|
27
|
+
"scenario_cover": "https://newsokeeditorcdn.soke.cn/public/ai/cover/lingshou_daogou.png"
|
|
28
|
+
}
|
|
29
|
+
```
|
|
30
|
+
|
|
31
|
+
### 字段硬规则
|
|
32
|
+
|
|
33
|
+
| 字段 | 类型 | 固定值/约束 | 高频错误 |
|
|
34
|
+
|------|------|------------|---------|
|
|
35
|
+
| `name` | string | 1-100 字符,≤15 字推荐 | 空字符串 |
|
|
36
|
+
| `description` | string | Part1 场景描述全文,禁缩略 | 只写首句摘要 |
|
|
37
|
+
| `tags` | string[] | 3-5 个数组元素 | ❌ 逗号分隔字符串 |
|
|
38
|
+
| `key_points` | **string** | 多条用分号/编号拼成**单字符串** | ❌ 写成数组(平台会接受但字段为空) |
|
|
39
|
+
| `scene_lang` | string | 固定 `"简体中文"`(永不随场景变) | ❌ `"zh-CN"` / `"中文"` |
|
|
40
|
+
| `scenario_cover` | string | 固定默认图 URL | ❌ 占位/本地路径 |
|
|
41
|
+
|
|
42
|
+
---
|
|
43
|
+
|
|
44
|
+
## 提交前断言
|
|
45
|
+
|
|
46
|
+
```python
|
|
47
|
+
assert isinstance(data["name"], str) and 1 <= len(data["name"]) <= 100
|
|
48
|
+
assert isinstance(data["description"], str) and len(data["description"]) >= 20
|
|
49
|
+
assert isinstance(data["tags"], list) and 3 <= len(data["tags"]) <= 5
|
|
50
|
+
assert isinstance(data["key_points"], str) and len(data["key_points"]) > 0
|
|
51
|
+
assert data["scene_lang"] == "简体中文"
|
|
52
|
+
assert data["scenario_cover"] == "https://newsokeeditorcdn.soke.cn/public/ai/cover/lingshou_daogou.png"
|
|
53
|
+
```
|
|
54
|
+
|
|
55
|
+
---
|
|
56
|
+
|
|
57
|
+
## 反面案例
|
|
58
|
+
|
|
59
|
+
```json
|
|
60
|
+
❌ 案例 A:key_points 写成数组(平台接受但字段为空)
|
|
61
|
+
{ "key_points": ["快速吸引", "精准推介", "展后跟进"] }
|
|
62
|
+
|
|
63
|
+
❌ 案例 B:tags 写成逗号分隔字符串
|
|
64
|
+
{ "tags": "展会拓客,B2B销售,快速识别" }
|
|
65
|
+
|
|
66
|
+
❌ 案例 C:scene_lang 写成 zh-CN
|
|
67
|
+
{ "scene_lang": "zh-CN" }
|
|
68
|
+
|
|
69
|
+
❌ 案例 D:封面留空或写占位 URL
|
|
70
|
+
{ "scenario_cover": "" }
|
|
71
|
+
```
|
|
72
|
+
|
|
73
|
+
---
|
|
74
|
+
|
|
75
|
+
## 创建后回读校验
|
|
76
|
+
|
|
77
|
+
```python
|
|
78
|
+
assert result["name"] == part1_create["name"]
|
|
79
|
+
assert result["description"] == part1_create["description"]
|
|
80
|
+
assert result["tags"] == part1_create["tags"]
|
|
81
|
+
assert result["key_points"] == part1_create["key_points"]
|
|
82
|
+
assert result["scenario_id"] not in (None, "")
|
|
83
|
+
```
|
|
84
|
+
|
|
85
|
+
- `scenario_id` 为空 → 视为创建失败,**禁止进入 Part2**
|
|
86
|
+
- `key_points` 回读为空 → 检查 part1-create.json 是否误写成数组
|
|
@@ -0,0 +1,145 @@
|
|
|
1
|
+
# Part2 · AI 角色设定(双操作同步锁)
|
|
2
|
+
|
|
3
|
+
> v2.41 从 exec-handbook.md 拆分。通用约束见 `exec-common.md`。
|
|
4
|
+
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
## 必做操作清单
|
|
8
|
+
|
|
9
|
+
| # | operation.type | 作用 | 不可省略 |
|
|
10
|
+
|---|---------------|------|---------|
|
|
11
|
+
| 1 | `update_basic` | 写入 OS 整体设定 A1-A7 全文到 `ai_roles_overall_description` | ✅ 遗漏会导致平台无 OS,角色退化为普通对话 |
|
|
12
|
+
| 2 | `replace_ai_roles` | 写入所有角色数据到 `ai_roles[]` | ✅ 遗漏会导致平台有 OS 无角色 |
|
|
13
|
+
|
|
14
|
+
**两操作必须全部 applied=true 才算 Part2 完成**。可在同一批 operations 数组提交(OS 在前、roles 在后),也可分两次 apply。
|
|
15
|
+
|
|
16
|
+
---
|
|
17
|
+
|
|
18
|
+
## OS(ai_roles_overall_description)写作结构(v2.42 内联,禁再读 part2-roles.md)
|
|
19
|
+
|
|
20
|
+
OS 是单字符串,≥500 字符,≤3000 字符。按以下 7 段顺序拼接(A1-A7),每段一个自然段:
|
|
21
|
+
|
|
22
|
+
```
|
|
23
|
+
A1 核心身份:你是"高保真人类社交模拟器"兼"隐形考核官",扮演具复杂社会属性、非理性情绪的特定角色,抛弃"乐于助人"的 AI 出厂设置,通过真实对话考核学员的沟通/销售能力。
|
|
24
|
+
|
|
25
|
+
A2 动态状态机:回复前更新 Trust_Level(信任值0-100,<20冷淡/>80成交信号)、Patience_Gauge(耐心条随轮次衰减)、Fact_Anchoring(事实锚点严禁幻觉修改)。
|
|
26
|
+
|
|
27
|
+
A3 双层逻辑:理性真值(后台精确算计)→感性表述(前台拟人化),永远不要轻易痛快答应。
|
|
28
|
+
|
|
29
|
+
A4 行为规范:语言熵增(倒装/重复/断句/口语填充);心理防御(面子机制/逻辑谬误/信息非对称);禁AI式服务、禁格式化输出、禁事实漂移;学员说违规夸大词("绝对""100%")时触发信任崩塌反击。
|
|
30
|
+
|
|
31
|
+
A5 信息挤牙膏:开场只表达表层诉求,被问才透露深层信息;学员单次回复超100字时抓核心痛点重复质疑,但明确回答过的问题不能假装没听见。
|
|
32
|
+
|
|
33
|
+
A6 隐形考核:随机挖坑测试(故意说错数据)、施压测试(突变条件)。
|
|
34
|
+
|
|
35
|
+
A7 导演模式:死局/结束/输入"复盘"时跳出角色,以金牌导师身份复盘,格式【关键死因/成功点】【心理揭秘】【金样板话术】。
|
|
36
|
+
```
|
|
37
|
+
|
|
38
|
+
按场景材料填充每段细节(话术风格/行业背景/红线),但**结构必须保持 A1-A7 顺序**。
|
|
39
|
+
|
|
40
|
+
---
|
|
41
|
+
|
|
42
|
+
## 完整 JSON 模板(part2-operations.json)
|
|
43
|
+
|
|
44
|
+
```json
|
|
45
|
+
[
|
|
46
|
+
{
|
|
47
|
+
"type": "update_basic",
|
|
48
|
+
"data": {
|
|
49
|
+
"ai_roles_overall_description": "<A1-A7 OS 全文,单字符串,≥500 字符,禁摘要/禁'参见 Part2'>"
|
|
50
|
+
}
|
|
51
|
+
},
|
|
52
|
+
{
|
|
53
|
+
"type": "replace_ai_roles",
|
|
54
|
+
"data": {
|
|
55
|
+
"roles": [
|
|
56
|
+
{
|
|
57
|
+
"scenario_role_id": "role_<角色短码>",
|
|
58
|
+
"customization_level": "full",
|
|
59
|
+
"is_custom_role": true,
|
|
60
|
+
"customized_fields": ["name", "description", "communication_style", "background", "personality_type", "personality", "tags", "knowledge_level", "taboos_objections", "avatar", "voice_id", "source_type"],
|
|
61
|
+
"template_id": null,
|
|
62
|
+
"template_name": null,
|
|
63
|
+
"template_version": null,
|
|
64
|
+
"role_data": {
|
|
65
|
+
"name": "<角色名>",
|
|
66
|
+
"description": "<角色描述>",
|
|
67
|
+
"communication_style": "<沟通风格>",
|
|
68
|
+
"background": "<四段深度画像全文:我是谁/我的困扰/我的过往经历/我今天的心态>",
|
|
69
|
+
"personality_type": "<MBTI 单值,如 ISFJ>",
|
|
70
|
+
"personality": "<性格描述>",
|
|
71
|
+
"tags": ["标签1", "标签2"],
|
|
72
|
+
"knowledge_level": ["小白"],
|
|
73
|
+
"taboos_objections": ["禁忌1", "禁忌2"],
|
|
74
|
+
"avatar": "<后台资源匹配的 URL,禁手工预设>",
|
|
75
|
+
"voice_id": "<后台资源匹配的 ID,禁手工预设>",
|
|
76
|
+
"source_type": "custom"
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
]
|
|
80
|
+
}
|
|
81
|
+
}
|
|
82
|
+
]
|
|
83
|
+
```
|
|
84
|
+
|
|
85
|
+
---
|
|
86
|
+
|
|
87
|
+
## 字段硬规则
|
|
88
|
+
|
|
89
|
+
| 字段 | 类型 | 约束 |
|
|
90
|
+
|------|------|------|
|
|
91
|
+
| `ai_roles_overall_description` | string | ≥500 字符;A1-A7 全文拼接,不摘要 |
|
|
92
|
+
| `roles[]` | array | 非空,2-5 个角色 |
|
|
93
|
+
| `roles[].role_data.avatar/voice_id` | string | 后台 `+list-role-avatars/+list-role-voices` 匹配;**禁手工预设** |
|
|
94
|
+
| `roles[].role_data.knowledge_level` | string[] | 数组枚举(如 `["小白"]`),禁长句 |
|
|
95
|
+
| `roles[].role_data.tags` | string[] | 2-4 个 |
|
|
96
|
+
| `roles[].role_data.taboos_objections` | string[] | 列表项 |
|
|
97
|
+
| 外壳字段位置 | - | `customization_level/is_custom_role/customized_fields/scenario_role_id/template_id/template_name/template_version` 必须在 `role_data` **外层**;⚠️ `source_type` 例外——必须在 `role_data` **内**(`role_data.source_type="custom"`),外壳写 source_type 会触发"角色数据异常";⚠️ `created_at`/`updated_at` **禁传**——由平台自动生成,写字符串时间戳会触发"角色数据异常" |
|
|
98
|
+
|
|
99
|
+
---
|
|
100
|
+
|
|
101
|
+
## 提交前断言
|
|
102
|
+
|
|
103
|
+
```python
|
|
104
|
+
op_os = next(o for o in operations if o["type"] == "update_basic")
|
|
105
|
+
os_text = op_os["data"]["ai_roles_overall_description"]
|
|
106
|
+
assert isinstance(os_text, str) and len(os_text) >= 500
|
|
107
|
+
|
|
108
|
+
op_roles = next(o for o in operations if o["type"] == "replace_ai_roles")
|
|
109
|
+
roles = op_roles["data"]["roles"]
|
|
110
|
+
assert isinstance(roles, list) and len(roles) >= 1
|
|
111
|
+
for r in roles:
|
|
112
|
+
for outer_key in ["scenario_role_id", "customization_level", "is_custom_role",
|
|
113
|
+
"customized_fields",
|
|
114
|
+
"template_id", "template_name", "template_version"]:
|
|
115
|
+
assert outer_key in r, f"缺少外壳字段: {outer_key}"
|
|
116
|
+
assert r["template_id"] is None and r["template_name"] is None and r["template_version"] is None
|
|
117
|
+
assert len(r["customized_fields"]) >= 10
|
|
118
|
+
assert "name" in r["customized_fields"]
|
|
119
|
+
assert "source_type" not in r
|
|
120
|
+
rd = r["role_data"]
|
|
121
|
+
assert rd["avatar"] and rd["voice_id"]
|
|
122
|
+
assert isinstance(rd["knowledge_level"], list)
|
|
123
|
+
assert rd.get("source_type") == "custom"
|
|
124
|
+
for shell_field in ["customization_level", "is_custom_role", "customized_fields",
|
|
125
|
+
"scenario_role_id", "created_at", "updated_at",
|
|
126
|
+
"template_id", "template_name", "template_version"]:
|
|
127
|
+
assert shell_field not in rd, f"{shell_field} 误入 role_data"
|
|
128
|
+
```
|
|
129
|
+
|
|
130
|
+
---
|
|
131
|
+
|
|
132
|
+
## 反面案例
|
|
133
|
+
|
|
134
|
+
```json
|
|
135
|
+
❌ 案例 A:遗漏操作 1(OS)—— 只提交 replace_ai_roles
|
|
136
|
+
→ 平台 ai_roles_overall_description=null,角色无 OS 约束,行为退化为普通对话
|
|
137
|
+
|
|
138
|
+
❌ 案例 B:外壳字段误放入 role_data
|
|
139
|
+
{ "role_data": { "customization_level": "full", "name": "李晓琳" } }
|
|
140
|
+
→ 平台报"角色数据异常",avatar/voice_id 均为空
|
|
141
|
+
|
|
142
|
+
❌ 案例 C:avatar/voice_id 手工预设
|
|
143
|
+
{ "role_data": { "avatar": "https://xxx placeholder.png" } }
|
|
144
|
+
→ 应该由后台 +list-role-avatars 匹配
|
|
145
|
+
```
|
|
@@ -0,0 +1,91 @@
|
|
|
1
|
+
# Part3 · 流程设置
|
|
2
|
+
|
|
3
|
+
> v2.41 从 exec-handbook.md 拆分。通用约束见 `exec-common.md`。
|
|
4
|
+
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
## 必做操作清单
|
|
8
|
+
|
|
9
|
+
| # | operation.type | 作用 |
|
|
10
|
+
|---|---------------|------|
|
|
11
|
+
| 1 | `update_basic` | 写入 `opening_dialogue`(开场语全文)+ `opening_dialogue_type: 1` |
|
|
12
|
+
| 2 | 每环节一个 `add_conversation_step` | 写入对话 SOP 环节 |
|
|
13
|
+
|
|
14
|
+
> 🔒 **原子性约束**:开场语 + 所有环节必须在**同一批 operations 数组的同一次 apply** 中提交,禁止拆分多次 apply。
|
|
15
|
+
|
|
16
|
+
---
|
|
17
|
+
|
|
18
|
+
## 完整 JSON 模板(part3-operations.json)
|
|
19
|
+
|
|
20
|
+
```json
|
|
21
|
+
[
|
|
22
|
+
{
|
|
23
|
+
"type": "update_basic",
|
|
24
|
+
"data": {
|
|
25
|
+
"opening_dialogue": "<开场语完整原文>",
|
|
26
|
+
"opening_dialogue_type": 1
|
|
27
|
+
}
|
|
28
|
+
},
|
|
29
|
+
{
|
|
30
|
+
"type": "add_conversation_step",
|
|
31
|
+
"data": {
|
|
32
|
+
"step_name": "<环节名>",
|
|
33
|
+
"student_objective": "<学员目标,与 Part1 考核点一一对应>",
|
|
34
|
+
"ai_task": "<AI 任务,含 IF-THEN + 进入条件 + 角色行为 + 退出条件>",
|
|
35
|
+
"max_rounds": 5,
|
|
36
|
+
"sort_order": "1"
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
]
|
|
40
|
+
```
|
|
41
|
+
|
|
42
|
+
---
|
|
43
|
+
|
|
44
|
+
## 字段硬规则
|
|
45
|
+
|
|
46
|
+
| 字段 | 类型 | 约束 | 高频错误 |
|
|
47
|
+
|------|------|------|---------|
|
|
48
|
+
| `opening_dialogue_type` | **number** | 固定 `1`(整数,非字符串) | ❌ `"AI智能生成"` / `"1"` |
|
|
49
|
+
| `opening_dialogue` | string | 开场语完整原文 | ❌ 缩略 |
|
|
50
|
+
| `add_conversation_step.data.sort_order` | **string** | `"1"`、`"2"`(字符串) | ❌ 数字 1 |
|
|
51
|
+
| `ai_task` | string | 含 IF-THEN + 进入条件 + 角色行为 + 退出条件 | ❌ 缺 IF-THEN / 缺退出条件 |
|
|
52
|
+
| `max_rounds` | number | 整数 3-10 | ❌ 字符串 / 超范围 |
|
|
53
|
+
|
|
54
|
+
---
|
|
55
|
+
|
|
56
|
+
## 提交前断言
|
|
57
|
+
|
|
58
|
+
```python
|
|
59
|
+
op_open = next(o for o in operations if o["type"] == "update_basic")
|
|
60
|
+
assert op_open["data"]["opening_dialogue_type"] == 1 # 数字,不是字符串
|
|
61
|
+
assert isinstance(op_open["data"]["opening_dialogue"], str) and len(op_open["data"]["opening_dialogue"]) > 20
|
|
62
|
+
|
|
63
|
+
steps = [o for o in operations if o["type"] == "add_conversation_step"]
|
|
64
|
+
assert 3 <= len(steps) <= 7
|
|
65
|
+
for i, s in enumerate(steps):
|
|
66
|
+
d = s["data"]
|
|
67
|
+
for k in ["step_name", "student_objective", "ai_task", "max_rounds", "sort_order"]:
|
|
68
|
+
assert d.get(k) not in (None, "", []), f"step{i} missing {k}"
|
|
69
|
+
assert isinstance(d["sort_order"], str), f"step{i} sort_order 必须是字符串"
|
|
70
|
+
assert isinstance(d["max_rounds"], int) and 3 <= d["max_rounds"] <= 10
|
|
71
|
+
assert "IF" in d["ai_task"].upper() and "退出" in d["ai_task"]
|
|
72
|
+
```
|
|
73
|
+
|
|
74
|
+
---
|
|
75
|
+
|
|
76
|
+
## 反面案例
|
|
77
|
+
|
|
78
|
+
```json
|
|
79
|
+
❌ 案例 A:opening_dialogue_type 写字符串
|
|
80
|
+
{ "opening_dialogue_type": "1" }
|
|
81
|
+
→ 422 报错:opening_dialogue_type 必须是 1 或 2
|
|
82
|
+
|
|
83
|
+
❌ 案例 B:sort_order 写数字
|
|
84
|
+
{ "sort_order": 1 }
|
|
85
|
+
→ 应该是 "1"(字符串)
|
|
86
|
+
|
|
87
|
+
❌ 案例 C:拆分多次 apply(违反原子性)
|
|
88
|
+
第 1 次 apply:只提交开场语
|
|
89
|
+
第 2 次 apply:提交对话环节
|
|
90
|
+
→ 违反原子性约束,应同一批 operations
|
|
91
|
+
```
|
|
@@ -0,0 +1,187 @@
|
|
|
1
|
+
# Part4 · 评分标准(双层包装锁)+ Part5 合并应用(v2.43)
|
|
2
|
+
|
|
3
|
+
> v2.41 从 exec-handbook.md 拆分。通用约束见 `exec-common.md`。
|
|
4
|
+
> **v2.43 变更**:Part5 固定配置不再单独确认/apply——Part4 弹窗确认后,Part4+Part5 两个 operation **合并一批 apply**(part4-operations.json 数组含两个元素)。**exec-part5.md 已删除,Part5 全部规则并入本文件(v2.43.1)。**
|
|
5
|
+
> **展示规则**:聊天正文必须**完整展示 Part4 + Part5 两段**——Part4 展示维度名+权重+一票否决,紧接 Part5 用编号列表完整展示 6 项固定配置。**禁止把 Part5 压缩成一行摘要省略展示**。
|
|
6
|
+
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
## 必做操作清单
|
|
10
|
+
|
|
11
|
+
| # | operation.type | 作用 |
|
|
12
|
+
|---|---------------|------|
|
|
13
|
+
| 1 | `replace_scoring_criteria_config` | 写入评分标准(含 5 维度+权重+一票否决) |
|
|
14
|
+
| 2 | `update_basic`(Part5 固定配置,v2.43 并入同批) | 6 项固定值:min/max_practice_duration=0 / max_practice_attempts=10 / passing_score=60 / completion_rule="all_steps" / ai_assistance_enabled=true / pass_difficulty=2 |
|
|
15
|
+
|
|
16
|
+
**弹窗引导语**(≤2 行):`以上是 Part4 评分标准 + Part5 教练配置(6 项固定值),是否确认写入?`
|
|
17
|
+
|
|
18
|
+
**聊天正文展示模板**(Part4 之后紧接 Part5,编号列表,不可省略):
|
|
19
|
+
|
|
20
|
+
```
|
|
21
|
+
**Part4 评分标准**(合计 100 分)
|
|
22
|
+
| 维度 | 权重 | 一票否决 |
|
|
23
|
+
|---|---|---|
|
|
24
|
+
| <维度1> | <w1> | 有/无 |
|
|
25
|
+
| ... | ... | ... |
|
|
26
|
+
|
|
27
|
+
**Part5 教练配置**(6 项固定值)
|
|
28
|
+
1. 练习时长:不限
|
|
29
|
+
2. 最大练习次数:10 次
|
|
30
|
+
3. 通关分数:60 分
|
|
31
|
+
4. 完成规则:全环节完成
|
|
32
|
+
5. AI 辅助:开启
|
|
33
|
+
6. 通关难度:2
|
|
34
|
+
```
|
|
35
|
+
|
|
36
|
+
> ⚠️ **6 项固定配置禁按场景调整**(原 exec-part5.md 规则,v2.43.1 并入)。字段名以实际成功发布的版本为准。Part5 不再同步 `closing_dialogue` / `golden_dialogue_description` / `key_points`(这些已在 Part1/Part3 同步)。
|
|
37
|
+
|
|
38
|
+
---
|
|
39
|
+
|
|
40
|
+
## 完整 JSON 模板(part4-operations.json)
|
|
41
|
+
|
|
42
|
+
```json
|
|
43
|
+
[
|
|
44
|
+
{
|
|
45
|
+
"type": "replace_scoring_criteria_config",
|
|
46
|
+
"data": {
|
|
47
|
+
"config": {
|
|
48
|
+
"customization_level": "full",
|
|
49
|
+
"is_custom_criteria": true,
|
|
50
|
+
"customized_fields": ["criteria_data"],
|
|
51
|
+
"scenario_criteria_id": "criteria_<场景短码>",
|
|
52
|
+
"criteria_data": {
|
|
53
|
+
"name": "<评分标准名称,8-20 字>",
|
|
54
|
+
"description": "<评分标准描述全文>",
|
|
55
|
+
"source_type": "enterprise",
|
|
56
|
+
"total_weight": 100,
|
|
57
|
+
"tags": ["标签1", "标签2"],
|
|
58
|
+
"dimensions": [
|
|
59
|
+
{
|
|
60
|
+
"id": "dim_<code>",
|
|
61
|
+
"code": "<英文 code>",
|
|
62
|
+
"name": "<维度名>",
|
|
63
|
+
"description": "<维度描述>",
|
|
64
|
+
"weight": 25,
|
|
65
|
+
"scoring_rule": "<评分规则全文,含一票否决嵌入末尾>",
|
|
66
|
+
"criteria": ["评分点1", "评分点2"],
|
|
67
|
+
"sort_order": 1
|
|
68
|
+
}
|
|
69
|
+
]
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
}
|
|
73
|
+
},
|
|
74
|
+
{
|
|
75
|
+
"type": "update_basic",
|
|
76
|
+
"data": {
|
|
77
|
+
"min_practice_duration": 0,
|
|
78
|
+
"max_practice_duration": 0,
|
|
79
|
+
"max_practice_attempts": 10,
|
|
80
|
+
"passing_score": 60,
|
|
81
|
+
"completion_rule": "all_steps",
|
|
82
|
+
"ai_assistance_enabled": true,
|
|
83
|
+
"pass_difficulty": 2
|
|
84
|
+
}
|
|
85
|
+
}
|
|
86
|
+
]
|
|
87
|
+
```
|
|
88
|
+
|
|
89
|
+
---
|
|
90
|
+
|
|
91
|
+
## 双层包装锁
|
|
92
|
+
|
|
93
|
+
| 层级 | 位置 | 字段 |
|
|
94
|
+
|------|------|------|
|
|
95
|
+
| **第 1 层(config 外壳)** | `data.config` | `customization_level` / `is_custom_criteria` / `customized_fields` / `scenario_criteria_id` / `criteria_data` |
|
|
96
|
+
| **第 2 层(criteria_data 内核)** | `data.config.criteria_data` | `name` / `description` / `source_type` / `total_weight` / `tags` / `dimensions[]` |
|
|
97
|
+
|
|
98
|
+
**双层缺一不可**。常见错误:只包 `config` 漏 `criteria_data`(平台会接受但存储结构错误,后续查询/weight 校验/同步都异常)。
|
|
99
|
+
|
|
100
|
+
---
|
|
101
|
+
|
|
102
|
+
## 🔒 UI 展示硬要求
|
|
103
|
+
|
|
104
|
+
**以下字段 API 存储时不强制,但平台 UI 展示时必需——缺失会导致 UI 上看不到 Part4 数据**:
|
|
105
|
+
|
|
106
|
+
| 字段 | 位置 | 必需值示例 |
|
|
107
|
+
|------|------|-----------|
|
|
108
|
+
| `customization_level` | `criteria_data` 顶层 | `"full"` |
|
|
109
|
+
| `is_custom_criteria` | `criteria_data` 顶层 | `true` |
|
|
110
|
+
| `customized_fields` | `criteria_data` 顶层 | `["criteria_data"]` |
|
|
111
|
+
| `scenario_criteria_id` | `criteria_data` 顶层 | `"criteria_<场景短码>_v1"` |
|
|
112
|
+
| `total_weight` | `criteria_data` 顶层 | `100` |
|
|
113
|
+
| `tags` | `criteria_data` 顶层 | 与 Part1 场景标签一致 |
|
|
114
|
+
| `dimensions[].id` | 每个维度 | `"dim_<code>"` |
|
|
115
|
+
| `dimensions[].sort_order` | 每个维度 | 数字 1、2、3... |
|
|
116
|
+
|
|
117
|
+
> ⚠️ **历史教训**:API 接受只包 `criteria_data.dimensions` 的简化结构(存储成功),但平台 UI 会显示"无评分标准"。必须在 `criteria_data` 顶层补全上述 6 个字段,每个维度补 `id` 和 `sort_order`。
|
|
118
|
+
|
|
119
|
+
---
|
|
120
|
+
|
|
121
|
+
## 字段硬规则
|
|
122
|
+
|
|
123
|
+
| 字段 | 类型 | 约束 | 高频错误 |
|
|
124
|
+
|------|------|------|---------|
|
|
125
|
+
| `dimensions[].sort_order` | **number** | 整数 1、2、3 | ❌ 字符串(与 Part3 `sort_order` 相反) |
|
|
126
|
+
| `dimensions[].weight` | number | 整数,所有维度合 = 100 | ❌ 不等于 100 |
|
|
127
|
+
| `dimensions[].criteria` | string[] | 至少 2 个评分点 | ❌ 单条 / 逗号字符串 |
|
|
128
|
+
| `dimensions[].scoring_rule` | string | 一票否决嵌入末尾 | ❌ 全局 one_vote_veto 字段 |
|
|
129
|
+
| `dimensions[].code` | string | 英文语义编码 | ❌ 中文 |
|
|
130
|
+
|
|
131
|
+
---
|
|
132
|
+
|
|
133
|
+
## 提交前断言
|
|
134
|
+
|
|
135
|
+
```python
|
|
136
|
+
op = operations[0]
|
|
137
|
+
assert op["type"] == "replace_scoring_criteria_config"
|
|
138
|
+
|
|
139
|
+
config = op["data"]["config"]
|
|
140
|
+
assert "criteria_data" in config, "缺第 2 层 criteria_data 包装"
|
|
141
|
+
|
|
142
|
+
cd = config["criteria_data"]
|
|
143
|
+
for k in ["name", "description", "source_type", "total_weight", "tags", "dimensions"]:
|
|
144
|
+
assert cd.get(k) not in (None, "", []), f"criteria_data.{k} 空/缺失"
|
|
145
|
+
|
|
146
|
+
assert cd["source_type"] == "enterprise"
|
|
147
|
+
assert cd["total_weight"] == 100
|
|
148
|
+
|
|
149
|
+
dims = cd["dimensions"]
|
|
150
|
+
assert len(dims) >= 2
|
|
151
|
+
assert sum(d["weight"] for d in dims) == 100, "权重总和不等于 100"
|
|
152
|
+
for i, d in enumerate(dims):
|
|
153
|
+
for k in ["id", "code", "name", "description", "weight", "scoring_rule", "criteria"]:
|
|
154
|
+
assert d.get(k) not in (None, "", []), f"dim{i} missing {k}"
|
|
155
|
+
assert isinstance(d["sort_order"], int), f"dim{i} sort_order 必须是数字"
|
|
156
|
+
assert isinstance(d["criteria"], list) and len(d["criteria"]) >= 2
|
|
157
|
+
assert d["code"].isascii(), f"dim{i} code 必须是英文"
|
|
158
|
+
|
|
159
|
+
# Part5 固定配置(v2.43 并入同批)
|
|
160
|
+
op5 = operations[1]
|
|
161
|
+
assert op5["type"] == "update_basic"
|
|
162
|
+
d5 = op5["data"]
|
|
163
|
+
assert d5["min_practice_duration"] == 0 and d5["max_practice_duration"] == 0
|
|
164
|
+
assert d5["max_practice_attempts"] == 10
|
|
165
|
+
assert d5["passing_score"] == 60
|
|
166
|
+
assert d5["completion_rule"] == "all_steps"
|
|
167
|
+
assert d5["ai_assistance_enabled"] is True
|
|
168
|
+
assert d5["pass_difficulty"] == 2
|
|
169
|
+
```
|
|
170
|
+
|
|
171
|
+
---
|
|
172
|
+
|
|
173
|
+
## 反面案例
|
|
174
|
+
|
|
175
|
+
```json
|
|
176
|
+
❌ 案例 A:只包 config 漏 criteria_data(平台会接受但存储错误)
|
|
177
|
+
{ "type": "replace_scoring_criteria_config", "data": { "config": { "name": "...", "dimensions": [...] } } }
|
|
178
|
+
→ 平台存为 {name, dimensions} 散在根,与正确结构不一致
|
|
179
|
+
|
|
180
|
+
❌ 案例 B:dimensions.sort_order 写字符串
|
|
181
|
+
{ "sort_order": "1" }
|
|
182
|
+
→ 应该是数字 1(注意 Part3 是字符串,Part4 是数字)
|
|
183
|
+
|
|
184
|
+
❌ 案例 C:一票否决写在全局
|
|
185
|
+
{ "one_vote_veto": [...] }
|
|
186
|
+
→ 应该嵌入各维度 scoring_rule 末尾
|
|
187
|
+
```
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
# AI 陪练 Gate Check 矩阵
|
|
2
|
+
|
|
3
|
+
> 各阶段/Part 结束时对照检查。🔴 阻塞(必须修复)/ 🟡 警告(建议修复)。Part1-5 逐项字段校验已在各 Part SOP 自查清单与 exec-handbook 断言中定义,本文件聚焦发布前汇总闸门。
|
|
4
|
+
>
|
|
5
|
+
> **v2.39 闸门精简规则**:Step 7 的 12 项中,9 项与 Part1-5 自检清单完全重叠(标注「↔PartN自检」)。Part 自检全部通过后,这 9 项**自动视为通过**,不再重复检查。闸门仅补查 3 项(标注「⚡仅闸门」)。
|
|
6
|
+
|
|
7
|
+
## Step 7 创建质量闸门(12 项,全部通过才进 Step 8)
|
|
8
|
+
|
|
9
|
+
| # | 检查项 | 严重度 | v2.39 精简 |
|
|
10
|
+
|---|--------|--------|------------|
|
|
11
|
+
| 1 | 材料完整(含业务场景+话术素材) | 🔴 | ↔Part1自检(自检通过则跳过) |
|
|
12
|
+
| 2 | 场景类型判定已确认 | 🔴 | ↔Step2确认(已确认则跳过) |
|
|
13
|
+
| 3 | 角色行为化(无空泛画像) | 🔴 | ↔Part2自检(自检通过则跳过) |
|
|
14
|
+
| 4 | 信息释放规则明确 | 🔴 | ↔Part2自检(自检通过则跳过) |
|
|
15
|
+
| 5 | 每环节含进入/退出条件 | 🔴 | ↔Part3自检(自检通过则跳过) |
|
|
16
|
+
| 6 | 评分可识别(维度↔考核点对应) | 🔴 | ↔Part4自检(自检通过则跳过) |
|
|
17
|
+
| 7 | 练习配置匹配固定模板 | 🔴 | ↔Part4+5 合并自检(v2.43.1,exec-part4.md 断言区) |
|
|
18
|
+
| 8 | Part 内容完整展示 | 🔴 | ⚡仅闸门(需检查展示记录) |
|
|
19
|
+
| 9 | Part2 角色 background 四段完整 | 🔴 | ↔Part2自检(自检通过则跳过) |
|
|
20
|
+
| 10 | Part4 权重和 = 100 | 🔴 | ↔Part4自检(自检通过则跳过) |
|
|
21
|
+
| 11 | 测试用例 | 🟡 | ⚡仅闸门(可选,不阻塞) |
|
|
22
|
+
| 12 | 整体设定 ≤ 3000 字 | 🟡 | ⚡仅闸门(需统计字数) |
|
|
23
|
+
|
|
24
|
+
> **v2.39 批量校验脚本缩减**:Part 自检全部通过后,闸门批量校验从 16 个断言缩减为 7 个(4 项发布闸门 + 3 项补查项)。
|
|
25
|
+
|
|
26
|
+
## Step 8 发布闸门(资源兜底,任一缺失禁止发布)
|
|
27
|
+
|
|
28
|
+
| # | 检查项 | 严重度 |
|
|
29
|
+
|---|--------|--------|
|
|
30
|
+
| 1 | 封面 = 固定默认图 | 🔴 |
|
|
31
|
+
| 2 | 全部 avatar 非空 URL | 🔴 |
|
|
32
|
+
| 3 | 全部 voice_id 非空 ID | 🔴 |
|
|
33
|
+
| 4 | 无"角色数据异常" | 🔴 |
|
|
34
|
+
|
|
35
|
+
## 微调闸门(8 项)
|
|
36
|
+
|
|
37
|
+
| # | 检查项 | 严重度 |
|
|
38
|
+
|---|--------|--------|
|
|
39
|
+
| 1 | 有证据 | 🟡 |
|
|
40
|
+
| 2 | 已技术分流 | 🔴 |
|
|
41
|
+
| 3 | 已打标签(F/I/O/L/E/S/R/K/T/D) | 🔴 |
|
|
42
|
+
| 4 | 修改决策 | 🔴 |
|
|
43
|
+
| 5 | 标注改稿 | 🔴 |
|
|
44
|
+
| 6 | 复测方案 | 🔴 |
|
|
45
|
+
| 7 | 版本记录建议 | 🟡 |
|
|
46
|
+
| 8 | 整体设定 ≤ 3000 字 | 🟡 |
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
# 微调诊断标签完整定义
|
|
2
|
+
|
|
3
|
+
> 由 SKILL.md「微调诊断标签」节引用。微调型任务必须打标签后才能进入修改建议。
|
|
4
|
+
> 核心原则:**没有标签,不进入修改建议。**
|
|
5
|
+
|
|
6
|
+
| 标签 | 含义 | 判定要点 |
|
|
7
|
+
|------|------|---------|
|
|
8
|
+
| **F** | 格式违规 | 括号动作、Markdown语法、后台痕迹外显 |
|
|
9
|
+
| **I** | 信息释放违规 | 开场透露全部症状/底线/背景 |
|
|
10
|
+
| **O** | 角色OOC | 太热情/太攻击/说出不该说的术语 |
|
|
11
|
+
| **P** | 指令执行度违规 | AI实际行为与提示词行为指令不一致 |
|
|
12
|
+
| **N** | 对话自然度违规 | 模板化、万能回应、句式单一、过渡生硬 |
|
|
13
|
+
| **L** | 逻辑违规 | 信任值异常、价格防线过早松动 |
|
|
14
|
+
| **E** | 结束违规 | 提前结束、成交后继续追问 |
|
|
15
|
+
| **S** | 场景规则违规 | 违反药房/合规/B2B场景规则 |
|
|
16
|
+
| **R** | 评分规则问题 | 评分项抽象、目标错位、无法识别间接达成 |
|
|
17
|
+
| **K** | 知识/合规问题 | 产品知识错误、禁用话术未触发 |
|
|
18
|
+
| **T** | 技术/体验问题 | ASR/TTS/权限/跳转 |
|
|
19
|
+
| **D** | 数据/看板问题 | 指标口径错误、数据污染 |
|
|
20
|
+
|
|
21
|
+
## 诊断分析顺序
|
|
22
|
+
|
|
23
|
+
必须严格按此顺序执行:
|
|
24
|
+
|
|
25
|
+
```
|
|
26
|
+
T排障 → O拟真 → P指令执行 → N自然度 → I信息释放/K知识 → E结束/S场景 → L逻辑/F格式 → R评分
|
|
27
|
+
```
|
|
28
|
+
|
|
29
|
+
- **P 在第 3 位**:先确认角色没崩(O),再查指令执行度(P),避免角色OOC导致P误判
|
|
30
|
+
- **N 在第 4 位**:先确认行为指令合规(P),再查表达是否自然(N)。模板化"好的""了解了"等万能回应属于 N 违规而非 O 或 F 问题
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
# 平台 API 踩坑清单(致命陷阱速查)
|
|
2
|
+
|
|
3
|
+
> 已验证的致命陷阱,优先级高于历史示例。命令速查见 `verified-cli-cheatsheet.md`。
|
|
4
|
+
|
|
5
|
+
## 🔴 4 条致命陷阱(踩了必坏)
|
|
6
|
+
|
|
7
|
+
### 1. Part2 角色外壳字段放错层级 → "角色数据异常"
|
|
8
|
+
|
|
9
|
+
每个角色的**外壳**必须包含以下字段(与 `role_data` 同级,**不可**写进 `role_data` 内):
|
|
10
|
+
`scenario_role_id` / `customization_level="full"` / `is_custom_role=true` / `customized_fields` / `template_id=null` / `template_name=null` / `template_version=null`。
|
|
11
|
+
|
|
12
|
+
> ⚠️ **`created_at`/`updated_at` 禁传(2026-08-18 实测)**:外壳若传字符串时间戳(如 `"2026-08-18T05:41:14Z"`),会触发「角色数据异常」,导致 `role_data` 全字段置空(name 变成"角色数据异常")。这两个字段由平台自动生成,生成 `part2-operations.json` 时**一律省略**,不要写入外壳。exec-handbook 旧断言要求外壳含 created_at/updated_at 是错误结论,以本条为准。
|
|
13
|
+
|
|
14
|
+
- `customized_fields` 必须列全 12 个字段名:`["name","description","communication_style","background","personality_type","personality","tags","knowledge_level","taboos_objections","avatar","voice_id","source_type"]`,只写 `["role_data"]` 会导致静默不持久化。
|
|
15
|
+
- `source_type="custom"` 在 `role_data` **内**(外壳不写 source_type)。
|
|
16
|
+
- `avatar` 用头像 URL(`+list-role-avatars` 的 `url`),`voice_id` 用声音 ID(`+list-role-voices` 的 `id`)。
|
|
17
|
+
- `knowledge_level` 必须是数组,不是字符串。
|
|
18
|
+
|
|
19
|
+
### 2. Part4 shell 字段放错层级 → UI 不显示评分
|
|
20
|
+
|
|
21
|
+
`data.config` 顶层必须含 4 个 shell 字段:`scenario_criteria_id` / `customization_level="full"` / `is_custom_criteria=true` / `customized_fields=["criteria_data"]`,**不能放进 `criteria_data` 内**。`criteria_data` 内只放:`name` / `description` / `dimensions` / `total_weight` / `source_type="enterprise"` / `status=1` / `tags`。每个维度含 `id`(dim_{code}) 和 `sort_order`(数字)。
|
|
22
|
+
|
|
23
|
+
### 3. add_conversation_step 数据不持久化(CLI bug)+ apply 禁止用于验证(v2.37 教训)
|
|
24
|
+
|
|
25
|
+
`add_conversation_step` apply 返回成功但 `+get-scenario` 回读 `conversation_steps: []`(CLI v1.0.65+ 已知 bug,`replace_conversation_steps` 被 422 拒绝)。处理:仍按标准语义用 `add_conversation_step` 先试,回读为空则判定持久化缺陷,改走 MentorAI Web 后台手动补录。不阻断发布。
|
|
26
|
+
|
|
27
|
+
> ⚠️ **v2.37 教训(2026-08-18 升舱场景事故)**:质量闸门阶段误用 `+apply-scenario-update`(operations-file=part3-operations.json)当验证用,导致 `add_conversation_step` **重复添加**(4 环节变 8 环节),不得不查快照→回滚→重新 get 验证,浪费 3-5 积分。
|
|
28
|
+
> **规则**:apply 是**写入操作**,不是读取操作。验证数据用 `+get-scenario`。apply 后只从返回值提取 `updated_at`(`tail -1` 或 Python 提取),**不回显 operations/snapshot_id**,**不用 apply 回读环节**。
|
|
29
|
+
|
|
30
|
+
### 4. +create-scenario 只存基础字段
|
|
31
|
+
|
|
32
|
+
`+create-scenario --request-file` 仅持久化 `name/description/tags/key_points/scene_lang/scenario_cover`;`ai_roles`/`scoring_criteria_config`/`conversation_steps`/练习配置全部被忽略。必须创建后逐 Part 用 `+apply-scenario-update` 写入。
|
|
33
|
+
|
|
34
|
+
## ⚠️ 高频坑(速查)
|
|
35
|
+
|
|
36
|
+
- **沙箱**:所有 soke-cli 命令设 `dangerouslyDisableSandbox: true`(Go 二进制受限)。
|
|
37
|
+
- **子命令**:统一 `soke-cli ai-training +...`,不省略 `ai-training`。
|
|
38
|
+
- **operations 格式**:裸数组 `[{type,data},...]`,不套 `{"operations":[...]}`。
|
|
39
|
+
- **apply 参数**:`--idempotency-key`(apply 必传,preview 不传)、`--reason`(两者必传)。
|
|
40
|
+
- **乐观锁**:每次 preview/apply 前 `+get-scenario` 重取最新 `updated_at`。
|
|
41
|
+
- **验收**:apply 后 `+get-scenario --raw` 逐字段核对目标字段;preview/apply 成功≠平台最终解析正常。
|
|
42
|
+
- **JSON 中文引号**:用 Python `json.dump(ensure_ascii=False)` 写入,禁 heredoc/echo(全角双引号会报错)。
|
|
43
|
+
- **类型**:Part3 `max_rounds` 整数、`sort_order` 字符串 `"1"`;Part4 `sort_order` 数字 `1`(两者相反)。
|
|
44
|
+
- **Part1 必填**:`key_points` 是字符串(非数组)、`scene_lang="简体中文"`、`scenario_cover` 固定默认图 `https://newsokeeditorcdn.soke.cn/public/ai/cover/lingshou_daogou.png`。
|
|
45
|
+
- **身份字段**:`corp_id/user_id/implementation_corp_id` 禁写请求体,不作选租户依据。
|
|
46
|
+
|
|
47
|
+
## 推荐顺序
|
|
48
|
+
|
|
49
|
+
环境检测 → Step1 写固定封面 → 每 Part 前 `get-scenario` → preview → apply → `get-scenario --raw` 验收。回读异常先查:Part2 查 avatar/外壳/customized_fields/background(background=null 最常见);Part4 查三层嵌套与元数据字段;Part5 只查练习配置字段。
|