DeepSeek Harness plugin

dsh-abyss

深海事务所 (Abyss) — an operations console for DeepSeek Harness agent fleets: every agent is a character at a desk, every line comes from the durable session log, and any past case replays and reports

Jump to install

Source facts

Repository
Zongwei9888/dsh-abyss
Latest update
Aug 15, 2026
Category
Workflow & Automation
GitHub stars
1
Format
plugin
Catalog evidence
Upstream dsh.bundle evidence
Evidence path
package.json#dsh.bundle
Checked against
0.1.0-rc.8
Upstream check date
2026-08-20

This evidence comes from the upstream catalog. This site has not installed, run, or security-reviewed the plugin.

Install

Start with a prompt that asks an agent to review the GitHub repository and source. Switch to the command if you want to install it yourself.

Copy this prompt into DSH, Codex, or another agent and ask it to review the GitHub repository and source first.

Do not install or run any commands yet. Read this plugin's GitHub repository, README, and relevant source code. Then answer the questions below clearly and directly so I can decide whether it fits my needs:

1. What is this plugin, and what problem does it solve?
2. Who is it for, and what are its typical use cases?
3. How is it used after installation? Include one minimal example.
4. What known limitations or privacy, security, compatibility, or maintenance risks does it have?
5. Give a clear recommendation: recommend, conditionally recommend, or do not recommend, with reasons.

Distinguish statements documented by the repository, inferences from source code, and unknowns. If evidence is insufficient, say so explicitly. Do not guess or simply repeat the README.

GitHub: https://github.com/Zongwei9888/dsh-abyss
Plugin: dsh-abyss
Author: Zongwei9888

Check the source files

Read the README and other files from this plugin directory before installing.

File explorer4 files
README.en.mdSource · read only
README language

<div align="center">

<img src="assets/logo.svg" width="96" height="96" alt="Abyss">

Abyss · 深海事务所

Turns a DeepSeek Harness agent fleet into an office you can watch.

Who is working, what it cost, where it is stuck — every number and every line comes from the durable session log.

中文 · English

