SillyTavern 中文菜单式控制台:一键启停酒馆并桥接生图 API
comedying/sillytavern-console
开源项目 comedying/sillytavern-console 为 SillyTavern 提供一个中文菜单式控制台,支持一键启动、停止、重启、查看状态与日志,并自动列出本机、局域网和 Tailscale 访问地址。
一个给 SillyTavern(酒馆)用的中文菜单式控制台: 一键启动 / 停止 / 重启 / 看状态 / 看日志,自动显示手机访问地址,并可选地把酒馆的生图请求 桥接到任意 OpenAI 兼容的生图 API。
┌──────────────────────────────┐
手机 / 平板 ──┐ │ 本机 (Windows) │
├── 局域网 / Tailscale ─┤ │
电脑浏览器 ──┘ │ :8000 SillyTavern (node) │
│ │ │
│ └─ 生图请求 │
│ ↓ │
│ :7861 sd-bridge ──> 生图 API │
└──────────────────────────────┘
特性
- 隐藏后台运行:以隐藏窗口方式启动
node server.js,不占任务栏、不挡视线 - 中文菜单控制台:启动 / 停止 / 重启 / 状态 / 日志 / 快捷方式 / 计划任务,一个界面全搞定
- 自动显示访问地址:本机回环、局域网 IP、Tailscale IP(装了 Tailscale 时)一次列清
- 桌面快捷方式:一键生成「Console / Start / Stop」三个
.lnk(图标取酒馆自己的 favicon) - 登录自启:可选注册计划任务,登录 Windows 后自动把酒馆(和生图桥)拉起来
- 生图桥(可选):把酒馆的「Stable Diffusion Web UI (AUTOMATIC1111)」生图源 转接到你自己的云端生图 API(默认示例为 Agnes),免费额度也能用
- 零依赖:纯 PowerShell + Node 内置模块,不需要
npm install任何东西 - 配置与代码分离:路径/端口都在
config.json,密钥在.secrets/,仓库里没有你的隐私
环境要求
| 项目 | 要求 |
|---|---|
| 系统 | Windows 10 / 11(用到 Get-NetTCPConnection) |
| PowerShell | Windows PowerShell 5.1(系统自带)或 PowerShell 7+ |
| Node.js | 18+(酒馆本身也需要) |
| SillyTavern | 任意较新版本(需要含 server.js) |
| Tailscale | 可选。想让手机在外网也能连时安装 |
快速开始
git clone <本仓库地址> st-console cd st-console powershell -ExecutionPolicy Bypass -File install.ps1
安装脚本会:探测酒馆目录与 node.exe → 生成 config.json → 准备生图桥配置 →
创建桌面快捷方式 → 注册登录自启任务。
之后直接双击桌面上的 Tavern Console(或运行下面命令)打开菜单:
powershell -ExecutionPolicy Bypass -File scripts\st-console.ps1 -Action menu
菜单长这样:
=========================================
SillyTavern 控制台
=========================================
酒馆状态 : 运行中 (pid 12345, 启动于 10-10 00:57)
生图桥 : 运行中 (pid 12346, 端口 7861)
酒馆目录 : D:\SillyTavern
node : D:\nodejs\node.exe
本机访问 : http://192.168.1.20:8000
手机访问 : http://100.x.y.z:8000 (Tailscale)
日志目录 : D:\SillyTavern\logs
[1] 启动酒馆 [2] 停止酒馆
[3] 重启酒馆 [4] 查看状态/访问地址
[5] 查看日志 [6] 安装桌面快捷方式
[7] 注册开机自启(计划任务)
[8] 显示配置信息
[0] 退出
命令行用法(不打开菜单)
$s = "scripts\st-console.ps1" powershell -ExecutionPolicy Bypass -File $s -Action start powershell -ExecutionPolicy Bypass -File $s -Action stop powershell -ExecutionPolicy Bypass -File $s -Action restart powershell -ExecutionPolicy Bypass -File $s -Action status powershell -ExecutionPolicy Bypass -File $s -Action logs powershell -ExecutionPolicy Bypass -File $s -Action install-shortcuts powershell -ExecutionPolicy Bypass -File $s -Action install-tasks
目录结构
st-console/
├── install.ps1 一键安装
├── uninstall.ps1 卸载(默认无痕,-Purge 清数据)
├── config.example.json 配置模板(安装后生成 config.json)
├── scripts/
│ ├── st-console.ps1 主控制台
│ ├── agnes-sd-bridge.mjs 生图桥(A1111 兼容 → 你的生图 API)
│ └── agnes-bridge.example.json 生图桥配置模板
├── .secrets/ 私有配置(.gitignore 忽略,不会进仓库)
└── logs/ 运行日志(.gitignore 忽略)
配置说明(config.json)
| 字段 | 默认 | 说明 |
|---|---|---|
tavernDir |
自动探测 | SillyTavern 目录(必须包含 server.js) |
nodeExe |
自动探测 | node.exe 完整路径 |
port |
8000 |
酒馆监听端口 |
logsDir |
logs |
相对 tavernDir 的日志目录 |
outLog / errLog |
st.out.log / st.err.log |
日志文件名 |
bridge.enabled |
true |
是否启用生图桥管理 |
bridge.port |
7861 |
生图桥监听端口 |
bridge.script |
scripts/agnes-sd-bridge.mjs |
相对项目根目录 |
bridge.configFile |
.secrets/agnes-bridge.json |
相对项目根目录 |
tasks.tavern / tasks.bridge |
SillyTavern-AutoStart / Agnes-SDBridge-AutoStart |
计划任务名 |
shortcuts.enabled |
true |
是否创建桌面快捷方式 |
shortcuts.prefix |
Tavern |
快捷方式名前缀(中文也可以,例如 酒馆) |
tavernDir没填或填错时,控制台会明确提示,并在几个常见位置自动探测。
手机 / 远程访问
方案 A:局域网(最快)
手机和电脑在同一个 Wi-Fi / 热点时,直接用状态里显示的局域网地址:
http://<局域网IP>:8000
若手机连不上,检查 Windows 防火墙是否放行了该端口(专用网络):
New-NetFirewallRule -DisplayName "SillyTavern $port" -Direction Inbound -Protocol TCP ` -LocalPort $port -Action Allow -Profile Private
方案 B:Tailscale(出门也能用)
- 电脑和手机都安装 Tailscale,登录同一个账号
- 电脑上确认已登录:
tailscale up - 手机上保持 Tailscale 为「已连接」(安卓建议把它的电池策略设为不受限制)
- 手机浏览器打开控制台状态里显示的
http://100.x.y.z:8000
提示:Windows 上如果 Tailscale 重启后卡在
NoState,是因为托盘进程没起来, 执行tailscale set --unattended=true开启无人值守模式,并确认托盘tailscale-ipn.exe已加入登录自启即可。
关于登录密码
酒馆的账号密码在它自己的 config.yaml 里(basicAuthUser):
basicAuthMode: true basicAuthUser: username: yourname password: yourpassword
本工具不管理密码,只负责起停与看日志。改完密码记得在控制台里重启酒馆。
生图桥:让酒馆生图走你自己的 API
原理
酒馆的「图像生成」扩展里,Stable Diffusion Web UI (AUTOMATIC1111) 这个源会:
GET {url}/sdapi/v1/optionsPOST {url}/sdapi/v1/txt2img→ 期望返回{ "images": ["<base64 png>", ...] }
scripts/agnes-sd-bridge.mjs 实现了酒馆会调用的那一小撮 A1111 接口
(txt2img / options / progress / sd-models / samplers / schedulers / upscalers /
latent-upscale-modes / sd-vae / sd-modules / interrupt),内部转手去调你的生图 API。
酒馆以为自己在跟 SD WebUI 说话。
配置
编辑 .secrets/agnes-bridge.json(安装时从 scripts/agnes-bridge.example.json 复制):
| 字段 | 说明 |
|---|---|
apiKey |
你的生图 API Key(只放本地,不要提交) |
endpoint |
生图接口地址,需为 OpenAI 风格的 POST .../images/generations |
models |
暴露给酒馆的模型列表(酒馆模型下拉框里会看到) |
defaultModel |
默认模型 |
appendNegativePrompt |
生图 API 不支持负向提示词时保持 false;设为 true 则把负向词软约束附加到提示词 |
timeoutMs |
单张超时(毫秒) |
maxBatch |
单次请求最多生成几张 |
tiers |
像素尺寸 → 档位映射(默认 1024→1K / 2048→2K / 3072→3K / 更大→4K) |
sharpPath |
可选。若结果不是 PNG 且你想强制转码,填入 sharp 模块路径(不装也能用) |
酒馆侧设置(三步)
- 打开酒馆 → 「扩展」→ 图像生成(Image Generation)
- Source 选
Stable Diffusion Web UI (AUTOMATIC1111),URL 填http://127.0.0.1:7861 - 点一下 Validate(会列出模型),把 Model 选成你的生图模型
然后在剧情里用任意一种方式触发:
- 魔法棒按钮:按当前对话内容生图
/sd命令:/sd 一只银发精灵站在阳光森林里- 交互模式:说「给我看看你现在的样子」这类要图的话,自动生图
- 角色发图模板:
[{{char}} sends a picture that contains: {{prompt}}]
自测
# 桥是否活着 curl.exe http://127.0.0.1:7861/health # 酒馆看到的模型列表 curl.exe http://127.0.0.1:7861/sdapi/v1/sd-models # 直接让桥生成一张(会消耗你的 API 额度) curl.exe -X POST http://127.0.0.1:7861/sdapi/v1/txt2img -H "Content-Type: application/json" ` --data-binary '{\"prompt\":\"a cute cat on a keyboard\",\"width\":1024,\"height\":1024}'
日常使用建议
- 不要用「注销」:酒馆是本工具以隐藏进程启动的,注销会杀掉它;用「锁定」(Win+L) 即可, 锁屏/黑屏都不影响后台运行与手机访问
- 不要让电脑睡眠:睡眠会断掉手机访问。可在电源计划里把「睡眠」设为「从不」:
powercfg /change standby-timeout-ac 0 powercfg /change standby-timeout-dc 0
- 想更省事:把「启动酒馆」注册成登录自启(
-Action install-tasks), 这样开机登录后手机直接就能玩
常见问题
Q:启动报「端口被占用」/ 状态显示运行中但页面打不开?
A:先 -Action status 看 pid,再 -Action restart;本工具的停止动作会顺带结束占用该端口的进程。
Q:find 不到酒馆目录?
A:在 config.json 里把 tavernDir 写成含 server.js 的那个目录(注意 JSON 里反斜杠要写两个:
"D:\\SillyTavern")。
Q:中文显示成乱码?
A:.ps1 文件已保存为 UTF-8 with BOM。如果你用编辑器改过并保存成无 BOM,请改回带 BOM。
Q:手机打不开酒馆?按顺序排查
- 控制台状态里酒馆是否「运行中」
- 电脑是否睡眠了(本喵建议设为从不)
- 用的是局域网还是 Tailscale 地址?两者要分别验证
- Tailscale 是否连接(
tailscale status;手机端 App 是否被系统杀后台) - 防火墙是否放行了端口
Q:生图报 SD WebUI returned an error?
A:看 logs/agnes-bridge.log 最后几行,常见原因是生图 API 限流(429)或额度用尽。
Q:生图很慢? A:云端生图通常 10–30 秒/张。把酒馆里的图片尺寸调大(如 1024×1024 → 2K 档)会更慢。
卸载
# 只移除快捷方式、计划任务,并停止进程(推荐) powershell -ExecutionPolicy Bypass -File uninstall.ps1 # 连 config.json / .secrets / logs 一起删除 powershell -ExecutionPolicy Bypass -File uninstall.ps1 -Purge
卸载不会碰 SillyTavern 自身的目录与聊天数据。
安全提示
.secrets/、config.json、logs/已在.gitignore中,不要强制提交它们- 仓库里只有脚本,没有任何密钥;API Key 与酒馆密码请留在本地
- 酒馆的
basicAuthMode建议保持开启;只在内网/Tailscale 内暴露时,简单密码也可接受, 一旦要暴露到公网请务必换强密码
License
来源:GitHub · github.com