🎁 福利专区全网大模型免费应用 + 新用户福利 + 注册活动入口,低成本玩转 AI

AI 跑团 liuleo2538548-hash/dsh-trpg

DeepSeek Harness
liuleo2538548-hash19 天前有提交已提供中文文档扫描:含敏感能力

让 AI 当主持人,掷骰推进剧情并接受玩家贿赂套取情报

29.3/100
综合分
0
GitHub 星标
—
npm 周下载
—/5
用户评分

数据截至 2026/10/22 · 周下载取自 npm 全网(含 CI / 镜像),非本站安装数;综合分由星标、活跃度与兼容性检查合成。

安装命令 · 需先装 dsh CLI 引擎
dsh plugin --profile web add liuleo2538548-hash/dsh-trpg
该包不可直接 npm 安装,改从 GitHub 源安装(明细见下方安装检查)

状态速览

判定依据:实装验证 · 静态安装检查 · 自动扫描 · 仓库维护状态
信任档位:仅索引
是什么[目录]—
dsh 原生插件 · other
暂无时间戳·判据 →
装得上吗[实装验证]—
本站尚未做安装检查
暂无时间戳·判据 →
安全吗[自动扫描]—
本站尚未对该插件做风险分级
暂未覆盖,不等同于无风险
数据截至 2026/11/03·判据 →
还在维护吗[仓库]✓
活跃:最近一次提交在 19 天前
暂无时间戳·判据 →
图例:✓ 通过! 需注意— 未判定 / 无数据· 「未判定」= 本站尚无数据,不代表插件有问题
档位由哪些信号合成

本站实装验证(真实安装 L4 覆盖全站;L5 为运行时冒烟或实机截图,覆盖范围小于 L4) · 验证所用 dsh 版本 · 静态安装检查 · 风险分级 · 仓库维护状态。 下方各区块是它的证据明细。

验证判据与等级说明 →

可信度证据

安全扫描自动 · 静态分析源码
v2.7.0
🔵 扫描:含敏感能力尚无人工评估
展开查看扫描说明与证据 ↓

静态扫描发现插件具备触达本地系统的能力:执行外部命令、读写/删除本地文件、读取剪贴板或密钥类环境变量(至少其一)。这是能力清单,不是危险判定——具体能力项与证据见下方,安装前请自行判断是否需要。

