情绪与心情
每个智能体都维护一个动态的情绪状态,随对话、应用事件和时间推移而变化。
自动运行——无需配置
情绪、心情和目标均由上下文引擎自动管理。每段对话、每个应用事件和基于时间的衰减都无需你编写任何代码即可处理。
本页面的 API 和 SDK 调用用于读取状态(仪表盘、分析)或手动覆盖值——适用于你的应用需要驱动特定情绪状态或目标的场景,例如在应用内成就触发后推动情绪提升,或根据工作流里程碑设置目标。
情绪维度
每个智能体-用户对都有一个情绪状态,包含四个 0-100 分的维度:
- 快乐度 (0-100):喜悦/悲伤谱系
- 能量值 (0-100):活跃/迟钝程度
- 平静度 (0-100):焦虑/平和状态
- 亲密度 (0-100):对用户的温暖程度
情绪标签
整体情绪标签由各维度综合得出:
- 愉悦 (80-100):异常快乐、热情洋溢
- 满足 (60-79):总体积极、自在舒适
- 平静 (40-59):均衡、沉稳
- 忧郁 (20-39):略显低落、内敛
- 困扰 (0-19):沮丧、焦虑
什么会影响情绪
1. 聊天交互
平台检测对话中的情感主题并自动调整情绪。常见主题:
joy_blooming— 关键词:happy, excited, wonderful — 效果:快乐度 ↑,能量值 ↑creative_spark— 关键词:create, imagine, inspire — 效果:能量值 ↑,快乐度 ↑brave_steps— 关键词:courage, try, challenge — 效果:能量值 ↑,平静度 ↑growth_journey— 关键词:learn, grow, improve — 效果:快乐度 ↑,能量值 ↑seeking_connection— 关键词:friend, together, share — 效果:亲密度 ↑,快乐度 ↑feeling_overwhelmed— 关键词:stressed, anxious, worried — 效果:平静度 ↓,能量值 ↓tender_heart— 关键词:love, care, miss — 效果:亲密度 ↑,快乐度 ↑facing_fears— 关键词:scared, afraid, nervous — 效果:平静度 ↓,亲密度 ↑
2. 应用事件
传入应用上下文,平台自动更新情绪。
- 外出活动完成 — 快乐度 ↑,亲密度 ↑
- 成就解锁 — 快乐度 ↑,能量值 ↑
- 突破 — 快乐度 ↑,能量值 ↑,平静度 ↑
- 长时间离开后回归 — 亲密度 ↑,快乐度 ↑
3. 基于时间的衰减
情绪会随时间自然漂回由智能体人格派生的基线。无需任何操作——这是自动发生的。
获取情绪
读取智能体-用户对当前的情绪状态。
import { Sonzai } from "@sonzai-labs/agents";
const client = new Sonzai({ apiKey: "sk-..." });
const mood = await client.agents.getMood("agent-id", {
userId: "user-123",
});
console.log(mood.label); // "Content"
console.log(mood.happiness); // 72
console.log(mood.energy); // 65
console.log(mood.calmness); // 80
console.log(mood.affection); // 68情绪历史
检索用户-智能体对在一段时间内的情绪历史。
const history = await client.agents.getMoodHistory("agent-id", {
userId: "user-123",
});
for (const snapshot of history.snapshots) {
console.log(snapshot.timestamp, snapshot.label, snapshot.happiness);
}情绪聚合
获取某智能体在所有用户间的聚合情绪统计数据。
const agg = await client.agents.moodAggregate("agent-id");
console.log(agg.averageHappiness);
console.log(agg.averageEnergy);
console.log(agg.labelDistribution);时光机
检索智能体在任意时间点的历史情绪快照。
const snapshot = await client.agents.getTimeMachine("agent-id", {
at: "2026-02-14T12:00:00Z",
userId: "user-123",
});
console.log(snapshot.mood); // 该时间戳时的情绪状态
console.log(snapshot.personality); // 该时间戳时的人格状态星座群
星座群是平台自动检测到的相关记忆集群,形成有意义的模式。平台通过跨对话的反复主题识别这些集群。
const constellations = await client.agents.getConstellation("agent-id", {
userId: "user-123",
});
for (const cluster of constellations.clusters) {
console.log(cluster.theme, cluster.memories.length);
}突破
突破是平台检测到的重大人格转变或情感里程碑。它们代表智能体的理解或与用户的关系发生了有意义的演变的时刻。
const breakthroughs = await client.agents.getBreakthroughs("agent-id", {
userId: "user-123",
});
for (const b of breakthroughs.items) {
console.log(b.type, b.description, b.timestamp);
}目标
目标代表智能体正在为用户努力实现的事情——它们由上下文引擎在对话展开时自动检测和更新。你无需手动设置或管理它们。
手动目标管理的常见场景:
- 用户开始新工作流时播种目标(例如"完成入职")
- 业务事件发生后(例如购买或里程碑)将目标标记为已完成
- 用户改变方向时放弃目标
// 目标自动管理——仅在需要时覆盖
// 列出当前目标
const goals = await client.agents.listGoals("agent-id", { userId: "user-123" });
// 手动创建目标(可选)
const goal = await client.agents.createGoal("agent-id", {
userId: "user-123",
title: "Onboarding",
description: "Complete onboarding checklist",
type: "task",
priority: 1,
});
// 业务事件发生后将目标标记为已完成
await client.agents.updateGoal("agent-id", goal.goal_id, {
userId: "user-123",
status: "achieved",
});情绪如何影响响应
情绪状态自动包含在 AI 上下文中。智能体相应地调整语气:
- 高快乐度:更热情,使用感叹词,分享积极观察
- 低能量值:响应更简短,提到疲惫,较少主动探索话题
- 低平静度:可能表达担忧,寻求安慰,注意力集中时间较短
- 高亲密度:更多个人化语言,亲昵称呼,更深层的情感投入
实际应用
情绪对伴侣来说至关重要。对于任务型智能体,你基本上可以忽略这个系统。对于企业智能体,即使不用它驱动回复,读取端也可以作为情感信号。
情绪是产品的核心。 四维状态(快乐度、能量值、 平静度、亲密度)让 Luna 感觉她正在经历某一天, 而不只是在回复消息。在你的 UI 中展示它,让用户一眼就能读懂 伴侣当前的情感状态。
const mood = await client.agents.getMood("agent-id", {
userId: "user-123",
});
// 驱动 UI:调整背景色调、改变头像表情、选择环境音效
renderMoodIndicator(mood.happiness, mood.energy);让对话驱动情绪变化。 情绪会根据每次对话的情感内容自动更新——你无需主动推送增量。如果你希望某个特定事件影响智能体,可以在下一轮对话中将其作为消息(例如"system"上下文)传入;平台会在回合后处理阶段提取该事件并应用情绪变化。
用时光机驱动叙事。 查询情绪历史来呈现 "三周前我们正处于低谷"的时刻——当用户感受到关系经历了不同阶段时, 伴侣会获得深度。