动态提示词构建器 - SillyTavern 扩展
为 SillyTavern 设计的强大动态提示词构建工具,提供变量管理、条件逻辑、模板系统和自动适配功能。
变量操作语法参考 Minecraft 指令 和 JSON Patch (RFC 6902) 设计。
| 功能 | 描述 |
|---|---|
| 🎯 变量管理 | 创建、编辑、删除变量,支持嵌套路径和类型校验 |
| 🔀 条件逻辑 | 支持 if/else、循环等控制流 |
| 📝 模板系统 | Handlebars 风格模板语法,支持嵌套模板 |
| 🔄 自动更新 | 解析 AI 回复中的变量更新命令 |
| 📊 变化追踪 | 记录变量变化历史,支持 display_data 和 delta_data |
| 📦 导入导出 | 支持 JSON 格式配置导入导出 |
| ⚡ 批量原子操作 | 支持多操作原子执行和回滚 |
| 🧮 变量间运算 | 支持变量之间的数学运算 |
将本扩展文件夹放入 SillyTavern 的第三方扩展目录:
SillyTavern/public/scripts/extensions/third-party/EasyDynamicPrompts/
或通过 Git 克隆:
cd SillyTavern/public/scripts/extensions/third-party/
git clone https://github.com/LucNocturne/EasyDynamicPrompts.git- 在 SillyTavern 中启用扩展
- 在设置面板找到 EasyDynamicPrompts 部分
- 点击 "打开编辑器" 按钮
- 创建或编辑模板
- 保存并应用
AI 可以在回复中使用以下命令更新变量:
# 设置变量
/data set 角色.络络.好感度 50
# 设置变量(带旧值校验)
/data set 角色.络络.好感度 55 test 50
# 数值增减
/data add 角色.络络.好感度 5
/data add 角色.络络.好感度 -3
# 向数组添加元素
/data push 背包 "治疗药水"
/data insert 背包 0 "重要物品"
# 删除变量
/data remove 临时标记
/data remove 背包.0
# 移动/复制变量
/data move 临时.物品 背包/-
/data copy 模板.技能 角色.技能
# 变量间运算
/data calc 总伤害 "基础伤害 + 装备加成"
# 数组/对象修改
/data modify 背包 append "新物品"
/data modify 背包 merge ["物品1", "物品2"]
/data modify 角色.属性 merge {"力量": 10}
# 条件测试
/data test 角色.HP gte 0
/data test 角色.状态 eq "正常"
/data test 角色.buff exists| 命令 | 格式 | 说明 |
|---|---|---|
set |
/data set <path> <value> [test <old>] |
设置值 |
add |
/data add <path> <delta> |
数值增减 |
push |
/data push <path> <value> |
数组尾部追加 |
insert |
/data insert <path> <index> <value> |
指定位置插入 |
remove |
/data remove <path> |
删除值 |
move |
/data move <from> <to> |
移动值 |
copy |
/data copy <from> <to> |
复制值 |
calc |
/data calc <path> "<expr>" |
变量运算 |
modify |
/data modify <path> <action> <value> |
数组/对象修改 |
test |
/data test <path> <condition> [value] |
条件测试 |
<UpdateVariable>
[
{"op": "increment", "path": "角色.络络.好感度", "delta": 5},
{"op": "add", "path": "背包/-", "value": "新物品"},
{"op": "replace", "path": "角色.络络.状态", "value": "开心"}
]
</UpdateVariable>_.set('角色.络络.好感度', 50)
_.add('角色.络络.好感度', 5)
_.push('背包', '新物品')
_.remove('临时标记')支持 [值, 描述] 格式的变量:
{
"角色": {
"络络": {
"好感度": [50, "对玩家的好感程度,范围 0-100"],
"状态": ["正常", "当前状态"]
}
}
}- 变量操作设计文档 - 完整的语法设计和示例
本项目使用自定义许可证,包含特定社区限制条款。
详见 LICENSE 文件。
欢迎提交 Issue 和 Pull Request!
如有问题或建议,请在 GitHub 上提交 Issue。
本项目的开发离不开以下优秀项目的支持:
| 项目 | 描述 |
|---|---|
| SillyTavern | 强大的 AI 角色扮演前端平台 |
| TavernHelper | 提供扩展 API 和脚本运行环境 |
| MVU 变量框架 | 变量更新语法机制的设计参考 |
| Minecraft | /data 命令语法设计灵感来源 |
| JSON Patch (RFC 6902) | 操作类型和批量操作设计参考 |
感谢所有贡献者和社区成员的支持!