Replies: 12 comments 19 replies
1. Agent Continuation
Agent Continuation 图核心判断Agent 在 Aevatar 里的推进,不是 loop,是 actor 内的 event choreography。看起来像循环的部分,本质是 这和普通 harness 的
当前已经有的基础
主要缺口现在的问题不是"完全没有 continuation",而是几条 actor 推进链没有统一成 Harness 语义:
建议收敛方向:Event Choreography 而非 Pipeline不再用"线性 8 步 pipeline"描述推进,改成 actor inbox 上的 event choreography: 关键点:没有任何一处是"等待"。每一步都是 actor inbox 里独立的一拍,handler 决定下一步发什么事件。 可观察事件清单:
第一阶段最小闭环围绕
需要团队讨论的问题
二轮更新(2026-05-06,采纳 @loning 第二轮反馈)@loning 的进一步判断:
接受。原本"短期保留 ChatRuntime 作为 IO worker"只是过渡形态——长期目标:彻底消除 ChatRuntime 这个抽象。 理由:
长期形态
这样 LLM 就和其他外部能力一样接受四层 governance(详见 §4):schema / boundary / actor / topology。 Self-Introspection(合并自作废的原 §3 Memory)原 §3 Memory 节作废后(理由见 §3),其中"agent 看自己历史 / 状态"这一部分能力保留为 Continuation 模型的子集——但不引入 "Memory" 抽象层:
|
2. Tools / Skills / PluginsTools / Skills / Plugins 图核心判断Aevatar 不应该把自己做成一个大而全的 tools/plugins 平台。更合理的边界是:
这样做的原因很直接:NyxID 当前公开 surface 已覆盖 credential、proxy、MCP、approval、agent binding、rate limit、audit 等方向;Ornn 当前公开 surface 已覆盖 skill package、search、generation、sandbox/runtime 等方向。但这不等于 Aevatar 已经原生接入这些能力,也不等于外部能力天然满足 Aevatar 的分布式运行时语义。Aevatar 如果每接一个服务就在本仓库写一个 typed provider,会绕开这些现成治理面,也会把维护成本压到 Aevatar 自己身上。 当前已经有的基础Aevatar 现在并不是空白:
主要缺口问题在于边界还没收敛:
建议分层建议明确三类工具:
外部服务和 plugins 默认走 NyxID。Aevatar 负责发现、展示、调用上下文、capability lifecycle、run observation;credential、scope、approval、rate limit、audit 在 NyxID 当前公开契约范围内由 NyxID 管。
Skills 默认走 Ornn。Aevatar 负责搜索、选择、加载、运行委托、记录 skill usage;skill package、provenance、runtime/sandbox 由 Ornn 管。
只保留与 Aevatar 运行时内部强相关的工具,例如 self-memory inspection、workflow/binding 内部操作、ask_user、少量 actor/runtime 控制能力。 第一阶段最小闭环
需要团队讨论的问题
|
3.
|
| 看起来像 memory 的需求 | Aevatar 已有的对应物 |
|---|---|
| Session memory | RoleGAgentState.sessions |
| Long-term state | 任意 GAgent 的 state |
| Projection memory | Projection / Readmodel |
| User preference | User GAgent 的 state |
| Team memory | Team GAgent 的 state |
| Self-introspection | 两个 tool(inspect_self_state / search_self_events)— 详见 §1 |
没有一项需要"Memory"这个新抽象层。
保留的能力
"agent 看自己的 state / event"这一部分能力作为 Continuation 模型的子集,已合并到 §1 Agent Continuation 的 "Self-Introspection" 子段。
关于本评论
保留评论位置(不删除评论)以维持 discussion thread 连贯,并保留 @loning 的 reply 上下文。
本节的演化轨迹("五层 memory" → "fan-out 多视图" → "整节作废")反而是 Discussion 形态的最佳例证:每一次重写都比上一次砍掉更多 trivial 抽象。这个过程本身值得作为团队架构反思的素材。
4. Governance
Governance 图核心判断真正的治理 = 让违规无法表达,而不是"事先声明规则、运行时检查"。 约束分布在四层结构里,每层让特定类型的违规根本无法构造、无法发出、无法到达、无法越权: 中心化 @loning 的"管理学就是最好的 Harness"在治理层的对应物正是这四层:制度(schema)、流程(boundary)、岗位职责(actor)、组织架构(topology)。没有一家健康公司用"治理 config 中心"管所有事。 四层各自的当前状态与定位1. Schema-level(最强约束)已有:
应做:
特点:违规根本无法构造。最强、最便宜、最不可绕过。 2. Boundary-level已有:
应做:
特点:违规请求根本发不出去。 3. Actor-level已有:
应做:
特点:违规命令到了 inbox 也无法推进 actor 状态。 4. Topology-level已有:
应做:
特点:越权命令根本不在 actor topology 路径上。 应该明确删除的设计
Hooks 的定位(明确分责)Hooks(pre-tool / post-sampling / pre-connector / pre-command-dispatch / failure / stop)是 best-effort 旁路,不承担 hard gate:
Hard gate 必须在四层结构内(schema / boundary / actor / topology),由结构本身阻断。Hook 失败不阻断主流程是设计特性,不是 bug——它强迫真治理走结构而不是走 hook。 Denied Ledger(保留可观察性,不引入新治理对象)被拒绝的 tool call / command / connector 调用,作为事件进 readmodel ledger(不只是 log):
便于 audit / debug / 申诉。它是事后可观察性(fan-out 视图,见 §1),不是事前治理逻辑——不要把它和 governance config 混淆。 第一阶段最小闭环
需要团队讨论的问题
|
5. Multi-Agent
Multi-Agent 图核心判断Aevatar 的 Multi-Agent 模型直接对应现实组织架构——不引入"中介者"、"任务板"等程序员常见的 mediator pattern。 这是 fractal topology——同一种 actor 抽象按 parent/child 组合出任意层级,没有特殊的 "manager actor" 或 "task board actor"。 Platform Primitive(仅此而已)Aevatar Multi-Agent 平台层只需要三件事:
所有"组织模式"(CEO 部门 / 研发部门 / 评审部门 / 任务分发 / 多 worker 并行)都是这三个 primitive 在运行时的编排,不是新平台对象。 判定标准:如果一个能力可以通过 已有 primitive + 业务逻辑 表达,它就不是 platform primitive,它是 application-level pattern。 当前已经有的基础
这些已经是充分的 multi-agent runtime。 TeamManagerGAgent / TaskBoardGAgent 退回 example这两个不再是平台 primitive,而是 application-level example pattern——展示如何用 GAgent + parent/child + 消息 表达"经理-员工"和"任务分发"模式。 具体退回方式:
主要缺口(重新定义)不再是"缺少 TeamManager / TaskBoard 平台 primitive",而是: 1. 缺少组织模式 example library需要把以下模式作为 application-level example 沉淀,全部用 GAgent + parent/child + 消息 实现,不引入新平台对象:
2. 缺少 Agent-to-agent protocol descriptorGAgent 需要声明:
这是 schema-level 治理(详见 §4),属于 GAgent 自身元数据,不是新 actor 类型。 3. 缺少 topology readmodel需要 readmodel 暴露:
这是 fan-out 视图(详见 §1 Agent Continuation),不是新 actor 类型。 4. 缺少跨 agent governance 的明确表达哪个 agent 可以给哪个 agent 发什么 command,哪些事件可跨 scope,哪些 link 需要审批——这是 §4 Governance 的 topology-level,不是新 actor 类型。 第一阶段最小闭环
需要团队讨论的问题
|
|
按照公司或者组织架构进行设计.. 一个部门是一个GAgent, 一个公司是一个部门. 为什么要有TaskBoardGAgent 这种奇怪的东西? |
|
基于目前 这版主要想表达几个判断:
另外有一个 scope 问题想确认:
下面是当前草案里的几个关键页面,想重点确认:
1. 团队列表 / Team-first entry2. 团队概览3. 事件拓扑4. 构建团队5. Aevatar Studio - 行为定义6. Aevatar Studio - 测试运行 |
|
补充一个 user story / 页面链路视角,方便后续讨论时不只看“页面是否齐”,也看用户能不能从目标一路走到结果。 核心链路
当前草案基本覆盖的页面
仍需要补齐或确认的部分
我的理解是:这套图作为产品方向讨论已经够用了;但如果要变成第一版产品规格,还需要先收敛 scope,并把上述关键跳转和状态补上。 |
|
补充一下这一轮 Aevatar Console / Studio 设计 patch 的当前状态。这个版本不是在重新定义 IA,而是在前面已经讨论过的 Team-first 结构上,把几个关键用户链路补齐。 1. 当前产品结构的收敛这一轮我理解的核心结构是: 也就是说,Studio 不再作为一个新的一级产品壳出现,而是从 Team Detail 的成员行为进入。用户的上下文应该始终能回答三个问题: 2. 团队成员页:补齐进入 Studio 的入口团队成员页这一轮补的不是更多 dashboard 指标,而是把成员级操作链路补上: 由于表格右侧空间有限,长中文按钮很容易被截断,所以当前方向改成 icon actions:查看 / 编辑 / 测试。这个方向我认为是对的,适合 Console 的信息密度。 注意:这张图里右侧最后一个 icon 仍有一个 3. Studio 发布闭环之前比较缺的是:用户在 Studio 里改完行为之后,发布动作结束后应该回到哪里。 我建议的闭环是: 这里的发布对象不应该是泛化的 Project,而应该表达成当前上下文里的对象: 发布确认态: 发布失败态: 成功态目前也已经收敛为: 这比“返回团队列表”更合理,因为发布完成后用户仍然处在当前 Team context 里。 4. 连接器页的定位连接器管理页应该继续放在 Team Detail 下,而不是 Studio 下。 原因是连接器是团队可复用资源,不是某一个行为编辑器内部的局部配置。一个连接器可能被多个成员使用,所以它更适合在 Team Detail 里表达: 如果某些连接器能力 V1 还不能完整支持,可以保留入口并标注 5. 还需要团队确认的问题我觉得现在可以基于这几条继续讨论:
我的当前判断:产品链路已经基本收敛,可以继续拿这版讨论;但团队成员页那张图还需要修掉 icon-font 导出残留后,才能作为最终视觉稿使用。 |
|
补充这一轮 Console mockup 的更新:这次主要不是继续扩 IA,而是把“一个用户进来以后到底怎么创建团队、点哪里、到哪里、看什么”这条链路补清楚。 我现在建议把这次补充分成两条线看: 1. 创建团队 walkthrough这条链路现在是: 这版想表达的产品判断是:
入口:我的团队用户进入 Console 后先看到团队列表。这里的 步骤 1:团队目标第一步只做三件事:
模板只是初始建议,不应该把某个例子写死成产品结构。比如“交易风控团队”“客户支持团队”“内容审核团队”都只是可选场景,用户也可以从自定义团队开始。 步骤 2:添加成员第二步让用户确认初始成员组合。这里先表达“团队由哪些成员协作完成目标”,不在这里展开 Studio 的行为编辑细节。 示例成员:
这个页面里也明确了一个边界:真正编辑成员行为,应在团队创建后从 步骤 3:连接器第三步配置连接器。连接器是团队和外部业务系统之间的通道,例如消息、API、数据库或通知。 这里我建议不要把连接器做成创建团队的强制前置条件。用户可以现在连接,也可以创建团队后在 Team Detail 的连接器页继续补齐。 步骤 4:创建确认第四步是创建前确认,汇总:
这里需要特别避免和“发布行为”混在一起。创建团队只是创建 Team shell 和初始成员;某个成员行为的测试、发布、失败处理,仍然应该从 Team Detail 进入 Studio 后完成。 创建成功创建完成后,用户应该有两个明确出口:
这个成功页也提示下一步:配置成员行为、补齐连接器、查看运行状态。 2. 待处理事项的去向前面讨论过 现在建议先按类型分流: 待处理事项列表当用户点击“查看全部待处理”,可以进入这个汇总页。它不是独立任务系统,而是把所有需要动作的事项按类型、团队、对象和优先级展示出来。 人工任务详情如果是生产运行中的人工确认任务,不建议跳到 Studio Test Run。它更像是一个运行中的人工处理页面,例如 发布日志详情如果是发布失败,应该有一个专门的发布日志详情页。这样用户能看到失败原因、时间线、日志和下一步动作,而不是只在 toast 或发布结果页里丢一句错误。 3. 当前这轮实际改动 / 补充的页面4. 想请大家重点确认的问题
我的当前判断:如果 V1 要先收敛,优先保证这两条链路能讲通: 事件拓扑 / 事件流 / 测试运行这类能力可以继续讨论 V1 是否展示完整页面,但不要影响上面这两条基础链路的清晰度。 |
|
补一张刚才漏掉的 也就是说创建成功后的主路径应该是: 这张图里我觉得比较重要的点是:
所以目前完整的基础链路应该补成: 这个页面我建议作为 V1 必做页,因为它是 Team-first Console 里最重要的落点:用户创建团队、进入团队、发布行为返回团队,最后都应该回到这里。 |
|
补充今天已经收敛过的一组页面,主要是 这轮重点不是扩 IA,而是把页面从“开发实现展示”收回到用户能理解的 member-first 操作路径: 1. 团队成员页这页现在定位为 member management list,不再放多余 dashboard 区块。表格里每个成员都围绕真实成员模型展示:
这里的判断是:用户从团队进入后,应该先看到“这个团队有哪些成员、每个成员现在是否可用、我要点哪里编辑或测试”。 2. Studio:成员行为定义页这页按代码里的 member-first 实现重新收敛了一版。它不再把 NyxID/Auth 或泛化流程概念放进产品叙事,也不再暴露 API route、read model、request body、ImplementationRef / LastBinding 这类后端字段。 当前页面表达的是: 页面结构:
3. 想请大家重点看
我的当前判断:这两页已经可以作为 member-first Studio 链路的基准稿继续讨论;下一步可以再分别看 Script / GAgent 成员进入 Studio 时是否需要不同的编辑页形态。 |

























