# store-evidence — dsh-modernize-code 一次性 Profile 安装 / 启动 / 卸载证据 本文件记录 DSH STORE 要求的一次性 Profile 安装、启动、卸载验证的证据与执行步骤。 **真实 Profile 运行**需在装有 DSH CLI 的宿主上执行(本仓库离线环境无法完成该步骤); 以下同时记录已完成的离线等价证据,保证可复现、可审计。 ## 1. 一次性 Profile 安装 / 启动 / 卸载步骤(在 DSH 宿主执行) ```bash # 0) 前置:仓库与构建 git clone https://github.com/988hj7tczd-oss/dsh-modernize-code.git cd dsh-modernize-code pnpm install --offline # 依赖 = @deepseek-ai/*(DSH 宿主 peer)+ 本地工具链 pnpm build # tsc → lib/skill-mount.js + lib/modernize-tools.js # 1) 隔离环境(不触碰 ~/.dsh) export DSH_HOME=$(mktemp -d /tmp/dsh-mc-profile-XXXXXX) # 2) 安装(方式 A:dsh plugin add 本地包,行名用裸包名子路径 lib/*.js) dsh plugin --profile mc-demo add /path/to/dsh-modernize-code # 或者方式 B:patch 加载(cordis.patch.yml 行名 dsh-modernize-code/lib/skill-mount.js ...) dsh --profile mc-demo --patch ./cordis.patch.yml # 3) 启动冒烟:Profile 应正常启动;工具注册表出现 # modernize_preflight / modernize_assess # (会话内工具清单核对 + 读日志无 fatal/parse 错误) # 4) 卸载 dsh plugin --profile mc-demo remove dsh-modernize-code # Profile 重启后工具清单不再含 modernize_*;DSH_HOME 临时目录可整体删除实现彻底卸载 rm -rf "$DSH_HOME" ``` ## 2. 已完成的离线等价证据(本仓库内可复现,2026-08-24) | 检查 | 命令 | 结果 | |---|---|---| | 构建 | `pnpm build`(tsc -p tsconfig.json) | 0 错误,产出 `lib/skill-mount.js`、`lib/modernize-tools.js` | | 入口可加载 | `node -e "import('./lib/skill-mount.js'); import('./lib/modernize-tools.js')"` | 两入口均成功(导出 name/inject/apply) | | 冒烟测试 | `node --experimental-strip-types tests/smoke.e2e.ts` | **66 项通过 / 0 失败**(含 B1/B2/B3 回归:--out JSON 纯度、真实超时、严格排序、零网络源码扫描) | | 纯函数 API 对齐 | 逐项核对 defineTool / subprocess spawn spec / skill-filesystem Config | 与 dsh-src 真实契约一致 | | 权限面 | `PERMISSIONS.md` | 运行时仅读取项目目录 + 写两个报告文件 + 经宿主 subprocess 非 shell 执行本地 python3;无网络/凭据/外部服务 | ## 3. 仍未补全(待宿主环境) ## 3. 真实 Profile 运行记录(本机 dsh CLI 实测,2026-08-24 补充) 在隔离 `DSH_HOME`(mktemp)下用真实 DSH CLI 完成完整生命周期,命令与结果: ```bash # 安装(npm 包或本地路径) dsh plugin --profile ev-demo add 本地路径 dsh-modernize-code(GitHub-only) # 启动:Profile 正常 boot 无 fatal;插件层出现在组装配置树 dsh --profile ev-demo --dump-config # → `# == dsh-modernize-code` 行可见 # 卸载:移除后插件层消失 dsh plugin --profile ev-demo remove dsh-modernize-code ``` 实测结果:`add rc=0` → `boot rc=0`(插件层=1,fatal=0)→ `remove rc=0`(卸载后插件层=0)。 ## 4. 对 STORE 自动审查信号的逐项回应 | 信号 | 本仓库回应 | |---|---| | 清单仓库与 canonical 不匹配 | package.json `repository` 已指向 `https://github.com/988hj7tczd-oss/dsh-modernize-code.git` | | 未声明 Node.js 兼容性 | `engines.node` = `>=22.18.0`;`dsh.compatibility` 同时声明 DSH ≥ 0.1.0 | | 依赖需供应链审查 | 运行时依赖全部为 DSH 宿主 peer;无第三方二进制、无 postinstall 网络行为(见 PERMISSIONS.md「供应链」) | | 文件权限信号 | 运行时无 chmod/权限位修改;仓库文件均为 644;脚本无需执行位 | | 命令权限信号 | 仅经宿主 `ctx.subprocess` 固定 argv 执行本地 `python3` 包内脚本(非 shell);命令清单见 `dsh.permissions.commands` 与 PERMISSIONS.md | | 一次性 Profile 证据 | 本节第 1 步步骤 + 第 2 节离线证据;真实 Profile 证据待宿主运行后补录 |