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:

  1. Command conversion: Converts bash tool invocations submitted by the model into fish -c execution.
  2. Session support: Supports updates for both foreground and background commands.
  3. Terminal compatibility: Does not change the behavior of persistent terminal sessions backed by Persistent PTY.
  4. 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.

  1. Enter the plugin directory.
  2. Run the installation command:
    dsh plugin --profile web add "$PWD"
  1. 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=value is converted to set NAME value
  • export NAME=value is converted to a set command
  • NAME=$(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.