muse-agent-example/docs/plans/2026-08-23-目录分层改造.md

28 KiB
Raw Blame History

目录分层改造 plan

日期:2026-08-23 范围:agent-example/ 本仓;父仓仅改仍指向本仓旧路径的活文档。 状态:已被取代,不再作为执行入口。

取代:后续执行以 2026-08-24-双底座适配接缝 为准。 原因:本文件按「尚未有 framework/、先把 58 个 Skill 嵌套搬家」起草;工作树已迁出 muse/ 与 framework/,但依赖方向未分开。DSH 默认 Skill Provider 不递归 **/SKILL.md,第 4–5 节把方法 Skill 沉到 planning/ writing/ 的发现合同不能原样接到 DSH。架构事实见父仓 DSH / Pi 与 Muse 的框架业务分离研究。 映射表(第 8 节)仍可当「已经搬到哪」的对照,不作为下一阶段工单。


1. 意图

把现在根上摊开的一排目录,收成路径能读出来的四层:

L1  framework / .agent / muse / docs     框架、挂载、产品、过程?
L2  primitives|adapters  ·  sot|content|lifecycle|authority|platform
L3  C1–C6 或 八领域
L4  skills / tools / db / studio / chains

判定轴不变:framework/ 拥有 C1–C6(Agent / Skill / MCP / Tool / 可追踪 / 可审计);Muse 拥有书、人闸、库、额度。.agent/ 只是运行期挂载面,不是所有权。

本改造搬家 + 改发现合同 + 改文档路径,不改创作状态机、人闸、CAS、表结构。


2. 完成的定义

每一阶段结束必须同时满足:

  1. 磁盘按该阶段映射表就位(git mv,禁止 copy+delete)。
  2. 活文档里被本阶段碰到的路径全部改完,点击能到达新位置。
  3. 机械门禁绿:见该阶段验证命令。无自动化绿证据不得声称该阶段完成。

全改造完成的总门禁是阶段 G 的路径扫描:活文档和运行时代码里不得再出现已废弃根路径。


3. 明确不做

  • 不改候选状态机、CAS、raw 三件套、事件账本表结构。
  • 不给智能体写库、不合并只读看板与决策通道。
  • 不把额度、Opus 锁、看板、Gate A/B 写进 framework/。
  • 不把 tests/skills/<name>/ 下沉到各 Skill 目录(parents[N] 会大面积碎;阶段 G 之后另开)。
  • 不在本改造里拆 Skill 内部为 schema/ + scripts/(那是下一层,不阻塞本次)。
  • 不改 docs/write-chapter/artifacts/ 运行产物。
  • 不改 git 历史里的旧路径。

4. 目标树(压缩)

agent-example/
├── AGENTS.md
├── framework/                         # C1–C6 原语 + 宿主适配器
│   ├── primitives/{agent,skill,mcp,tool,trace}/
│   ├── adapters/{pi,dsh,claude-code,codex}/
│   └── tests/
├── .agent/                            # 运行期挂载:框架扫、Muse 写
│   ├── agents/                        # 五角色身份
│   └── skills/{planning,writing,diagnosis}/   # 仅 15 个方法 Skill
├── muse/
│   ├── sot/                           # 现 muse/sot/
│   ├── content/{meta,work,entity,paradigm}/
│   ├── lifecycle/{context,flow,quality,dispatch}/
│   ├── authority/{db,evidence,tools,studio}/
│   └── platform/{db,embed,llm}/
└── docs/                              # 过程与历史;本 plan 也在这里

58 个 Skill 的落点以第 8 节映射表为准。skills.json 的 skill_path 是位置事实源。


5. 发现合同(先改代码,再搬家)

现状假设 Skill 都在 .agent/skills/<name>/SKILL.md(skill_harness.py 约 891 行:SKILLS_ROOT / name / "SKILL.md")。不先拆掉这个假设,任何嵌套 git mv 都会让 58 条 manifest 对账一起红。

目标:

面 谁读 扫哪里
运行期 catalog 创作智能体 / 框架 Skill 发现 只扫 .agent/skills/**/SKILL.md(方法 Skill)
编排索引 主代理 / 开发者 harness/manifests/skills.json + 生成的 Muse 索引
位置 SoT 门禁 skills.json 的 skill_path(允许任意相对路径)

