Emotion State

🎭 跨会话情绪记忆,让AI真正懂你

agent-enhancement榜 #2

通过自然语言评估和持久化用户与Agent情绪状态,以衰减趋势注入系统提示,增强对话上下文感知能力。

收藏
7.1k
安装
2.7k
版本
0.1.0
CLS 安全性认证2026-07-01
点击查看完整报告 >

使用说明

核心用法

Emotion State 是一个 OpenClaw 工作空间钩子,用于捕获、存储并注入用户与 Agent 的情绪状态。安装后,它会向系统提示中动态添加 emotion_state 块,包含:

  • 当前情绪短语:由模型推断的简短自然语言描述(如"frustrated about delays")
  • 历史趋势:基于半衰期衰减的 24 小时情绪走势
  • 跨会话记忆:按用户 ID 持久化存储,支持多 Agent 共享上下文

工作流程

1. 用户输入触发情绪分类(支持外部分类器或 OpenAI 模型)
2. 推断结果存入 ~/.openclaw/agents/<agentId>/agent/emotion-state.json

3. 系统提示组装时,钩子注入格式化的情绪块供模型参考

显著优点

  • 上下文连续性:跨对话会话保持情绪记忆,避免重复询问用户感受
  • 轻量设计:仅存储模型推断的元数据,不保留原始用户文本,隐私友好
  • 可配置衰减:通过半衰期(默认 12 小时)和时间窗口参数,自然淡化过时情绪
  • 多 Agent 协调:支持共享其他 Agent 的情绪记录,适用于复杂多智能体系统

潜在缺点与局限性

  • 分类质量依赖:默认使用 gpt-4o-mini 推断情绪,准确性与提示工程相关;外部分类器 URL 为空时依赖模型自评
  • 冷启动问题:新用户无历史记录时,情绪块为空或仅为占位符
  • 隐私边界模糊:虽声称"不存储原始文本",但"模型推断的原因"仍可能包含敏感推断
  • 调试困难:情绪注入为黑盒操作,开发者难以追踪某条具体响应对应了哪段历史情绪

适合人群

  • 构建长期陪伴型、心理咨询类或高共情需求对话 Agent 的开发者
  • 使用 OpenClaw 框架且需要跨会话状态管理的 Agent 团队
  • 对情绪趋势可视化、用户流失预警有数据分析需求的产品

常规风险

| 风险类型 | 说明 |
|---------|------|
| 提示注入污染 | 若分类器被对抗样本操控,恶意情绪标签可能持续污染系统提示 |
| 情绪固化偏见 | 衰减机制可能不足以消除早期负面情绪的长期影响 |
| API 成本累积 | 每条用户输入触发一次情绪分类调用,高频场景成本需评估 |
| 时区配置错误 | `EMOTION_TIMEZONE` 配置不当导致衰减计算偏离用户实际作息 |

安全解读

核心功能与用法

Emotion State 是一个专为 OpenClaw 设计的 Hook 技能,通过在系统提示词中注入 emotion_state 区块,赋予对话代理情绪感知能力。其核心机制包括:

1. 双端情绪评估:使用 GPT-4o-mini 等模型,将用户和 Agent 的消息归类为自然语言情绪短语(如"frustrated about wait time"、"excited about progress")
2. 跨会话状态持久化:按用户维度存储情绪历史于 ~/.openclaw/agents/<agentId>/agent/emotion-state.json,默认保留 100 条记录

3. 智能提示词注入:基于半衰期算法(默认12小时)计算衰减后的情绪趋势,向系统提示词动态注入当前情绪状态

技术亮点

  • 零第三方依赖:纯 Node.js 内置模块实现,依赖攻击面极小
  • 灵活配置:支持自定义分类模型、置信度阈值、历史窗口大小等 10+ 项参数
  • 降级 gracefully:API 故障时自动回退至 neutral/low/unsure 标签

显著优点

| 维度 | 优势 |
|------|------|
| 情感连贯性 | 长对话中保持情绪上下文,避免"失忆式"冷漠回应 |
| 开发友好 | Hook 架构即插即用,无需修改 Agent 核心代码 |
| 资源轻量 | 4个文件、651行代码,无 npm 依赖包 |
| 隐私控制 | 不存储原始消息文本,仅保存模型推断的情绪标签及原因 |

潜在局限与风险

外部依赖风险:功能强绑定 OpenAI API,若服务不可用则退化为静态标签;用户消息需发送至第三方进行处理(TLS 加密)

隐私合规挑战

  • GDPR "数据最小化" 与 "用户知情同意" 两项为 warn 状态
  • 虽仅存储推断结果,但原始消息传输行为需明确告知终端用户
  • 本地存储的 emotion-state.json 未加密,多用户环境需限制文件权限

提示词复杂度:注入的 XML 区块增加 token 消耗,极端高频场景可能影响上下文窗口利用率

适合人群

  • 构建客服、心理健康支持、教育辅导等需情感智能的 Agent
  • 已有 OpenAI API 配额、接受按调用计费模式的团队
  • 使用 OpenClaw 框架且熟悉环境变量配置的技术用户

常规风险管控建议

1. 配置独立 API 密钥并设置用量上限,防止密钥泄露导致账单失控
2. 在面向终端用户的产品中补充隐私协议条款,明确数据采集范围

3. 定期审计 emotion-state.json 文件权限,建议配合磁盘加密使用

4. 评估业务场景是否适合云端情绪分析,敏感领域考虑本地部署替代方案

Emotion State 内容

hooks文件夹
emotion-state文件夹
手动下载zip · 7.4 kB
handler.tstext/plain
请选择文件