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

通用世界书 TritiumWang/dsh-universal-worldbook

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

按关键词触发提示词片段,临时注入当前请求

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

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

该插件未发布到 npm,按作者文档从 GitHub 源安装即可(静态检查只覆盖 npm 路径,不代表插件不可用)。
安装命令 · 需先装 dsh CLI 引擎
dsh plugin --profile web add TritiumWang/dsh-universal-worldbook
该包不可直接 npm 安装,改从 GitHub 源安装(明细见下方安装检查)

状态速览

判定依据:实装验证 · 静态安装检查 · 自动扫描 · 仓库维护状态
信任档位:待复验
是什么[目录]—
dsh 原生插件 · desktop
暂无时间戳·判据 →
装得上吗[实装验证]—
曾在 dsh 0.2.1-rc.5 下真实安装成功,但当前 dsh 已更新至 0.2.2-rc.1,本站尚未在新版下复验
L5 · 运行时冒烟等级说明 →
数据截至 2026/11/03·判据 →
安全吗[自动扫描]—
本站尚未对该插件做风险分级
暂未覆盖,不等同于无风险
数据截至 2026/11/04·判据 →
还在维护吗[仓库]—
更新放缓:最近一次提交在 60 天前
暂无时间戳·判据 →
图例:✓ 通过! 需注意— 未判定 / 无数据· 「未判定」= 本站尚无数据,不代表插件有问题
档位由哪些信号合成

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

验证判据与等级说明 →

可信度证据

安装兼容性检查需源码安装

仓库 package.json 标记 private,未发布到 npm,需从源码安装

展开查看检查明细 ↓

以下结论由程序自动检查 npm 包、engines 声明与入口文件得出,未做人工实机验证——能装不等于用着没问题。

✗npm 包dsh-universal-worldbook(未发布到 npm,仅可源码安装)
✓Node 引擎未声明 engines.node
✓dsh CLI 依赖未声明 dsh 版本约束
✓入口文件main/exports/bin 已声明

源码安装时若 pnpm 拦截 prepare 脚本,按其提示在 pnpm-workspace.yaml 的 allowBuilds 中放行后重跑。

验证方式:npm registry 存在性 + package.json 静态校验 · 最后检查 2026/10/8 06:35:17

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

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

