Appearance
长期记忆写入节点
长期记忆写入节点把一组对话消息写入一个资源库记忆库,供后续长期记忆检索使用。它适合保存相对稳定、确有后续价值的信息,例如用户偏好、称呼、工作习惯和已经确认的业务背景。
长期记忆不是完整聊天记录的替代品。不要把每轮对话无差别写入;应优先保留跨会话仍然有用、并且允许长期保存的内容。
配置要点
- 一个节点最多选择一个资源库记忆库,不支持多个记忆库合并写入。
- 输入参数固定为
messageList,类型为 Array<Object>,列表项包含 String 类型的role和content。 messageList可以引用开始节点或上游节点的结构化变量;推荐使用变量引用,便于保持列表项的类型与层级。- 角色值使用
user、assistant、system,不要自行发明角色值。 - 输出固定为 Boolean 类型的
isSuccess,不返回记忆 ID、提取结果或记忆条数。
配置示例
示例工作流在开始节点中定义 messageList:类型为 Array<Object>,对象包含 role 和 content 两个 String 子字段。长期记忆写入节点引用该变量,并把消息写入 PLCAgent 记忆库。

截图工作流只用于验证节点配置,没有执行写入,因此不会向现有记忆库增加演示数据。
选择目标记忆库
点击“选择记忆库”,从工作空间的资源库记忆库中选择一个目标。一个节点最多选择一个记忆库。
记忆库是长期数据的边界。多个智能体或工作流需要共享记忆时,应明确选择同一个受控记忆库;需要隔离不同产品、租户或数据敏感等级时,应拆分记忆库,而不是只依赖提示词约束。
节点面板不提供用户 ID、渠道 ID 或隔离键配置。应结合运行入口、调用身份和记忆库权限设计数据隔离。
输入 messageList
| 字段 | 类型 | 说明 |
|---|---|---|
messageList | Array<Object> | 必填的消息列表;参数名称和类型不可修改。 |
messageList[].role | String | 消息角色。使用 user、assistant 或 system。 |
messageList[].content | String | 消息内容。应是完整、可理解且允许长期保存的文本。 |
推荐:引用结构化上游变量
在开始节点、输入节点或其他上游节点中定义 Array<Object> 类型变量,并为列表项配置 role、content 两个 String 子字段,再通过“引用变量”绑定到 messageList。
运行时示例:
json
[
{
"role": "user",
"content": "我偏好深色主题,技术文档请使用中文。"
},
{
"role": "assistant",
"content": "已记录你的界面与语言偏好。"
}
]数组应保持真实对话顺序。只写入一条已经确认的用户偏好时,可以只提供一条 user 消息;需要让记忆服务结合上下文判断时,再提供对应的 assistant 消息。
固定值与变量引用
属性面板支持直接配置列表值,也支持引用上游 Array<Object> 变量。对来自对话、表单或业务事件的数据,优先使用结构化变量引用,并在保存后确认变量标记仍然存在。
不要用字符串化 JSON 代替 Array<Object>。即使字符串内容看起来像数组,其类型仍然不符合节点契约。
role 的使用建议
| 角色 | 适合内容 |
|---|---|
user | 用户明确表达的偏好、身份信息或已经确认的事实。 |
assistant | 助手的确认、总结或与用户消息配套的回答。 |
system | 确有必要参与记忆提取的系统上下文;不要把普通工作流指令当作用户事实。 |
应只使用标准角色值,并在测试记忆库中验证实际提取结果。
写入内容设计
适合长期保存的内容通常具备以下特征:
- 后续多次对话仍然有用。
- 已由用户明确表达或确认。
- 内容足够具体,脱离当前对话仍能理解。
- 不与现有记忆明显冲突,或已经说明发生变化的事实。
不建议直接写入:
- 临时问题、一次性任务步骤和即时状态。
- 未确认的模型猜测或推断。
- 密钥、令牌、支付信息、证件号码等敏感数据。
- 大段原始对话、日志或文档全文。
如果输入来自长对话,先使用大模型、文本处理或代码节点提取确有长期价值的事实,再组成简短的 messageList。这能减少噪声和互相矛盾的记忆。
输出
节点固定输出:
| 输出 | 类型 | 说明 |
|---|---|---|
isSuccess | Boolean | 本次长期记忆写入操作是否成功。 |
下游应根据 isSuccess 设计成功与失败分支。节点不会返回具体保存了哪些记忆,也不能根据 true 推断每条消息都生成了一条独立记忆;需要验证内容时,应在写入成功后使用长期记忆检索节点查询,并结合业务语义判断结果。
配置检查
保存前至少检查:
- 已选择正确的目标记忆库。
messageList是 Array<Object>,不是普通 String。- 列表项包含非空的
role和content。 role使用标准值,消息顺序正确。- 写入内容符合数据权限、隐私和保留期限要求。
- 保存并重新打开工作流后,变量引用仍然正确。
推荐工作流
- 从当前对话或业务事件中取得候选信息。
- 过滤临时内容和敏感信息,必要时让用户确认。
- 生成结构正确的
messageList。 - 写入目标记忆库并判断
isSuccess。 - 对失败进行可见记录;不要在未知错误下无限重试。
- 在测试场景中通过长期记忆检索验证召回效果,再发布到正式流程。
常见问题
能否直接输入一段文本?
不能。节点需要 Array<Object> 类型的 messageList。单条文本也应包装成包含 role、content 的对象数组。
为什么推荐引用结构化上游变量?
结构化变量能保留 Array<Object> 类型与 role、content 子字段,适合由开始节点、对话输入或上游处理节点持续传递。
为什么角色输入框没有下拉选项?
role 是 String 类型。应使用 user、assistant、system 标准值。
写入成功后为什么检索不到预期内容?
先确认检索节点选择了同一个记忆库,并检查运行身份和查询语义。isSuccess 只表示写入调用成功,不说明记忆一定按预期摘要或一定能被 Query 召回。
可以把整段聊天记录全部写入吗?
技术上可以传入多条消息,但不建议无差别保存。先提取稳定、已确认且有长期价值的信息,能减少噪声、冲突和隐私风险。