Skip to main content

Module install

Module install 

Source
Expand description

W-51a:wanning init --install 直写安装——消掉「init 只打印、用户手动贴配置」断点。

职责边界(与生成器面的关系):条目内容永远来自 crate::generate_with 的产物(单一事实来源:install 只负责「放进宿主的正确位置」,不另写一份 字段面)——四个 mcp.json 平台解析产物里的 mcpServers.wanning,dsh 取产物 里的 - insert: 块,openclaw/hermes 的宿主命令行原样来自产物。

纪律(扩展 W-36「绝不覆盖」):

  • 写前必读现有文件;merge 只动 mcpServers.wanning / wanning-gate 块, 他人条目语义不动(mcp.json)或逐字节不动(cordis.patch.yml 追加在尾);
  • 写前备份 <file>.wanning.bak(先备份、后写入);
  • 已有 wanning 条目且内容一致 = 已是最新:逐字节不动、不产生备份、无 diff;
  • 升级场景打字段级 diff;--dry-run 打印将做的全部动作、零落盘(连目录都不建);
  • codex 主配置是 TOML 文本面,文本合并的风险大于收益 → fail-closed 不支持 (报错给 --out 人工指引,绝不乱写主配置);
  • openclaw/hermes 产出宿主 CLI 命令行,仅 --yes 显式时才执行;执行前解析 宿主真实路径(显式 --host-bin 优先,否则 PATH),解析不到或宿主退出码 非 0 一律 fail-closed。

库层不读进程环境:一切宿主路径由 CLI 层显式传入(InstallEnv),测试确定性; read_installed_entry 是 doctor(W-51b)与安装面共用的读取口。

Structs§

InstallEnv
安装环境(全部显式传入;CLI 层负责读进程环境,库层不读 → 测试确定性)。
InstallOptions
安装入参。
InstallReport
安装报告(CLI 打印成「安装报告」块)。
InstalledEntry
已安装条目(doctor 复用的读取面)。

Enums§

InstallError
安装失败。全部 fail-closed:宁可拒装,绝不产出一份坏的/半吊子的配置。
InstallState
安装结果状态(人可读文案见 InstallState::label)。

Functions§

install
执行安装(按平台分发)。
read_installed_entry
读一个平台已装的 wanning 条目;未装 = Ok(None);配置形状坏 = 报错 (doctor 据此给修复指引,绝不静默当未装)。