把 DeepSeek Harness 变成一个 RPG 工作台:每次完成一个对话回合就获得经验值,升级、解锁成就、保持每日连击,右下角浮动的游戏面板实时展示你的战绩。

Game-ify your DeepSeek Harness usage — earn XP per completed conversation turn, level up, unlock achievements and keep daily streaks, with a floating RPG dashboard in the web UI.

声明在前:这个插件是我本人开发的,已经开源放出来供大家随意使用(MIT 协议)。仓库地址:https://github.com/Jay-R-J/dsh-rpg-workstation。下面把它的安装、用法、公式和架构一五一十讲清楚,照着做就能让你的 DSH 也变成 RPG 工作台。

如果你已经读过我之前那篇 DeepSeek Harness 上手全攻略,应该对”插件即一行声明”这套 Cordis 哲学不陌生了。dsh-rpg-workstation 这个插件,就是把这套哲学用在一个特别有意思的方向上——给你的 AI 工作台加一层游戏化外壳。

说白了,它不改变 DSH 的任何原有能力,只是在右下角给你长出一个浮动面板:你跟 AI 每聊完一个回合就涨经验,工具用得多有加成,连续每天聊有连击加成,攒够经验升级,解锁成就,称号从”新手”一路爬到”传说”甚至”圆满”。原本枯燥的”再让它改一版”变成了”再升一级”,特别能治”提不动需求”的拖延症。


环境要求

在装之前,先把基础环境对齐:

依赖版本说明
Node.js>= 18构建与运行
DeepSeek Harness CLI任意较新版本必须先全局安装(npm install -g @deepseek-ai/dsh),否则 dsh plugin 等命令不存在
DeepSeek Harnessweb profile插件面向 dsh web 界面

关键点:这个插件是面向 web 界面的,TUI / headless 模式下不会显示面板(事件逻辑仍然会跑,但你看不到)。所以使用场景就是浏览器里开 dsh web。


安装

前置:先全局安装 dsh 命令行工具

没有它就没有 dsh plugin / dsh web 这些命令:

1
npm install -g @deepseek-ai/dsh

如果这步已经做过(前面那篇攻略里就装过),直接跳到下一步。

一条命令安装本插件

1
dsh plugin --profile web add dsh-rpg-workstation

dsh plugin add 会自动把包加入 profile 层叠(包声明了 dsh.bundle.patch),无需手写补丁——这是 DSH 插件机制的好处之一,省掉手动改 cordis.patch.yml 的麻烦。

重启 dsh web

安装完成后必须重启 dsh web,界面右下角才会出现 RPG 面板:

1
2
# 先 Ctrl+C 停掉旧的 dsh web 进程,然后重新启动
dsh web

卸载

不想要了就一条命令走人:

1
dsh plugin --profile web remove dsh-rpg-workstation

原理速记:dsh 的 profile 由一层层补丁拼装。cordis.patch.yml 里的 - insert: 是标准补丁写法,id 是该行的稳定句柄,name 是 loader 要解析的 npm 包名(必须先装进 profile 的 node_modules)。客户端 bundle 由 dsh 的 dsh.client 字段扫描自动打包,所以 lib/ 产物 + dsh 两个字段就够用了,不用自己写打包配置。


使用方法

面板挂在界面右下角(shell.overlay 插槽),一切都是自动的——聊着聊着就攒经验,完全不用主动点按钮。

怎么得分

做什么得到什么
正常对话 / 让 AI 干活每完成一个回合 +10 XP;回合内每调用一次工具额外 +2 XP(单回合加成上限 +20)
连续每天对话保持连击;3 / 7 / 30 天时 XP 分别乘以 1.1 / 1.25 / 1.5
完成每日任务每完成一个任务 +20 XP(次日刷新)
达到里程碑(5 / 10 / 15 级)升级提示切换为专属文案
解锁 14 个成就称号变为「圆满」,卡片出现高亮彩蛋

面板交互

操作效果
单击面板头部折叠或展开主体
按住头部拖动把面板移动到屏幕任意位置(至少保留 8 px 在屏幕内,防止拖丢)
单击成就圆点那一行展开详情区(可键盘聚焦 + Enter / Space 切换)
点击「导出」按钮(详情区底部)下载当前存档为 rpg-data-YYYY-MM-DD.json
点击「导入」按钮(详情区底部)选择之前导出的 JSON 文件,替换当前存档(导入成功后下一次轮询自动刷新面板)

详情区里有什么