硬门禁(阶段 C 装上,阶段 D 之后必须绿):

  • invocation=model_routed → skill_path 必须在 .agent/skills/ 下。
  • invocation=orchestrated → skill_path 必须在 muse/ 下。
  • name 仍等于 SKILL.md 的父目录名。
  • 框架 catalog 不得列出 orchestrated Skill。

方法 Skill 闭集(15 个,其余全部 orchestrated):

concept-design story-planning story-structure narrative-momentum foreshadow-payoff story-ending scene-craft dialogue-craft character-design character-presentation show-and-omission narration-pov prose-craft theme-and-stance novel-diagnosis

当前误标为 model_routed、必须改成 orchestrated 再迁出 catalog 的:

access-database call-content-model clean-book-text confirm-knowledge-draft embed-knowledge import-book optimize-content-quality review-knowledge-cards search-knowledge

search-knowledge 最终进 muse/lifecycle/context/(编排)或工具 server;不进方法 catalog。只读五工具的实现进 muse/authority/tools/read/,不是 Skill catalog。


6. 阶段

依赖:A 可先于一切搬家;B 与 A 可并行;C 依赖 A;D 依赖 A+C;E 依赖 D;F 可与 E 同批但提交分开;G 最后。

A 发现层去扁平假设 → B 拆出 framework/ → C catalog 收口与方法 Skill 嵌套
 → D 编排 Skill 迁入 muse/ → E 平台与权威目录迁入 muse/ → F SoT 与链接改写 → G 路径门禁收口

每阶段一个(或一组紧密)提交。禁止把「尚未改完文档」的搬家标完成。

阶段 A:发现层去扁平假设(不搬家)

意图:运行时与门禁按 skill_path 找 Skill,不再假定 .agent/skills/<name>/SKILL.md。

