首页/新闻资讯/正文详情

Unreal Agent 核心概念图解:Input、Inbox、Session 与 Operation 完整指南

发布时间:2026/9/25 1:29:57 来源:云帆数科 栏目:资讯中心
Unreal Agent 核心概念图解:Input、Inbox、Session 与 Operation 完整指南
Unreal Agent 核心概念图解Input、Inbox、Session 与 Operation 完整指南【免费下载链接】unreal-agentAsync-first agent harness项目地址: https://gitcode.com/gh_mirrors/un/unreal-agentUnreal Agent是 Unreal Labs 推出的「异步优先Async-first」AI 智能体框架agent harness它用四个核心概念——Input、Inbox、Session、Operation——把「模型思考」和「真正干活」彻底解耦。本文带你一图读懂这套设计帮你快速上手这个 Go 语言写的智能体运行时。 为什么需要异步优先的智能体框架普通聊天机器人是「你问一句、它答一句」的同步模式。而智能体Agent不同它可能要执行一条跑 10 分钟的 Shell 命令、生成一张图、调用外部 API……如果整个进程为等待这些活儿卡死体验必然很差。Unreal Agent 的解法很直白模型调用和工具执行走两条独立流水线所有工作都被描述成可序列化、可恢复的Operation所有消息都带全局唯一 ID天然支持去重和崩溃恢复。一句话总结输入走 Inbox历史存 Session干活靠 Operation协调交给 Coordinator。官方在 README.md 的术语表Glossary中对这四个概念做了权威定义下面的每个小节都能对应到源码目录。 Input带唯一 ID 的事件信封Input是进入系统的一切外部消息定义在 harness/inbox/inbox.go 中。它长这样概念上Input 全局唯一 ID 类型Kind 负载Payload它的关键特性有两条ID 全局唯一且跨重投递保持稳定——同一条消息重发 10 次ID 也只有一个分三种类型对应三类来源类型含义典型场景external外部用户输入用户发来的新指令control控制消息停止、心跳、更新设置crash崩溃恢复输入进程重启后补投的消息其中控制消息支持 4 种模式见 harness/inbox/inbox.gohard立即硬停、when_idle空闲时停、heartbeat心跳探测、settings动态调整推理强度。给新手的直觉把 Input 想象成一封盖了唯一编号邮戳的信——编号让邮局系统能识别这封信我已经处理过了。 Inbox会话级的去重收件箱Inbox是 Input 的收件处作用域限定在单个会话内实现位于 harness/inbox/local.go。它本质上是一个内存态去重器提交 Input ──► 校验ID 非空、类型合法 ──► 查已见 ID 集合 ──► 重复 直接丢弃 ✅ ──► 新消息 入队 → 顺序输出给协调器两个值得注意的设计细节会话内有效Inbox 本身不持久化但重启时会从会话历史中恢复「已见 ID 列表」seenIDs保证崩溃重投的消息依然会被正确去重顺序保真内部用队列串行化输出消息按到达顺序被协调器消费不会乱序。类比Inbox 就像你家门口的信箱——投递员任何调用方把信塞进来你协调器按顺序取贴重号码的信管家直接扔回收站。 Session只追加、可分叉的历史账本Session是持久化的会话历史身份定义见 harness/session/session.go而真正落盘的账本接口在 harness/sessionstore/sessionstore.go。它的三个核心特质1️⃣ 只追加Append-only历史条目按序列号Sequence单调递增五种条目类型依次记录全过程条目类型记录内容fork分叉点从哪个父会话、哪一轮分出来input被接受的 Inputturn一次 LLM 逻辑轮次的开始model_response模型的完整响应tool_call_status工具调用结果 关联的 Operation 快照2️⃣ 可分叉ForkFork方法harness/sessionstore/sessionstore.go允许从某个历史轮次剪出一个新会话——想换个思路重做分叉即可原历史毫发无损。3️⃣ 可恢复ResumeResume会返回完整恢复状态会话快照、所有未完成的 Operation、以及待处理的外部输入 ID见 harness/sessionstore/sessionstore.go。这意味着 进程崩了重启后 Unreal Agent 能从账本里读出我干到哪了接着干而不是从零开始。测试数据目录 harness/sessionstore/localfile/testdata/ 里的golden-fork.session.jsonl、soft-stop-session.session.jsonl就是真实的恢复/分叉场景样例想深入可翻一翻。️ Operation可序列化的异步工作单Operation是整篇文章最重要的概念定义在 harness/operation/operation.go。当模型说帮我跑make build时系统不会立刻执行而是先生成一张工作单Operation ID 类型Type 版本Version 状态Status 状态数据State 幂等键Idempotency它有完整生命周期状态机ready就绪──► awaiting等待中──► completed完成 │ ├──► canceling取消中──► canceled已取消 └─────────────────────► failed失败三个设计亮点版本化 永远可序列化任何一张工作单都能完整落盘恢复时精确复现幂等键Idempotency同一张单子重放不会造成副作用比如不会把文件写两遍执行交给 Primitives工作单最终被拆解为原语动作分发执行全部原语清单见 harness/primitives/primitive_dispatch.go——进程启停、文件读写、定时器、计算、远程请求一应俱全。类比Operation 就像外卖平台的订单——下单提交、接单就绪、配送中awaiting、送达completed。订单本身是数据结构骑手执行器是谁都可以换。 四个概念如何协同工作把所有零件拼起来Unreal Agent 一次完整的回合是这样流动的① Input 从 Inbox 按序进入 │ ② 协调器Coordinator持久化 Input 到 Session 账本 │ ③ Context Builder 在内存中组装模型输入纯计算、零 I/O │ ④ LLM Adapter 把请求发给模型拿回统一格式响应 │ ⑤ 模型产生 Tool Call → 翻译器同步校验生成 Operation │ 状态与操作一起原子写入 Session 账本 │ ⑥ Operation Manager 异步执行工作单进度持续回写 │ ⑦ 结果翻译回模型语言 → 进入下一轮直到收到 stop 控制其中协调器是中央事件循环的拥有者依赖注入清单一目了然harness/coordinator/coordinator.goInbox、会话存储、上下文构建器、LLM 适配器、工具注册表、操作管理器——每个部件都是接口可替换。两条重要的职责边界也是面试/源码阅读的好问题组件能做什么绝对不能做什么工具翻译器校验调用、生成 Operation做任何 I/O、阻塞事件循环上下文构建器内存中组装模型输入任何 I/O、依赖持久层操作管理器执行持久化操作——本地实现可整体替换正因为干活被隔离在 Operation 后面官方才敢于承诺一个高级玩法用代理操作管理器把序列化后的工作单发给远端沙箱进程去执行工具代码就跑在沙箱里了见 README.md 的 Extending the harness 一节。✅ 小结一张表带走四个概念概念一句话理解源码位置Input带全局唯一 ID 的消息信封harness/inbox/inbox.goInbox会话级内存去重防重投harness/inbox/local.goSession只追加、可分叉的持久化历史账本harness/sessionstore/sessionstore.goOperation可序列化、有状态机的异步工作单harness/operation/operation.go掌握这四个词你就拿到了 Unreal Agent 源码的地图。想动手验证入口程序在 cmd/unreal-agent-runner/测试数据里有可直接打开的会话快照harness/sessionstore/localfile/testdata/配合go test ./...跑一遍测试比读十篇教程都管用 【免费下载链接】unreal-agentAsync-first agent harness项目地址: https://gitcode.com/gh_mirrors/un/unreal-agent创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

