Files
hunjing/docs/operations/rewrite-plan.md
T
chenxin b419e0afde M7:形仪与语音——真形锚点、候选定相、声音档案与克隆授权、ASR 接入
- 形仪域 domains/xingyi:form_anchors(稳定辨识特征/年龄表现/许可禁忌/可变范围——生成内容不可静默覆盖锚点);forms(主仪/化仪/文字形仪,candidate→adopt 定相治理:未定相不进呈现位、主仪唯一、新主仪自动退役旧主仪);voice_profiles(三来源,授权克隆必填用途与传播范围,revoke-grant 撤回立即生效,assert-usable 合成前置校验拒绝撤回/过期)
- ASR:元炁 SenseVoice /v1/audio/transcriptions 透传(Whisper 兼容 multipart);YUANQI_BASE_URL 未配置时 503 不降级不伪造——多模态关闭纪律
- 前端形仪工坊(人物详情页):真形锚点编辑(特征逐行解析)/候选登记定相废弃/声音档案建立与授权撤回;头像呈现位改走定相主仪(forms/primary);xingyi api 库 + mock + 组件 4 用例
- 退役:旧 avatar 模块(services/endpoints/avatar、avatar_dir 配置、avatar_url 字段、前端直传组件与测试)
- 验收(test_m7_xingyi 三用例):未定相不成为正式形仪(含主仪唯一与旧主仪 retired 断言);克隆授权可撤回(缺用途拒/撤回即拒/过期同理/预设不受约束);关闭全部多模态后文字相伴完整可用(ASR 503 时镜树缘契百工照常——回归)
- 四套件:后端 376、前端 203、BFF 4、神识 5 包全绿(2 个预存环境失败不变);迁移 008 净库+±1 干净
2026-08-27 20:26:52 +08:00

