跳到正文

场景考量点全景:从“支持”到“选错会怎样” ​

一句话:平台的上限不由组件清单决定,而由那些必须在具体场景里做选择的地方决定——本文把身份、租户、会话、状态、任务、供给、路由、交付、发布、治理十类考量点摊开,每条都给默认建议、失败后果与验收口径。

单点深挖见 沙箱资源管理,接缝与数据所有权见 落地方法论与总体架构;本篇是决策前的检查地图,不替代任何一篇的机制说明。

为什么需要 ​

“支持多租户”“支持沙箱”“支持 Skill 上架”这类说法没有信息量,因为它们不回答四个问题:谁和谁共享、状态放在哪、失效时怎么办、怎么证明它成立。

一个需求进来,至少要拆到这种程度:

  • 不是“每人一个助理”,而是“同一用户两个标签页同时改一份文件,谁赢”;
  • 不是“支持 Skill 上线”,而是“已上线版本能不能改、回滚要不要重新审核”;
  • 不是“支持 IM 交付”,而是“500MB 报告怎么发、链接被转发后还能不能打开”;
  • 不是“支持沙箱”,而是“按 session 还是 user 隔离、热池里会不会留着上一个人的 Token”。

下面的清单就是把这些问法固定下来。每条都按“场景 → 决策 → 建议 → 错了会怎样”组织,落地时再补一列“验收用例”。

这张图的用法是:任何“支持 XX”的需求,先逼出共享边界,再逼出状态位置,最后逼出失败语义;没有验收用例的决策,视为还没决定。

核心机制 ​

一、身份与入口 ​

场景决策点建议默认选错的后果
全公司一个助手域名,背后每人一个实例同源代理还是登录后跳转同源反向代理,浏览器只见 Hub 域名Cookie 不出域,实例裸奔或反复登录
浏览器登录态Cookie 放什么、存哪、多久__Host-sid + HttpOnly/Secure/SameSite,只存随机 ID,服务端会话表脚本可窃取、会话无法撤销
同一人 PC/手机/桌面同时在线共享会话还是每端一个每端一个 session,工作区与记忆按 subject 共享,同一 session 只允许一个主控端提交两端 Turn 交错、重复扣费
多身份源,同一人多个账号平台主体用什么唯一键内部 subject UUID,映射 (issuer, sub, tenant, status),email 只展示一人分裂成两个账号,或两人撞 email 被合并
客户端自带 X-User-Id 访问下游信任内网头还是重新签发入口剥离全部身份头,注入 HMAC 签名(subject/tenant/时间戳/nonce),下游验签任何能访问内网的人可冒充任意用户
内网服务之间调用网络边界是否等于信任边界默认拒绝的 NetworkPolicy + 双向 mTLS + 每跳校验 owner扫到端口即可调用,横向移动
用户登出、IdP 全局登出、员工离职失效传播到哪删服务端会话、关长连接、吊销派生凭据,分钟级生效旧 Cookie 仍可用,“人走了助理还在”
访客、共享电脑是否允许匿名、留多久默认拒绝匿名;访客用短时 guest subject + 临时前缀,禁止读写个人数据,退出即销毁下一位使用者看到上一位的会话与文件
IdP 故障fail-open 还是 fail-closed新登录拒绝,已登录会话短期只读宽限,高风险写操作重新校验全平台匿名放行,或一挂全挂
配额挂在 Key 还是人限流维度挂 consumer(租户)并叠加 subject,Key 轮换不影响累计换 Key 绕过配额,一个人打满共享池

二、租户与命名空间 ​

场景决策点建议默认选错的后果
不同业务单元共用平台租户边界由什么承载Service 命名空间作资源与授权边界,租户用请求头 + 存储前缀;强合规租户独立集群把注册中心命名空间当租户边界,配置与实例发现串租户
按人还是按项目建命名空间命名空间粒度按租户与环境建,个人维度用 subject + 存储前缀元数据爆炸、权限表膨胀、控制面查询退化
A 租户调用 B 租户的知识或工具跨租户授权方式显式 grant,绑定资源、动作、有效期与用途;审计同时记录双方隐式共享导致越权,账单无法拆分
企业、租户、用户三层配额同时存在扣减顺序与超额行为逐层原子扣减,超额显式配置为拒绝/排队/降级网关限住了模型,工具仍被刷
多租户共享节点池跑 Agent 与沙箱隔离强度普通租户共享池 + 每会话沙箱;敏感租户独立节点池与密钥共享工作目录、卷挂载串数据、侧信道
新租户开通、停用、合并资源创建与回收模板化创建 namespace/配额/凭据路径;停用走冻结→导出→删除停用后定时任务仍跑、对象存储仍计费
环境隔离命名空间怎么分注册中心按环境分命名空间,租户不混用环境命名空间测试配置推到生产消费者

