Skip to content
dsh.fish
Bundle

dsh-plugins-riesbri

Personal DeepSeek Harness plugin bundle

Source
riesbri
License
MIT
Updated
Updated 22 days ago

Readme

# dsh-plugins-riesbri

Personal [DeepSeek Harness](https://github.com/deepseek-ai/deepseek-harness) plugin bundle.

## Install

```sh
dsh plugin --profile web add github:riesbri/dsh-plugins
```

Or from a local checkout:

```sh
dsh plugin --profile web add /path/to/dsh-plugins
```

`dsh plugin` appends the bundle to the profile's `dsh.profile.bundles`, so its layer applies after `@deepseek-ai/dsh-base` and any mode bundle. Confirm with:

```sh
dsh --profile web --dump-config    # shows a "# == dsh-plugins-riesbri" layer
```

Remove with `dsh plugin --profile web remove dsh-plugins-riesbri`.

This package ships plain ESM JavaScript with no build step, so a `github:` install needs no `prepare` script and no pnpm `allowBuilds` entry.

## What it contributes

### `list_dir`

Lists the direct children of a directory — names, types, and sizes only, never file contents.

The harness filesystem seam has exposed `ctx.fs.listDir` since the beginning with no model-facing Consumer; `@deepseek-ai/dsh-tool-fs` records the gap under its known limitations as *"No model-facing directory listing ships"*. Without it the model reaches directory structure only through `bash ls` — unstructured, and subject to whatever shell sandbox the deployment mounts — or through `glob`, which is pattern-driven rather than hierarchical.

Because it is a Consumer of the seam rather than a shell-out, listing follows whichever filesystem provider the deployment mounted: local, sandboxed, or remote.

| Parameter | Type | Notes |
| --- | --- | --- |
| `path` | string, required | A relative path resolves against the calling agent's session workspace, not the server's launch directory. |
| `limit` | integer | Defaults to 200, clamped to 1000. A truncated listing says so in its last line. |

The tool registers globally, so it reaches every agent regardless of the agent preset a session selects — a preset row of the same name would shadow it, but no shipped preset defines one.

## Machine-local configuration

`dsh-home/cordis.patch.yml` is the home patch layer, symlinked into place:

```sh
ln -s "$PWD/dsh-home/cordis.patch.yml" ~/.dsh/cordis.patch.yml
```

It applies to every profile, after that profile's bundle layers and before any `--patch` overlay, and is hot-reloaded on save. It currently enables session content search: the base bundle mounts the session-query index with `path: ':memory:'` and `openAt: never`, so every full-text call fails `SESSION_QUERY_SEARCH_DISABLED` and the Web sidebar matches titles and workspace names only. A durable path with `openAt: first-search` keeps the `node:sqlite` import and the file handle off the startup path.

Remember that a patch replaces the targeted row's whole `config` rather than merging into it, so every key the row needs is restated there.

## Layout

```
package.json                  declares dsh.bundle
cordis.patch.yml              the layer applied when a profile lists this bundle
index.js                      plugin entry: name, inject, apply
src/list-dir.js               the tool
dsh-home/cordis.patch.yml     machine-local home patch layer (symlinked to ~/.dsh)
```

## License

[MIT](LICENSE)

Install

dsh plugin --profile web add github:riesbri/dsh-plugins

Profile: web

  • This source has no pinned commit, so a later push upstream changes what installs. Prefer pinning a commit.
Source