172 lines
23 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 重写执行计划
> 状态:执行中(rewrite/1.0 分支主线)
> 职责:记录本次全量重写的范围决策、退役与复用清单、里程碑划分与验收门。**本文件是临时治理文档:重写完成、能力矩阵接棒后删除。**
> 决策依据:2026-08-21 与执镜者确认的九条决策(架构基准=AGENTS.md 完整技术栈、领域重写+基础设施复用、旧码退役、重写期间新建 Go 神识、Fastify BFF、最小镜匣壳、全量 1.0 规划、文档主线化改写、运行时插件化+硬核例外)。
## 1. 执行原则
1. 每个里程碑是可独立验收的纵向闭环(端到端可运行),不做孤立页面或孤立接口;
2. 先写失败测试再实现(Kernel 不变量、镜树不变量、记忆分级是最高优先级测试对象);
3. 新领域模块落地的同时删除对应旧模块(不做长期共存);
4. 每个里程碑完成时更新[能力矩阵](capability-matrix.md)证据。
## 2. 复用清单(保留改造)
| 资产 | 处置 |
| --- | --- |
| `backend/app` auth / RBAC / audit / event_store / idempotency / SSE 网关 / core 配置框架 | 保留,重组入 `infra/`,对接六域 |
| 乾坤沙箱(`sandbox/`,Rust) | 保留;HMAC 授契流程对接司命 |
| 博闻(`mcp/web-search/`,Go) | 保留;登记为百工 MCP 能力 |
| 天目(`tianmu/`) | 保留;P1 通感期接入 |
| 元炁(`yuanqi/`) | 保留;作为神识 `type=local` Endpoint |
| `frontend/design/` 设计体系与 `styles/tokens` | 保留;新页面沿用 |
| docker 基础设施编排(`docker/docker-compose.infra.yml`) | 保留;应用编排新增照壁/神识/删除玄关 |
| 现有测试基建(pytest / vitest / pre-commit / husky) | 保留 |
## 3. 退役清单(删除,不留兼容层)
### 3.1 backend 旧领域模块 → 新去处
| 旧模块 | 新去处 |
| --- | --- |
| `modules/chat` + `models/chat`(线性会话) | 镜树域(mirror_trees/tree_nodes/citations/canonizations) |
| `modules/memory` + `models/memory`(旧记忆) | 息壤(memories/triggers/embeddings/factual_records) |
| `modules/personality` / `personality_emotion` + models | 灵核插件(道体锚点+调节层),情绪状态并入调节层参数 |
| `modules/drive` + models | 太一插件(目标) |
| `modules/evolution` + models | 铸魂/正影流程(characters + confirmations) |
| `modules/goal_orchestrator` / `planner` + models(goals/plans) | 太一/洛书插件 |
| `modules/big_cycle` + models | 删除(后台整理并入息壤维护任务) |
| `modules/time_sense` + time_anniversary | 辰正(M8 重实现为横切能力) |
| `modules/knocking` | 叩心枢(M8 重实现) |
| `modules/extraction` | 息壤提取管线(M3 重写) |
| `modules/reflection` / `perception` | 烛照插件(M6/M8) |
| `modules/agent` | 天工阁插件(M8) |
| `modules/safety` + models/safety | 司命插件(M5 重写,四维裁决) |
| `modules/skills` / `tool_runtime` + models/skills | 百工插件(M5 重写) |
| `modules/mcp` + models/mcp_servers | 百工 MCP Client(mcp_servers 表保留) |
| `modules/runtime` | Kernel + 运行时(M0 重写) |
| `modules/imports` / `character_import` | 导入域(M2 改造对接灵胚+世谱) |
| `modules/lorebook` + models/lorebook | 世谱(表保留,接入河图激活管线) |
| `modules/macros` | 符文引擎(提示词组装期展开,M2) |
| `modules/world` + models/world | 河图(persistent_worlds/world_entities,M6 重建) |
| `services/avatar` / models 相关 | 形仪域(M7) |
| `services/ai_provider` + admin | **删除**:神识 Go 网关接管(M4),配置文件移交神识 |
| 玄关(旧 Go MCP 网关,如有独立工程) | 删除:MCP 登记并入百工 |
### 3.2 数据库
- 丢弃 Alembic 4 个旧迁移与 `db/hunjing.db` 开发数据;按[数据模型](../architecture/data-model.md) §9 清单重建基线 `000`(三位顺序编号,经 `make db-revision` 生成)。
- 表处置以该清单为准(保留改造 / 新建 / 退役删除三列)。
### 3.3 frontend 旧页面 → 新去处
| 旧页面 | 新去处 |
| --- | --- |
| `chat` | **已删除(M2b)**;镜树页随 M2c 新建(当前路径阅读 + 局部树图 + 候答切换/采用/归真) |
| `characters` | 人物(灵胚→启镜→魂籍→缘契→记忆→形仪分区) |
| `memory` | 记忆治理(三级记忆/候选箱/撤销/删除) |
| `models` | 神识阁(偏好/BYOK/用量) |
| `tools` | 百工(能力目录/授契/行契) |
| `settings` / `login` / `register` / `admin` | 保留改造 |
| `world` | 世界(境界/世谱,M6 重建) |
| `time` | **已删除(M2b,随旧时间服务退役)**;辰正感知 M8 重实现后另设 |
| `cosmos` / `drive` / `evolution` / `personality` / `time` / `wuxing` / `runs` | 删除(`runs` 并入镜树/天工阁轨迹视图,其余旧模型页面随模块退役) |
| `archive` | 并入镜树抽屉(归档树列表) |
## 4. 里程碑
> 编号为实施顺序;每个里程碑末尾的"验收"是进入下一个的硬门。
### M0 地基(骨架先行)— ✅ 已完成(2026-08-21)
- 交付:Kernel 骨架(不变量裁决器/命台控制/事件日志接口/循环骨架)、事件总线与插件加载、`shenshi_client` 边界(先指向临时 stub)、BFF 骨架(鉴权透传+SSE 代理)、神识骨架(ingress/transform 占位实现 + 元炁 endpoint)、Alembic 新基线、Compose 更新(+hunjing-bff/+hunjing-shenshi)。
- 验收:登录(复用 auth)→ 创建占位 Run → SSE 端到端流到浏览器(经照壁);"模型可见即可重建"断言在 stub 上可跑;旧 chat/memory 模块仍可用但不再新增调用。
- 证据:`backend/tests/test_kernel.py` 5 用例(事件序列/命台串行/否决/不变量/流式);`shenshi` `go test` 5 用例;`bff` vitest 4 用例;三服务(照壁 18100 / 灵台 18000 / 神识 18081)真实进程 E2E 冒烟:注册→登录→POST /api/v1/runs→SSE 流读至 run.finished,模型流经 Go 神识 stub("【神识回声桩】"前缀可证);全量后端回归 925 passed(另有 20 个预存失败,根因本地缺 `config/models.yaml`,与本次改动无关,stash 验证);Alembic 基线合并为单一迁移(41 表,空库 upgrade 干净)。
### M1 镜生闭环(灵胚→启镜→魂籍→命台)— ✅ 后端闭环已完成(2026-08-21)
- 交付:embryo_drafts/custodianships/runtime_seats/identity_records 表与 API(迁移 `001`,顺序编号);灵胚创建(原创/领养/导入来源受理)、照心试演(`run.kind=rehearsal`,幻境 Run、无人物、不产生经历)、启镜(原子闸门)、放弃;死亡请求/撤销/落定与冷静期;魂籍版本化导出与校验;命台租约 API(冲突留痕、过期接管、epoch 递增)。
- 验收:启镜前无正式人物 ID;同一人物并发启镜/命台抢占被拒且留痕;魂籍导出可验证、复制不能冒充(签名摘要校验用例)。
- 证据:`backend/tests/test_jingsheng.py` 7 用例全绿;全量回归 932 passed(20 个预存失败与 M0 时相同,缺 `config/models.yaml`);`make db-upgrade` 空库 000→001 干净应用(含 SQLite batch alter)。
- 遗留到 M2:随缘灵胚候选生成、角色卡导入对接灵胚、Kernel 前台串行接入 DB 租约(多进程一致)、前端人物页。
### M2 镜树闭环(核心主线)— 🔶 M2a+M2b 后端完成(2026-08-21),M2c 前端进行中
- 交付:mirror_trees/tree_nodes/citations/canonizations/transplants 全量 API(迁移 `002`);另答/续思/续生/编辑分叉/采用/归真(三界 scope)/移栽/引文锚;Kernel `RunOutcome` 回调实现芽体→固化/残答封存(run 关联 tree 事件);祖先链投影 prompt 组装。
- 验收:镜树 PRD §14 十个验收场景全部自动化通过。
- 证据(M2a):`backend/tests/test_mirror_tree.py` 8 用例覆盖场景 1/2/3/5/6/7/8 与三界作用域;全量回归 940 passed(预存 20 失败不变);`make db-upgrade` 000→002 干净。场景 4(未归真不入忆)随 M3 记忆管线落测试;场景 9(移动端)与前端页面随 M2b。
- 证据(M2b,2026-08-21):`test_import_and_assembly.py` 3 用例(V1/V2 卡→灵胚、启镜物化世谱、符文展开+火候入 IR);旧 chat 体系删除——backend 删 modules/chat、application/chat、knocking、personality_emotion、services/time_sense、纪念日模型及关联仓储/端点/测试,`runs.session_id` 与四张旧表经迁移 003 退役(SQLite batch 双向验证通过);前端删 chat/time 页面与 api 库(type-check + vitest 199 passed);全量后端 846 passed、余 7 个预存失败(缺 `config/models.yaml`)。
- 提前退役说明:knocking/personality_emotion/纪念日原定 M6–M8 退役,因与 chat 线性会话强耦合随 M2b 一并删除;`modules/time_sense` 纯计算核(snapshot/duration/lunar,被符文引擎依赖)保留,辰正 M8 重接。
- 证据(M2c,2026-08-21):`/trees` 列表与 `/trees/[treeId]` 工作区(路径阅读流、候答切换 `i/n`、另答/续思/续生/编辑分叉/采用/归真、归真对话框含三界效力说明与 HJ-1102 分歧提示、局部树图可折叠、SSE 芽体流式);`/embryos` 灵胚页(原创/导入卡/照心试演流/启镜强确认/放弃);API 库 `trees.ts`/`embryos.ts` + 11 用例;type-check 与 vitest 210 passed。Next 内嵌 BFF(/api/proxy、Cookie 鉴权)暂为前端通道,收口到照壁列为部署迁移项。
- M2c 余项:移栽/引文锚 UI、已归真标记在树图回显(随 M3 记忆闭环)、Kernel 前台串行接入 DB 租约、眉批表(归入 M6 言灵编排)。
### M3 记忆闭环(息壤)— ✅ 后端完成(2026-08-22),M3b 前端治理页进行中
- 交付:三级记忆管线(归真触发提取/白名单明忆自动生效/重忆 pending 确认/确定性去重/正影版本链/删除墓碑无原文);双通道召回(关键词+活力时近)+ RRF 融合 + 条数/字符预算 + 命中强化与召回统计;获准记忆注入投影 prompt(【获准记忆(来源可查)】段,source_refs 指向归真可展开);实录(factual_records)随归真同步落库;手动入忆强制 fact/insight/opinion/hypothesis 标注,未归真内容只作 fact_candidate。
- 验收:全部由 `backend/tests/test_xirang.py` 7 用例钉死——未归真自动入忆率=0、重忆 pending 不入召回(confirm 后进入)、deny/删除墓碑全链路停用、正影旧版停召且原文不改写、手动入忆标注、召回注入 prompt 可验证。
- 退役(随本里程碑):旧 memory/extraction/reflection/big_cycle/evolution 服务与端点、旧 memories/memory_links 表(迁移 004 重建)、旧导入抽取触发(410 语义)、前端 evolution/memory 旧页与组件;全量后端 779 passed(余 6 个预存失败不变)、前端 type-check + 202 passed。
- 证据(M3b,2026-08-22):世谱激活进入投影(关键词命中 + 常驻条目、insertion_order 排序、字符预算、条目内容符文展开,`test_xirang.py` 世谱注入用例);前端 `/memories` 治理页(待确认/候选箱/已生效/归档/实录五分区,确认/拒绝/正影/删除/来源展开,删除强确认),API 库 +3 用例;type-check 与 205 passed。
- M3b 顺延项及理由:微痕时序效果(sticky/cooldown/delay)与次级键逻辑、递归扫描需要 Run 内轮次状态,随 M5 循环上下文落地一并实现;pgvector 语义通道随标准档部署接入(当前活力时近通道占位)。
### M4 神识完整接管 — ✅ 已完成(2026-08-27,M4a 网关 + M4b 切换手术 + 用户面收口)
- 交付:Go 神识全量(transform adaptor:OpenAI 兼容+元炁;路由/冷却/粘性;计量;配额);灵台切换 `shenshi_client`;**删除 Python ai_provider 与相关配置/页面 models 旧实现**;神识阁用户面(偏好/BYOK/用量)。
- 验收:故障注入(首字超时切道、凭证级冷却、熔断恢复)通过;usage 与 Provider 对账抽样一致;灵台内无 Provider SDK import(rg 审计为空)。
- 证据(M4a,2026-08-27):OpenAI 兼容适配器(元炁共用协议)+ `SHENSHI_ENDPOINTS` env 端点目录;候选路由(Priority+粘性置首+冷却排尾兜底)、首字超时切道(首帧前不提交响应,失败整体回退 JSON)、401/403 凭证级冷却 10 分钟 vs 429/5xx/超时绑定级 30 秒、已写字节不换道;计量(stdout JSON `shenshi_usage` + `/me/usage` 聚合)。Go 测试 10 用例全绿(含四场景故障注入:首字超时切道/凭证冷却跳过/全败 JSON/用量聚合);跨进程 E2E:灵台 `HttpShenshiClient` → 真 Go 神识 → stub 流式往返通过。假上游跨进程拨号在本沙箱受出站限制,改以 Go 进程内 httptest 覆盖(同真实 TCP 语义)。
- 证据(M4b,2026-08-27):手术清单 ①-⑥ 全量执行——后端删 `app/ai_provider/`(38 文件)与 `services/ai_provider_admin.py`、`core/config/model_config.py`、`tests/ai_provider/`(21 文件);连带退役旧 Agent 循环(`application/agent/`、steer/follow-up/确认注册表、`app/skills/` 孤儿、`endpoints/audio.py`、`application/imports.py`);runs.py 修剪为 kernel 契约端点,safety 确认改直接落库裁决(pending→approved/denied);前端删 models 页/gateway.ts(玄关)/网关组件/audio/types/mock;config 三 yaml 归档 `shenshi/config/`,`.env.example` 收敛 SHENSHI_*。后端 528 passed(2 个预存失败经 HEAD 复跑验证与本手术无关)、前端 type-check + 201 passed。
- 证据(M4 用户面收口,2026-08-27):神识补齐 BYOK(AES-GCM + 脱敏 + 独占路由 + fail-closed)、配额三段式(预扣钳位/结算/幂等退款,HJ-2004)、usage 归属计量与对账抽样(`/me/usage`、`/admin/usage/sample`)、Anthropic/Gemini 适配器、神识自有库 store(PG + 内存回退,60s 就绪重试);IR 契约扩展 `user_id`/`byok_key_id`(Go+Py 同步);灵台 runs.owner_id(迁移 005)经 kernel 透传 IR,`/me/byok-keys`|`/me/usage` 代理端点 + 神识阁前端(偏好/BYOK/用量三区,撤回二次确认)。Go 34 用例、后端 532、前端 210 passed;跨进程 E2E 四场景(灵台 HttpShenshiClient → 真 Go 神识:登记脱敏/独占失败/归属聚合/撤回)通过。rg 审计灵台 Provider SDK import 归零。
- M4b 手术清单(2026-08-27 侦察固化,30+ 文件):
① 后端删除:`app/ai_provider/`(26 文件,含 anthropic/openai 格式与 billing——神识已承接)、`services/ai_provider_admin.py`、`core/config/model_config.py`、`tests/ai_provider/`(16 文件);
② 连带退役:`application/agent/`(旧 Agent 循环,steer/follow-up/确认注册表——live UI 已随 chat 页消亡,天工阁 M8 重建);`endpoints/audio.py`(ASR/TTS 归 P1 形仪域);`endpoints/settings.py` 与 `services/preferences.py` 中模型偏好字段(切神识阁);admin 网关端点与 `test_model_gateway_endpoints.py`;`main.py` 的 `reload_provider_manager`、conftest 的 endpoint 覆盖缓存清理;
③ runs.py 修剪:`AgentRunRegistry`/`follow-up`/confirmations 端点随旧 Agent 循环退役,保留 kernel 契约端点;
④ 前端删除:models 页、`lib/api/gateway.ts`、`ModelGatewayPanel`/`ModelStrategyForm`、mock 与 types 中的网关类型;
⑤ 配置:`config/models|providers|pricing.example.yaml` 归档至 shenshi 目录或删除,`.env.example` 模型段收敛为 SHENSHI_*;
⑥ 验收:rg 审计灵台无 Provider SDK import(`rg -l 'openai|anthropic' app/` 排除 shenshi_client 为空);全量后端/前端测试绿;迁移无涉及(纯代码删除)。
### M5 百工与司命 — ✅ 已完成(2026-08-27)
- 交付:百工域 `domains/baigong`——能力注册表(`capabilities`:统一契约 + 执行类型 builtin/qiankun/mcp/http + 四维风险标注 capability/data/consequence/context)、授契/行契(`mandates`:grant 单次范围 / charter 预算时间窗重复执行,撤销立即生效)、请命(`pending_confirmations` 改造:六要素说明 + 超时=拒绝 HJ-1302)、行动账(`tool_calls` 净化摘要 + 观察标证 + audit_events 留痕);司命裁决器 `siming.py`(四维取最高档 + **禁域代码常量**:递归删根/格式化/写裸设备/fork 炸弹、file://、密钥外发——任何 Profile/插件/配置不可关闭);乾坤经 SandboxClient HMAC 授契执行;MCP 工具登记/刷新自动派生能力(博闻接入点);`/capabilities` `/mandates` `/petitions` `/tool-calls` 四组端点 + 前端百工页(四区);**旧 skills/tool_runtime/safety/agent 模块与 tool_policies/skills/model_endpoint_overrides 表退役**(迁移 006)。
- 验收(tests/test_baigong_siming.py 四用例钉死):① 未授契调用 403 HJ-1303 且 audit_events/tool_calls 双留痕;② 请命超时(expires_at 拨过)approve → 410 HJ-1302、无成功执行;③ 禁域专项(恶意 L0 标注 + 篡改领域对象仍拒 HJ-1301,代码级三形态断言);④ 调用后 memories 表零新增、tool_calls.evidence 带 observation_not_fact 标证。
- 证据:后端 454 passed(2 个预存环境失败不变);前端 type-check + 220 passed(百工组件 4 用例 + api 6 用例);四套件(backend/shenshi/bff/frontend)全绿。
### M6 缘契、人格与世界 — ✅ 已完成(2026-08-27)
- 交付:缘契域 `domains/yuanqi`(covenants 当前版 + covenant_events 不可变历史;提议—问心—铭契—撤回全链,边界变更立即生效,多维关系并存且**拒绝单一好感度键**);道体铸魂与分灵 `jingsheng/soul.py`(soul_forgings 确认流——锚点变更确认前不生效,确认后签发新魂籍版本;分灵创建新人物继承谱系不继承身份,魂籍从 v1 起);河图域 `domains/hetu`(persistent_worlds 境界 + world_entities/world_relations 重建为境界作用域 + 世谱挂接 + 境界正史视图);归真按三界分流(reality→息壤提取不变;persistent_world→境界实录+正史推进;simulation→只记试演实录,均不进真界本相,factual_records 增 scope 列);引文→记忆正影后继提示(citations target_type=memory 时 superseded 提示 successor_memory_id,不静默替换);前端人物页缘契面板 + 世界页重建(境界目录/实体/正史概览)。
- 退役:modules/personality|drive|evolution、models/personality|drive|evolution|world(旧治理版)、services/personality|drive|world、endpoints/personality|drive|world、governance 世界实体治理面、前端 personality/drive/cosmos/wuxing/runs 页与对应组件/api 库/样式;表退役(迁移 007):personality_versions/personality_proposals/curiosity_questions/exploratory_subgoals/evolution_candidates/character_world_entities/world_entities(旧)/world_relations(旧)/characters.current_personality_version_id。
- 验收(tests/test_m6_domains.py 六用例钉死):多维无单一好感度(affinity 提议被拒)+ 问心铭契版本链 + 事件史不可抹除;撤回立即生效(withdrawn 即不可见、再操作 410、事件可查证)+ 边界变更即时反映;铸魂确认流(确认前锚点不变、确认后锚点更新且魂籍版本=最大版本)+ 分灵谱系(新 id、lineage 含源、魂籍 v1);境界正史不进真界(persistent_world 归真后真界记忆候选=0、实录 scope 隔离);引文正影后继提示。
- 证据:后端 379 passed(2 个预存环境失败不变);前端 type-check + 199 passed;BFF 4;神识 5 包;迁移 007 净库升级 + ±1 干净。
### M7 形仪与语音(P1 面)— ✅ 已完成(2026-08-27)
- 交付:形仪域 `domains/xingyi`——`form_anchors` 真形锚点(稳定辨识特征/年龄表现/许可禁忌/可变范围,生成内容不可静默覆盖);`forms` 主仪/化仪/文字形仪(**候选→定相治理**:candidate 不进呈现位,adopt 才转正,主仪唯一、新主仪自动退役旧主仪);`voice_profiles` 声音三来源(合成预设/原创设计/授权克隆——克隆必填用途与传播范围,**授权可撤回且立即生效**,撤回/过期后合成前置校验拒绝);ASR 语音转写(元炁 SenseVoice `/v1/audio/transcriptions` 透传,未配置多模态时 503 不降级不伪造);前端形仪工坊(锚点编辑/候选定相废弃/声音档案与授权撤回)挂人物详情页,头像呈现位改走定相主仪。Live2D 基座沿用现有 pixi-live2d-display 吉祥物组件(forms.live2d_json 承载模型与动作映射引用);图像生成候选治理以 image_gen 来源候选+定相流程落地(真实生成模型接入随神识 image 槽位启用)。**旧 avatar 模块删除**(服务/端点/配置/avatar_url 字段/前端直传组件)。
- 验收(tests/test_m7_xingyi.py 三用例钉死):①未定相不成为正式形仪(candidate 期呈现位为空、定相后转正、主仪唯一旧主仪 retired、废弃可用);②克隆授权可撤回(缺用途被拒、有效通过、撤回后校验 403/409、预设不受授权约束);③关闭全部多模态后文字相伴完整可用(ASR 503 时镜树/缘契/百工链路照常)。
- 证据:后端 376 passed(2 个预存环境失败不变,6 个 avatar 旧用例随模块退役);前端 type-check + 203 passed(形仪工坊 4 用例);BFF 4;神识 5 包;迁移 008 净库+±1 干净。
### M8 天工阁、叩心与辰正
- 交付:功能 Agent 受托任务(分解/并行/验收,无魂籍);后台 Run 并发(不占前台槽位);叩心候选(静默/频率/预算/渠道);辰正时态感知重实现;**删除旧 agent/knocking/time_sense/goal_orchestrator/planner/perception/big_cycle 模块**。
- 验收:后台任务不构成第二意识(无身份写入路径);叩心受总开关与静默约束;不回应不降低关系(无关系副作用断言)。
### M9 桌面壳与收口
- 交付:镜匣最小壳(WebView+能力桥+乾坤通道+器谱登记+ updater,tantivy 预留);Compose/nginx 终态;文档与契约全量核对;发布门证据格式落位(对照[发布门](release-gates.md)与 first-release-scope 逐项检查)。
- 验收:桌面壳零平台密钥、未授契能力被拒、硬急停可用;全量回归(M1–M8 验收自动化套件绿);docs 五层与代码一致(能力矩阵证据更新完毕)→ 删除本计划文件。
## 5. 新旧切换纪律
- 旧模块删除时点绑定里程碑(见各条"删除"项),删除前 `rg` 确认无真实调用点;
- 禁止新旧 API 并存过渡(开发期契约直接重建,无兼容层);
- 开发数据库随基线重建丢弃,不写数据迁移;
- 每个里程碑一个合并批次,提交信息中文、可追溯到本计划条目(如 `M2:镜树归真与采用分离`)。
## 6. 风险与对策
| 风险 | 对策 |
| --- | --- |
| 插件化过度设计拖慢主线 | Kernel+总线先于插件丰富度;九枢按里程碑逐步装配,M0 只需 stub 插件跑通 |
| 神识一次性切换失败 | M4 内先双写用量对比再切换;元炁本地端点保证无云密钥也可全链路演示 |
| 镜树前端复杂度(局部树图/断线续传) | M2 先交付当前路径阅读流,树图与抽屉分两批;SSE 续传以事件日志重放为保证 |
| 全量 1.0 周期长导致中途失衡 | 里程碑独立验收+能力矩阵滚动更新;任何时点主干可运行 |
| 删除旧模块误伤复用资产 | 删除前核对 §2 复用清单与调用点扫描;infrastructure 资产先重组入 `infra/` 再删领域层 |