MUV 变量表格编辑器:树形变量面板、宏测试浮窗(random/pick/roll)、骰子快捷栏与 pick 缓存管理。dsh-muv-engine 的伴生插件。
安装
# npm 包(预构建)
dsh plugin --profile web add dsh-muv-table
# GitHub 源码(首次需按提示配置 allowBuilds 构建授权后重试)
dsh plugin --profile web add github:chen731215-dev/dsh-muv-table
装任何插件都等于在你的机器上跑第三方代码,权限和你本人一样大——能读你的文件、用你的凭据、访问网络,工具审批管不到它。GitHub 来源的插件还会在安装时执行构建脚本——pnpm 默认拦截,所以安装可能停在 ERR_PNPM_GIT_DEP_PREPARE_NOT_ALLOWED 或 ERR_PNPM_IGNORED_BUILDS;dsh 会打印出需要添加的确切键名,把它加进该 profile 的 pnpm-workspace.yaml 的 allowBuilds 下,重跑一次即可装上。放行构建本身就是一次信任判断:请只安装可信来源,并尽量锁定 commit(github:owner/repo#sha)。
README
📊 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": {
"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
链接
同类插件
zhu1090093659/dsh-web#packages/dsh-task-board★ 9673
侧边栏多列任务看板:卡片交给真实 DSH 智能体会话执行,支持 cron 定时(Host 侧到点执行,关浏览器也生效)。
zhu1090093659/dsh-web#packages/dsh-web-all★ 9673
DSH Web UI 插件与皮肤合集:任务看板、git 图、右侧面板、远程移动端 UI、桌宠、实时 token 统计与皮肤中心。
MeteorNOX/DeepSeek-Balance-Whale-Widget★ 6324
右下角常驻的小鲸鱼挂件:余额、今日已用与每轮对话消耗(含峰谷价),余额预警与今日预算的泡泡内容都可编辑;泡泡点击序列模块化自定义,支持并列加权 A/B、随机台词与随机图片;内置 30+ 厂商模板(OpenAI / OpenRouter / Kimi / 硅基流动 / 方舟 / 智谱 / MiniMax 等),按模型查余额与订阅额度;另有任务结束音效、导入音频、自定义角色与资源管理。数据全在本机,无遥测。
ccch1mneyyy/dsh-TUI★ 6018
Claude Code 风格全屏终端 UI:像素鲸鱼顶栏、实时工作状态行、思考流式展开。
omdsh-dev/DSH-better-sidebar★ 4645
侧边栏完整工作台:内置文件渲染编辑、终端、Git 与子代理,支持三方插件注册新 Tab。
Devin-AXIS/deepseek-design#deepseek-idesign★ 1607
可视化设计工作室,支持网站、App 原型、海报、信息卡、报告和杂志的模板创建、元素编辑、选区级 AI 草稿衔接与导出。
社区评论
评论公开保存在 GitHub Discussions。加载评论会连接 GitHub 和 Giscus;发表内容需要 GitHub 账号。