三、会话与运行时 ​

场景决策点建议默认选错的后果
用户连发两条消息同会话并行还是串行同 session 严格串行并排队,不同 session 并行两轮同时推进、状态覆盖、重复扣费
多副本写事件、客户端重连事件序号谁生成每 session 单调 seq,由权威事件日志分配,客户端去重排序重复、乱序、重复渲染
断线 30 秒后重连续传策略快照 + as_of 游标 + Last-Event-ID;游标过期返回 410无限重放,或过期后静默空流
单轮执行 10 分钟超时与心跳连接、首包、流式空闲超时分开设;心跳小于空闲超时;网关不缓冲网关先断、下游仍执行,用户看到失败但继续计费
Pod 缩容、节点故障、实例漂移粘性还是无状态状态外置,任意节点按 (tenant, ns, session) 加载;迁移用租约 + 栅栏令牌粘性会话一挂就丢上下文,双写导致状态回退
同一用户从两个入口发消息锁的粒度session 级串行 + user 级配额;跨 session 并行,记忆写入合并全局锁让多会话互相阻塞,或记忆双写冲突
客户端超时后重试提交/取消/审批幂等键覆盖范围所有变更操作带 Idempotency-Key;同键不同内容返回 409重试产生两个 Turn、审批重复执行
会话要留 180 天备查热温冷分层活跃状态在 Redis/DB,事件日志归档对象存储,索引只留元数据Redis 内存失控,删除删不干净

四、状态与记忆 ​

场景决策点建议默认选错的后果
会话状态、工作区、快照、产物混在一起存储选型小 KV 进 Redis/DB,工作区进 NAS/CephFS,产物与快照进 S3 兼容存储,锁进 Redis/DB内存账单超过模型账单,对象存储做锁失效
个人偏好、草稿、角色设定、公共模板共享粒度草稿 SESSION,偏好 USER,角色 AGENT 只读,模板 GLOBAL 只读;AGENT/GLOBAL 写加锁个人记忆写进 AGENT,所有用户互相污染
日流水、会话文件、临时产物、交付物TTL 是否统一分级 7/30/90/180 天,审计单独保留;变更可灰度全永久成本失控,过短复盘无证据
长会话 200 轮、工具结果 80K 字符压缩时机与配对保护约 50 条或预算触发;不切断工具调用与结果配对;大结果落盘留首尾孤儿工具调用,模型看不到关键证据
用户一周后问“上次那个方案”内置记忆还是外部记忆内置记经历,外部只收已确认事实;同一事实只有一个写入口旧事实反复召回,两套记忆冲突
两个会话同时写同一 user 记忆写冲突策略版本 CAS + ConflictPolicy.FAIL,冲突合并或转人工静默覆盖,状态回退
用户要求删除、员工离职删除范围与证明从 subject/session 追到状态、工作区、快照、产物、索引、缓存、向量与图,逐项删除删除后仍能从缓存或向量库召回

五、任务与队列 ​

任务状态机、表结构、等待释放与预算算法的完整实现见 22-架构评审与任务闭环;这里只保留决策点。

