Skip to content

About

酒馆资源管家:集中管理 SillyTavern 的角色卡/世界书/预设/美化/脚本——内容识别分类、无损编辑、写前自动备份、酒馆只读托管与导出副本。Windows 桌面应用(.NET 10 + WPF/WebView2,无构建链前端)。

Topics

Resources

Code of conduct

Contributing

Security policy

Stars

1 star

Watchers

0 watching

Forks

Latest commit

 

History

53 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

TavernVault 图标 酒馆资源管家 (TavernVault)

集中管理 SillyTavern(酒馆)资源的 Windows 桌面应用:角色卡、世界书、预设、美化主题、脚本——不再散落在文件夹里翻找。

.NET 平台 协议 CI

关于本项目:这是一个个人学习项目,用于练习桌面应用的搭建与管理(架构、迭代、测试、安全、打包分发)。功能随自用需求推进,想提需求也可以提(应该没有);仓库已开放,欢迎交流,借鉴,提出改进建议。

它解决什么问题

  • 散乱 → 有序:把卡/书/预设扔进一个文件夹,按文件内容(而非文件夹名)自动识别分类;已有散乱目录可用「收纳入库」一键整理建库
  • 酒馆资源看得见、管得住:本机 SillyTavern / TauriTavern 的资源目录接入为只读托管——实测直接改文件会被酒馆的内存缓存回写覆盖,因此编辑酒馆资源的可靠路径是「导出副本 → 编辑 → 酒馆自带导入写回」
  • 改过不迷路:应用内改过的每个文件都有「修改历史」可查;每次覆盖写入前自动备份,坏了能还原
  • 外部改动自动可见:库目录文件监视自动重扫,酒馆侧的增删改数秒内反映到界面,免手动扫描

功能总览

资源与库

  • 内容识别分类:递归扫描按内容识别 8 类——角色卡(PNG 内嵌 chara/ccv3 或 V1/V2/V3 JSON)、世界书、预设、美化、脚本、文本、压缩包、其他
  • 三逻辑库:局外存储 / SillyTavern / TauriTavern 独立浏览,各库独立的类型分类与子目录导航
  • 收纳入库:散乱文件夹按内容识别后批量复制进库的类型子目录(源目录不动、可选移动、重名自动序号)
  • 酒馆接入:一键探测本机酒馆,把 characters / worlds / OpenAI Settings / themes / regex 注册为只读托管库根
  • 新建文件:6 类官方格式空白模板,创建即进入编辑器;重名自动序号

编辑器

  • 角色卡:表单编辑常用字段,保存写回 PNG 内嵌数据块(chara + ccv3 一次同步、图像字节级保留)或 JSON(同步根级镜像字段);备用开场白与标签
  • 角色卡内嵌世界书:data.character_book 逐条编辑,Spec V2 与 ST 内部格式读取统一转换、写入保形合并
  • 世界书:条目增删改;entries 数组/对象容器保形(NovelAI / Spec V2 导出读写不损坏);内嵌书合入——独立世界书一键追加进卡片内嵌书(与导出互为反向)
  • 预设可视化:采样参数中文总览、生效顺序拖拽排序、新增/删除提示词(系统项防误删)、角色分组切换、提示词全文与统计
  • 通用原文编辑:美化 / 脚本 / 文本带 JSON 校验与格式化;全部编辑器支持另存为(自动命名、重名序号)

自动化与整理

  • 文件监视自动重扫:库目录的新增/修改/删除(含酒馆侧改动)防抖自动入索引,界面数秒自动刷新
  • 修改历史:应用内保存 / 还原 / 重命名 / 移动过的文件按最近写入倒序,点击直达详情
  • 文件操作:重命名、跨库根移动(自动建目录)、删除进系统回收站、资源管理器定位
  • 备份与还原:覆盖写入前自动备份;备份位置可自定义(现有备份自动迁移);酒馆源强制备份、保留份数更高

安全与可靠

  • 酒馆只读托管:酒馆来源禁止就地编辑与重命名/移动(明确确认可 force);写前强制备份
  • 本地服务隔离:Kestrel 只监听 127.0.0.1;API 需随机会话令牌;Host 头白名单防 DNS rebinding
  • 数据透明:库设置显示数据目录真实路径并可一键打开;设置损坏留档、索引留 .bak
  • 我的标签 / 收藏:随索引持久化,重命名/移动自动迁移

