数据流
本文档介绍 OpenHuman 的数据处理流程。
请求生命周期
1. 用户输入 → 2. 上下文组装 → 3. Agent 推理 → 4. 工具执行 → 5. 响应返回
↓
6. 记忆存储(如果重要)
详细流程
1. 用户输入
支持多种输入形式:
- 文本消息
- 语音(STT 转换)
- 文件上传
- 图像
2. 上下文组装
当前消息
+ 历史对话(压缩后)
+ 检索到的记忆
+ 相关工具描述
+ 用户偏好
= 组装后的上下文
3. Agent 推理
Agent 分析上下文并决定:
- 是否需要调用工具
- 调用哪个工具
- 如何组织响应
4. 工具执行
工具执行可能涉及:
- 本地操作(文件、shell)
- API 调用(搜索、网页抓取)
- 第三方服务(邮件、日历)
5. 响应返回
响应流式返回:
for await (const chunk of stream) {
process.stdout.write(chunk.delta);
}
6. 记忆存储
Agent 判断是否值得存储:
await client.memory.store({
content: '用户提到了他的生日是 12 月 25 日',
importance: 0.8,
tags: ['personal', 'birthday'],
});
异步事件流
第三方服务 → Webhook → 触发器分类 → Agent 响应
↓
记忆存储