场景决策点建议默认选错的后果
每天 8 点生成报表复用会话还是新建每次触发新建 Agent 实例与唯一 session(如日期后缀)多次运行写进同一段历史,上下文污染
工单创建触发 Agent先写库还是先发消息任务与 Outbox 同事务写,Relay 异步投递,失败退避消息发了任务没成立,或任务成立消息丢了
同一会话多条任务要保序主题粒度父 Topic 按环境/地域拆,LiteTopic 用 t/{tenant}/s/{session},单队列 FIFO全局 Topic 慢会话阻塞快会话,每会话 Topic 元数据爆炸
Worker 重连、滚动发布、网络分区旧执行者怎么处理新连接接管前撤销旧连接,写回校验租约版本,旧写回被拒两个 Worker 同时改状态、重复扣费
消息重复投递去重键idempotency_key 由 task 与 attempt 派生,Worker 先查账本退款、发消息执行两次
工具超时、模型 429、代码缺陷重试策略可重试错误指数退避,不可重试直接死信;死信有 owner 与 SLA无限重投打爆下游,或一次缺陷永久卡住
任务预计 40 分钟截止时间与预算信封带 deadline_ms 与 budget,接手前判断是否太晚,分段检查点过期任务仍烧资源,预算耗尽仍调模型
用户取消长任务、大租户抢 Worker取消语义与公平性停后续轮次并标记不可回滚副作用;租户加权队列 + 单租户并发上限取消后继续计费,大租户饿死小租户
任务两小时没动静等待原因怎么表达wait_reason 机读:类型/关联 ID/开始时间/SLA;界面、告警、Runbook 共用只能显示“处理中”,资源不释放,排障靠猜
模型说“已完成”完成判据与证据四级完成:executed / verified / accepted / delivered;无证据标 completed_unverified把模型总结当验收,出问题无法追责
预算耗尽、审批超时、用户取消终态与未完成清单expired / cancelled + unfinished_items + 可续跑检查点悄悄截断,用户不知道哪些已生效、能否续跑

六、供给链(Skill / MCP / Agent / Worker) ​

场景决策点建议默认选错的后果
Skill 与 MCP 上架谁是定义权威源码 Git,分发与版本 Nacos,产品与订阅 HiMarket,准入 Higress,运行时只加载执行市场不可用则 Agent 加载不到能力,目录漂移
修复 Skill 脚本缺陷能否原地改已上线版本已上线不可变,新建草稿重走审核,回滚只切 label同一版本号内容不同,复现与追责失败
MCP Server 升级参数端点升级还是发新产品版本产品版本表达契约,端点版本表达部署;破坏性 Schema 变更发新产品并留迁移期调用方大面积校验失败,旧订阅被强制中断
外部来源 Skill/MCP 上线审核强度与灰度对象内部只读自动扫描 + 轻审核,外部或写操作人工复核;canary 只给少量租户恶意脚本进生产,灰度对象不可控
应用已订阅某 MCP 产品订阅是否等于可调用订阅、工具策略、网关准入三层分别校验拿到地址即可调用,参数级越权拦不住
上游改端点或删工具同步机制每日比对注册中心在线版本/工具清单与市场快照,差异告警目录指向空处,消费方拿到坏产品
某资产要退役下线流程标记弃用、通知订阅方、给替代品、保留迁移期再转 offline消费方突然断供
Agent 作为产品上架产品契约与端点版本稳定、版本化的 Endpoint;产品版本与 release 分离定义一改行为就变,消费方无法复现

七、模型与路由 ​

场景决策点建议默认选错的后果
简单问答与复杂重构混在长任务里谁选模型本地先选档,中心网关做准入与兜底;每条新用户消息重判,同轮工具续接保持模型全用主力模型成本高,频繁切换击穿提示词缓存
月度成本分摊与对外展示成本以什么为准网关计量为账单权威,本地回执只做估算并标注“非账单”估算被当承诺,账单对不上
主模型 5xx 或 429降级到谁、是否留痕候选做能力等价校验(工具、窗口、结构化输出),降级打标写 trace;预算耗尽拒绝而非升级降级到不支持工具的模型,任务失败且无法复盘
单租户突发流量限流维度与 429 语义按 consumer/subject/模型三层限流,区分配额耗尽、上游限流、并发过高一个租户打满全局,客户端盲目重试放大故障
跨境团队与敏感数据模型端点与数据落地区域租户级驻留策略,路由表带 region,存储与端点同区;跨境显式审批数据出境违规,跨区延迟恶化
相似问题命中语义缓存缓存键与失效条件键含 tenant、模型版本、提示词版本、工具 Schema 版本;敏感请求禁用A 租户答案给 B 租户,模型升级后仍返回旧答案
供应商限流与自身配额混淆归因与降级路径分开统计,按租户隔离配额,命中限流回退候选并降档一个租户触发上游封禁,全体租户一起失败