改:

  • harness/skill_harness.py:删 expected_path = SKILLS_ROOT / name / "SKILL.md";以 manifest skill_path 为准;保留「name == 父目录名」。
  • harness/skills_index.py:skill_file 原样来自 skill_path;允许嵌套。
  • harness/run_selected.py、tests/architecture/test_import_boundaries.py:扫描根改为可配置列表,本阶段仍指向旧根,避免误伤。
  • 增加「从任意子目录走到含 AGENTS.md 的仓根」的小函数,后续搬家不再靠 parents[N]。dashboard/、tests/skills/* 里现成的 parents[1] / parents[3] 本阶段可暂留。

文档(本阶段仍是旧路径,只改发现合同的表述):

  • AGENTS.md §3:写明「物理目录位置是 skills.json 的 skill_path,不要求一级子目录」。
  • harness/README.md、harness/specs/skill-quality-rubric.md、07-Agent与Skill领域.md §3:把「.agent/skills/{name}/SKILL.md」改成「skill_path 指向的 SKILL.md」。

验证:

.venv/bin/python harness/skill_harness.py --strict
.venv/bin/python harness/skills_index.py --check
.venv/bin/python tests/architecture/test_skills_index.py
.venv/bin/python tests/architecture/test_import_boundaries.py

完成:现有扁平布局下上述全绿;再人为把某个 skill_path 写成嵌套路径且文件也在嵌套处时,harness 仍接受(可用临时夹具测,测完还原)。

阶段 B:拆出 framework/(Skill 目录先不动)

意图:把 C1–C6 从 dispatch-agent-task/scripts/ 抽到 framework/。派发 Skill 仍暂住 .agent/skills/dispatch-agent-task/,只改它内部 import。

改:

现在 目标
agent_task.py 中的任务包/白名单/事件归一 framework/primitives/{agent,tool,trace}/
pi_runner.py framework/adapters/pi/runner.py
muse_read_tools_extension.ts framework/adapters/pi/mcp_bridge.ts
read_tools.py 先迁到 framework/ 的旁路?否。本阶段仍留在 dispatch 目录,阶段 E 再进 muse/authority/tools/read/
dispatch_agent_task.py 仍留 Skill 内,改为调用 framework

FRAMEWORK_ADAPTER_ALLOWLIST 改为 framework/adapters/pi/runner.py。

协议暂不删除 SUPPORTED_AGENT_ROLES 对五角色的绑定(那是行为收缩,另开);本阶段只搬家与 import。

文档:

  • dispatch-agent-task/SKILL.md 模块表改指向 framework/…
  • 边界合同.md 工具 server / 框架派发的「结构」列补 framework/adapters/
  • 07 §2 执行底座:写明「唯一碰框架二进制的位置是 framework/adapters/」

验证:

.venv/bin/python tests/architecture/test_import_boundaries.py
.venv/bin/python tests/skills/dispatch-agent-task/test_dispatch_agent_task.py

(dispatch 测试若依赖真实 pi,按现有离线项跑;不把真实模型调用算进本阶段。)

阶段 C:catalog 收口 + 方法 Skill 嵌套

意图:运行期 catalog 只剩 15 个方法 Skill;它们按规划/写作/诊断嵌套。误标 model_routed 的改成 orchestrated(必须与搬家同提交,否则新门禁自相矛盾)。

改:

git mv .agent/skills/concept-design            .agent/skills/planning/
git mv .agent/skills/story-planning            .agent/skills/planning/
git mv .agent/skills/story-structure           .agent/skills/planning/
git mv .agent/skills/narrative-momentum        .agent/skills/planning/
git mv .agent/skills/foreshadow-payoff         .agent/skills/planning/
git mv .agent/skills/story-ending              .agent/skills/planning/
git mv .agent/skills/scene-craft               .agent/skills/writing/
git mv .agent/skills/dialogue-craft            .agent/skills/writing/
git mv .agent/skills/character-design          .agent/skills/writing/
git mv .agent/skills/character-presentation    .agent/skills/writing/
git mv .agent/skills/show-and-omission         .agent/skills/writing/
git mv .agent/skills/narration-pov             .agent/skills/writing/
git mv .agent/skills/prose-craft               .agent/skills/writing/
git mv .agent/skills/theme-and-stance          .agent/skills/writing/
git mv .agent/skills/novel-diagnosis           .agent/skills/diagnosis/

skills.json:15 条 skill_path 改嵌套;9 条误标改为 orchestrated。生成索引。装上门禁:model_routed ⊆ .agent/skills/。

文档:

  • AGENTS.md:发现入口改为「方法 Skill → .agent/skills/_index.md;编排 Skill 仍以 skills.json 为总账(阶段 D 后再加 Muse 索引)」。
  • 创作周期与Skill导读.md:15 个方法 Skill 的链接改到新路径。
  • 各方法 Skill 的 SKILL.md 若写了兄弟路径(../scene-craft),改成新相对路径。
  • .agent/skills/_index.md 用生成器重写,不得手改。

验证:

.venv/bin/python harness/skills_index.py --write && \
.venv/bin/python harness/skills_index.py --check
.venv/bin/python harness/skill_harness.py --strict
.venv/bin/python tests/architecture/test_skills_index.py

另加(本阶段落地):model_routed 路径前缀断言。15 个方法 Skill 的 frontmatter 仍是 model_routed。

阶段 D:编排 Skill 迁入 muse/

意图:43 个 orchestrated Skill 离开 .agent/skills/。之后框架即使全量扫挂载面,也看不见写库通道。

按第 8 节表 git mv。同步:

  • harness/manifests/skills.json 全部 skill_path
  • tests/skills/<name>/ 不迁(仍按 Skill 名平铺);测试内的 Path(".agent") / "skills" / "<name>" 改为读 manifest 或仓根查找函数
  • dashboard/decision_channel.py、dashboard/lesson_confirm.py 的 SKILLS = ROOT / ".agent" / "skills" 改为新路径(或经 manifest 解析)
  • test-inventory.json 里写死的 .agent/skills/... 路径
  • 生成第二份索引:muse/sot/skills-index.md 或 muse/_skills_index.md(编排发现);.agent/skills/_index.md 只含 15 个方法 Skill

文档:

  • AGENTS.md §3 目录树与 Skill 责任方表:编排 Skill 的路径改 muse/…
  • meta/chains/README.md(此时仍在旧处):功能 Skill 链接改新路径
  • 07 §3:系统能力 Skill 的磁盘位置改为 muse/…/skills/<name>/SKILL.md
  • 每只被迁 Skill 的 SKILL.md、其它 Skill 对它的相对链接
  • 创作周期与Skill导读.md 全部编排 Skill 卡片链接
  • harness/README.md、harness/specs/*

验证:同上 harness 三条 + import boundaries + 抽跑 tests/skills/decide-candidate、write-next-chapter、assemble-context、dispatch-agent-task 这些硬编码过路径的测试。

完成:.agent/skills/ 下只剩 planning/ writing/ diagnosis/ _index.md。

阶段 E:平台与权威目录迁入 muse/

git mv db              muse/authority/db
git mv dashboard       muse/authority/studio   # 随后在 studio 内再分成 read/ 与 write/
git mv meta/schemas    muse/content/meta/schemas
git mv meta/chains     muse/lifecycle/flow/chains
git mv knowledge       muse/content/entity/sources
git mv humanization    muse/lifecycle/quality/humanization
git mv harness         muse/lifecycle/quality/harness
git mv muse-db         muse/platform/db
git mv muse-llm        muse/platform/llm
git mv muse-embed      muse/platform/embed

dashboard/ 进 studio/ 后立刻拆:

muse/authority/studio/read/          # 现 server.py :8765
muse/authority/studio/write/decision # 现 decision_channel.py :8767
muse/authority/studio/write/lesson   # 现 lesson_confirm.py :8766

read_tools.py 从 dispatch Skill 迁到 muse/authority/tools/read/(可按五工具分子目录,本阶段至少落到 read/ 包)。Pi 的 mcp_bridge.ts 只保留桥,SQL 不回去。

requirements.txt:

-e ./muse/platform/db
-e ./muse/platform/llm
-e ./muse/platform/embed
-e ./muse/lifecycle/quality/humanization

包名 muse-db / muse-llm / muse-embed / muse-deai 不变。迁完后 uv pip install -r requirements.txt 重装 editable。

test_import_boundaries.py 的 ACTIVE_RUNTIME_ROOTS、FORBIDDEN_PATHS、扫描范围改新根。run_selected.py 扫描根改新路径。humanization 测试里 parents[2] / sys.path 指向 humanization/src 的,改到新树(或继续靠已安装包 import deai,与现门禁一致)。

文档:凡写 db/ dashboard/ humanization/ harness/ meta/ muse-db/ knowledge/ 作为仓内路径的活文档,全部改。包括 db/表映射.md、可视化模块合同.md、08、看板 docstring、harness/README.md(此时已在 quality/harness 下,相对链接要重算)。

验证:

uv pip install --python .venv/bin/python -r requirements.txt
.venv/bin/python -c "import muse_db, muse_llm, muse_embed, deai"
.venv/bin/python tests/architecture/test_import_boundaries.py
.venv/bin/python muse/lifecycle/quality/harness/skill_harness.py --strict
.venv/bin/python muse/authority/studio/read/test_server_display.py

(具体测试文件随 git mv 走;命令以搬完后的真实路径为准。)

阶段 F:SoT 迁到 muse/sot/ + 全量链接

git mv muse/sot  muse/sot

.agent/docs/ 若空则删;.agent/_index.md 只保留挂载面(agents / skills),SoT 指针改 muse/sot/。

代码:

  • muse_role_contract.py:ROLE_CONTRACT_RELATIVE_PATH = Path("muse") / "sot" / "角色合同.md"
  • dispatch 测试里 roleContractSource 断言同步
  • dashboard/server.py 头部合同路径

相对链接:SoT 从 muse/sot/ 迁走后,所有 ../muse/sot/… 和 SoT 内部链到 ../../../.agent/skills、../../../../docs/ 的链接按新深度重写。这是本阶段主工作量。

活文档清单见第 7 节。本阶段结束时第 7 节每一条都指向新路径。

父仓:design-docs/流程-02B-普通用户系统处理流程(系统视角).md 中

../agent-example/muse/sot/domains/02-实体领域.md

改为

../agent-example/muse/sot/domains/02-实体领域.md

(父仓单独提交,不和本仓混。)

验证:阶段 G 的扫描在本阶段应已接近全绿;允许本 plan 文件和「旧路径」对照表暂时命中。

阶段 G:路径门禁收口

装常驻门禁 tests/architecture/test_layout_paths.py(名称可改,职责不可改):

  1. 根目录只允许:AGENTS.md CLAUDE.md README.md requirements.txt .agent/ framework/ muse/ docs/ tests/ 以及既有的 .git .venv .gitignore 等仓务。不得再出现 db/ dashboard/ harness/ humanization/ meta/ muse-db/ muse-llm/ muse-embed/ knowledge/。
  2. .agent/skills/ 下除 _index.md 外只有 planning/ writing/ diagnosis/。
  3. invocation 与路径前缀符合第 5 节。
  4. 活文档与运行时代码扫描:下列字符串不得作为路径出现(排除 docs/plans/ 本文件、docs/write-chapter/artifacts/):
muse/sot
.agent/skills/dispatch-agent-task
.agent/skills/decide-candidate
.agent/skills/access-database
.agent/skills/write-next-chapter
humanization/src
-e ./muse-db
-e ./humanization
dashboard/server.py
db/ddl/
harness/manifests/skills.json
meta/chains/

(列表以搬完后的废弃前缀为准,装门禁时用生成器从「映射表旧路径」收,避免手写漏项。)

  1. Markdown 链接目标文件必须存在(死链失败关闭)。覆盖:muse/sot/**/*.md AGENTS.md README.md .agent/**/*.md muse/**/*.md 中仍被 SoT 引用的 docs/*.md。

全量验证(阶段 G 完成判据):

.venv/bin/python tests/architecture/test_layout_paths.py
.venv/bin/python tests/architecture/test_import_boundaries.py
.venv/bin/python tests/architecture/test_skills_index.py
.venv/bin/python muse/lifecycle/quality/harness/skill_harness.py --strict

再按 test-inventory.json 跑与路径相关的离线实现测试(至少 dispatch、decide-candidate、assemble-context、write-next-chapter、看板 display)。不把真实模型 / 真库写入当成本次改造的完成证据;碰到因路径而找不到夹具的,修路径后再跑原来的离线项。


7. 文档更新清单(活文档,必须改)

「活」= 现在仍被当作合同、入口或教学地图阅读。过程 plan 与运行产物不在此列。

7.1 入口(阶段 C–F 随目录改,F 收齐)

文件 改什么
AGENTS.md 目录树、SoT 表、Skill 发现入口(两份索引)、责任方表路径、§3/§11 中的 .agent/skills 假设
README.md 目录树、SoT 顺序
.agent/_index.md 挂载面 vs muse/sot
.agent/docs/_index.md 若目录删除则本文件删除或改为跳转

7.2 SoT(阶段 F 为主,此前被碰到的链接提前改)

文件 改什么
muse/sot/_index.md(现 architecture/_index.md) 相对链接深度
边界合同.md 结构列:framework/、muse/authority/tools、muse/authority/studio
角色合同.md promptFile 仍是 .agent/agents/*.md;其它仓内路径
可视化模块合同.md dashboard/ → studio;db/表映射.md
创作周期与Skill导读.md 全部 Skill 链接 + 导语里的 58 只平铺假设;方法 / 编排两份索引
domains/_index.md Git 权威那一行的 meta/、相对链到 docs/
domains/01–08 文中磁盘路径与交叉链接深度
07 §3 {name} 扁平公式

7.3 规范与登记

文件 改什么
harness/README.md 及 specs(迁后在 quality/harness) 适用范围、Owner 路径
skills.json / 生成的两份 _index.md 每条 skill_path
meta/chains/README.md(迁后 flow/chains) humanization 链接、05 链接、功能 Skill 路径
db/表映射.md 连接信息.md 自身相对位置;db/ddl/ 字面
各 SKILL.md 入口命令、相对 scripts/、兄弟 Skill 链接
.agent/agents/*.md 若写了 Skill 路径则改(现多为名字不带路径,抽查)

7.4 仍被 SoT 引用的 docs/ 设计稿

这些不是领域 SoT,但链还活着,不改就是死链:

  • docs/2026-07-14-参考书作品面数据入库方案.md
  • docs/2026-07-16-升格卡改造设计.md
  • docs/2026-07-30-落库与看板设计.md
  • docs/2026-08-01-评测harness改造设计.md
  • docs/2026-08-19-craft-distillation-trace.md
  • docs/2026-08-20-skill-质量审查与复利改造清单.md
  • docs/2026-08-20-质量收敛环运行手册.md
  • docs/acceptance/ 下仍引用旧路径的验收记录

7.5 父仓

文件 改什么
design-docs/流程-02B-普通用户系统处理流程(系统视角).md agent-example/muse/sot/domains/02-实体领域.md → muse/sot/domains/…

开工前再扫一遍:

rg -n 'agent-example/\.agent/docs|agent-example/\.agent/skills|agent-example/db/|agent-example/dashboard' \
  --glob '!agent-example/docs/plans/**' --glob '!**/artifacts/**'

新命中补进本表,禁止口头「应该没有了」。

7.6 不改

  • 本文件(对照表需要旧路径)
  • docs/write-chapter/artifacts/
  • 已删除的整体收敛 plan(git 历史)

8. Skill 映射表(阶段 C/D 执行 SoT)

8.1 方法 Skill → .agent/skills/(catalog)

name 目标
concept-design .agent/skills/planning/concept-design/
story-planning .agent/skills/planning/story-planning/
story-structure .agent/skills/planning/story-structure/
narrative-momentum .agent/skills/planning/narrative-momentum/
foreshadow-payoff .agent/skills/planning/foreshadow-payoff/
story-ending .agent/skills/planning/story-ending/
scene-craft .agent/skills/writing/scene-craft/
dialogue-craft .agent/skills/writing/dialogue-craft/
character-design .agent/skills/writing/character-design/
character-presentation .agent/skills/writing/character-presentation/
show-and-omission .agent/skills/writing/show-and-omission/
narration-pov .agent/skills/writing/narration-pov/
prose-craft .agent/skills/writing/prose-craft/
theme-and-stance .agent/skills/writing/theme-and-stance/
novel-diagnosis .agent/skills/diagnosis/novel-diagnosis/

8.2 编排 Skill → muse/

name 目标
write-next-chapter muse/content/work/skills/generate/write-next-chapter/
expand-scene muse/content/work/skills/generate/expand-scene/
polish-prose muse/content/work/skills/generate/polish-prose/
rewrite-selection muse/content/work/skills/generate/rewrite-selection/
decide-candidate muse/content/work/skills/sovereignty/decide-candidate/
import-book muse/content/entity/skills/ingest/import-book/
clean-book-text muse/content/entity/skills/ingest/clean-book-text/
deconstruct-book muse/content/entity/skills/ingest/deconstruct-book/
extract-work-knowledge muse/content/entity/skills/ingest/extract-work-knowledge/
inspect-parse-health muse/content/entity/skills/ingest/inspect-parse-health/
backup-work-extraction muse/content/entity/skills/ingest/backup-work-extraction/
repair-work-extraction muse/content/entity/skills/ingest/repair-work-extraction/
reset-work-extraction muse/content/entity/skills/ingest/reset-work-extraction/
extract-chapter-knowledge muse/content/entity/skills/extract/extract-chapter-knowledge/
review-knowledge-cards muse/content/entity/skills/review/review-knowledge-cards/
confirm-knowledge-draft muse/content/entity/skills/sovereignty/confirm-knowledge-draft/
freeze-context muse/lifecycle/context/skills/freeze-context/
assemble-context muse/lifecycle/context/skills/assemble-context/
search-knowledge muse/lifecycle/context/skills/search-knowledge/
embed-knowledge muse/lifecycle/context/skills/embed-knowledge/
design-story-foundation muse/lifecycle/flow/skills/book/design-story-foundation/
merge-story-candidates muse/lifecycle/flow/skills/book/merge-story-candidates/
plan-story muse/lifecycle/flow/skills/book/plan-story/
plan-chapter muse/lifecycle/flow/skills/chapter/plan-chapter/
adjudicate-quality-gate muse/lifecycle/quality/skills/mechanical/adjudicate-quality-gate/
check-content-consistency muse/lifecycle/quality/skills/semantic/check-content-consistency/
score-content-quality muse/lifecycle/quality/skills/judge/score-content-quality/
optimize-content-quality muse/lifecycle/quality/skills/judge/optimize-content-quality/
evaluate-frozen-replay muse/lifecycle/quality/skills/replay/evaluate-frozen-replay/
replay-writer-gate muse/lifecycle/quality/skills/replay/replay-writer-gate/
load-replay-reference-work muse/lifecycle/quality/skills/replay/load-replay-reference-work/
establish-voice-baseline muse/lifecycle/quality/humanization/skills/establish-voice-baseline/
prevent-ai-flavor muse/lifecycle/quality/humanization/skills/prevent-ai-flavor/
diagnose-ai-flavor muse/lifecycle/quality/humanization/skills/diagnose-ai-flavor/
revise-ai-flavor muse/lifecycle/quality/humanization/skills/revise-ai-flavor/
capture-ai-flavor-cases muse/lifecycle/quality/humanization/skills/capture-ai-flavor-cases/
promote-ai-flavor-rule muse/lifecycle/quality/humanization/skills/promote-ai-flavor-rule/
dispatch-agent-task muse/lifecycle/dispatch/skills/dispatch-agent-task/
record-run-evidence muse/authority/evidence/skills/record-run-evidence/
access-database muse/authority/evidence/skills/access-database/
call-content-model muse/platform/llm/skills/call-content-model/
execute-role-task muse/platform/llm/skills/execute-role-task/
refresh-runtime-probe muse/platform/llm/skills/refresh-runtime-probe/

15 + 43 = 58。增删 Skill 先改本表再 git mv。

8.3 非 Skill 目录

现在 目标
.agent/agents/ 不动
muse/sot/ muse/sot/
db/ muse/authority/db/
dashboard/server.py muse/authority/studio/read/
dashboard/decision_channel.py muse/authority/studio/write/decision/
dashboard/lesson_confirm.py muse/authority/studio/write/lesson/
meta/schemas/ muse/content/meta/schemas/
meta/chains/ muse/lifecycle/flow/chains/
knowledge/ muse/content/entity/sources/
humanization/ muse/lifecycle/quality/humanization/
harness/ muse/lifecycle/quality/harness/
muse-db/ muse/platform/db/
muse-llm/ muse/platform/llm/
muse-embed/ muse/platform/embed/
dispatch …/read_tools.py muse/authority/tools/read/
dispatch …/pi_runner.py framework/adapters/pi/runner.py
tests/skills/ tests/architecture/ 不动
docs/ 不动

9. 约束

  1. 先改发现,再搬家。 违反则 harness 会用旧公式打红 58 条,看起来像「目录改造失败」,其实是门禁还停在扁平假设。
  2. 文档跟提交走。 不允许「代码已迁、README 下一批再改」。阶段完成清单含第 7 节被本阶段碰到的行。
  3. git mv。 需要嵌套时先 mkdir -p 再 git mv。
  4. invocation 与目录同提交(阶段 C)。
  5. 包名稳定、路径变。 import muse_db 不变;变的是 -e ./…。
  6. 测试按 Skill 名平铺留下,避免本次范围膨胀。
  7. 阶段 G 的路径门禁是本改造的完成牙齿;没有它只能算「搬过」,不能算完成。

10. 开工顺序(执行时从这里抄)

  1. 阶段 A:harness 去扁平 + 三份发现文档。
  2. 阶段 B:framework/ + allowlist + dispatch SKILL.md。
  3. 阶段 C:15 个 git mv + 9 条 invocation + 生成索引 + catalog 门禁 + 导读链接。
  4. 阶段 D:43 个 git mv + manifest + 看板/测试里的 Skill 根 + AGENTS.md 双索引。
  5. 阶段 E:平台/权威 git mv + requirements + 重装 + 工具 server 迁出 dispatch。
  6. 阶段 F:muse/sot + ROLE_CONTRACT_RELATIVE_PATH + 第 7 节全表 + 父仓 流程-02B。
  7. 阶段 G:test_layout_paths.py 绿。