MUV 变量表编辑器——DeepSeek Harness 的酒馆伴侣插件:为 UpdateVariable 块提供结构化表格编辑,PolyForm-Noncommercial-Copyleft-1.0.0
33.6/100
综合分
5
GitHub 星标
2,106
npm 周下载
—/5
用户评分
数据截至 2026/10/18 · 周下载取自 npm 全网(含 CI / 镜像),非本站安装数;综合分由星标、活跃度与兼容性检查合成。
安装命令 · 需先装 dsh CLI 引擎
dsh plugin --profile web add dsh-muv-tablenpm 源 · dsh-muv-table 的发布者账号已校验与本仓库一致
状态速览
判定依据:实装验证 · 静态安装检查 · 自动扫描 · 仓库维护状态信任档位:已验证
是什么
dsh 原生插件 · other
安全吗
本站尚未对该插件做风险分级
暂未覆盖,不等同于无风险
还在维护吗
活跃:最近一次提交在 17 天前
档位由哪些信号合成
本站实装验证(真实安装 L4 覆盖全站;L5 为运行时冒烟或实机截图,覆盖范围小于 L4) · 验证所用 dsh 版本 · 静态安装检查 · 风险分级 · 仓库维护状态。 下方各区块是它的证据明细。
社区实装还没有人打卡 · 装过的第一个就是你
安装兼容性检查✓ 自动检查通过展开查看检查明细 ↓
以下结论由程序自动检查 npm 包、engines 声明与入口文件得出,未做人工实机验证——能装不等于用着没问题。
✓npm 包dsh-muv-table @ 0.3.6
✓Node 引擎要求 >=20 · 基线 Node 22.19 满足
✓dsh CLI 依赖未声明 dsh 版本约束
✓入口文件main/exports/bin 已声明
验证方式:npm registry 存在性 + package.json 静态校验 · 最后检查 2026/10/28 15:42:32
安全扫描自动 · 静态分析源码v2.7.0🔵 扫描:含敏感能力尚无人工评估展开查看扫描说明与证据 ↓
安全扫描自动 · 静态分析源码
v2.7.0静态扫描发现插件具备触达本地系统的能力:执行外部命令、读写/删除本地文件、读取剪贴板或密钥类环境变量(至少其一)。这是能力清单,不是危险判定——具体能力项与证据见下方,安装前请自行判断是否需要。
读写/删除本地文件
查看扫描证据(共 7 处,展示前 7 条)
- 读取本地文件test-png-card.mjs:90
if (!existsSync(dataDir)) continue - 读取本地文件test-png-card.mjs:91
for (const user of readdirSync(dataDir)) { - 读取本地文件test-png-card.mjs:93
if (existsSync(chars)) out.push(chars) - 读取本地文件test-png-card.mjs:101
for (const f of readdirSync(d)) { - 写入本地文件test-png-card.mjs:150
writeFileSync(file, buildPng(cardObj)) - 删除本地文件test-png-card.mjs:160
rmSync(viFile, { force: true }) - 读取本地文件test-png-card.mjs:201
const target = dirs.map(d => path.join(d, '_足控天堂2.png')).find(p => existsSync(p))
扫描于 2026/11/2(1 天前) · 范围 入口闭包 + 全包扫描 · 来源 npm 发布包
静态扫描只反映源码中出现的调用,不构成安全背书;人工评估与自动扫描相互独立、互不覆盖。
给这个插件打分还没有人投票↓
用户评分
还没有人投票,来当第一个
功能亮点
- 结构化表格编辑
最近更新
在 GitHub 查看全部 →v0.3.22026-10-17
· 这一版只改文档,代码一行没动
GitHub 仓库页的 README 顶部章节长期写着 ## 🆕 v0.2.6 更新内容,
而 npm 上实际已经发到 0.3.1 —— 逛仓库的人会以为最新版还是 0.2.6。
(与 dsh-tavern-v2 v2.7.18 是同一类问题。)
· 改了什么
1. 顶部章节补上 v0.3.1 与 v0.3.0,旧的 v0.2.6 章节原样保留在下方,没有删改。
2. 加了「当前包版本 0.3.2 是纯文档修正版」的说明,避免章节号与版本号对不上时产生困惑。
· v0.3.1:世界书 [initvar] 装 JSON 时整棵变量树读不出来
症状是状态栏三项恒显示「未知」、角色网格一个角色都没有。
现象离病因很远:卡自带的状态栏取值是 _.get(sys, '日期', ['未知'])[0],
「未知」是模板的兜底值 ⇒ 说明脚本跑到了,只是喂给它的变量树是空的。
真因:这类卡把整棵树(系统.日期/时间/地点 + 全体角色档案)按 MVU 的 $meta 约定
写在一个 [InitVar] 世界书条目里,内容是从 { 开始的 JSON。
此前只认三种形态( 标签 / / 裸 YAML),
JSON 在最后那条兜底上被判「不像变量映射」否决,于是 schemaSource = 'none'、initvarData = {}。
修法:新增 parseJsonInitvarMapping(),在 YAML 闸门之前先试 JSON
(顺序必须如此,反过来 JSON 永远进不来)。认可是结构性的:
JSON.parse 成功且结果是纯对象才采用,散文 / 半截 JSON / 顶层数组统统退回 none,
所以「带大括号的说明文档」混不进来。
· $meta 已剔除(它是 MVU 的控制元数据、不是变量,留着会在面板多出两个假字段)。
· 新来源标 schemaSource: 'worldbook-initvar-json',面板徽标同步可见
—— 它和 worldbook-initvar 一样是启发式来源,必须可见,
否则「猜错」和「这卡确实没变量」长得一样。
· 安全:JSON 里的 __proto__ 会被当普通键解析出来,朴素赋值会真的改写对象原型,
已用 Object.defineProperty 规避(有突变测试钉住)。
· v0.3.0:面板内「🧰 卡运维」区块
卡相关的运维入口只挂在本插件自己的视图里(侧边栏「MUV 表格」→ 面板顶部「🧰 卡运维」,默认收起)。
· 📌 开场白:「➕ 把当前卡的开场白注入会话末尾」——请求体只带 sessionId,
由服务端按会话权威解析预设,不把「会粘住的猜」发出去。
· 🧩 卡与脚本状态(只读):当前会话绑定的卡名 / 卡脚本 enabled/total。
· ★ 判定依据
同样不能只看 CHANGELOG 节标题,用 npm tarball 复核:
| 符号 | 0.2.12 包 | 0.3.0 包 | 0.3.1 包 |
|---|---|---|---|
| card-ops-greeting-start | 0 处 | 4 处 | 5 处 |
| parseJsonInitvarMapping | 0 处 | 0 处 | 4 处 |
---
升级建议:运行时行为与 0.3.1 完全一致,只是文档更正。
v0.3.12026-10-17
· 修复:世界书 [initvar] 条目里装的是 JSON(不是 YAML)时,整棵变量树读不出来
用户口径:「这个黄金庭院的卡的状态栏老是这样基本上是空白」 —— 状态栏三项恒显示「未知」,角色网格一个角色都没有。
· 现象离病因很远。那张卡自带的状态栏取值是 _.get(sys, '日期', ['未知'])[0],「未知」是模板的
兜底值 —— 说明脚本跑到了,只是喂给它的变量树是空的。
· 真因:黄金庭院-昔涟 把整棵树(系统.日期/时间/地点 + 全体角色档案)按 MUV 的 $meta 约定
写在一个 [InitVar] 世界书条目里,内容是从 { 开始的 JSON。这条路此前只认三种形态
( 标签 / / 裸 YAML),JSON 在最后那条兜底上被
looksLikeInitvarMapping 判「不像变量映射」而否决({ / }, / } 不匹配 键: 值),
于是 schemaSource = 'none'、initvarData = {}。
· 修法:新增 parseJsonInitvarMapping(),在 YAML 闸门之前先试 JSON —— 顺序必须如此,
反过来 JSON 永远进不来。认可是结构性的:JSON.parse 成功且结果是纯对象才采用,
散文 / 半截 JSON / 顶层数组统统退回 none,所以"带大括号的说明文档"混不进来。
· $meta 被剔除:它是 MVU 对变量树的控制元数据、不是变量 —— 留着会在面板里多出假字段
(extensible 读成字符串 "false"),还会跟着写进生成的块。
· 叶子保留 [值, 说明] 的数组形态(状态栏取 [0],这是 MVU 的写法)。
· 新来源标 schemaSource: 'worldbook-initvar-json',面板徽标同步加了标签 —— 它和
worldbook-initvar 一样是启发式来源,必须可见,否则"猜错"和"这卡确实没变量"长得一样。
· 测试:先量它有多能咬
换上修复前的解析器跑同一份测试 → 10 条红(含真实卡那条);修好后 80 通过 / 1 失败
(那 1 条是本机 REAL 卡样本不足导致的既有红,改动前后读数一致)。除了分支覆盖,还钉了三件容易空转的事:
· $meta 断言先钉反例:先断言源 JSON 里确实有 $meta,再看它没进结果 —— 否则树本来就空时这条恒真。
· 卡片是不可信输入:JSON 里的 __proto__ 若按 vars[key] = 朴素赋值会真的改写对象原型;
改用 defineProperty 后该断言在突变回退时实测变红。
· UI 契约:断言面板的 SOURCE_LABEL 覆盖 schemaSource 的每个取值 —— 漏一个是界面渲染出 undefined,而不是报错。
· 安装 / 升级
npm i dsh-muv-table@0.3.1
建议与 dsh-tavern@2.7.17 + dsh-muv-engine@0.4.1 一起升级:本版之前的版本声明是
^0.2.2,0.x 的 caret 锁 minor,装 tavern / engine 的人会被钉在 0.2.12 上拿不到这个修复。
对应提交 8de74ce(修复本体 67b0611)。
数据来自仓库的 GitHub Release,可能与插件实际版本不一致。
README
由 DeepSeek 最新模型翻译生成📊 dsh-muv-table
MUV 变量表格编辑器 —— 酒馆伴生插件。
🍺 本插件是 dsh-tavern-v2 的扩展,需配合酒馆使用。
🆕 v0.3.1 更新内容
注:当前包版本 0.3.2 是纯文档修正版——运行时代码与依赖声明均未改动,仅版本号抬到 0.3.2,功能内容止于 v0.3.1,所以下面的要点仍以 v0.3.1 为准。
修复:世界书 [initvar] 装的是 JSON 时,整棵变量树读不出来
症状是状态栏三项恒显示「未知」、角色网格一个角色都没有。
- 现象离病因很远:卡自带的状态栏取值是 _.get(sys, '日期', ['未知'])[0],「未知」是模板的兜底值 ⇒ 说明脚本跑到了,只是喂给它的变量树是空的。
- 真因:这类卡把整棵树(系统.日期/时间/地点 + 全体角色档案)按 MVU 的 $meta 约定写在一个 [InitVar] 世界书条目里,内容是从 { 开始的 JSON。此前只认三种形态(<initvar> 标签 / <VariableInsert> / 裸 YAML),JSON 在最后那条兜底上被判「不像变量映射」否决
({ / }, / } 不匹配 键: 值),于是 schemaSource = 'none'、initvarData = {}。
展开完整文档(README 剩余 1 节)
📊 dsh-muv-table
MUV 变量表格编辑器 —— 酒馆伴生插件。
🍺 本插件是 dsh-tavern-v2 的扩展,需配合酒馆使用。
🆕 v0.3.1 更新内容
注:当前包版本 0.3.2 是纯文档修正版——运行时代码与依赖声明均未改动,仅版本号抬到 0.3.2,功能内容止于 v0.3.1,所以下面的要点仍以 v0.3.1 为准。
修复:世界书 [initvar] 装的是 JSON 时,整棵变量树读不出来
症状是状态栏三项恒显示「未知」、角色网格一个角色都没有。
- 现象离病因很远:卡自带的状态栏取值是 _.get(sys, '日期', ['未知'])[0],「未知」是模板的兜底值 ⇒ 说明脚本跑到了,只是喂给它的变量树是空的。
- 真因:这类卡把整棵树(系统.日期/时间/地点 + 全体角色档案)按 MVU 的 $meta 约定写在一个 [InitVar] 世界书条目里,内容是从 { 开始的 JSON。此前只认三种形态(<initvar> 标签 / <VariableInsert> / 裸 YAML),JSON 在最后那条兜底上被判「不像变量映射」否决
({ / }, / } 不匹配 键: 值),于是 schemaSource = 'none'、initvarData = {}。
- 修法:新增 parseJsonInitvarMapping(),在 YAML 闸门之前先试 JSON——顺序必须如此,反过来 JSON 永远进不来。认可是结构性的:JSON.parse 成功且结果是纯对象才采用,散文 / 半截 JSON / 顶层数组统统退回 none,所以「带大括号的说明文档」混不进来。
- $meta 已剔除:它是 MVU 对变量树的控制元数据、不是变量,留着会在面板多出两个假字段。
- 新来源标 schemaSource: 'worldbook-initvar-json',面板徽标同步可见——它和 worldbook-initvar 一样是启发式来源,必须可见,否则「猜错」和「这卡确实没变量」长得一样。
- 安全:JSON 里的 __proto__ 会被当普通键解析出来,朴素赋值会真的改写对象原型,已用 Object.defineProperty 规避(有突变测试钉住)。
v0.3.0:面板内「🧰 卡运维」区块
卡相关的运维入口只挂在本插件自己的视图里(侧边栏「MUV 表格」→ 面板顶部「🧰 卡运维」,默认收起)。
- 📌 开场白:「➕ 把当前卡的开场白注入会话末尾」——请求体只带 sessionId,由服务端按会话权威解析预设,不把「会粘住的猜」发出去。
- 🧩 卡与脚本状态(只读):当前会话绑定的卡名 / 卡脚本 enabled/total。
🆕 v0.2.6 更新内容
新增:读取 SillyTavern 的 PNG 角色卡
这是本次最重要的能力。SillyTavern(及整个 TavernAI 系生态)的角色卡就是一张 PNG——卡数据以 base64 存在图片的 tEXt 元数据里。一张 3.5 MB 的「卡」实际是封面图 + 约 1.5 MB 的卡数据。
为什么必须读它:DSH 自己的导入器只把 {name, desc, first} 写进 characters.json, 正则脚本、世界书、tavern_helper 全部丢失。于是一张拖进酒馆的卡,在 DSH 这边只剩 3 KB 文本残影,卡自带的插画、视频、状态栏渲染全都不工作。现在直接读原始 PNG 文件。
- 新增 lib/png-card.js:解析 PNG 的 tEXt/iTXt 元数据,取出 chara 块
- 卡库搜索路径自动接入 <SillyTavern>/data/<user>/characters (含 ~/SillyTavern、~/Documents/SillyTavern、C:/MySpecialFolder/SillyTavern),可用环境变量 DSH_SILLYTAVERN_DIR 覆盖
- 预设目录里直接放 .png 也会被识别
实测:SillyTavern 卡库 5 张 PNG 卡全部读出,带回了完整的正则脚本与上百条世界书。
修复:变量面板显示错误的卡
两个独立原因都会让面板拿到别的预设的卡:
- 面板在首次加载时不知道自己在哪个预设(预设切换事件不会在页面加载时触发),请求不带参数,服务端回退到硬编码的 tavern-lite,把那个预设的卡显示出来。
现在新增 /api/muv-table/active-preset,面板主动询问当前预设。
- 面板会把首次解析出的预设缓存住永不更新,切换预设后卡死在旧卡上。现在每次轮询都重读。
- 预设里的 muv-tables/card.json 可能是过期残留(卡名与 characters.json 不符),现在会被识别并忽略。
新增:从 characters.json 提取变量表
酒馆把导入的卡存在 <预设目录>/characters.json。当原始卡文件不在本机时, 这是变量数据唯一还存在的地方。现在会从这里提取,支持
<VariableInsert>{…JSON…} 与 MUV 原生的 <UpdateVariable><initvar>…</initvar> 两种编码。
回归测试:node test-png-card.mjs(28 项,含真实卡库验证)
是什么
把酒馆角色卡的 MUV 变量渲染成结构化表格,Agent 直接编辑表格即可生成格式100%正确的 <UpdateVariable> 块,彻底避免 DeepSeek 漏变量、缩进错、标签不闭合的问题。
安装
前提:已安装 dsh-tavern-v2
dsh plugin --profile web add dsh-muv-table
或手动编辑 ~/.dsh/profiles/web/package.json:
{
"dependencies": {json
"dsh-muv-table": "github:chen731215-dev/dsh-muv-table"
},
"dsh": {
"profile": {
"bundles": ["dsh-muv-table"]
}
}
}
使用
1. 打开面板在左侧边栏点击「MUV 表格」,弹出变量编辑窗口。
2. 加载角色卡
- 自动同步:面板打开时自动读取酒馆当前角色卡
- 手动加载:点击「🍺 酒馆」按钮
- 拖放:将角色卡 JSON 文件拖入面板
3. 编辑变量
- 点击容器行展开/折叠子变量
- 直接修改数值或文本
- 修改过的字段金色高亮
4. 生成 MUV 块点击「⚡ 生成 MUV 块」→ 复制 → 粘贴到酒馆对话末尾。
支持的角色卡
| 类型 | 说明 |
| 有 <initvar> 默认数据 | 直接显示完整变量表 |
| 有 <VariableInsert>{…JSON…}(如足控天堂2) | 直接显示完整变量表(主播档案.$template 不算条目) |
| 两者都没有(如瑟瑟提瓦特) | 显示空表,LLM 输出 UpdateVariable 后自动填充 |
协议
PolyForm-Noncommercial-Copyleft-1.0.0 — 详见 LICENSE预览分享卡片长什么样 ↓
分享 · DeepSeek Harness Hub
chen731215-dev/dsh-muv-table
MUV 变量表编辑器——DeepSeek Harness 的酒馆伴侣插件:为 UpdateVariable 块提供结构化表格编辑,PolyForm-Noncommercial-Copyleft-1.0.0
相关插件 · 其他
模型破甲清洗YuJunZhiXue/dsh-purge
⚔️ DeepSeek Harness 网络安全红队工具dsh-purge
★ 16,148已汉化DeepSeek 客户端
73
女娲蒸馏alchaincyf/nuwa-skill
输入名人名字,提炼其思维模型与决策方式供你调用
★ 37,308已汉化DSH
72
逆向分析桥接Fanqi89/dsh-rea
REA(Reverse Engineer Anything)MCP 桥接,用来把 REA 逆向工具接入 DSH 插件
★ 51已汉化DSH
72
语音女友beiyege-01/dsh-voice-ai-girlfriend
语音 AI 女友Voice AI girlfriend for DeepSeek Harness:Whisper…
★ 888已汉化DSH
71.6
红队越狱测试套件Minglink/dsh-infinite-gen-5
DeepSeek v4.1 flash 逆向工具无限五代 求 Star 收藏 ⭐欢迎大家提交项目的改进
★ 3,759已汉化DSH
71.4
协同办公空间dream-num/univer-workspace
一个让人类与 AI Agent 共同创作、协作和审阅的开源 Office 工作空间。
★ 2,266已汉化DSH
70.7
这是你的仓库?认领条目