八、产出物与 IM ​

场景决策点建议默认选错的后果
生成 500MB 报告直传还是链接按渠道能力表选择,超限一律走短时 ticket 链接,正文与文件不进消息体撑爆上下文、上传失败、无法撤销
用户点击下载链接ticket 语义随机 ticket 服务端记录 artifact/subject/过期/一次性,TTL 5–15 分钟;下载网关再鉴权链接转发即泄漏,永久链接无法撤销
报告或审批需要后续动作交付形态需要动作走交互卡片,完成后原地更新;回执记录 message_id、渠道、接收人、状态用户不知道是否成功,重试重复发送
产物含密钥或个人信息扫描时机与命中动作登记后、可交付前同步扫描,命中转审批或拦截,扫描失败 fail-closed敏感数据外发,合规事故
用户说“发到项目群”收件人由谁决定收件人来自 session → subject → IM 绑定,群发显式确认并检查 ACL误发群、越权泄露
员工离职,IM 绑定与旧链接仍在清理范围停绑定、撤销未过期 ticket、按保留期导出或删除、留审计离职后仍能通过旧链接下载
产物已生成但 IM 发送失败是否回滚任务不回滚任务,退避重试,仍失败降级为链接并在会话留事件重复生成产物,任务状态误判失败
不同 IM 能力差异适配器边界统一 upload/send/update/receipt,差异用能力表表达if-else 糊在业务里,换渠道就改代码

九、发布与运维 ​

场景决策点建议默认选错的后果
新 Agent 版本上线灰度对象与版本冻结少量会话先行;Session 创建时冻结版本,已有会话不自动升级运行中会话跟着定义变,问题无法复现
新版本质量退化回滚粒度与止损时间定义切版本、Endpoint 切 release、Workflow 固定 revision;目标 10 分钟回滚要发版,错过止损窗口
修改超时、灰度比例、功能开关配置变更治理配置像代码一样版本化、评审、灰度、Schema 校验,客户端保留本地快照一个拼写错误让所有实例启动失败
大促或集中上班高峰容量估算口径活跃会话 × 单轮时长 / 间隔;队列按通道数;存储按保留期按总会话配,峰谷浪费或峰值不足
单个可用区故障故障域划分控制面、数据面、队列、数据库分别跨区;单会话粘单通道单 Worker一个区挂导致全平台不可用
两地部署多活模式优先单元化,租户固定单元,跨单元只同步目录与计量,会话状态不出单元双写冲突、跨区延迟、状态互相覆盖
滚动升级 Dataplane 与网关升级策略先 drain,等在途 Turn 结束;消费者先升、生产者后升,信封只增字段升级即中断,混合版本解析失败进死信
数据库 schema 变更迁移兼容先加列、再双写、后切读;回滚窗口内双向兼容,禁止不可逆删列回滚变成数据事故

十、可观测、安全与合规 ​

场景决策点建议默认选错的后果
跨网关、队列、内核、工具排障trace 如何传递入口注入 traceparent,任务信封携带,Worker 作为父上下文一次任务断成多条 trace,无法归因
高流量下 trace 成本采样策略错误、越权拒绝、高危工具调用 100% 采;正常按比例;审计不依赖采样出事时恰好没采到,或成本失控
月底成本分摊以谁的数据为准网关计量为权威,内核自报只排障,每月三方对账账单与用量对不上,重试重复计费
指标标签基数控制只放模型、Agent、工具、状态码;会话/用户/任务放 trace时序库基数爆炸,告警失真
合规追责审计存哪、留多久独立只追加存储,记录主体/动作/对象/结果/时间/来源/trace_id,保留期单设trace 过期后无法追责,审计可被篡改
发布前评估新版本评测集构成按任务类型分层,覆盖正常、边界、对抗与历史 BadCase;用例与阈值随发布冻结离线分数好看线上退化
Agent/提示词/模型升级门禁级别静态→离线→影子→灰度→全量,明确回滚阈值;总分持平但成本翻倍也不能上门禁形式化,退化版本直接全量
文档/网页/邮件间接注入靠模型还是靠边界指令与数据分离标记 + 工具最小权限 + 出网限制 + 输出过滤,四道同时上一次注入即可触发写操作或外发
MCP 工具描述被篡改工具清单治理Schema 哈希锁定,变更审批,运行时只启用显式白名单工具模型被描述带偏,参数注入打到后端
凭据出现在日志或上下文凭据可见范围只存在凭据库与工具执行环境,按 租户/主体/工具 分区,短 TTL,全程脱敏一次日志导出即泄漏
删除承诺删除传播范围对象、缓存、索引、CDN 全覆盖,备份靠保留期加密钥销毁“已删除”只是看不见,仍可恢复
供应链来源构建与拉取信任链依赖锁哈希、私有源优先、镜像签名、SBOM、准入校验同名恶意包或已知漏洞长期在线