读写/删除本地文件写入剪贴板(不计风险)发起外部网络请求
查看扫描证据(共 11 处,展示前 11 条)
  • 发起网络请求
    client/client.js:168
    const response = await fetch(path, init);
  • 发起网络请求
    client/client.js:210
    const response = await fetch(path, {
  • 写入剪贴板
    client/client.js:358
    navigator.clipboard.writeText(dump);
  • 写入本地文件
    lib/store.js:86
    mkdirSync(dirname(file), { recursive: true });
  • 写入本地文件
    lib/store.js:88
    writeFileSync(tmp, text, "utf8");
  • 写入本地文件
    lib/store.js:89
    renameSync(tmp, file);
  • 读取本地文件
    lib/store.js:111
    const text = readFileSync(this.file, "utf8");
  • 写入本地文件
    lib/store.js:121
    renameSync(this.file, `${this.file}.corrupt-${stamp}`);
  • 读取本地文件
    lib/store.js:169
    return normalizeScenarioDoc(JSON.parse(readFileSync(file, "utf8")));
  • 读取本地文件
    lib/store.js:188
    if (!existsSync(file)) return false;
  • 删除本地文件
    lib/store.js:190
    rmSync(file, { force: true });
扫描于 2026/11/3(1 天前) · 范围 入口闭包 + 发布文件清单 · 来源 GitHub 仓库

静态扫描只反映源码中出现的调用,不构成安全背书;人工评估与自动扫描相互独立、互不覆盖。

社区实装还没有人打卡 · 装过的第一个就是你
给这个插件打分还没有人投票↓
用户评分
还没有人投票,来当第一个

DeepSeek Harness 的 AI 桌面角色扮演插件:主持人吐槽、掷骰、贿赂情报、剧情自适应

README

由 DeepSeek 最新模型翻译生成
DSH TRPG — 给 DeepSeek Harness 的 AI 跑团插件 ⚠️ 使用时请小心。 非官方第三方插件,与 DeepSeek 官方无关。装上它会接管你的会话视图、调用你的模型账号、并在工作区之外写文件,卸载也不会自动清理它写下的存档。装之前请务必读完 ⚠️ 副作用与意外产物 这一节。 给 DSH(DeepSeek Harness)客户端加一个说人话的 GM:能读你的剧本、会吐槽、替你掷骰子、还能被玩家拿好处套出情报。 侧栏出现 🎲 AI 跑团,点开就是完整跑团面板。 面板截图 真实运行截图(不是效果图):战役「雨夜疑云」、属性条、进度钟、骰子 chip、GM 气泡与场外音、贿赂面板。 它做什么 | 功能 | 说明 | | 适应剧本 | 粘贴任意长度的剧本原文(Markdown 标题 / 第一章 / 【场景】 都认)。GM 只拿到一份摘要,不会照着剧本念,玩家走到哪它讲到哪;确认要找线索时会要求过检定。 | | GM 吐槽 | 自带 60+ 条中文单行吐槽库,按心情(8 种)与情境分类。GM 每回合开头给个情绪,吐槽会避开最近说过的,不会复读。强度 0~5 可调。 | | 骰子 | 1d100、2d6+1、4d6kh3 这类公式都能掷;带 COC 风格的检定(常规 / 困难 / 极难,奖励骰与惩罚骰),大成功与大失败有专门判定。
展开完整文档(README 剩余 1 节)
DSH TRPG — 给 DeepSeek Harness 的 AI 跑团插件

⚠️ 使用时请小心。 非官方第三方插件,与 DeepSeek 官方无关。装上它会接管你的会话视图、调用你的模型账号、并在工作区之外写文件,卸载也不会自动清理它写下的存档。装之前请务必读完 ⚠️ 副作用与意外产物 这一节。

给 DSH(DeepSeek Harness)客户端加一个说人话的 GM:能读你的剧本、会吐槽、替你掷骰子、还能被玩家拿好处套出情报。

侧栏出现 🎲 AI 跑团,点开就是完整跑团面板。

面板截图

真实运行截图(不是效果图):战役「雨夜疑云」、属性条、进度钟、骰子 chip、GM 气泡与场外音、贿赂面板。

它做什么

| 功能 | 说明 |
| 适应剧本 | 粘贴任意长度的剧本原文(Markdown 标题 / 第一章 / 【场景】 都认)。GM 只拿到一份摘要,不会照着剧本念,玩家走到哪它讲到哪;确认要找线索时会要求过检定。 |
| GM 吐槽 | 自带 60+ 条中文单行吐槽库,按心情(8 种)与情境分类。GM 每回合开头给个情绪,吐槽会避开最近说过的,不会复读。强度 0~5 可调。 |
| 骰子 | 1d100、2d6+1、4d6kh3 这类公式都能掷;带 COC 风格的检定(常规 / 困难 / 极难,奖励骰与惩罚骰),大成功与大失败有专门判定。 |
| 贿赂与情报 | 每个 NPC 可以有一件秘密。玩家给的东西够不够分量,由规则算分:金额与具体性加分,NPC 对你的态度加分,怀疑度与反复磨嘴皮子扣分。成交才会松口。 |
| 拟人 | GM 有自己的口吻与立场,会阴阳玩家、会不耐烦、会在大失败时嘲笑;但每句吐槽都必须把剧情往前推。 |

一条硬规矩

模型永远拿不到随机数。 骰点只能在服务端由 lib/dice.js 掷。模型想掷骰只能写 <<roll 1d100 dc=55>> 这样的指令,宿主解析后自己掷,再把结果写回叙述里。这样模型无法伪造成败,也骗不了玩家。

⚠️ 副作用与意外产物

请当成第三方代码跑在你的用户权限下来对待。以下是实际会发生的,不是理论风险:

会动你的东西

| 副作用 | 细节 | 怎么收拾 |
| 改你的 profile 清单 | scripts/install.mjs 会文本级改写 ~/.dsh/profiles/desktop/package.json:加一条 link: 依赖 + 一个 dsh.profile.bundles 条目。不做 JSON 重排版,但你的注释/顺序会被动。 | 它写前备份成 package.json.pre-dsh-trpg.bak(已存在则不覆盖);或 node scripts/install.mjs --uninstall |
| 在工作区外写文件 | 运行期在 ~/.dsh/dsh-trpg/ 写 state.json(全部战役、线报、账本)与 scenarios/<campaignId>.json(你导入的剧本原文)。这些不在你的仓库里,卸载插件也不会删。 | 面板里「导出 JSON」;或手动删目录 |
| 建 junction | 在 ~/.dsh/profiles/desktop/node_modules/dsh-trpg 建指向本仓库的 junction。仓库一旦被移动/删除,DSH 启动时这条 bundle 就加载失败。 | --uninstall 会摘掉它 |
| 残留坏档 | state.json 读坏时不会崩,而是改名留证成 state.json.corrupt-<时间戳> 再开空档。长期反复出问题会攒下一堆 .corrupt-。 | 手动删 |
| 会话视图被接管 | 面板注册在 main slot(replaceRisk: "shadows-shipped-ui"),打开时会替换掉整个会话视图。 | 面板左上角「← 返回会话」,或换侧栏项 |

会花你的钱 / 送出你的数据

- 调用你的模型账号:发一句话就走 DSH 的 llm.stream,用的是你在 DSH 里配的 provider 与 key。费用按你的账号结算。
- 送出去的内容:发给模型的上下文包含 —— 战役设定、当前场景、NPC 与线索、最近 80 条线报、你导入的剧本摘要。也就是说你粘进「剧本」框里的原文会有一部分进入模型请求。别粘机密材料,也别粘你没有权利外传的受版权保护的剧本。
- 提示词注入面:剧本原文是不可信输入。恶意剧本可以试着让模型越权(改写规则、假装骰点)。插件已经把随机数锁死在服务端,但模型仍然会照着剧本里的坏指令说话 —— 它骗不了骰子,不代表它不会骗你。

已知不完善

- 改代码后必须手动重启 DSH:插件源码模块不热重载(只有 profile 的 cordis.patch.yml 变化会触发重组)。你在源码里的修改不会即时生效。
- 界面上的文本输入无法被自动化驱动:Chromium 里的 React 受控 input 收不到合成键鼠事件。写自动化测试时别指望用模拟输入填表,直接打 HTTP 路由。
- 没有权限模型:任何能开这个面板的人都能删战役、清线报。它是单人桌面工具,不是多人服务器。
- 剧本解析是启发式的:认 Markdown 标题、第N章、【场景】。格式奇怪的长文可能只切出一节。切得不好就先手动加标题。
- 界面只画宿主算好的状态:所有规则在服务端,界面不重算 —— 这是为了不出两套真相,代价是改一处 UI 往往要连带动 lib/view.js。
- snark 与吐槽库是中文的:换语言得自己写库(lib/gm.js)。

它不会做的事

- 不会连任何第三方服务器(除了 DSH 自己配置的模型 provider)。
- 不会读你的会话历史、别的插件数据、或工作区里的其它文件。它只读写 ~/.dsh/dsh-trpg/。
- 不会自己升级、不会自己上传任何东西。

安装

装进 desktop profile(会加一条 link: 依赖 + 一个 bundle 条目,并备份原清单)
node scripts/install.mjs

只看看会改什么,不落盘
node scripts/install.mjs --dry-run

卸载bash
node scripts/install.mjs --uninstall

装好后刷新 DSH 的 Web 界面,侧栏会多一个 🎲 AI 跑团。

存档放在 ~/.dsh/dsh-trpg/(state.json 与 scenarios/);DSH_HOME 可覆盖。

本插件零第三方依赖,不需要 pnpm install。装法只有上面这一种 —— 它是本地 link: 安装,不走 npm registry。

怎么玩

1. 侧栏点 🎲 AI 跑团。
2. 战役 卡片:填名字、角色名、基调、前言 → 新建。
3. 剧本 卡片:把剧本原文粘进去 → 导入。目录、检索、读节都在这里。
4. 中间输入框说你要做什么("我撬开地下室的门")。GM 会流式回你,需要判定时自己掷骰并告诉你结果。
5. 骰子 卡片:想手动掷就掷,公式随便填。
6. 贿赂 卡片:选 NPC → 说要拿什么换 → GM 会演出谈判,并在结尾给出判定(成交 / 讨价还价 / 拒绝 / 不再谈)与怀疑度。
7. 谈成了,NPC 的秘密会以 【情报】 的形式进线报并落进账本。

返回会话:面板左上角的 ← 按钮,或按侧栏图标切换。

给模型的两条指令

GM 在回复里可以用这两行方括号指令,宿主会解析并执行,界面上不会显示它们:

<<mood ominous>> 心情:决定 GM 的说话口吻与表情 <<roll 1d100 dc=55 reason=撬锁>> 请求掷骰;dc 给了就判达成 <<bribe granted price=一瓶酒>> 贿赂判定(另见 /bribe 流程)

没闭合的 << 会被忽略(模型话说一半很正常),非法公式只报一条错误,不会毁掉整个回合。

目录结构

dsh-trpg/
├─ package.json # 零依赖;main/exports/dsh 三个块 ├─ cordis.patch.yml # bundle patch:一行 insert ├─ CONTRACT.md # 冻结契约(当初派活用的规格书) ├─ docs/screenshot.png # 真实运行截图 ├─ lib/ │ ├─ index.js # 宿主半:七条路由 + SSE │ ├─ schema.js # 存档唯一权威 + 全部上限与钳制 │ ├─ commands.js # 唯一写入权威:~30 条命令 │ ├─ store.js # 落盘(原子写 + 坏档隔离) │ ├─ dice.js # 骰子与检定 │ ├─ scenario.js # 剧本解析 / 摘要 / 检索 │ ├─ gm.js # GM 人格:吐槽库 + 指令解析 │ ├─ bribe.js # 贿赂判定策略 │ ├─ prompt.js # 提示词装配 │ └─ view.js # 派生视图(界面不重算) ├─ client/client.js # 浏览器半:plain IIFE,React.createElement ├─ scripts/ │ ├─ check.mjs # 静态契约检查 │ ├─ build.mjs # 无打包器"构建":语法校验 + 拷进 dist/ │ ├─ verify.mjs # 五步验收,全过打印 all steps passed │ └─ install.mjs # 装进 profile / 卸载 └─ test/ # 9 个测试文件,230 条用例

开发 bash
node scripts/verify.mjs # 五步验收(静态检查 → 构建 → 测试 → 产物 → 干跑安装)
node scripts/check.mjs # 只跑静态契约检查
node --test --experimental-test-isolation=none test/.test.js

verify 的五步:静态契约 → 逐文件语法检查 + 拷出 dist/ → 单元测试 → 校验 dist/ 产物 → 安装干跑。全过打印 all steps passed。当前 230 / 230 通过。

必须带 --experimental-test-isolation=none:本机沙箱里 Node 的测试运行器默认会给每个文件 spawn 子进程,直接 spawn EPERM。不带这个旗标时测试根本没被加载,看起来像"全绿"其实是空跑。

架构上的几条硬约束

这些都是踩过的坑,改代码前先看一眼:

1. 已安装 bundle 的 factory 只收到 require 一个参数,host.call 这类私有 JSON RPC 只对动态定义的包开放。所以浏览器半一律走自己的 HTTP 路由 + 普通 fetch。
2. 每条路由必须显式写 requestBody: "buffered"。漏写时共享 Fetch 层会把请求当 streaming,无 body 的 GET 会被构造成带 body 的 Request 并抛错 —— handler 根本不跑,浏览器收到空响应。check.mjs 会对每条路由校验这一点。
3. 每条 assistant 线报必须带 source: { kind:"model", provider, model },否则 dsh-llm 派发时读 message.source.replayState 会抛错。
4. 服务端是唯一写入权威:界面不能自己拼半个节点,一切变更走 applyCommand(state, command, ctx)。
5. 主题 token:填充用 --dsw-alias-button-primary-fill + 文字 --dsw-alias-label-primary-foreground。绝不要把 --dsw-alias-brand-primary 当背景 —— 它是 ink token(浅色近黑、深色近白),配白字在深色主题下对比度 1.05:1,完全看不见。

许可

MIT。见 LICENSE。
第三方插件,非 DeepSeek 官方作品,不含任何担保。装上它意味着你接受上面「副作用与意外产物」里写的全部行为。
预览分享卡片长什么样 ↓liuleo2538548-hash/dsh-trpg
分享 · DeepSeek Harness Hub
liuleo2538548-hash/dsh-trpg

让 AI 当主持人,掷骰推进剧情并接受玩家贿赂套取情报

这个插件是你维护的吗?
作者本人可认领并核对本条目;认领通过后,详情页会显示「作者已认领」标记。
认领条目 →
回到顶部