导入 SillyTavern 角色卡并自动拆分建工作区
32.8/100
综合分
1
GitHub 星标
—
npm 周下载
—/5
用户评分
数据截至 2026/10/1 · 周下载取自 npm 全网(含 CI / 镜像),非本站安装数;综合分由星标、活跃度与兼容性检查合成。
自动兼容检查有告警:未发布到 npm registry,仅可从源码安装。
安装命令 · 需先装 dsh CLI 引擎
dsh plugin --profile web add xiagaogaozi/dsh-silly-plugin该包不可直接 npm 安装,改从 GitHub 源安装(明细见下方安装检查)
状态速览
判定依据:实装验证 · 静态安装检查 · 自动扫描 · 仓库维护状态信任档位:仅索引
是什么
dsh 原生插件 · other
安全吗
本站尚未对该插件做风险分级
暂未覆盖,不等同于无风险
还在维护吗
更新放缓:最近一次提交在 81 天前
档位由哪些信号合成
本站实装验证(真实安装 L4 覆盖全站;L5 为运行时冒烟或实机截图,覆盖范围小于 L4) · 验证所用 dsh 版本 · 静态安装检查 · 风险分级 · 仓库维护状态。 下方各区块是它的证据明细。
社区实装还没有人打卡 · 装过的第一个就是你
安装兼容性检查⚠ 装前注意未发布到 npm registry,仅可从源码安装
展开查看检查明细 ↓
以下结论由程序自动检查 npm 包、engines 声明与入口文件得出,未做人工实机验证——能装不等于用着没问题。
✗npm 包dsh-tavern-mode(未发布到 npm,仅可源码安装)
✓Node 引擎要求 >=20 · 基线 Node 22.19 满足
✓dsh CLI 依赖未声明 dsh 版本约束
✓入口文件main/exports/bin 已声明
验证方式:npm registry 存在性 + package.json 静态校验 · 最后检查 2026/10/16 13:43:25
安全扫描自动 · 静态分析源码v2.7.0🔵 扫描:含敏感能力尚无人工评估展开查看扫描说明与证据 ↓
安全扫描自动 · 静态分析源码
v2.7.0静态扫描发现插件具备触达本地系统的能力:执行外部命令、读写/删除本地文件、读取剪贴板或密钥类环境变量(至少其一)。这是能力清单,不是危险判定——具体能力项与证据见下方,安装前请自行判断是否需要。
读写/删除本地文件发起外部网络请求
查看扫描证据(共 27 处,展示前 23 条)
- 发起网络请求lib/client.js:17
const response = await fetch(`/tavern/api/${method}`, { - 读取本地文件e2e-check.js:6
const buf = fs.readFileSync('D:/github/deepseektavern/character-cards/COC7th通用KP主持卡.png') - 读取本地文件e2e-check.js:32
const wb = JSON.parse(fs.readFileSync('D:/github/deepseektavern/character-cards/世界书-COC7th通用KP主持卡.json', 'utf8')) - 写入本地文件e2e-check.js:40
fs.mkdirSync(wsDir, { recursive: true }) - 写入本地文件e2e-check.js:41
fs.writeFileSync(wsDir + '/card.json', JSON.stringify({ name: json.data.name, system_prompt: json.data.system_prompt }, null, 2)) - 写入本地文件e2e-check.js:42
fs.writeFileSync(wsDir + '/world.json', JSON.stringify(mergedWorld, null, 2)) - 写入本地文件e2e-check.js:43
fs.writeFileSync(wsDir + '/regex.json', JSON.stringify(ext.regex_scripts || [], null, 2)) - 写入本地文件e2e-check.js:44
fs.mkdirSync(wsDir + '/scripts', { recursive: true }) - 写入本地文件e2e-check.js:47
if (s.content) fs.writeFileSync(wsDir + '/scripts/' + base + '.js', s.content) - 读取本地文件e2e-check.js:50
console.log(' 文件:', fs.readdirSync(wsDir).join(', ')) - 读取本地文件e2e-check.js:51
console.log(' scripts:', fs.readdirSync(wsDir + '/scripts').join(', ')) - 读取本地文件e2e-check.js:52
const card = JSON.parse(fs.readFileSync(wsDir + '/card.json', 'utf8')) - 读取本地文件png2json.js:142
const buf = fs.readFileSync(src) - 写入本地文件png2json.js:158
fs.writeFileSync(out, JSON.stringify(json, null, 2), 'utf8') - 读取本地文件split-card.js:46
const json = JSON.parse(fs.readFileSync(src, 'utf8')) - 写入本地文件split-card.js:54
fs.mkdirSync(path.join(outDir, 'regex'), { recursive: true }) - 写入本地文件split-card.js:55
fs.mkdirSync(path.join(outDir, 'world'), { recursive: true }) - 写入本地文件split-card.js:56
fs.mkdirSync(path.join(outDir, 'scripts'), { recursive: true }) - 写入本地文件split-card.js:76
fs.writeFileSync(path.join(outDir, 'card.json'), JSON.stringify(card, null, 2), 'utf8') - 读取本地文件split-card.js:117
if (fs.existsSync(cand)) { - 读取本地文件split-card.js:119
const wb = JSON.parse(fs.readFileSync(cand, 'utf8')) - 写入本地文件split-card.js:136
fs.writeFileSync(path.join(outDir, 'world', 'world.json'), JSON.stringify(mergedWorld, null, 2), 'utf8') - 写入本地文件split-card.js:138
fs.writeFileSync(
扫描于 2026/11/3(0 天前) · 范围 入口闭包 + 发布文件清单 · 来源 GitHub 仓库
静态扫描只反映源码中出现的调用,不构成安全背书;人工评估与自动扫描相互独立、互不覆盖。
依赖的 DSH / Cordis 模块
@deepseek-ai/cordis@deepseek-ai/dsh-client-locale@deepseek-ai/dsh-client-runtime@deepseek-ai/dsh-client-ui-slots@deepseek-ai/dsh-client-web-react@deepseek-ai/dsh-typert-protocol@deepseek-ai/dsh-fs@deepseek-ai/dsh-session@deepseek-ai/dsh-workspace@deepseek-ai/dsh-settings给这个插件打分还没有人投票↓
用户评分
还没有人投票,来当第一个
功能亮点
- 导入角色卡
- 拆分世界书正则脚本
- 创建同名工作区
DSH 酒馆模式:导入 SillyTavern 角色卡(PNG/JSON),自动拆分世界书/正则/脚本并创建同名工作区(#dsh-plugin)
README
由 DeepSeek 最新模型翻译生成酒馆模式(Tavern Mode)— DSH 角色扮演扩展
让 DeepSeek Harness 具备 SillyTavern 风格的角色扮演玩法。
文件清单
| 文件 | 说明 |
| png2json.js | 工具:角色卡 PNG → JSON(解析 tEXt chunk 中的 chara/ccv3,支持 base64 包裹) |
| split-card.js | 工具:角色卡 JSON → 四部分拆分(本体 / 世界书 / 正则 / 酒馆助手脚本),自动合并外部引用世界书 |
| tavern-host.js | 插件 Host 半源码(与运行中 pkg-5 一致) |
| tavern-client.js | 插件 Client 半源码(与运行中 pkg-5 一致) |
| e2e-check.js | 端到端验证脚本(模拟导入链路) |
当前功能(pkg-4,运行中)
1. 总开关:设置 → 酒馆模式 → "启用酒馆模式"。真开关:关闭时 Host 拒绝所有业务 RPC。
2. 导入角色卡:页面内点击(弹系统文件选择器,在电脑里选文件)或直接拖拽文件到虚线区域。支持 PNG / JSON / Lorebook。
展开完整文档(README 剩余 1 节)
酒馆模式(Tavern Mode)— DSH 角色扮演扩展
让 DeepSeek Harness 具备 SillyTavern 风格的角色扮演玩法。
文件清单
| 文件 | 说明 |
| png2json.js | 工具:角色卡 PNG → JSON(解析 tEXt chunk 中的 chara/ccv3,支持 base64 包裹) |
| split-card.js | 工具:角色卡 JSON → 四部分拆分(本体 / 世界书 / 正则 / 酒馆助手脚本),自动合并外部引用世界书 |
| tavern-host.js | 插件 Host 半源码(与运行中 pkg-5 一致) |
| tavern-client.js | 插件 Client 半源码(与运行中 pkg-5 一致) |
| e2e-check.js | 端到端验证脚本(模拟导入链路) |
当前功能(pkg-4,运行中)
1. 总开关:设置 → 酒馆模式 → "启用酒馆模式"。真开关:关闭时 Host 拒绝所有业务 RPC。
2. 导入角色卡:页面内点击(弹系统文件选择器,在电脑里选文件)或直接拖拽文件到虚线区域。支持 PNG / JSON / Lorebook。
- 选中的文件内容以 base64 传给 Host → 解析 → 四部分拆分 → 写入工作区 → 注册
- 结果卡片显示:绑定世界书个数 / 正则条数 / 脚本个数 / 工作区路径
- 导入成功后自动建同名工作区并跳转(打开该工作区会话),也可点"打开工作区 →"
工作区结构
导入角色卡后,自动创建同名工作区(~/.dsh/tavern-characters/<角色名>/,注册到 harness 工作区列表):
~/.dsh/tavern-characters/<角色名>/ ├── card.json # 本体角色卡(name/description/scenario/first_mes/...) ├── world.json # 世界书(含自动合并的外部引用) ├── regex.json # 正则脚本列表 └── scripts/ # 酒馆助手脚本(.js + .meta.json)
样式约定
所有 UI 颜色只使用 harness 主题 token(--dsw-alias-*),不自创视觉。
Host RPC 接口(Client → Host,Package 私有)
| method | 参数 | 返回 |
| tavern:get | — | { enabled } |
| tavern:set | { enabled } | { enabled } |
| tavern:import-card | { fileName, base64 } | { ok, cardName, workspacePath, workspaceId, worldNote[], worldMerged, regexCount, scriptCount }(未启用拒绝) |
服务(供后续功能包读取)
- tavernMode(Host):isEnabled() / setEnabled(v) / getCharactersRoot()
- 后续功能(正则注入、HTML 渲染、快捷回复等)在 apply 时先检查 tavernMode.isEnabled(),未开启则不注册。
使用流程
1. 设置 → 酒馆模式 → 打开总开关
2. 点击虚线区域(或拖拽角色卡文件进去)
3. 系统文件选择器选角色卡(PNG / JSON)
4. 自动建同名工作区并跳转;结果卡片显示世界书 / 正则 / 脚本数量
命令行工具用法
PNG → JSON
node tavern-plugin/png2json.js character-cards/xxx.png
JSON → 四部分拆分(自动合并外部世界书)
node tavern-plugin/split-card.js character-cards/xxx.json
已知边界
- 动态插件不持久:进程重启后需重新 define/run。源码已落盘,后续可改造成持久 agent preset 或正式插件。
- PNG 解析支持 tEXt chunk(含 base64 包裹 JSON),zTXt/iTXt 暂不支持。
- 世界书若为外部引用(extensions.world 为字符串),需把同名文件(世界书-<名>.json / <名>.json)放入 character-cards\ 才能自动合并。预览分享卡片长什么样 ↓
分享 · DeepSeek Harness Hub
xiagaogaozi/dsh-silly-plugin
导入 SillyTavern 角色卡并自动拆分建工作区
相关插件 · 其他
模型破甲清洗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
这是你的仓库?认领条目