LiteFlow LiteFlow
首页
  • v2.16.0 (当前版本)
  • What's New

    • What' s New In LiteFlow v2.15.3?
  • 历史版本

    • v2.15.X
    • v2.13.X
    • v2.12.X
    • v2.11.X
    • v2.10.X
    • v2.9.X
    • v2.8.X
  • 升级指南

    • 2.13.0升级指南
    • 2.12.4升级指南
    • 2.12.0升级指南
    • 升级到2.9.3说明
    • 升级到2.9.X说明
    • 升级到2.8.X说明
    • 升级到2.7.X说明
AI Agent
IDEA 插件
  • 答疑解惑

    • 常见问题
    • 如何理解上下文这个概念?
    • Slot是一个什么样的概念?
  • 项目与社区

    • 项目介绍
    • 项目成员
    • 更新记录
    • 参与开发
    • 加入群聊
    • 谁在使用
赞助
GitHub (opens new window)

广告采用随机轮播方式显示 ❤️成为赞助商
首页
  • v2.16.0 (当前版本)
  • What's New

    • What' s New In LiteFlow v2.15.3?
  • 历史版本

    • v2.15.X
    • v2.13.X
    • v2.12.X
    • v2.11.X
    • v2.10.X
    • v2.9.X
    • v2.8.X
  • 升级指南

    • 2.13.0升级指南
    • 2.12.4升级指南
    • 2.12.0升级指南
    • 升级到2.9.3说明
    • 升级到2.9.X说明
    • 升级到2.8.X说明
    • 升级到2.7.X说明
AI Agent
IDEA 插件
  • 答疑解惑

    • 常见问题
    • 如何理解上下文这个概念?
    • Slot是一个什么样的概念?
  • 项目与社区

    • 项目介绍
    • 项目成员
    • 更新记录
    • 参与开发
    • 加入群聊
    • 谁在使用
赞助
GitHub (opens new window)
  • 🤖 什么是 Re-Act Agent
  • 快速开始

    • 📦 引入依赖
    • ⚙️ 基本配置
    • 🧩 编写 Agent 组件
    • 📤 获取 Agent 结果
      • 方式 1:通过 slot.responseData(默认)
      • 方式 2:覆写 handleReply 写入自定义位置
      • 同时获取 token 用量
    • 🌊 流式输出
  • 🏪 模型配置
  • 会话与记忆

    • 💬 会话标识
    • 🧠 记忆持久化
    • 🔄 多轮对话
  • 工作空间与工具

    • 📂 Workspace 配置
    • 📄 文件工具
    • 🐚 Shell 工具
    • 🔧 自定义工具
  • 🎯 Skills 技能系统
  • 高级编排

    • 🔀 条件路由与并行调用
    • 🤝 多 Agent 协作
  • 运行机制与可观测

    • 🔁 迭代次数与 Summary
    • 📋 Re-Act 事件日志
    • 🪝 自定义 Hook
  • 📖 扩展点速查
  • ⚡ 配置速查
  • 🛡️ 安全建议
  • 🔍 故障排查
  • 🎬 演示项目
  • AI Agent编排
  • 快速开始
铂赛东
2026-05-23
目录

📤 获取 Agent 结果

# 方式 1:通过 slot.responseData(默认)

ReActAgentComponent 默认会把 Agent 的文本回复写入 slot.responseData。

下游节点直接读取:

@LiteflowComponent("recordReply")
public class RecordReplyCmp extends NodeComponent {
    @Override
    public void process() {
        String reply = (String) this.getSlot().getResponseData();
        // 后续处理...
    }
}

链路结束后,外部调用方也可以获取:

LiteflowResponse response = flowExecutor.execute2Resp("deepseekChain", "你好");
Object reply = response.getSlot().getResponseData();

# 方式 2:覆写 handleReply 写入自定义位置

当链路中有多个 Agent 节点时,默认的 responseData 会被后一个覆盖。建议覆写 handleReply:

@Override
protected void handleReply(Msg reply) {
    String text = reply == null ? null : reply.getTextContent();

    // 写入 ContextBean
    ctx().getSlot().getContextBean(MyAgentCtx.class).setReply(getNodeId(), text);

    // 或以 nodeId 为 key 存入 slot
    ctx().getSlot().setOutput(getNodeId(), text);
}

下游节点用 slot.getContextBean(MyAgentCtx.class) 或 slot.getOutput(nodeId) 读取。

# 同时获取 token 用量

@Override
protected void handleReply(Msg reply) {
    String text = reply == null ? null : reply.getTextContent();
    ctx().getSlot().setOutput(getNodeId(), text);

    ChatUsage usage = ctx().getChatUsage();
    if (usage != null) {
        ctx().getSlot().setOutput(getNodeId() + ".usage", Map.of(
                "inputTokens", usage.getInputTokens(),
                "outputTokens", usage.getOutputTokens(),
                "totalTokens", usage.getTotalTokens(),
                "timeSeconds", usage.getTime()
        ));
    }
}

ChatUsage 来自 io.agentscope.core.model.ChatUsage。

多 Agent 注意事项

默认 responseData 是 slot 级别的单一字段,后写覆盖先写。链路中存在多个 Re-Act Agent 时,请务必覆写 handleReply,用 setOutput(nodeId, ...) 或自定义 ContextBean 区分各 Agent 的输出。

帮助我们改善此文档 (opens new window)
上次更新: 2026/05/26, 10:50:41
🧩 编写 Agent 组件
🌊 流式输出

← 🧩 编写 Agent 组件 🌊 流式输出→

Theme by Vdoing | Copyright © 2020-2026 铂赛东 | MIT License
沪ICP备18012955号-2