SillyTavern脚本编写:自定义自动化流程
还在手动重复执行相同的聊天操作?SillyTavern的脚本系统让你告别繁琐操作,实现真正的AI对话自动化。本文将深入解析SillyTavern的脚本编写能力,从基础宏替换到高级STscript命令,助你打造个性化的AI交互工作流。
核心脚本系统架构
SillyTavern的脚本系统采用分层设计,包含三个主要组件:
宏系统(Macros)详解
宏是SillyTavern中最基础的文本替换机制,使用双花括号语法{{macro_name}}。系统内置了丰富的宏变量:
| 宏类别 | 示例宏 | 功能描述 | 返回值示例 |
|---|---|---|---|
| 时间相关 | {{time}} | 当前时间 | "2:30 PM" |
{{date}} | 当前日期 | "September 4, 2025" | |
{{isotime}} | ISO格式时间 | "14:30" | |
{{isodate}} | ISO格式日期 | "2025-09-04" | |
| 聊天相关 | {{lastMessage}} | 最后一条消息 | "Hello there!" |
{{lastUserMessage}} | 最后用户消息 | "How are you?" | |
{{lastCharMessage}} | 最后角色消息 | "I'm fine, thank you." | |
| 系统状态 | {{maxPrompt}} | 最大上下文长度 | "4096" |
{{isMobile}} | 移动设备检测 | "false" |
自定义宏注册示例:
// 注册一个简单的问候宏
MacrosParser.registerMacro('greeting', () => {
const hour = new Date().getHours();
if (hour < 12) return 'Good morning';
if (hour < 18) return 'Good afternoon';
return 'Good evening';
}, '返回基于时间的问候语');
// 使用自定义宏
const message = "{{greeting}}, how can I help you?";
// 输出: "Good afternoon, how can I help you?"
STscript命令系统
STscript是SillyTavern的强大脚本语言,通过斜杠命令(/command)执行各种操作:
基础命令示例
// 切换API连接
/api openai
/api textgenerationwebui
// 管理聊天会话
/renamechat "重要对话记录"
/delchat // 删除当前聊天
/tempchat // 创建临时聊天
// 角色控制
/dupe // 复制当前角色
/char-find "助手" tag=helpful
管道操作和条件执行
STscript支持Unix风格的管道操作和条件逻辑:
// 管道传递结果
/getchatname | /renamechat "备份_{{pipe}}"
// 条件执行示例
/extension-state Summarize | if {{pipe}} == "true" { /extension-disable Summarize } else { /extension-enable Summarize }
// 复杂条件判断
/char-find "AI助手" | if {{pipe}} != "" { /say 找到助手角色: {{pipe}} } else { /say 未找到指定角色 }
扩展系统集成
SillyTavern的扩展系统可以通过脚本完全控制:
// 扩展管理命令
/extension-enable Summarize reload=true
/extension-disable SillyTavern-LALib
/extension-toggle Backgrounds
// 检查扩展状态
/extension-state Summarize
/extension-exists Character-Expressions
// 批量扩展操作
/extension-enable Summarize | /extension-enable Backgrounds | /extension-enable World-Info
实战:自动化对话工作流
下面是一个完整的自动化对话示例,展示如何组合使用各种脚本功能:
// 自动化对话启动脚本
/api openai quiet=true
/instruct creative
/context balanced
/bg "office.jpg"
// 设置初始提示
/say {{greeting}}! I'm ready to assist you with any questions you may have.
// 自动启用相关扩展
/extension-enable Summarize
/extension-enable Prompt-Manager
// 记录启动日志
/append-note "Session started at {{isotime}} with OpenAI API"
高级脚本模式
循环和批量处理
// 批量角色处理
/char-find --all | foreach { /loadchar {{pipe}} | /say Hello {{char}}, welcome to the group! }
// 定时任务模拟
/set-interval 300 { /check-messages | if {{pipe}} > 0 { /notify "新消息到达" } }
错误处理和重试机制
// 带错误处理的API连接
/try {
/api openai
/say API连接成功!
} catch {
/api textgenerationwebui
/say 备用API已启用
/append-note "Primary API failed at {{isotime}}"
}
性能优化最佳实践
- 宏缓存策略:对重复使用的宏结果进行缓存
- 批量操作:使用管道减少界面刷新次数
- 异步执行:对耗时操作使用异步避免阻塞
- 资源清理:及时清理不再需要的监听器和定时器
// 优化后的脚本示例
/quiet {
/api openai
/instruct creative
/context balanced
/extension-enable Summarize,Backgrounds,World-Info
}
/say 系统初始化完成,所有功能就绪!
调试和故障排除
STscript提供了丰富的调试工具:
// 调试模式启用
/debug on
// 变量检查
/var-list
/var-get "lastResponse"
// 执行跟踪
/trace /api openai | /instruct creative
// 性能分析
/profile {
/generate-long-response "请详细说明..."
}
总结
SillyTavern的脚本系统为高级用户提供了强大的自动化能力。通过宏系统、STscript命令和扩展控制的有机结合,你可以:
- ✅ 创建复杂的对话工作流
- ✅ 实现多角色协同交互
- ✅ 构建自定义的AI助手功能
- ✅ 自动化重复性聊天任务
- ✅ 集成外部服务和API
掌握这些脚本技巧后,你将能够充分发挥SillyTavern的潜力,打造真正智能和高效的AI对话体验。开始探索吧,让你的AI交互达到新的高度!
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考