相关推荐

treg 插件工具标注(Tool Justifications)解析:为 ChatGPT 插件审核编写的诚实声明
treg 插件工具标注(Tool Justifications)解析:为 ChatGPT 插件审核编写的诚实声明

后端API网关MCP 服务dsh-plugin 【免费下载链接】treg OpenRouter for agent tools. Join community here: https://discord.gg/6mQYYfFMAn 项目地址: https://gitcode.com/GitHub_Trending/treg/treg 点击查看 免费下载 本指南以 treg 仓库中 docs/PLUGIN-TOOL-JU… · 2026/9/25 1:29:51

拆解Nex-N2.5-Pro的FP8块量化:compressed-tensors量化策略、豁免层设计与显存成本剖析
拆解Nex-N2.5-Pro的FP8块量化:compressed-tensors量化策略、豁免层设计与显存成本剖析

拆解Nex-N2.5-Pro的FP8块量化:compressed-tensors量化策略、豁免层设计与显存成本剖析 【免费下载链接】Nex-N2.5-Pro 项目地址: https://ai.gitcode.com/hf_mirrors/nex-agi/Nex-N2.5-Pro Nex-N2.5-Pro 是 Nex-AGI 开源的多模态智能体模型(MoE … · 2026/9/25 1:29:51

TypeScript 赋值收窄(Assignments Narrowing)完全指南:基于赋值流自动收窄联合类型
TypeScript 赋值收窄(Assignments Narrowing)完全指南:基于赋值流自动收窄联合类型

