前言¶
DeepSeek Harness (DSH) 默认通过 Bash Shell 执行模型提交的命令。当需要使用 Fish Shell 语法时,可以通过 dsh-fish-shell 插件实现。该插件保持了 bash 工具对外的接口不变,仅修改了内部执行机制。
插件介绍¶
dsh-fish-shell 是一个 DeepSeek Harness (DSH) 配置文件插件,由维护者 nathannli 开发。它的核心作用是将 DSH 中通过模型暴露的 bash 工具命令,在后台转换为使用 Fish Shell 执行。具体表现为将命令执行链路从 bash -c 变更为 fish -c。
核心功能¶
该插件具备以下核心能力:
- 命令转换:将模型提交的
bash工具调用转换为fish -c执行。 - 会话支持:同时支持前台和后台命令的更新。
- 终端兼容:不会改变 Persistent PTY 持久化终端会话的行为。
- Babelfish 集成:配合 Babelfish 使用时,能预处理包含独立 Bash 赋值的命令,将其转换为 Fish 语法。
安装与启用¶
安装该插件需要进入插件所在的目录,并使用 DSH 的插件管理命令。
- 进入插件目录。
- 执行安装命令:
dsh plugin --profile web add "$PWD"
- 重启 DSH 主机:安装后必须重启 DSH 主机。因为这是服务端的 Shell Executor 插件,客户端的 HMR 热更新不会加载它。
配置与用法¶
路径配置¶
插件默认会检测系统 $SHELL 是否以 /fish 结尾,或者在 PATH 中查找 fish。如果需要指定具体的可执行文件路径,可以在配置文件中进行补丁设置:
- id: fish-shell
config:
fishPath: /opt/homebrew/bin/fish
babelfishPath: /opt/homebrew/bin/babelfish
Babelfish 配置¶
babelfishPath 是可选配置。安装 Babelfish 后,插件会自动翻译 Bash 语法。例如:
NAME=value转换为set NAME valueexport NAME=value转换为set命令NAME=$(command)转换为 Fish 语法
测试¶
运行测试用例以验证插件是否正常工作:
npm test
注意事项¶
使用该插件时,请注意以下限制:
- 版本要求:需要 DSH 版本 0.1.0-rc.6 及以上。
- 运行环境:需要 Node.js 版本 >= 22。
- 不要使用:作者明确指出,这不是一个通用的 Bash 兼容层。如果使用不当(例如处理复杂的 Bash 逻辑或试图通过语法重写来绕过限制),这只会导致更多的重试,因为语法重写通常会导致命令执行失败。
- 错误处理:当 Babelfish 翻译失败时,会直接停止工具调用,而不会执行未翻译的 Bash 命令。
- 权限检查:插件以 DSH 进程的权限运行,安装前应检查源码与许可证。
总结¶
dsh-fish-shell 旨在为 DSH 提供基于 Fish Shell 的命令执行能力。所有源码、许可证及更新信息请参考 GitHub。