Introduction¶
DeepSeek Harness (DSH) executes commands submitted by the model through Bash Shell by default. When you need to use Fish Shell syntax, you can do so with the dsh-fish-shell plugin. The plugin keeps the external interface of the bash tool unchanged and only modifies the internal execution mechanism.
Plugin Overview¶
dsh-fish-shell is a DeepSeek Harness (DSH) configuration file plugin developed by maintainer nathannli. Its core purpose is to convert bash tool commands exposed through the model in DSH into Fish Shell execution in the background. Specifically, it changes the command execution chain from bash -c to fish -c.
Core Features¶
The plugin has the following core capabilities:
- Command conversion: Converts
bashtool invocations submitted by the model intofish -cexecution. - Session support: Supports updates for both foreground and background commands.
- Terminal compatibility: Does not change the behavior of persistent terminal sessions backed by Persistent PTY.
- Babelfish integration: When used together with Babelfish, it can preprocess commands containing standalone Bash assignments and convert them to Fish syntax.
Installation and Activation¶
To install this plugin, enter the directory where the plugin is located and use DSH’s plugin management command.
- Enter the plugin directory.
- Run the installation command:
dsh plugin --profile web add "$PWD"
- Restart the DSH host: You must restart the DSH host after installation. This is a server-side Shell Executor plugin, and client-side HMR hot updates will not load it.
Configuration and Usage¶
Path Configuration¶
By default, the plugin checks whether the system $SHELL ends with /fish, or searches for fish in PATH. If you need to specify a particular executable file path, you can configure it by patching the configuration file:
- id: fish-shell
config:
fishPath: /opt/homebrew/bin/fish
babelfishPath: /opt/homebrew/bin/babelfish
Babelfish Configuration¶
babelfishPath is optional. After Babelfish is installed, the plugin will automatically translate Bash syntax. For example:
NAME=valueis converted toset NAME valueexport NAME=valueis converted to asetcommandNAME=$(command)is converted to Fish syntax
Testing¶
Run test cases to verify whether the plugin works correctly:
npm test
Notes¶
When using this plugin, pay attention to the following limitations:
- Version requirement: DSH version 0.1.0-rc.6 or higher is required.
- Runtime environment: Node.js version >= 22 is required.
- Do not use: The author explicitly states that this is not a general-purpose Bash compatibility layer. If misused (for example, handling complex Bash logic or trying to bypass limitations by rewriting syntax), it will only lead to more retries, because syntax rewriting usually causes command execution failures.
- Error handling: If Babelfish translation fails, the tool invocation is stopped immediately, and untranslated Bash commands are not executed.
- Permission check: The plugin runs with the permissions of the DSH process; review the source code and license before installation.
Summary¶
dsh-fish-shell aims to provide DSH with Fish Shell-based command execution capabilities. Refer to GitHub for all source code, license, and update information.