快速开始

方式一(推荐,免装环境):从 Releases 下载 TavernVault-win-x64(自包含单文件,Win10/11 自带 WebView2 即可运行;也可自行执行下方的 publish 命令生成)。

方式二(源码构建):

dotnet build TavernVault.slnx -c Release
./src/TavernVault.App/bin/Release/net10.0-windows/TavernVault.exe

打包命令与产物说明见 docs/quick-reference.md;无窗口服务模式(调试/脚本):加 --server --port=<端口>;便携模式(数据随程序目录,拷贝即用):加 --portable。

首次配置三件事(都在界面里):

  1. 「库设置」登记资源文件夹;或用「收纳入库」从散乱文件夹一键整理建库
  2. 要管理酒馆资源就点「接入酒馆」自动探测注册
  3. 要改酒馆里的资源:详情页「导出副本」→ 编辑副本 → 酒馆自带导入写回

工作原理

核心链路:TypeDetector 内容识别 → LibraryScanner 增量索引(未变化条目毫秒级复用)→ JsonNode 无损编辑(未知字段永不丢失)→ 写前备份 → 索引增量更新。

技术栈:.NET 10 + ASP.NET Core (Kestrel 本地 REST API) + WPF/WebView2 外壳 + 原生 HTML/CSS/JS 前端(无 npm、无构建链,改完即生效)。架构与流程图集见 docs/architecture-visualization.md,完整原理与数据格式见 docs/development-handoff.md。

测试与质量

dotnet test TavernVault.slnx -c Release   # 单元 93 + 集成 16(真实 Kestrel + 隔离临时库,永不触碰真实库)
node tests/preset-model.test.mjs          # 预设写回纯函数 18(无框架,退出码即结果)
python tests/smoke_api.py                 # API 冒烟 207(先以 --server 模式起服务,见文件头说明)

GitHub Actions 每次 push / PR 自动执行构建与全部测试(.github/workflows/ci.yml)。

安全模型要点

  • 一切文件操作限制在已登记库根内;删除走回收站;覆盖写入前备份、失败显性告警不静默
  • 下载的卡/预设视为不可信内容:界面插值全量 HTML 转义、文件名派生经清洗(无法写出库根)、扫描跳过 junction/符号链接
  • 会话令牌恒定时间比对;单实例 Mutex 按数据目录隔离;请求体上限防自锁
  • 完整威胁模型与审计报告:docs/full-audit-v0.5.0.md 与开发文档安全章节

文档

文档 内容
docs/development-handoff.md 权威技术文档:架构、核心原理、API 参考、数据格式、开发历程、路线图全清单
docs/architecture-visualization.md 架构与流程图集(Mermaid)
docs/quick-reference.md 开发速查:命令 / API / 数据格式坑 / 故障排查 / 文档维护约定
docs/full-audit-v0.5.0.md 全面安全与质量审查报告
docs/st-sync-feasibility.md 酒馆接入可行性分析(含实测修订:为何只读托管)
项目结构 见开发文档 §2「关键文件索引」
数据位置 默认 %APPDATA%\TavernVault;库设置内可查看并一键打开

版本历程

版本 主题
v1.0.0 首个正式版:发布门禁(隐私全量审计 + git 历史重写脱敏)+ 仓库公开 + Release 自包含包
v0.7.x 预设可视化三期 → 酒馆只读托管+导出副本 → 自动重扫 → 收纳入库 → 集成测试+CI → 内嵌书合入 → 便携模式 → 应用图标(明亮简约·翠绿文件夹叠卡,明细见开发文档 §9.1)
v0.6.x 格式对齐(5 类模板分类回撤)+ 新建文件 + 自包含打包
v0.5.x 安全与可靠性加固系列:会话令牌、备份加固、编辑器重构、UI 清单、奥卡姆修剪
v0.4.x 酒馆接入、多库管理、三逻辑库、手风琴布局
v0.1–v0.3 初版 → 内嵌世界书 → 另存为与备份 → 预设可视化一二期的打磨

路线图

完整的已完成 / 未完成 / 已砍掉清单见 docs/development-handoff.md §11。v1.0.0 已发布,仓库已公开——当前无排期队列,改进方向见下方自评与开发文档推迟池。

图标