十一、九个管理对象与证据三态:成熟度不看功能数 ​

平台“支持”某个能力,和平台“管理”某个对象,是两件事。功能能跑,对象未必可管;没有权威、状态机、权限与生命周期的对象,一旦上规模就会退回手工表格。

对象权威在哪关键状态生命周期归谁
Agent控制面目录 + Releasedraft / canary / active / retired平台管理员与发布者
Task任务账本11 个阶段 + 4 个终态调度器与平台
Task Run任务账本running / succeeded / failed / cancelled / lostWorker + 租约
Session会话服务active / idle / closed / expired平台
Tool / MCP注册中心 + 网关准入draft / published / deprecated / offline供给方
Skill / Knowledge注册中心draft / published / deprecated供给方
Memory记忆服务active / superseded / deleted用户与治理方
Artifact对象存储 + 元数据created / scanned / committed / referenced / expired任务与治理方
Budget预算账本active / settled / released / expired平台与父任务
Channel(渠道)接入层渠道聚合器 + 网关registered / active / suspended / retired;绑定企业身份映射平台与租户管理员

九个对象都要有四个共同字段:owner、version 或 release_id、生命周期状态、保留与删除策略;缺一个,界面上看到的就只是投影,不能拿来追责。

Channel 与数据驻留(2026-10-26 补):渠道是第十个管理对象——企业 IM 渠道聚合器(飞书/企微/钉钉,个人助手底座原生 channels 已验证 console/feishu/dingtalk/wecom 等 13 类)按 Channel(渠道) 对象纳入管理;数据驻留规则必须挂在渠道+租户维度(哪些渠道的消息/附件允许出域、存多久),并与 §四 证据映射联动,避免"群聊串个人记忆"类事故(13 篇 §通信 边界)。

证据是第十个需要单独建模的东西,因为它既不属于 Task 也不属于 Artifact。它固定三态:

状态谁产生含义不能拿它做什么
planned任务开始时声明需要哪些验收材料不能证明已经发生
issued执行者已产生材料并带 ref + sha256不能证明材料充分
confirmed验收方确认材料足以支撑该评价项不能代替业务验收决定

一句话:证据确认的是“材料够不够”,验收决定的是“结果收不收”。把两者合成一个状态,就会出现“证据齐了但业务不认”,或者“业务点头了却没有任何可追溯材料”。

跨组件的接缝 ​

以下十二件事没有单一归属,必须由两篇以上文章共同回答;任何一件悬空,都会在联调时变成“都以为对方做了”。

  1. 身份权威链:网关认证结果如何变成 tenant/namespace/subject/session,又如何在 Dataplane、Vault、队列、对象存储每一跳重校验。
  2. 版本冻结与回滚:Agent 定义、Workspace、Workflow、Endpoint、Skill/MCP 引用分别在哪一层冻结,灰度切谁、回滚切谁。
  3. 会话有序与幂等:Session/Turn 串行、事件 seq、LiteTopic 单队列 FIFO、租约栅栏、先提交结果再提交位点,如何拼成“断线不丢、重投不重”。
  4. 记忆的单写入口与删除权:内置记忆、外部长期记忆、知识库谁能写、谁能召回、删除如何级联。
  5. 供给引用与对账:市场存引用、注册中心存定义、网关做准入,没有持续双向同步时谁发现漂移、谁通知订阅方。
  6. 双层路由与成本归因:本地选档、中心准入与兜底,两层的回执、计量与降级标记如何合成一本账。
  7. 交付安全闭环:对象存储、ticket、下载网关、IM 回执与 DLP,谁在哪个时刻拥有否决权。
  8. 单域名与多端并发:Cookie 会话、签名头、mTLS、共享池路由与多设备 Turn 串行,如何不破坏同源约束。
  9. 门禁、trace 与审计的分工:三者共用哪些字段、各自保留多久、谁能改。
  10. 故障域与降级开关:Dataplane 重启、通道积压、模型 429、注册中心不可用时,哪一层先降级、谁操作、怎么验证在途任务不丢。
  11. 预算租约与多 Agent 分账:父任务授权、子任务预留、跨网关与应用的重试共享同一个 attempt 预算;谁记账、谁结算、超额谁拒绝。
  12. 仿真与调优证据进发布门禁:Scenario / Run / Evidence 与黄金集、Evaluator 如何产出可引用的 evidence_id,门禁认哪一层证据、谁能改阈值、回滚依据是什么。

