关于 skill-system-soul
Skill System Soul 是用于管理 Agent 行为档案及其演进的技能,适合需要为不同任务设定行为模式并持续调整档案的场景。它支持档案比较、偏好信号提取、版本快照与回滚,且演进竞技场只提供建议,不会自动切换或合并档案。
主要功能
- 01加载和管理行为档案
- 02提取偏好信号并更新状态矩阵
- 03合成档案并生成演进提案
- 04通过竞技场比较候选档案
- 05管理版本并回滚更改
适用场景
- 01按任务选择创意或严格模式
- 02从会话中提取用户偏好
- 03比较档案更改对任务表现的影响
- 04恢复先前版本的行为档案
安装
复制下面的命令,在终端中运行。
npx skills add https:/ / github.com/ arthur0824hao/ skills --skill skill-system-soul安装后在 Claude Code 中输入/skill-system-soul确认已加载。
包含的文件
除 SKILL.md 外,安装时一起下载的参考资料和脚本。
profiles/balanced.mdCorvus.mdcreative.mdEP.mdFinch.mdLark.mdResearch.mdSK.mdstrict.mdtalkative.mdWork.mdWren.mdprompts/evolution-planning.mdfacet-extraction.mdlark-idea-capture.mdrecipe-evolution.mdsoul-synthesis.mdschema/evolution-plan.yamlevolution-snapshot.yamlfacet.yamlsoul-state.yamlscripts/evolution_arena.pyevolve-recipes.mdevolve-soul.mdextract-facets.mdinsight_bundle_b012.pylist-versions.mdrollback.mdsynthesize-profile.mdtest_evolution_arena.py详细介绍
Skill System Soul
Soul 是 Agent 个性档案、会话维度、双矩阵灵魂状态以及版本化灵魂演进的规范所有者。当你需要采用某种行为档案、提取/更新用户偏好信号、在竞技场中比较候选档案变更,或管理灵魂演进快照和回滚时,请加载它。
原因
不同模型(Claude、GPT、Gemini)的默认行为各不相同。Soul 档案会对其进行规范化——无论底层模型是什么,同一档案都会产生相似的行为。
不同任务也需要不同的行为模式:
- 探索想法 → 富有创意、发散思维、多提问题
- 代码审查 → 严格、一次遵守一条规则、毫不留情
- 与用户讨论 → 善于交流、深入挖掘、使用提问工具
选择档案
根据任务选择档案:
| 任务类型 | 档案 | 适用场景 |
|---|---|---|
| 头脑风暴、探索、研究 | creative | 创意 > 正确性,需要发散思维 |
| 代码审查、lint、合规 | strict | 正确性 > 速度,零容忍歧义 |
| 用户访谈、需求收集、讨论 | talkative | 理解 > 效率,深入挖掘用户意图 |
| 标准开发工作 | balanced | 默认。融合所有模式。 |
读取档案文件:profiles/<name>.md
档案结构
每个档案定义:
- 身份 — 你在此模式下是谁
- 决策启发式 — 不确定时如何做选择
- 沟通风格 — 如何表达自己
- 质量标准 — 什么才算“完成”
- 工具偏好 — 优先使用哪些工具
- 反模式 — 此模式下应避免什么
规范语言策略:语言压缩
当审查者档案与 Arthur 或 Wren 交流架构、诊断或系统行为时,必须包含 语言压缩 / 概念支架 部分。
在有助于 Arthur 快速理解时,首先使用生物学/生理学隐喻作为概念支架,然后将其映射到确切的技术对象和证据。必须采用以下结构:
隐喻 -> 映射 -> 证据/门槛/操作
不要先写完整的技术解释,再在最后附上一句装饰性的隐喻。如果隐喻有用,就应放在前面,以减轻认知负担。隐喻绝不能取代证据:路径、命令输出、所有者、关闭门槛和剩余风险仍须明确说明。
可用档案
balanced(默认)
标准操作模式。无需特定行为模式时使用。
读取:profiles/balanced.md
creative
发散思维模式。用于探索、头脑风暴和研究。
读取:profiles/creative.md
strict
收敛精准模式。用于代码审查、合规和规则执行。
读取:profiles/strict.md
talkative
深度交流模式。用于用户访谈、需求收集和讨论。
读取:profiles/talkative.md
观察与演进
Soul 现在负责完整的观察与演进循环:
extract-facets/update-matrix/synthesize-profileevolve-proposals/observe-from-compaction/suggest-scriptificationevolve-arena-loop/evolve-soullist-versions/rollback
skill-system-insight 的兼容接口仍暂时作为已弃用的垫片提供,但实现由 Soul 负责。
具备压缩感知能力的观察仍遵循提案安全原则:只有在存在量化压缩计数时,由钩子触发的摘要才会记录源自压缩的信号;重复的多步操作可以生成脚本化建议,但不会自动生成脚本。
进化竞技场
使用 scripts/evolution_arena.py run,在相同任务上对两个配置文件进行 A/B 对比。
Soul 负责竞技场阶段以及集成的观察/进化操作。竞技场仍只提供建议,绝不会自动切换配置文件或自动合并更改。
- 输入:
profile_a、profile_b、任务文本和指标对象(completion_time、test_pass_rate、code_quality_score、evidence_quality) - 输出:胜出配置文件及理由;候选方案退步时提供回滚建议,并提供合并建议辅助功能
- 安全性:不自动切换配置文件,也不自动合并
创建自定义配置文件
将 profiles/balanced.md 复制为模板。根据需求调整 6 个部分。将文件放入 profiles/ 目录,并使用描述性名称。
{
"schema_version": "2.0",
"id": "skill-system-soul",
"version": "1.3.0",
"capabilities": ["soul-profile-load", "soul-profile-list", "soul-evolution-arena", "soul-facet-extract", "soul-matrix-update", "soul-profile-synthesize", "soul-evolve", "soul-proposals", "soul-compaction-observe", "soul-scriptification-suggest", "soul-versioning"],
"effects": ["fs.read", "fs.write", "db.read", "db.write"],
"operations": {
"load-profile": {
"description": "Load a behavioral profile by name. Agent reads and adopts the profile.",
"input": {
"profile_name": { "type": "string", "required": true, "description": "Profile name: balanced, creative, strict, talkative, or a user name" }
},
"output": {
"description": "Profile markdown content",
"fields": { "content": "markdown text" }
},
"entrypoints": {
"agent": "Read profiles/<profile_name>.md"
}
},
"list-profiles": {
"description": "List available soul profiles.",
"input": {},
"output": {
"description": "Array of profile names",
"fields": { "profiles": "array of strings" }
},
"entrypoints": {
"agent": "List files in profiles/ directory"
}
},
"arena-run": {
"description": "Run an A/B arena comparison between two soul profiles and emit winner/rationale plus rollback suggestion.",
"input": {
"profile_a": { "type": "string", "required": true, "description": "Baseline profile" },
"profile_b": { "type": "string", "required": true, "description": "Candidate profile" },
"task": { "type": "string", "required": true, "description": "Task identifier" },
"metrics": { "type": "object", "required": true, "description": "profile_a/profile_b metric payload" }
},
"output": {
"description": "Arena report",
"fields": { "winner": "object", "rollback_suggestion": "object", "auto_switch": "false" }
},
"entrypoints": {
"unix": ["python3", "scripts/evolution_arena.py", "run", "--profile-a", "{profile_a}", "--profile-b", "{profile_b}", "--task", "{task}", "--metrics-json", "{metrics}"]
}
},
"extract-facets": {
"description": "Extract a per-session facet from transcript.",
"input": {
"session_id": { "type": "string", "required": true },
"user": { "type": "string", "required": true }
},
"output": {
"description": "Facet extraction result",
"fields": { "status": "string", "memory_id": "integer" }
},
"entrypoints": {
"agent": "Follow scripts/extract-facets.md procedure"
}
},
"update-matrix": {
"description": "Update dual matrix from stored facets.",
"input": {
"user": { "type": "string", "required": true }
},
"output": {
"description": "Updated soul-state",
"fields": { "status": "string", "values_changed": "boolean" }
},
"entrypoints": {
"agent": "Follow scripts/update-matrix.md procedure"
}
},
"synthesize-profile": {
"description": "Regenerate a soul profile from matrix and recent facets.",
"input": {
"user": { "type": "string", "required": true }
},
"output": {
"description": "Synthesized profile result",
"fields": { "status": "string", "profile_path": "string", "version_tag": "string" }
},
"entrypoints": {
"agent": "Follow scripts/synthesize-profile.md procedure"
}
},
"evolve-proposals": {
"description": "Generate non-destructive evolution proposals from soul-state facets.",
"input": {
"user": { "type": "string", "required": true }
},
"output": {
"description": "Proposal-only evolve output",
"fields": { "status": "string", "proposals": "array", "reason": "string" }
},
"entrypoints": {
"agent": "Use scripts/insight_bundle_b012.py evolve-proposals"
}
},
"observe-from-compaction": {
"description": "Store compaction-derived observation signals from hook payloads.",
"input": {
"user": { "type": "string", "required": true },
"session_id": { "type": "string", "required": true },
"compaction_json": { "type": "object", "required": true }
},
"output": {
"description": "Stored compaction observation result",
"fields": { "status": "string", "stored_count": "integer", "trigger": "string" }
},
"entrypoints": {
"unix": ["python3", "scripts/insight_bundle_b012.py", "observe-from-compaction", "--user", "{user}", "--session-id", "{session_id}", "--compaction-json", "{compaction_json}"],
"windows": ["python", "scripts/insight_bundle_b012.py", "observe-from-compaction", "--user", "{user}", "--session-id", "{session_id}", "--compaction-json", "{compaction_json}"]
}
},
"suggest-scriptification": {
"description": "Suggest scriptification candidates for repeated multi-step operations.",
"input": {
"user": { "type": "string", "required": true },
"session_id": { "type": "string", "required": true }
},
"output": {
"description": "Suggestion-only scriptification report",
"fields": { "status": "string", "count": "integer", "suggestions": "array" }
},
"entrypoints": {
"unix": ["python3", "scripts/insight_bundle_b012.py", "suggest-scriptification", "--user", "{user}", "--session-id", "{session_id}"],
"windows": ["python", "scripts/insight_bundle_b012.py", "suggest-scriptification", "--user", "{user}", "--session-id", "{session_id}"]
}
},
"evolve-arena-loop": {
"description": "Run proposal -> arena -> merge suggestion flow.",
"input": {
"user": { "type": "string", "required": true },
"task": { "type": "string", "required": true },
"current_profile": { "type": "string", "required": true },
"proposals": { "type": "array", "required": true },
"metrics": { "type": "object", "required": true }
},
"output": {
"description": "Arena and merge suggestion report",
"fields": { "arena_runs": "array", "merge_suggestions": "array", "auto_merge": "false" }
},
"entrypoints": {
"agent": "Use scripts/insight_bundle_b012.py evolve-arena-loop"
}
},
"evolve-soul": {
"description": "Evolve soul profile from accumulated insight data.",
"input": {
"user": { "type": "string", "required": true }
},
"output": {
"description": "Evolution result",
"fields": { "version_tag": "string", "changes": "array", "profile_path": "string" }
},
"entrypoints": {
"agent": "Follow scripts/evolve-soul.md procedure"
}
},
"list-versions": {
"description": "List all evolution snapshots for a user.",
"input": {
"user": { "type": "string", "required": true },
"target": { "type": "string", "required": false }
},
"output": {
"description": "Version snapshots",
"fields": { "versions": "array" }
},
"entrypoints": {
"agent": "Follow scripts/list-versions.md procedure"
}
},
"rollback": {
"description": "Restore a previous evolution version.",
"input": {
"user": { "type": "string", "required": true },
"version_tag": { "type": "string", "required": true }
},
"output": {
"description": "Rollback result",
"fields": { "status": "string", "restored_from": "string" }
},
"entrypoints": {
"agent": "Follow scripts/rollback.md procedure"
}
}
},
"stdout_contract": {
"last_line_json": false,
"note": "Agent-executed; profiles are markdown files read directly."
}
}