![npm](https://www.npmjs.com/package/dsh-abyss) ![license](LICENSE) ![tests](#tests) !deps

dsh plugin --profile web add dsh-abyss && dsh web

</div>

---

<img src="assets/screen-floor.png" alt="The floor: six colleagues working one case in parallel">

The problem

Once a dsh session is running you cannot actually see what happens inside it: how many subagents it hired, who is waiting on whom, which step failed, what the run cost. The terminal shows a stream of text, and when the session ends it is gone.

Abyss draws all of it — and every number, every spoken line traces back to a log in ~/.dsh/sessions. It changes no dsh code; install it and it is there.

Four tabs, four questions

TabThe questionLens
🧑 Floorwho is here and what they are doing right nowthe present, by person
💬 Timelinewhat happened, oldest firstthe process, by time
📈 Statswhat it cost, where it is stuck, who is waitingthe totals, by account
🌿 Orgwho handed work to whomthe lineage, by relation

<table> <tr> <td width="50%"><img src="assets/screen-timeline.png" alt="Timeline"><br><b>Timeline</b>: assignments, messages, reports and failures in real time order; long histories fold.</td> <td width="50%"><img src="assets/screen-stats.png" alt="Stats"><br><b>Stats</b>: spend, tokens, tool calls, failures, retries, compactions, time blocked on a human, elapsed — plus per-member context load and attendance lanes.</td> </tr> <tr> <td colspan="2"><img src="assets/screen-org.png" alt="Org"><br><b>Org</b>: the delegation tree grown from real parent/child sessions.</td> </tr> </table>

Why this is not another desktop pet

The ecosystem's pets are decoration. Here every character acts out the record:

On stageThe dsh fact behind it
a staff memberone agent's session
their job titlesubagent/descriptor.label
which firm they came fromsubagent/descriptor.provider (claude-code / codex are real other-vendor agents)
handing work downtool/call subagent — its arguments are the brief in the bubble
a note flying between deskstool/call send_message — its text is the line
standing at your doorapproval/asked / approval/decided — the wait is measured
a job going wrongtool/result.error or the result block's isError
filing papers awaycompaction/summary.shadowedTokenCount
the wage on the nameplateassistant/message.usage × a configurable price table
context loadusage ÷ request/context.contextWindow

Because dsh enforces model-visible ⟺ logged, replaying a case replays exactly what happened.

Install

Requires a DeepSeek Harness web profile (anything where dsh web runs).

# 1. add it to the web profile
dsh plugin --profile web add dsh-abyss

# 2. restart the web app
dsh web

Open http://127.0.0.1:3080 — the dock sits in the bottom-right corner. No configuration needed.

dsh plugin --profile web add dsh-abyss@latest   # upgrade
dsh plugin --profile web remove dsh-abyss       # uninstall (takes effect on restart)

<details> <summary><b>Install from source (before the package is on npm)</b></summary>

git clone https://github.com/Zongwei9888/dsh-abyss.git && cd dsh-abyss
npm install && npm run build && npm pack
dsh plugin --profile web add ./dsh-abyss-<version>.tgz
dsh web

dsh plugin add runs pnpm inside the profile directory, so it honours that directory's .npmrc — point a private registry at $DSH_HOME/profiles/web/.npmrc with registry=. </details>

> The panel is embedded in the product's own page and its data is served on the same origin under /abyssno second port, no cross-origin allowance.

Small things that matter

  • A session is an office, and it survives a restart. Open yesterday's session and the panel rebuilds that office from the logs on disk — staff, the temps that clocked off, and their scenes.
  • Ten concurrent sessions stay legible. A session tree is a case; three scopes (this case / this project / all) switch instantly, live cases lead, finished ones fold to one line.
  • Export a write-up. One click produces Markdown: staff table, incident list, full transcript — ready for a PR or a weekly report.
  • Past cases. The logs on disk are the archive; a case that ended days ago still replays and reports.
  • It says when it cannot read something. If a member's log is corrupt the report states it up front — totals that are quietly too small are worse than no report.
  • Draggable and resizable, both remembered; double-click the header to send it back to its corner.

Configuration

None required. To change anything, edit the profile's cordis.yml:

- id: dsh-abyss
  config:
    prices:                  # per 1M tokens
      deepseek-v4-pro: { input: 0.55, output: 2.19, cacheRead: 0.07 }
    currency: "$"            # unit for wages and write-ups
    vendors:                 # per-firm label, colour and icon
      claude-code: { label: "Consultant", color: "#f59e0b", icon: "brain" }
    sceneHistory: 200        # scenes a newly connected panel receives
    maxTeams: 20             # cases retained (only finished ones are evicted)
    caseList: 30             # how many past cases to list
    watchPolicy: true        # draw other plugins' denials as guard scenes

Invalid configuration fails loudly at load rather than being ignored.

Docs

  • 📖 [Five-minute tutorial](docs/tutorial.en.md)
  • 🏗 [How it is put together](docs/architecture.en.md) — host/browser halves, endpoints, event mapping, testing
  • 📝 [Changelog](CHANGELOG.md)

Tests

npm test        # 113 cases: projection + host wiring + the shipped browser bundle

The browser tests drive the shipped bundle through a DOM stand-in rather than a copy of its logic — every client defect this project has hit (a shadowed global, an unescaped quote, state held only in the DOM, an inverted toggle, a motion class landing on text) is invisible to a test that reimplements the code.

Critical paths were also driven against the real product: real tasks, three real concurrent sessions, a real approval escalation and real tool failures, with the plugin's numbers reconciled line by line against the raw logs.

Licence

MIT. Icons from Lucide (ISC); the whale, octopus, crab and starfish are drawn to Lucide's spec — see [LICENSE](LICENSE).