# dsh-rtk v1.3.0 — 多平台 问题:插件此前只适配 macOS/Linux。最致命的一条是 Windows 上**完全不触发**——DSH 在 `dsh-base` 里按平台开关 shell 工具(`tool-bash` 在 win32 被禁用,Windows 用的是 `tool-pwsh`),而插件只匹配 `exec.name === 'bash'`,在 Windows 上没有任何触发机会。此外 POSIX 单引号转义、POSIX 权限位校验、POSIX 候选路径在 Windows 上均不成立(其中 world-writable 判定会把**每一个** Windows 可执行文件都拒掉)。 - **按方言匹配工具**:`bash`/`sh`/`dash`/`zsh`/`ksh` → POSIX,`pwsh`/`powershell` → PowerShell,并容忍 `bash-persistent`、`tool:pwsh` 这类前后缀变体;非 shell 工具(`fs`、`read`…)永不改写。 - **按 shell 引用二进制路径**:POSIX 用 `'…'`(内部单引号转义为 `'\''`),PowerShell 用 `'…'`(内部单引号双写为 `''`)。 - **按 shell 识别单条命令跳过语法**:`DSH_RTK_DISABLE=1 ` 与 `$env:DSH_RTK_DISABLE='1'; `。 - **平台化候选路径**:Windows 新增 `%USERPROFILE%\.cargo\bin\rtk.exe`、`%LOCALAPPDATA%\Microsoft\WinGet\Links\rtk.exe`、`%USERPROFILE%\scoop\shims\rtk.exe`、`%ProgramData%\chocolatey\bin\rtk.exe`、`%ProgramFiles%\rtk\rtk.exe`;支持 `%VAR%` 展开(含大小写不敏感的备用映射)。 - **平台化可信校验**:Windows 只接受 `.exe`/`.com`(`.cmd`/`.bat` 需要经 shell 转发命令文本,存在注入风险,直接拒绝),不再套用 POSIX 权限位;POSIX 规则保持不变。 - **环境变量大小写不敏感读取**:Windows 常见 `ProgramFiles` 与 `PROGRAMFILES` 混用;`RTK_BIN`、`DSH_RTK_DISABLE`、`DSH_HOME` 都走同一套查找。 - **可测性重构**:`createRtkRuntime` 支持注入 `spawn`,钩子拆出为 `createToolHook`,测试不再依赖 `#!/bin/sh` 假二进制,三平台都能完整运行。 - **doctor 跨平台**:Windows 用 `Win32_Process` 列宿主进程、`tasklist` 判断存活;状态文件改为「pid 必须存活或与宿主匹配」才算生效证据;输出当前平台实际加载的 shell 工具名。 - **新增 CI**:`.github/workflows/ci.yml` 在 ubuntu / macos / windows × Node 22/24 上跑 `npm test`。 - **README 增加平台矩阵**与 Windows 安装、配置、排障说明。