展开详情区后可以看到这些区块:

  • 今日任务:对话达人、工具狂人、保持连击,每个显示进度和奖励状态;
  • 签到日历:最近 7 个自然日,活跃日实心,今天画品牌色外框;
  • 本周报告:7 根柱状图(以 XP 为高度、活跃日实心、周末半透),下方汇总 7 日总回合数和总 XP;
  • 统计:累计工具调用、累计文件写入、今日回合数;
  • 成就列表:14 个成就逐行列名称、说明、解锁状态;
  • 存档:导出和导入按钮。

功能一览

把核心能力列一遍,心里有个数:

  • 经验与等级 — 每回合 (10 + min(20, 工具数 × 2)) × 连击加乘;level = floor(sqrt(xp/100)) + 1
  • 连击加乘 — 连击 3 / 7 / 30 天 → XP × 1.1 / × 1.25 / × 1.5
  • 14 个成就 — 对话数、等级、工具调用、文件写入、连击、单日回合、深夜 / 清晨各成一档
  • 每日任务 — 对话达人 / 工具狂人 / 保持连击,每完成一个 +20 XP,次日刷新
  • 称号系统 — 新手 → 学徒 → 冒险者 → 勇者 → 大师 → 传说(全成就时为「圆满」)
  • 每周报告 — 最近 7 个自然日柱状图(以 XP 为高度)+ 周汇总
  • 存档导出 / 导入 — 一键下载 rpg-data-YYYY-MM-DD.json;导入走与加载相同的归一化路径(旧版或手改存档不会留下 undefined / NaN 空洞)
  • 全成就彩蛋 — 14 个成就全部解锁的瞬间,称号变为「圆满」,卡片描边与标题切换为品牌色,并弹出一行停留更久的提示
  • 持久化 — 保存在 ~/.dsh/rpg-data.json(尊重 DSH_HOME 环境变量),原子写入 + 串行队列,进程崩溃不损坏存档
  • 界面克制 — 使用宿主主题变量(浅色 / 深色自动适配)、无 emoji 噪音、支持 prefers-reduced-motion

最后一条挺关键:它不抢戏。面板用的是宿主的主题变量,深色浅色自动跟,没有花里胡哨的 emoji 堆砌,对减少动画偏好的用户也友好。


架构

了解架构有助于你判断”这个插件能改到什么程度”以及”它会不会动到我别的会话”。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
+-- Host (Node.js) -------------------------------------------+
| apply(ctx) |
| +-- ctx.on('session/event') -> turn/end(completed) |
| | -> registerCompletedTurn() (+XP, 连击, 成就, 任务) |
| | -> updateWeekHistory() (按活跃日累计周历史) |
| | -> saveSoon() (timer.debounce + dispose) |
| +-- webServer.register x 3 |
| +-- /rpg-workstation/state.json -> computeSnapshot |
| +-- /rpg-workstation/export -> 原始存档 JSON |
| +-- /rpg-workstation/import -> normalize + 落盘 |
+---------------------------+---------------------------------+
| 同源 fetch(纯 JSON)
+-- Client (Browser) -------v---------------------------------+
| apply(ctx) |
| +-- styles 注入 style.css(命名空间隔离,不污染宿主) |
| +-- slots.inject('shell.overlay') |
| -> <Dashboard/> 每 2s 轮询 |
| +-- 等级/称号/经验条/连击/每日任务/周报/成就 |
| +-- 存档导入/导出按钮 |
| +-- 升级轻提示 + 圆满彩蛋 |
+--------------------------------------------------------------+

对照前一篇攻略里讲的”动态插件分宿主半 / 客户端半”模型,这个插件的架构完全是标准结构:

  • Host 面(src/index.ts)负责后端:监听会话事件、算分、落盘、状态 / 导出 / 导入三个路由。
  • Client 面(src/client/)负责界面:插槽注册、样式注入、轮询渲染。

两端只交换纯 JSON,通过同源 fetch 通信,没有跨进程 RPC。这也是为什么它能稳定常驻——通信链路简单,不容易出问题。


玩法公式

想精打细算刷 XP 的,把公式记牢:

