# 目录分层改造 plan 日期:2026-08-23 范围:`agent-example/` 本仓;父仓仅改仍指向本仓旧路径的活文档。 状态:**已被取代,不再作为执行入口。** > **取代**:后续执行以 [2026-08-24-双底座适配接缝](2026-08-24-双底座适配接缝.md) 为准。 > **原因**:本文件按「尚未有 `framework/`、先把 58 个 Skill 嵌套搬家」起草;工作树已迁出 `muse/` 与 `framework/`,但依赖方向未分开。DSH 默认 Skill Provider 不递归 `**/SKILL.md`,第 4–5 节把方法 Skill 沉到 `planning/` `writing/` 的发现合同不能原样接到 DSH。架构事实见父仓 [DSH / Pi 与 Muse 的框架业务分离研究](../../../docs/research/dsh-pi-muse-framework-business-separation-2026-08-23.md)。 > 映射表(第 8 节)仍可当「已经搬到哪」的对照,不作为下一阶段工单。 --- ## 1. 意图 把现在根上摊开的一排目录,收成路径能读出来的四层: ```text 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//` 下沉到各 Skill 目录(`parents[N]` 会大面积碎;阶段 G 之后另开)。 - 不在本改造里拆 Skill 内部为 `schema/` + `scripts/`(那是下一层,不阻塞本次)。 - 不改 `docs/write-chapter/artifacts/` 运行产物。 - 不改 git 历史里的旧路径。 --- ## 4. 目标树(压缩) ```text 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//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 最后。 ```text A 发现层去扁平假设 → B 拆出 framework/ → C catalog 收口与方法 Skill 嵌套 → D 编排 Skill 迁入 muse/ → E 平台与权威目录迁入 muse/ → F SoT 与链接改写 → G 路径门禁收口 ``` 每阶段一个(或一组紧密)提交。禁止把「尚未改完文档」的搬家标完成。 ### 阶段 A:发现层去扁平假设(不搬家) 意图:运行时与门禁按 `skill_path` 找 Skill,不再假定 `.agent/skills//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`」。 验证: ```bash .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/`」 验证: ```bash .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`(必须与搬家同提交,否则新门禁自相矛盾)。 改: ```text 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` 用生成器重写,不得手改。 验证: ```bash .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//` **不迁**(仍按 Skill 名平铺);测试内的 `Path(".agent") / "skills" / ""` 改为读 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//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/` ```text 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/` 后立刻拆: ```text 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`: ```text -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 下,相对链接要重算)。 验证: ```bash 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/` + 全量链接 ```text 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/`): ```text 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/ ``` (列表以搬完后的废弃前缀为准,装门禁时用生成器从「映射表旧路径」收,避免手写漏项。) 5. Markdown 链接目标文件必须存在(死链失败关闭)。覆盖:`muse/sot/**/*.md` `AGENTS.md` `README.md` `.agent/**/*.md` `muse/**/*.md` 中仍被 SoT 引用的 `docs/*.md`。 全量验证(阶段 G 完成判据): ```bash .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/…` | 开工前再扫一遍: ```bash 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` 绿。