Zongwei9888 / dsh-abyss

Listed

🌊 深海事务所 · Abyss — 把 DeepSeek Harness 的多 agent 运行画成一间看得见的事务所:委派谱系、每个 agent 的成本与失败归因、上下文水位、考勤时间线,历史案子可回放并一键导出 Markdown 复盘。A DeepSeek Harness plugin that turns an agent fleet into an office you can watch.

mainModel View source

Installation

npx -y @deepseek-ai/dsh plugin --profile web add github:Zongwei9888/dsh-abyss

This installation command is an unverified starting point generated from the GitHub repository address.

README

Maintainer-authored documentation snapshot.

View on GitHub ↗
Commit 4f4ea93Synced Aug 18, 2026
深海事务所

深海事务所 · Abyss

把 DeepSeek Harness 的多 agent 运行过程,变成一间看得见的事务所。

谁在干活、花了多少、卡在哪 —— 全都来自会话日志,一句台词都不是编的。

中文 · English

npm license tests deps

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

办公室:六位同事在同一个案子上并行工作

它解决什么问题

一个 dsh 会话跑起来之后,你其实看不见里面发生了什么:派了几个子代理、谁在等谁、哪一步失败了、这次花了多少钱。终端里只有一串流式文字,会话结束就散了。

深海事务所把这些全部画出来,而且每一个数字、每一句台词都能追回到 ~/.dsh/sessions 里的那条日志。它不改 dsh 一行代码,装上即用。

四个页签,四个问题

页签回答什么视角
🧑 办公室现在谁在场、正在做什么此刻 · 以人为中心
💬 时间线发生过什么,按时间从旧到新过程 · 以时间为中心
📈 统计花了多少、卡在哪、谁在等汇总 · 以账为中心
🌿 组织谁把活派给了谁关系 · 以谱系为中心
时间线
时间线:派活、发言、汇报、出错,逐条按真实时间排列,长了自动折叠。
统计
统计:成本、令牌、工具调用、失败、重拨、归档、等人时长、历时;下面是每人上下文水位与考勤泳道。
组织
组织:委派谱系从真实的父子会话关系长出来,一眼看清一个案子分给了几个人。

为什么不是又一个桌宠

生态里的桌宠是装饰;这里的每个角色演的都是真事

舞台上发生的背后的 dsh 机制
一位员工一个 agent 的 session
工牌上的岗位subagent/descriptor.label
他来自哪家公司subagent/descriptor.providerclaude-code/codex 是真的别家 agent)
老板递文件夹tool/call subagent,气泡里是真实任务简述
便签飞过工位tool/call send_message,气泡里是真实消息原文
站在你门口等批准approval/asked / approval/decided,等了多久是算出来的
干活干砸了tool/result.error 或结果块的 isError
去档案室整理compaction/summary.shadowedTokenCount
工资表assistant/message.usage × 可配价目表
上下文水位usage ÷ request/context.contextWindow

因为 dsh 有「模型可见 ⟺ 必落日志」的运行时不变量,回放同一个案子会重演一模一样的过程

安装

需要 DeepSeek Harness 的 web profile(dsh web 能跑起来即可)。

# 1. 装进 web profile
dsh plugin --profile web add dsh-abyss

# 2. 重启 web
dsh web

打开 http://127.0.0.1:3080 ,右下角就是事务所的坞。点开即用,不需要任何配置

dsh plugin --profile web add dsh-abyss@latest   # 升级
dsh plugin --profile web remove dsh-abyss       # 卸载(重启后生效)
从源码安装(包尚未发布到 npm 时用这个)
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-<版本>.tgz
dsh web

dsh plugin add 走的是 profile 目录下的 pnpm,所以它同样认 profile 里的 .npmrc——私有 registry 直接在 $DSH_HOME/profiles/web/.npmrc 里配 registry= 即可。

面板嵌在产品自己的页面里,数据挂在同一个 origin 下的 /abyss不开新端口、不做跨域

几个不显眼但有用的地方

  • 一个会话 = 一间办公室,重启也还在。 打开一个昨天的会话,面板会从磁盘上的日志把那间办公室重建出来——成员、已收工的临时工、当时的全部戏份。
  • 十个会话同时跑也不乱。 会话树是「案子」,三档范围(本会话 / 本项目 / 全部)随时切;活跃的案子排前面,结束的折叠成一行。
  • 导出复盘。 一键生成 Markdown 报告:成员表、事故清单、完整台词,直接贴进 PR 或周报。
  • 过往案子。 磁盘上的日志就是档案库,几天前跑完的案子照样能回放、能出报告。
  • 读不出来就直说。 某个成员的日志损坏时,报告顶部会写明"有 N 位成员的日志读不出来,下面的数字不含他们"——一份安静地少算了的报告,比没有报告更糟。
  • 可拖动、可缩放,位置和尺寸都记住;双击标题栏放回右下角。

配置

不配也能用。要改就在 profile 的 cordis.yml 里:

- id: dsh-abyss
  config:
    prices:                 # 工资表,按每 1M token 计
      deepseek-v4-pro: { input: 0.55, output: 2.19, cacheRead: 0.07 }
    currency: "¥"           # 货币单位,默认 $
    vendors:                # 各厂商的标签、配色、图标
      claude-code: { label: "外聘顾问", color: "#f59e0b", icon: "brain" }
    sceneHistory: 200       # 新连接的面板能看到多少场旧戏
    maxTeams: 20            # 保留多少个案子(只淘汰已结束的)
    caseList: 30            # 「过往案子」列多少个
    watchPolicy: true       # 把其它插件的拦截画成保安场景

非法配置在加载时大声失败,不会默默忽略。

文档

测试

npm test        # 113 个用例:投影逻辑 + 宿主装配 + 发布的浏览器 bundle

浏览器测试跑的是发布的那个 bundle(经 DOM 替身驱动),不是逻辑副本——本项目踩过的每一个客户端缺陷(全局被遮蔽、引号未转义、状态只存在 DOM 里、开关反转、文字被套上旋转动画)对"重新实现一遍逻辑"的测试都是不可见的。

关键路径还做过真机联调:真实跑任务、真实并发三个会话、真实触发审批与工具失败,并把插件报出的数字和原始日志逐项对过账。

许可

MIT。图标来自 Lucide(ISC),鲸鱼/章鱼/螃蟹/海星按 Lucide 规格手绘 —— 见 LICENSE

Project files and signals

Shown items are public repository signals detected in the directory snapshot.

TestsDetected
Contributing guideDetected
DocumentationDetected

Repository information

Language
JavaScript
License
NOASSERTION
Last updated
Aug 15, 2026, 1:56 PM

Install deliberately

Review source code, permissions, lifecycle hooks, dependencies and network access. Test untrusted plugins in an isolated environment.