项目公式
每回合经验(基础 +10 + 工具加成 min(20, 工具数 × 2)) × 连击加乘(仅 turn/end 且 reason.kind === 'completed' 时计入)
连击加乘连击 3 / 7 / 30 天 → × 1.1 / × 1.25 / × 1.5
等级level = floor(sqrt(xp / 100)) + 1
升下一级阈值level² × 100(xpAtLevel(level + 1))
当前级跨度(2 × level - 1) × 100(进度条分母)
连击当天首次对话 → 1;连续每天 → +1;中断一天 → 归零
称号1-2 新手 / 3-4 学徒 / 5-6 冒险者 / 7-9 勇者 / 10-14 大师 / 15+ 传说;全成就时覆盖为「圆满」
行为统计累计工具调用(tool/call 事件)、文件写入(write / edit 工具)、今日回合数

几个值得注意的细节

等级公式是开根号,不是线性。 早期升级很快,到中后期越来越慢——这是 RPG 经典设计,让你前几级尝到甜头,后面靠连击加成和每日任务维持动力。

连击加成是乘法不是加法。 30 天连击直接 ×1.5,相当于每回合 XP 半价。所以保持每天聊一句比某天猛聊要划算得多。

工具加成上限是 +20。 也就是说一个回合里调 10 次以上工具,加成封顶。设计上鼓励你让 AI 真正干活(多调工具),但也不鼓励故意刷工具调用。

“完成回合”才计分。 半途取消、报错中断的不算。这是防刷机制——你得让对话真正完成,才有收益。


License

MIT 协议,可以放心用于个人和商业场景。


我的玩法建议

装上之后,我自己摸索出的几个习惯,给你参考:

  1. 早上第一件事先跟它打个招呼。不是为了什么正经活,就是保连击。一句话也算一个回合,+10 XP 到手,30 天连击保住。

  2. 把”让 AI 帮你做”当成默认选项。以前小改个文件还自己手敲,现在统一甩给 AI——不光省事,工具调用多了 XP 也涨得快(每个工具 +2 XP 呢)。

  3. 每日任务当成 todo list 用。”对话达人”、”工具狂人”这三个任务,本质就是提醒你今天有没有真正用上 DSH。完成了就有 +60 XP(3 × 20),相当划算。

  4. 到了 14 级再追求全成就。等级成就自然推进就行,工具调用 / 文件写入这种是”用着用着就有了”的。真正要刻意追求的是”深夜档”和”清晨档”——如果你不是夜猫子或早起党,这两个成就可能要专门熬一次。

  5. 每周一看周报。7 根柱状图能直观看出你这周哪天聊得多、哪天偷懒了。比单纯的”今日回合数”更有反馈价值。


与前作的呼应

如果你读过 DeepSeek Harness 上手全攻略,再回头看这个插件,会发现它正好印证了攻略里讲的几个核心机制:

  • “一行插件”哲学:装它就一条命令,不需要改源码、不需要重启整个 dsh(只需重启 web 进程);
  • shell.overlay 插槽:攻略里提到”插槽是界面里能塞 UI 的位置”,这个面板就挂在 shell.overlay 上,是 DSH 预留的”右下角浮层”位置;
  • 宿主 / 客户端两半架构:Host 管事件和数据,Client 管界面,标准结构;
  • 版本不可变 + 审批:虽然是 dsh plugin add 装的正式插件(不是动态插件),但同样走”补丁层叠 + bundle 自动打包”的标准流程。

所以这个插件不光好玩,它本身就是一个学习 DSH 插件开发的优质样例。如果你想自己写插件,扒一遍它的源码会比看文档更有用。


关于这个插件

dsh-rpg-workstation 是我自己写、自己用的项目,最初就是为了治自己用 DSH 时的”启动拖延症”——给一层数字反馈,聊一句就有 +10 XP 到手,心理门槛立刻低一半。写完发现效果不错,索性整理成标准插件开源出来,希望对同样想给 DSH 加点动力反馈的朋友有用。

  • GitHub 仓库:https://github.com/Jay-R-J/dsh-rpg-workstation(源码、Issue、PR 都欢迎)
  • 协议:MIT,可随意用于个人和商业场景
  • 安装:dsh plugin --profile web add dsh-rpg-workstation 一条命令搞定
  • 存档:本地 ~/.dsh/rpg-data.json,纯 JSON 可导入导出,数据完全归你

用着有问题、有想加的成就或面板功能,欢迎去 GitHub Issues 反馈。后续我会根据实际使用情况持续迭代,比如加更多每日任务类型、周报导出 Markdown、成就之间互相联动之类的玩法。Star 一下是对作者最好的鼓励。


更新时间: 2026-08-17
作者: Jay


作者本人开发并开源(GitHub 仓库),MIT 协议。愿你的 DSH 工作台早日「圆满」。