文档教程 【免费下载链接】typescript-book The Concise TypeScript Book: A Concise Guide to Effective Development in TypeScript. Free and Open Source. 项目地址: https://gitcode.com/gh_mirrors/typ/typescript-book 点击查看 免费下载 本篇指南围绕开源图… · 2026/9/25 1:29:45

RisingWave 开发者文档体系:构建 rustdoc 索引页与核心 crate 导航指南
RisingWave 开发者文档体系:构建 rustdoc 索引页与核心 crate 导航指南

数据库流处理后端数据工程 【免费下载链接】risingwave Event streaming platform for agentic AI. Continuously ingest, transform, and serve event streams in real time, at scale. 项目地址: https://gitcode.com/gh_mirrors/ri/risingwave 点击查看 免费下载… · 2026/9/25 3:30:49

苹果CMS+油条视频模板视频站搭建全攻略:从宝塔部署到上线备份
苹果CMS+油条视频模板视频站搭建全攻略:从宝塔部署到上线备份

简介:油条视频是一套基于苹果CMS系统的视频建站完整解决方案,面向需要快速搭建影视资源站的站长、运营者及PHP二次开发学习者。系统后台内置自定义参数,可灵活对应会员升级与积分充值页面;视频、演员、专题、收藏、会员等模块齐全… · 2026/9/25 3:30:49

OpenTTD 编译实战:依赖库、CMake 构建流程与 Windows/多平台调试选项
OpenTTD 编译实战:依赖库、CMake 构建流程与 Windows/多平台调试选项

游戏开发 【免费下载链接】OpenTTD OpenTTD is an open source simulation game based upon Transport Tycoon Deluxe 项目地址: https://gitcode.com/gh_mirrors/op/OpenTTD 点击查看 免费下载 OpenTTD(基于 Transport Tycoon Deluxe 的开源运输模拟游… · 2026/9/25 3:30:49

CRM云端部署与Excel迁移避坑指南
CRM云端部署与Excel迁移避坑指南

1. DeskcommCRM不是“另一个Excel插件”,而是客户数据主权的重建起点你有没有过这样的经历:销售同事发来一份标着“最新客户清单_V12_终版_真的终版.xlsx”的文件,里面混着三张工作表——一张是去年的线索池,一张是今年Q1跟进记录… · 2026/9/25 3:30:43

azidentity Breaking Changes 深度解读:Managed Identity 错误行为与 IMDS 探测机制变更
azidentity Breaking Changes 深度解读:Managed Identity 错误行为与 IMDS 探测机制变更

云原生CI/CDDevOps后端 【免费下载链接】pipeline A cloud-native Pipeline resource. 项目地址: https://gitcode.com/gh_mirrors/pipelin/pipeline 点击查看 免费下载 本指南以 Azure Go SDK azidentity 模块的 BREAKING_CHANGES.md 为核心,完整解读 … · 2026/9/25 3:30:36

Skia Job Analysis 指南:用 jq + Miller 审计 jobs.json,找出 CI 测试覆盖缺口
Skia Job Analysis 指南:用 jq + Miller 审计 jobs.json,找出 CI 测试覆盖缺口

图形学图像处理 【免费下载链接】skia Skia is a complete 2D graphic library for drawing Text, Geometries, and Images. 项目地址: https://gitcode.com/gh_mirrors/skia1/skia 点击查看 免费下载 本文围绕 Skia 仓库中 infra/bots/analysis/README.md 所描述的… · 2026/9/25 3:30:36

数值优化(Numerical Optimization)学习系列-03-共轭梯度方法(Conjugate Gradient)
数值优化(Numerical Optimization)学习系列-03-共轭梯度方法(Conjugate Gradient)

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/9/25 1:00:31

创维E900V22D刷机全攻略:S905L3SB芯片兼容性解析与救砖实战
创维E900V22D刷机全攻略:S905L3SB芯片兼容性解析与救砖实战

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/9/25 1:00:31

MQTT协议原理与Broker服务器搭建实战:从Mosquitto到EMQX
MQTT协议原理与Broker服务器搭建实战:从Mosquitto到EMQX

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/9/25 1:00:37

了解更多?预约专属演示

我们的顾问将为您一对一讲解产品与方案

企业微信二维码