Skip to content

会话变量系统 (Session Variables)

除了宏系统提供的临时变量外,LLM Chat 还支持一套持久化的会话变量 (Session Variables) 系统。它允许你定义复杂的数值或状态(如 RPG 游戏中的“生命值”、“金钱”、“好感度”),并自动追踪其变化历史。

1. 核心特性

  • 持久化: 变量值存储在数据库中,跨消息轮次和应用重启依然有效。
  • 快照机制: 每一条消息发送时,系统都会记录下当时的变量状态快照。
  • 可视化: 支持在聊天界面中以进度条、数值等形式展示变量。
  • 宏联动: 可以在提示词中通过 {{var_name}} 引用,或通过特定宏进行修改。

2. 配置变量树

Agent 编辑器 -> 会话变量 (Variables) 面板中进行配置:

  1. 启用变量系统: 开启总开关。
  2. 定义变量:
    • 名称: 变量的唯一 ID。
    • 显示名称: UI 中展示的标签。
    • 初始值: 变量的起始数值或文本。
    • 范围约束: 可选。设置最小值和最大值(如生命值 0~100)。
  3. 组织结构: 支持创建分组,将相关变量组织在一起(如“基础属性”、“技能等级”)。

3. 运行与交互

变量快照 (Snapshot)

每当 LLM 生成回复或用户发送消息后,系统会自动保存当前的变量状态。

  • 查看历史: 在上下文分析器中,你可以选择任意历史消息,查看该时刻的变量数值。
  • 回滚感应: 当你删除消息或从历史节点重新开始分支时,变量值会自动恢复到该节点对应的快照状态。

UI 展示

如果配置了 UI 样式,变量会显示在聊天界面的侧边栏或消息上方,实时反馈状态变化。

4. 变量操作宏

生命周期宏名称说明
局部 (单次请求){{setvar}} / {{getvar}}仅在本次 Prompt 组装过程中有效,用于跨预设消息传递中间状态。
持久 (会话级){{set_session_var}}直接修改数据库中的会话变量值。
全局 (进程级){{setglobalvar}}在整个应用运行期间有效,不随会话切换而改变。

5. 最佳实践:RPG 属性系统

  1. 定义变量: 创建 hp (初始 100), gold (初始 0)。
  2. 提示词注入: 在系统提示词中加入:当前状态:生命值 {{hp}}, 金币 {{gold}}。
  3. 动态修改: 在快捷操作或正则管道中,根据 LLM 的输出(如“你受到了 10 点伤害”)触发 {{decvar::hp::10}}

相关阅读

Released under the Apache-2.0 License.