Uh oh!
There was an error while loading. Please reload this page.
Uh oh!
There was an error while loading. Please reload this page.
背景
这个 Discussion 由 issue #567 迁移而来:#567
我们把它从 issue 转成讨论形态,是因为这里讨论的不是一个单点实现任务,而是 Aevatar Harness 的能力边界、产品表达和后续拆解方向。
希望参与讨论的人:
@loning @jason-aelf @louis4li
当前先按五个角度组织讨论,每个角度在下方各有一个独立回复帖,团队可以在对应回复下继续补充、反驳、拆任务:
架构图
当前状态总览
目标愿景总览
总体判断
Aevatar 不应该简单复刻一个通用 agent harness。它已经有自己的底座:
EventEnvelope和 stream 的 agent-to-agent message plane;CommittedStateEventPublished(state_event + state_root)到 projection/readmodel 的观察链路;所以 Harness 的方向不是另起一套框架,而是把这些能力收敛成可描述、可治理、可观察、可扩展的运行时产品能力。
外部边界
这里也先明确一条原则:
这个 Discussion 不要求 NyxID、chrono-ornn、chrono-storage 等外部仓库新增能力。方案讨论应优先使用外部仓库当前已公开 surface;如果不足,优先考虑 Aevatar 内部绕开或暂不做。
讨论方式
建议每个角度都围绕这几类问题展开:
All reactions