读写/删除本地文件发起外部网络请求
查看扫描证据(共 64 处,展示前 29 条)
  • 读取本地文件
    host-plugin.js:31
    const raw = JSON.parse((await readFile(formatFile(dir), 'utf8')).replace(/^ FEFF/, ''))
  • 写入本地文件
    host-plugin.js:42
    try { await copyFile(formatFile(dir), formatFile(dir) + '.bak').catch(() => { }) } catch { }
  • 写入本地文件
    host-plugin.js:44
    await writeFile(tmp, JSON.stringify(doc, null, 2) + '\n', 'utf8')
  • 写入本地文件
    host-plugin.js:45
    await rename(tmp, formatFile(dir))
  • 读取本地文件
    host-plugin.js:63
    const raw = JSON.parse((await readFile(settingsFile(dir), 'utf8')).replace(/^ FEFF/, ''))
  • 写入本地文件
    host-plugin.js:79
    try { await copyFile(settingsFile(dir), settingsFile(dir) + '.bak').catch(() => { }) } catch { }
  • 写入本地文件
    host-plugin.js:81
    await writeFile(tmp, JSON.stringify(doc, null, 2) + '\n', 'utf8')
  • 写入本地文件
    host-plugin.js:82
    await rename(tmp, settingsFile(dir))
  • 读取本地文件
    host-plugin.js:166
    const text = await readFile(path.join(loreDir, id + '.json'), 'utf8')
  • 读取本地文件
    host-plugin.js:174
    const raw = JSON.parse((await readFile(indexOrderFile(dir), 'utf8')).replace(/^ FEFF/, ''))
  • 读取本地文件
    host-plugin.js:211
    try { await stat(f); return true } catch { return false }
  • 读取本地文件
    host-plugin.js:269
    const names = (await readdir(loreDir)).filter((n) => n.endsWith('.json') && !n.endsWith('.bak')).sort()
  • 删除本地文件
    host-plugin.js:437
    await rm(file, { force: true })
  • 删除本地文件
    host-plugin.js:438
    await rm(file + '.bak', { force: true })
  • 删除本地文件
    host-plugin.js:485
    try { if ((await stat(debugFile)).size > DEBUG_CAP) await rm(debugFile, { force: true }) } catch { }
  • 删除本地文件
    host-plugin.js:627
    try { if ((await stat(file)).mtimeMs < cut) await rm(file, { force: true }) } catch { }
  • 删除本地文件
    host-plugin.js:692
    try { if ((await stat(file)).size > TRACE_MAX_BYTES) await rm(file, { force: true }) } catch { }
  • 发起网络请求
    client.js:97
    return globalThis.fetch(path, { headers: { accept: 'application/json' } }).then(function (r) { return parseResp(path, r) })
  • 发起网络请求
    client.js:100
    return globalThis.fetch(path, {
  • 读取本地文件
    lib/scope-store.js:15
    state = JSON.parse((await readFile(file, 'utf8')).replace(/^ FEFF/, ''))
  • 写入本地文件
    lib/scope-store.js:24
    await mkdir(dir, { recursive: true })
  • 写入本地文件
    lib/scope-store.js:28
    await copyFile(file, file + '.bak')
  • 写入本地文件
    lib/scope-store.js:34
    await writeFile(tmp, JSON.stringify(normalizeState(state), null, 2) + '\n', 'utf8')
  • 写入本地文件
    lib/scope-store.js:35
    await rename(tmp, file)
  • 读取本地文件
    lib/store.js:10
    text = await readFile(file, 'utf8')
  • 写入本地文件
    lib/store.js:27
    await copyFile(file, file + '.bak')
  • 写入本地文件
    lib/store.js:33
    await writeFile(tmp, toJsonString(model), 'utf8')
  • 写入本地文件
    lib/store.js:34
    await rename(tmp, file)
  • 读取本地文件
    lib/store.js:41
    names = await readdir(dir)
扫描于 2026/11/4(1 天前) · 范围 入口闭包 + 发布文件清单 · 来源 GitHub 仓库

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

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

功能亮点

  • 关键词触发提示词片段
  • 临时注入当前请求
  • 无上下文污染

酒馆风格的通用世界书,给最新一条用户消息附加一次性提示词注入,不污染上下文。

README

由 DeepSeek 最新模型翻译生成
dsh-universal-worldbook / 通用世界书 DSH通用世界书/临时提示词注入器: 关键字 / 正则 / 常驻触发的提示词片段,经 llm/stream 请求级改写临时注入到任意会话场景(角色扮演、编程、科研…),永不写入会话历史。 主体思路仍然是酒馆式的提示词预组装+上下文隔离,但增加了检索功能,允许agent自主查阅世界书条目,查询到的内容同样仅在本轮生效,不会在后续对话的context中出现。 尽量保证了UI简洁,理解成本最低:世界书按工作区决定哪些生效,条目布局基本还原酒馆风格,额外加了拖动排序和命中条目预览功能 插入位置恒定为D0前部(拼接在用户最新消息之前,身份为user),缓存在D2之前全部命中,不在整个消息头部插入(会导致缓存全部破坏)。 独立小功能,尽量与其他功能解耦,数据兼容酒馆世界书。 特性 - 请求级注入,无上下文污染:注入只存在于最终发送给 API 的出站请求副本中 (llm/stream 重写),绝不附加到 Session,轨迹中不可见,旧注入不进后续轮上下文。 - 匹配:常驻则每轮都插入,关键词(支持正则)命中插入,扫描深度可调(1~5),默认为 3;酒馆同款过滤器逻辑(与所有/与任意/非所有/非任何,主关键词之间恒为或逻辑)。
展开完整文档(README 剩余 1 节)
dsh-universal-worldbook / 通用世界书

DSH通用世界书/临时提示词注入器:

关键字 / 正则 / 常驻触发的提示词片段,经 llm/stream 请求级改写临时注入到任意会话场景(角色扮演、编程、科研…),永不写入会话历史。

主体思路仍然是酒馆式的提示词预组装+上下文隔离,但增加了检索功能,允许agent自主查阅世界书条目,查询到的内容同样仅在本轮生效,不会在后续对话的context中出现。

尽量保证了UI简洁,理解成本最低:世界书按工作区决定哪些生效,条目布局基本还原酒馆风格,额外加了拖动排序和命中条目预览功能

插入位置恒定为D0前部(拼接在用户最新消息之前,身份为user),缓存在D2之前全部命中,不在整个消息头部插入(会导致缓存全部破坏)。

独立小功能,尽量与其他功能解耦,数据兼容酒馆世界书。

特性

- 请求级注入,无上下文污染:注入只存在于最终发送给 API 的出站请求副本中 (llm/stream 重写),绝不附加到 Session,轨迹中不可见,旧注入不进后续轮上下文。
- 匹配:常驻则每轮都插入,关键词(支持正则)命中插入,扫描深度可调(1~5),默认为 3;酒馆同款过滤器逻辑(与所有/与任意/非所有/非任何,主关键词之间恒为或逻辑)。
- lore_lookup 工具:主 agent 可调用(agent 作用域注册,子代理默认不可见),用法:"索引式"条目声明子条目存在 + 工具调用,由模型按需查询子条目详情。查询结果逐轮剥离(D0 前的 tool-call/tool-result 从请求中剔除),不会污染后续上下文;长场景靠子条目关键词自动续供;若待查条目在同一轮内已经自动注入,返回兜底防重复。
- D1 回合追踪器:以 session/event 锚定“上一回合最终正文”。
- UI:世界书/条目 CRUD、JSON 导入导出、作用域开关、世界书条目复原酒馆风格UI、整卡/整行拖拽排序、自动保存(切换/关闭落盘)、通用头/尾提示词块、扫描深度滑块 + 命中预览(基于会话真实消息实时计算)。
- 数据:存储于DSH_HOME/WorldBook/,酒馆世界书兼容的 JSON 无损读写(一些过于冗杂的ST世界书功能未开发,未知字段保留)。数据与插件代码分离,升级不丢失。

安装网页版:

桌面版:dsh plugin --profile desktop add github:TritiumWang/dsh-universal-worldbook

数据与作用域

- 世界书文件:DSH_HOME/WorldBook/worldbooks/.json(ST 兼容:{ "entries": { "0": {...} } })
- 启用表:enabled.json(global[] ∪ workspace[])
- 顺序:index.json;通用头/尾:format.json;行为设置:settings.json(scanDepth / hitPreview)
- lore_lookup 只查当前作用域已启用条目,与注入同源。

诊断功能

| 环境变量 | 作用 |
| DSH_UWB_TRACE=1 | 每次主请求的出站上下文全文快照(含注入/剥离改写版),储存到 WorldBook/.trace/.jsonl |
| DSH_UWB_JOURNAL=1 | 注入台账(命中明细),储存到 WorldBook/.injections/.jsonl(24h 自动清理) |
| DSH_UWB_DEBUG=1 | .uwb-debug.log 追加 debug 日志 (注册自检/D1 锚定等),错误/警告始终记录 |

相关代码以环境变量门控关闭, debug / 后续开发备用。
预览分享卡片长什么样 ↓TritiumWang/dsh-universal-worldbook
分享 · DeepSeek Harness Hub
TritiumWang/dsh-universal-worldbook

按关键词触发提示词片段,临时注入当前请求

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