概览
@icelily/dsh-gitbash-preset
README / ZH
插件文档
目录摘要
dsh.pub 核对固定版本的组合包契约、运行时事实与分发语义;完整 README 请查看源仓库。
在 GitHub 阅读完整 READMELIMITATIONS
已知限制
<a id="limits-version"></a> ### DSH 版本边界(**最重要的一条**) 本插件的安装机制是「把预设文件写进 `${DSH_HOME:-~/.dsh}/.agent-presets/<id>/`」。 这个目录**在较新的 DSH 上已经没人读了** —— 官方把用户预设换成了 bundle 声明行。原文出处 (本机安装的 `@deepseek-ai/dsh-agent-preset@0.1.7-rc.2`): - `skills/editing-cordis-compositions/SKILL.md`: > Before declaration rows, a user preset was a directory `$DSH_HOME/.agent-presets/<id>/` holding > `preset.yml` … and `agent.cordis.yml` … **Nothing reads that directory any more.** - 同包 `README.md`: > Declarations provide **no directory, file-copy or file-delete operations**. - 同技能还有一条对本地相对插件名不利的要求: > **Resolve assets from installed packages rather than a preset directory.** **可以自己核对的旁证**:在本机 `…\@deepseek-ai\dsh\node_modules\@deepseek-ai` 目录下搜 `.agent-presets`、`agent.cordis.yml`、`preset.yml`,**命中的只有上面这段技能文本**, 没有任何 loader 代码读它;现在的预设是 `dsh-web-app/presets/<id>.patch.yml` 里的声明行(roster 行 id `preset-<id>`)。 **结论**:在 DSH `0.1.7-rc.2` 上,安装器**会正常执行**(文件确实写到位了), 但**不会出现可选的预设卡片**。旧版本上是否可用,**本机未验证**。 如果你正是遇到「装完在设置里找不到极简模式 (Git Bash)」,原因就在这里。 迁移方向(**尚未实施**):把预设改写成 bundle 声明行,并让 `gitbash-executor.mjs` 从**已安装的包**里解析, 而不是当预设目录里的相对文件。这件事需要动源码,本次只改 README,未处理。 <a id="limits-upgrade"></a> ### 升级路径(对能用的版本) 安装器对已存在的预设默认 **no-op**。`0.1.3` 之前的版本装出的预设是坏的(用了 `dsh-persona` 旧的 `text` 字段,装配会报 `$.prefix missing required value`)。升级插件后要**显式**让它覆盖: - 在插件行配置 `force: true`,或 - 删掉 `~/.dsh/.agent-presets/minimal-gitbash/` 再重启。 (`0.1.3` 起改用 `prefix`;本机核对 `@deepseek-ai/dsh-persona@0.1.7-rc.2` 的 schema 确实是 `prefix` 必填、`complete` 默认 `false`、`includeRuntimeContext` 默认 `true`,与预设写法一致。) ### 其它 - **只对极简模式生效**。它交付的是一个 agent preset,只有**选了「极简模式 (Git Bash)」的会话**受影响。 完整模式(web)下的 pwsh 工具、其他预设的命令工具,一律不动 —— 那正是 [dsh-all-gitbash](https://github.com/liceses/dsh-all-gitbash) 要解决的事。 - **需要 Git for Windows**。没装的话探测链全部落空,最终返回裸名 `bash`,每条命令都会 spawn 失败。 装了但不在标准目录时,用 `GIT_BASH` 环境变量或 `shellPath` 配置指路。 - **受限沙箱下用不了**。MSYS 运行时无法在 Windows 受限令牌沙箱内初始化(创建不了 signal pipe), 所以执行器只在 `danger-full-access`(或部署本身没有沙箱策略)下放行,其余情况抛错并给升级指引。 **这是沙箱边界,插件不绕过。** - **bash 不保持状态**。每次调用都是新 shell,`cd` / `export` 不会留到下一次;后台命令也没启用 (`enableRunInBackground: false`)。这是「Windows 上官方持久 bash 支路被关掉」的替代设计,不是等价实现。 - **路径有两个域**。文件工具走 Node(Windows 路径 `D:\...`),bash 走 MSYS(POSIX 路径 `/d/...`)。 两者都能接受 `D:/...` 这种正斜杠形式 —— 拿不准时用这个写法。`toWindowsPath` 只转单字母盘符形, `/usr/bin` 这类 MSYS 根路径不会被误转。 - **探测链里有一条作者本机遗留的写死路径** `D:\applications\Git\bin\bash.exe` (`gitbash-executor.mjs:89`)。对别的机器通常只是无效候选,无害;但它是本机痕迹,未擅自改动源码。 - **无卸载命令记录**。仓库里只有安装命令,没有对应的移除命令,所以这里也不写。 --- <a id="dev"></a>