应用图标由 tools/gen_icon.py 生成(明亮简约风:翠绿文件夹 = 资源管理,内叠双卡探出 = 角色卡/世界书/预设三类核心资源;深→浅四层阶绿)。单一几何源同时产出 .ico(exe + 窗口,256→16 共 7 档,小尺寸自动省略细节)与网页 favicon(SVG + PNG)。候选筛选用 tools/icon_candidates.py(10 个设计 + 深浅底 + 小尺寸退化对比)。改配色或造型后重跑脚本即可再生。

许可证

本项目以 MIT License 开源——个人学习项目,可自由使用、修改与再分发,需保留版权与许可声明。 SillyTavern 等第三方工具的名字与数据格式归其各自作者所有;本程序管理的资源文件版权归用户自己。

项目自评:优点与不足

v1.0.0 发布之际的多面复盘——技术选型、实现方式、工程实践与短板,供后来者与未来的自己参考。

优点

  1. 技术栈务实:.NET 10 + Kestrel 本地 REST + WPF/WebView2 外壳 + 原生 HTML/CSS/JS 前端。桌面壳借 Web 技术做 UI(暗色主题、复杂编辑器布局都好写),却没有 npm、没有构建链——改完即生效;后端直接复用 ASP.NET Core 的路由 / JSON / 日志成熟生态。
  2. 分层清晰可复用:Core(扫描、内容识别、卡书读写、备份)与 App(宿主、API、前端)严格分离,Core 零 UI 依赖——理论上可直接喂给 CLI 或托盘形态,不必动核心逻辑。
  3. 数据安全是第一公民:JsonNode 无损编辑(用户文件的未知字段永不丢)、覆盖写入前自动备份 + 原子写(tmp+replace)、409 编辑并发防护、内容驱动识别不靠目录名——管理的是用户的创作资产,丢一个字段都是事故。
  4. 本地工具按"不可信内容"设计:会话令牌 + Host 白名单防 DNS rebinding、界面插值全量 HTML 转义、文件名清洗防路径逃逸、扫描跳过 junction、请求体上限防自锁——单用户本地应用做到了服务级的威胁模型,且有完整审计报告存档。
  5. 测试金字塔完整:93 单元 + 18 预设纯函数 + 16 集成(进程内起真实 Kestrel + 隔离临时库,永不触碰真实用户库)+ 207 冒烟 + GitHub Actions 全自动;"冒烟不得有桌面副作用""同一数据目录可重复跑全绿"等铁律来自真实事故复盘。
  6. 文档即知识库:权威技术文档(原理/API/数据格式/踩坑/开发历程)+ README 维护约定注释(新功能描述写到哪有明确答案)+ 架构图集 + 可行性分析存档——AI 深度协作开发的知识沉淀,任何人接手不必翻聊天记录。
  7. 真实使用驱动 + 砍得下手:功能优先级由 70+ 真实资源的使用反馈决定(只读托管、修改历史、自动重扫都是实测痛点倒逼);奥卡姆复审敢砍——首启向导、5 类模板分类回撤,服务端合入端点当版引入当版移除。

不足与改进方向

  1. 单机单用户假设:备份在本地磁盘,盘坏即失;无云同步、无增量快照、无端到端加密的异地容灾。
  2. 规模上限未实测:JSON 全量解析进内存,万级资源库的扫描耗时与内存占用没有数据;缩略图全量生成、无淘汰策略。
  3. 无框架前端的长期代价:editor.js 已 3000+ 行(拆分排入推迟池)、无类型检查、无组件隔离、无 UI 自动化测试(浏览器实跑靠手)——再加大功能,维护成本会陡增。
  4. 格式覆盖有边界:PNG 卡仅写 tEXt 内嵌(zTXt/iTXt 只读不写);非官方魔改格式靠回落识别,可能落"文本"类而不损坏。
  5. 平台锁定 Windows:WPF/WebView2 无法跨平台;换壳(Avalonia / Tauri)时 Core 层理论可复用但从未验证。
  6. 发布工程薄弱:无代码签名(SmartScreen 会警告未知发布者)、无自动更新通道、版本号靠手改 csproj。

About

酒馆资源管家:集中管理 SillyTavern 的角色卡/世界书/预设/美化/脚本——内容识别分类、无损编辑、写前自动备份、酒馆只读托管与导出副本。Windows 桌面应用(.NET 10 + WPF/WebView2,无构建链前端)。

Topics

Resources

Code of conduct

Contributing

Security policy

Stars

1 star

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages