九个跑在 DeepSeek Harness(DSH)桌面端里的社区插件包: 长期记忆、桌面宠物、GUI 皮肤、Token 用量报表、系统状态、旁支提问、消息撤回/编辑,以及给官方 Agent Teams 补上「让 teammates 散伙」的 fork。
全是真跑起来的插件——每个包都自带自检脚本,踩过的坑写进了各自的 README。 下面每个插件都配了 DSH 桌面端实机截图(真机抓的,不是渲染稿)。
上图是 DSH 侧栏「插件」页的「已安装」列表;其中「基础工具」「数学建模团队预设」两个本地预设包不在本仓库内。
| 插件 | 包名 / 版本 | 形态 | 一句话 |
|---|---|---|---|
| 记忆 | dsh-memory 0.3.1 |
组合包 | 跨会话的 Markdown 长期记忆 + 四个 memory_* 工具;全局索引注入 AGENTS.md 托管区块、工作区索引注入工作区自己的 AGENTS.local.md,设置页可浏览编辑 |
| 桌面宠物 | dsh-pet 0.1.0 |
普通包 | 浮层里的一只小家伙:5 种宠物、7 种状态,随皮肤换色、随 Agent 干活换表情 |
| 皮肤 | dsh-skins 1.0.0 |
普通包 | 叠加在浅/深主题上的 7 套配色层(青花瓷 / 东京夜 / 水墨 / 青绿山水 / 卡布奇诺 / 中国风 / 莫兰迪),字体一起换 |
| 系统状态 | dsh-sysmon 1.0.0 |
普通包 | 侧栏底部一排圆环:CPU / 内存 / 磁盘 IO / 双显卡(窄侧栏收敛成单个 CPU 环) |
| Token 统计 | dsh-token-stats 0.1.0 |
普通包 | 解析会话日志 usage:活跃度热力图 + 每日趋势 + 模型用量环形图 |
| 拓展包 | dsh-style-extras 1.0.0 |
组合包 | 把六个成员(皮肤 / 系统状态 / Token 统计 / 桌面宠物 / 临时提问 / 消息撤回编辑)收进一张卡片统一启停 |
| 临时提问 | dsh-btw 0.1.0 |
普通包 | 右侧栏「开始」页的 /btw 卡片:答案不进历史、没有工具、退出即消失 |
| 消息撤回 / 编辑 | dsh-message-edit 0.1.0 |
普通包 | 已发送的用户消息可以撤回和编辑:原生操作行加两个图标钮,编辑态在原气泡位置无缝覆盖 |
| Agent Teams Plus | @local/dsh-agent-team-plus 0.2.0-rc.2.1 |
组合包 | 官方 Agent Teams 的 fork:成员上限 8 → 16,新增 release_teammate(成员散伙腾坑、可再雇新) |
「组合包」= 自带
dsh.bundle.patch,在侧栏「插件」页里有独立卡片;「普通包」= 只有加载行, 由 profile 的 patch 或某个组合包声明(本仓库里skins/sysmon/token-stats/pet/btw/message-edit都由dsh-style-extras声明,所以它们在插件页里是同一张卡片下的成员行)。
- DSH 桌面端 ≥ 0.2.0(0.2.0 起旧
.agent-presets/机制废除,插件走 bundle 声明)。 各包按0.2.0-rc.2的宿主契约开发与验证。 - 插件跑在 DSH 自带运行时里,不需要系统 Node / pnpm。
- 本仓库不打包任何
@deepseek-ai/*依赖,由你本机的 DSH 安装提供。
把仓库 clone 到任意位置,然后在 DSH 里用 plugin_manager 逐个安装:
git clone https://github.com/OrinVoss/dsh-plugins.git "$env:USERPROFILE\.dsh\plugins-git"安装 memory 这个包(target 用包目录的绝对路径):
plugin_manager → install_bundle → target: "C:\Users\<你>\.dsh\plugins-git\memory"
install_bundle 会自动写好 profile 的两处声明:dependencies 里的 link: 与
dsh.profile.bundles 里的包名。组合包(memory / style-extras / agent-team-plus)
装完即出现在「插件」页。
style-extras 时六个成员包也要 link 进 profile(它的 patch 只声明加载行,
不提供包本体):
plugin_manager → install_bundle → ...\skins
plugin_manager → install_bundle → ...\sysmon
plugin_manager → install_bundle → ...\token-stats
plugin_manager → install_bundle → ...\pet
plugin_manager → install_bundle → ...\btw
plugin_manager → install_bundle → ...\message-edit
plugin_manager → install_bundle → ...\style-extras
编辑 ~/.dsh/profiles/desktop/package.json:
{
"dependencies": {
"dsh-memory": "link:C:/Users/you/.dsh/plugins-git/memory"
},
"dsh": {
"profile": {
"bundles": ["@deepseek-ai/dsh-base", "@deepseek-ai/dsh-web-app", "dsh-memory"]
}
}
}link: 只解决「包在哪」,bundles 才决定它是否出现在「插件」页。
别在 profile 自己的 cordis.patch.yml 里再 insert 同一个 id——applyEntryPatches
只做 push,同 id 插两次会加载两遍,第二次注册同名工具直接报 already registered。
- 带客户端半边的插件(设置页、侧栏面板、浮层、皮肤):必须重启桌面端才生效—— DSH 桌面端没有「重新加载」菜单,F5 / Ctrl+R 也未接线。
- 纯宿主插件按 HMR 热重载;HMR 只盯入口文件,改了
lib/里的模块要碰一下入口才重挂载。
cd <包目录>; npm test # 有 test 脚本的包| 包 | 自检 |
|---|---|
| memory | node selfcheck.cjs / plugintest.cjs / clienttest.cjs / lintmemory.cjs(npm test 依次跑四套) |
| pet | node selfcheck.cjs + node test/hosttest.cjs |
| btw | node selftest.cjs |
| token-stats | node selftest.cjs(--live 走真实会话日志) |
| style-extras | node selfcheck.cjs |
| agent-team-plus | node test/setup.mjs && node test/run.mjs |
| skins / sysmon | 视觉验收走 preview/(见各包 README) |
跨会话的 Markdown 长期记忆库:~/.dsh/memory 下是 INDEX.md + 分主题目录,模型拿到
memory_write / memory_search / memory_read / memory_forget 四个工具。设置 → 记忆 里可浏览 /
编辑 / 删除,带健康度卡片;落盘即 git commit(只本地、从不 push)。
注入分两个层级,都走 DSH 自己的指令文件机制(dsh-agent-instructions 会加载它们):
| 层级 | 写进哪 | 内容 |
|---|---|---|
| 全局索引 | ~/.dsh/AGENTS.md 的托管区块(<!-- dsh-memory:begin/end -->) |
全部条目每条一行,默认渲染该条目的 brief(≤12 字压缩摘要);预算 maxBlockBytes,本机设 32 KB;所有工作区共用 |
| 工作区索引 | 会话工作区自己的 AGENTS.local.md 托管区块(injectProjectBlock) |
只放本工作区的项目条目,预算独立(maxProjectBlockBytes,默认 8 KB);默认文件不进版本控制,想进仓库就把 projectBlockFile 改成 AGENTS.md |
2026-10-11:注入块改用
brief之后,本机实测从 29,293 B → 18,151 B(−38%),离 32 KB 预算的余量 由 10% 拉到 45%(此前再写十几条就会从末尾静默截断)。brief是存下来的压缩摘要(memory_write的可选参数,≤12 汉字),不是渲染时切字符串——所以超长摘要会被重写而不是截断。briefInIndex: false一行回滚成完整description摘要。2026-10-09 还试过把这套注入换成三条「随插件销毁」的扩展点(专题地图 + 按需检索 + 压缩保护), 实测专题地图会丢信息,已整体回退到上面的文件区块方案,相关代码不再保留。
工作区区块有三条安全约定:只动托管区块、区块外一个字不改;本工作区没有项目条目且文件里没有 托管区块时什么都不做(不在你的仓库里凭空建文件);条目删空后摘掉区块,文件因此变空就删掉文件。
细节与坑(overwrite 漏传 section 造成索引重复登记等)见 memory/README.md。
实机截图(DSH 桌面端,下同):设置 → 记忆 的管理页,以及插件页里的记忆卡片。
| 设置 → 记忆(健康度卡片 + 条目列表) | 插件页卡片 |
|---|---|
![]() |
![]() |
浮层里的一只小家伙,5 种宠物(像素猫 / 柴犬 / 锦鲤 / 史莱姆 / 小机器人)+ 7 种状态
(idle / work / wait / done / error / sleep / pat)。宿主半边只读会话事件折成快照,
客户端 1.2 s 轮询:气泡说的是人话(「翻文件…」「派小弟…」,绝不吐工具原名)、
点一下摸头、双击换宠物、按住拖到任意位置、大小 28–200px 可调,颜色跟随皮肤强调色。
预览见 pet/preview/。
实机截图:浮层里的小家伙站在界面右边缘(青花瓷皮肤下的小机器人,干活时顶上冒出「干活中…」气泡)、 设置 → 通用 → 宠物 那一行(5 只宠物、大小步进、位置与四个开关),以及插件页卡片。
| 宠物浮层(实机) | 浮层近景 | 对话气泡 |
|---|---|---|
![]() |
![]() |
![]() |
| 设置里的宠物行 | 插件页卡片(现已并入「拓展包」,改成那张卡片里的一行) |
|---|---|
![]() |
![]() |
把一整套配色以 --dsw-* 别名 token 叠加在当前主题上,随「设置 → 通用 → 皮肤」切换。
7 套皮肤 × 浅深两档 = 14 份完整调色板,字体各不相同。
实机截图:设置 → 通用 → 皮肤 的九宫格,以及三套皮肤换到整个界面上的样子(同一会话、同一排版,只有配色与字体变)。
![]() |
|---|
| 设置 → 通用 → 皮肤:默认 / 莫兰迪 / 中国风 / 青花瓷 / 东京夜 / 水墨 / 青绿山水 / 卡布奇诺 |
| 莫兰迪(低饱和灰调) | 中国风(宣纸 · 墨 · 朱砂) | 青花瓷(白瓷 · 靛青) |
|---|---|---|
![]() |
![]() |
![]() |
另外七套的组件预览图在 skins/preview/。
侧栏底部常驻一排占用圆环:CPU / 内存 / 磁盘 / 核显 / 独显,悬停看各自明细(磁盘那个还带读写 MB/s);
侧栏收窄时自动收敛成一个 CPU 圆环。纯展示,没有点击展开的面板。
宿主半边注册两个只读路由(/sysmon-api/sample、/sysmon-api/width),只用 Node 内置模块。
实机截图:侧栏底部的五个圆环(CPU / 内存 / 磁盘 / 核显 / 独显);鼠标悬停出 tooltip。
![]() |
|---|
| 侧栏底部常驻的一排圆环:CPU / 内存 / 磁盘 / 核显 / 独显 |
侧栏「Token 统计」页:解析 $DSH_HOME/sessions/**/*.jsonl.zstd 里每条
assistant/message 的 usage,逐帧解压后聚合,落磁盘缓存。含活跃度热力图、
每日趋势图、模型用量环形图,范围可切近 7 日 / 近 30 日 / 全部。
实机截图:左侧栏「Token 统计」页——顶部汇总卡、12 个月活跃度热力图、每日趋势折线(图例可点隐藏模型)、模型用量环形图与排行。
![]() |
|---|
| 本机 925 个会话 / 27,137 次调用的汇总实况 |
纯组合包,自己不注册任何工具 / 服务 / 面板,只贡献一份 patch:把皮肤、系统状态、
Token 统计、桌面宠物、临时提问、消息撤回 / 编辑收进插件页里的一张卡片,点进去是
六行成员,各自带开关与「运行中」状态;停用整张卡片=六行一起停。六个成员包仍是独立的包,
装它时也要一并 link 进 profile(成员包自己不带 dsh.bundle,加载行只由这张 patch 声明,避免同 id 插两次)。
![]() |
|---|
| 插件页里点开「拓展包」(截图拍于三成员时期:Token 用量统计 / 系统状态 / 皮肤;现在还有「桌面宠物」「临时提问」「消息撤回 / 编辑」三行) |
对齐 Claude Code /btw 的旁支提问:右侧栏「开始」页第四张卡片,独立 tab。
回答不写入会话历史、没有工具、退出即消失。不复用会话历史(最近 ~48K 字符
压成纯文本塞进一条 user 消息),所以它不会以为自己是主会话、也不会模仿工具调用;
输入从 ~190k token 降到 ~12k,实测同一问题 2–3 分钟 → 4.5 秒。
实机截图:右侧栏「开始」页的第四张卡片、点开后独立的 /btw 提问 tab(左侧主会话完全不受影响),以及插件页卡片。
| 右侧栏「开始」页的第四张卡片 | 打开的 /btw 提问 tab |
|---|---|
![]() |
![]() |
![]() |
|---|
插件页卡片:dsh-btw v0.1.0 |
给已发送的用户消息补上「撤回」和「编辑」。DSH 里排队中的消息能改能删,但一旦变成会话日志里的
user/message 就回不去了——用户气泡上只有复制和时间。这个插件在原生操作行里加了两个图标钮
(就是官方 MessageIconActions 的 extraActions 位置):
- 撤回:这条消息及其之后的对话从模型上下文里移除(之后的回答都是在回答它,所以是「从这条起回退」,
不是只删一条);界面上那一段隐藏,但留一条官方的「上下文」注入行当占位——所以你看出的是「这里被撤回了」,
而不是凭空少了一段。占位行走官方自己的注入行渲染(
source.kind = message-edit、form: notice), 和每轮那几条AGENTS.md/ runtime-context / time-context 是同一个组件。 - 编辑:同样移除,然后把你改后的文本作为一条全新的用户消息发出去——模型看到的是「改后的文本 + 新回答」,界面上是一条气泡一个回答。
实现上不改 DSH 本体:宿主半边用 surface replace 事件原地改写模型上下文(host.js),客户端半边在
user 渲染器上加按钮、并按轮次隐藏被遮蔽的行(client.js)。原始会话日志是 append-only,不删任何事件,
变的只是「派生出来的模型历史」与「当前视图」。
细节上比较讲究的一处是编辑态:官方消息本体照常渲染(所以图片 / 附件 / 引用摘要一个都不丢),编辑器按
实测的原气泡盒子原位覆盖,字号、行高、内边距逐项对齐,所以文字在编辑前后一个像素都不动;
✓/✕ 不进盒子,而是贴在盒子下方那一行(复用官方操作行的位置),所以编辑框严格等于气泡本身。
进出场各一段 150–160ms 的关键帧(蓝底→白底+蓝环、再反向收回),刻意不做透明度和缩放,避免文字发虚或位移。
限制:会话空闲时才能操作(当前轮次还在跑会被拒绝);只能对当前表面上的追加型用户消息操作, 动不了系统提示词。
自检:node selfcheck.cjs(项数随版本变,以实际输出为准);原理、真机踩过的硬坑与 HTTP 接口见
message-edit/README.md。
官方 @deepseek-ai/dsh-experimental-agent-team-profile@0.2.0-rc.2 的 fork,两处改动:
- 成员上限 8 → 16(patch 里
config.maxMembers: 16,官方包本体不动); - 新增
release_teammate工具:Lead 让干完活的成员「散伙」——从名册摘除、 名额与名字立刻可复用(同名可再雇),带TEAM_MEMBER_HAS_TASKS等稳定错误码门禁。
上游是 MIT 许可的公开包,本仓库保留其版权与许可声明,见
agent-team-plus/LICENSE 与 THIRD-PARTY-NOTICES.md。
改动清单、release_teammate 语义、DSH 升级后的重对齐 SOP 见
agent-team-plus/README.md。
![]() |
|---|
插件页:上限定为 16、多出 release_teammate 的本地 fork |
实机截图:一次 3 人团队的完整跑通——创建 alpha / bravo / charlie → 等它们跑完并核对结果 →
用 release_teammate 逐个解雇,最后名册只剩 Lead(名额与名字当场可复用)。
![]() |
|---|
release_teammate · alpha / bravo / charlie 连续三次调用后,list_agents 回到 1 个智能体 |
dsh-plugins/
├── memory/ dsh-memory 组合包:长期记忆 + 4 个工具 + 设置页
├── pet/ dsh-pet 普通包:桌面宠物浮层
├── skins/ dsh-skins 普通包:7 套皮肤 token 层
├── sysmon/ dsh-sysmon 普通包:侧栏圆环(CPU / 内存 / 磁盘 / 双显卡)
├── token-stats/ dsh-token-stats 普通包:Token 用量报表
├── btw/ dsh-btw 组合包:/btw 旁支提问卡片
├── style-extras/ dsh-style-extras 组合包:把 skins/sysmon/token-stats/btw/message-edit 收成一张卡片
├── message-edit/ dsh-message-edit 组合包:撤回 / 编辑已发送的用户消息
├── agent-team-plus/ 官方 Agent Teams 的 fork(上限 16 + release_teammate)
├── tools/ 不属于任何插件包的本机维护脚本
├── docs/ README 用的截图
├── LICENSE / THIRD-PARTY-NOTICES.md
└── .gitignore / .gitattributes
每个包目录都是自包含的:package.json(有 exports 时必须放开 ./locale/*.json)、
icon.svg、locale/{zh,en}.json、宿主半边与客户端半边、以及自己的 README 与自检脚本。
不属于任何插件包的维护脚本,不参与插件加载(不进 dsh.profile.bundles、不进 HMR root):
tools/readasar.cjs—— 从F:\dsh\resources\app.asar里读文件(list/cat/dump/grep)。 DSH 桌面端的前端产物与设计系统 token 都在 asar 里、仓库里没有源码;核对「官方到底用什么值」 (如--dsw-radius-md是 8 还是 12)时用它。asar 头是两层 pickle,数据区 = 8 + headerSize(照常见示例把readUInt32LE(4)当 jsonLen 会解析失败)。
- 行尾统一 LF:仓库级
core.autocrlf=false+.gitattributes的* text=auto eol=lf(系统级core.autocrlf=true会把库内 LF 改写成 CRLF)。 - 中文路径没问题:
core.quotepath=false。 - 改完跑对应包的自检;每次改动都提交,commit message 写清「改了什么 + 验证结果」。
- 视觉 / 前端改动优先看实机截图(无头渲染与真机有差异)。
本仓库原创部分:MIT(见 LICENSE)。
agent-team-plus/ 基于 DeepSeek 官方 MIT 包修改,保留上游声明(见
agent-team-plus/LICENSE、THIRD-PARTY-NOTICES.md)。
dsh-plugins is a collection of community plugins for DeepSeek Harness (DSH), a desktop AI-agent workbench. Nine self-contained packages, each with its own README, self-check scripts and hard-won gotchas:
dsh-memory (cross-session Markdown long-term memory + four tools) ·
dsh-pet (desktop pet overlay, 5 pets × 7 states) ·
dsh-skins (7 colour skins layered over the built-in light/dark themes) ·
dsh-sysmon (CPU ring + system panel) ·
dsh-token-stats (token usage heatmap / trend / model donut) ·
dsh-style-extras (bundle card for skins + sysmon + token-stats + pet + btw + message-edit) ·
dsh-btw (side-question card; answers never enter the transcript, no tools) ·
dsh-message-edit (retract / edit already-sent user messages; in-place native editor) ·
dsh-agent-team-plus (fork of the official Agent Teams with a member cap of 16 and a
release_teammate tool).
Install any package with plugin_manager → install_bundle pointing at its absolute
directory, then restart the desktop app for client-side plugins. Requires DSH ≥ 0.2.0.
Licensed MIT; agent-team-plus retains DeepSeek's upstream MIT notice.
- DSH 插件生态总入口:https://github.com/topics/dsh-plugin
- 姊妹仓库(数学建模团队预设包):https://github.com/OrinVoss/dsh-math-team



