最小上手 ​

用一场两小时的评审会,把下面十四个问题逐条写进 ADR;答不上来的,就是下一轮调研任务:

text
1. 单域名下 Cookie 怎么到后端?跨端并发谁串行?
2. 租户边界落在哪:命名空间、请求头还是独立集群?
3. 同会话并发提交怎么排队?幂等键覆盖哪些操作?
4. 状态、工作区、快照、产物分别存哪?换节点怎么恢复?
5. 沙箱按 session 还是 user?热池怎么防残留?
6. 任务触发后先写库还是先发消息?重复投递怎么去重?
7. Skill/MCP 的权威在哪?已上线版本能不能改?
8. 订阅、工具策略、网关准入分别由谁判定?
9. 模型降级的候选怎么证明能力等价?成本以谁为准?
10. 大文件怎么交付?链接被转发还能不能打开?
11. 新版本怎么灰度、怎么在 10 分钟内回滚?
12. 出事后靠 trace、审计还是评测定位?各自保留多久?
13. 预算从谁授权、怎么预留与结算?父子任务和重试怎么分账?
14. 仿真与调优产出的证据,哪一条能进发布门禁?阈值谁能改?

验收方式:每个问题都有“默认决策 + 例外 + 一条可执行用例”,而不是一句“已支持”。

生产动作 ​

  • 决策记录化:每个考量点写成一页 ADR,包含场景、选项、选择、代价、验收;不要只留在会议纪要里。
  • 验收用例化:安全类转成红队用例,容量类转成压测脚本,恢复类转成故障演练,发布类转成门禁。
  • 季度回填:每次事故至少回填一条考量点;没有回填的事故复盘视为未完成。
  • 例外显式化:允许偏离默认,但必须写清补偿措施与到期时间,禁止“默默特殊”。
  • 跨组对账:接缝清单每月过一遍,确认没有“双方都以为对方做了”的空洞。

边界 ​

  • 清单不是银弹:它保证不漏关键选择,不保证每个选择都适合你的负载;默认值要用压测与事故校准。
  • 组件会换,考量点不会:Higress、Nacos、AgentScope 都可以替换,但身份、状态、幂等、回滚这些问题仍在。
  • 不是所有项都要现在做:先定 P0(身份、隔离、幂等、回滚),其余按阶段补齐;但“以后再想”必须有 owner 与日期。
  • 文档不产生隔离:写进 ADR 不等于生效,必须落到配置、策略与验收用例。

讲清楚 ​

平台建设真正花时间的,不是把组件跑起来,而是把“谁和谁共享、状态放哪、失效怎么办”这些场景问题逐个定死。

十条主线可以压成四句话:身份每跳重校验,租户边界落在资源与存储前缀,会话串行且状态外置,供给与交付都要有权威和否决点。

再往上一层,成熟度看九个对象有没有被真正管理:Agent、Task、Task Run、Session、Tool/MCP、Skill/Knowledge、Memory、Artifact、Budget;每个都要有 owner、版本、生命周期与删除策略。证据单独三态,planned / issued / confirmed,确认材料充分不等于业务验收通过。

判断一份方案是否成熟,看它能不能回答十四个评审问题,并且每个答案都带一条可执行验收;只能回答“支持”的,都是没想清楚。

适用:企业级 Agent 平台设计与评审 | 初稿 2026-10

把 AI 工程讲到既懂也会用