Skip to content

LucNocturne/EasyDynamicPrompts

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

6 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

EasyDynamicPrompts

动态提示词构建器 - 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

🚀 使用方法

  1. 在 SillyTavern 中启用扩展
  2. 在设置面板找到 EasyDynamicPrompts 部分
  3. 点击 "打开编辑器" 按钮
  4. 创建或编辑模板
  5. 保存并应用

📖 变量更新语法

主要格式:/data 命令

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] 条件测试

备用格式:JSON 块

<UpdateVariable>
[
  {"op": "increment", "path": "角色.络络.好感度", "delta": 5},
  {"op": "add", "path": "背包/-", "value": "新物品"},
  {"op": "replace", "path": "角色.络络.状态", "value": "开心"}
]
</UpdateVariable>

向后兼容:函数调用格式

_.set('角色.络络.好感度', 50)
_.add('角色.络络.好感度', 5)
_.push('背包', '新物品')
_.remove('临时标记')

📝 模板语法

<!-- 变量插值 -->
{{角色.络络.好感度}}

<!-- 条件判断 -->
{{#if 角色.络络.好感度 > 50}}
络络对你很有好感
{{else}}
络络对你态度一般
{{/if}}

<!-- 循环遍历 -->
{{#each 背包 as item}}
- {{item}}
{{/each}}

<!-- 存在性检查 -->
{{#if exists(角色.络络)}}
络络在场
{{/if}}

🗂️ 数据结构

支持 [值, 描述] 格式的变量:

{
  "角色": {
    "络络": {
      "好感度": [50, "对玩家的好感程度,范围 0-100"],
      "状态": ["正常", "当前状态"]
    }
  }
}

📚 详细文档

⚠️ 许可证

本项目使用自定义许可证,包含特定社区限制条款。

详见 LICENSE 文件。

🤝 贡献

欢迎提交 Issue 和 Pull Request!

📞 联系

如有问题或建议,请在 GitHub 上提交 Issue。

🙏 鸣谢

本项目的开发离不开以下优秀项目的支持:

项目 描述
SillyTavern 强大的 AI 角色扮演前端平台
TavernHelper 提供扩展 API 和脚本运行环境
MVU 变量框架 变量更新语法机制的设计参考
Minecraft /data 命令语法设计灵感来源
JSON Patch (RFC 6902) 操作类型和批量操作设计参考

感谢所有贡献者和社区成员的支持!

About

A SillyTavern Extension

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors