docs(consistency): 运行时 SoT 版本引用收敛 2.0.2→2.0.3(升级一致性尾)
承 c3728377 升级:把运行时 SoT 里 26 处 current-capability 陈述(Agent Service / Workspace / MessageBus / Event System 内置件、已删 MsgHub、原生 ReAct 行为、框架 接缝兼容、已锁版、源码实证)统一到 2.0.3——这些能力在 2.0.3 同样具备。 4 处 ReplyBudgetControlMiddleware「2.0.2 核验不存在」是历史核验实证(0 号 spike 在 2.0.2 基线上验官方当时无此类、故自建 ¥ 两段式硬闸),按两层纪律不改成 「2.0.3 核验不存在」(那是假,2.0.3 已补进原生 token 制);改为保留 spike 期 历史事实 + 加「2.0.3 已补原生、仍保自建 ¥ 闸,见 §15」交叉引,既不误导当前读者 也不篡改历史。docs-gate 七检全绿。 Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
parent
c372837762
commit
ee631be68f
@ -85,7 +85,7 @@ date: 2026-06-24
|
||||
|
||||
**⑤ 自研面别低估**:adapter 的**护城河核心**只两块(checkpoint/续跑 + 验收门),但平台域契约 A3/A4/A4.5/A8/A9/A11/A12 + A13 落地仍是自研或待建(见 §三)——排期按真实自研清单,不按"只剩两块"。
|
||||
|
||||
**⑥ 收口 TODO(跨文档 / 需真工)**:(a)~~doc-sync + §二/§三 定级定稿、去"提案"标~~ **已做(2026-06-25,见 §二补二/三)**;(b)~~5 个 build-vs-buy 待决改 ADR 矩阵~~ **已做(§二补三,每条 ≥3 具名候选 + 排除理由)**;(d)~~标准成熟度五列~~ **已做(§二补二)**。**剩两项属"通过设计后的执行 plan"、不在文档完成范围**:(c)durable-execution / SandboxDriver 选型 spike(沙箱底座先验 agentscope 2.0.2 DockerWorkspace 能否托管 CDP 九门 harness、跨机扩容是否真需独立 durable-engine);(e)收敛环验证 go/no-go(并发跑 5、有错再追加 5;批跑底座已就位、设 n=5,**不做 n≥30 统计批跑**)。
|
||||
**⑥ 收口 TODO(跨文档 / 需真工)**:(a)~~doc-sync + §二/§三 定级定稿、去"提案"标~~ **已做(2026-06-25,见 §二补二/三)**;(b)~~5 个 build-vs-buy 待决改 ADR 矩阵~~ **已做(§二补三,每条 ≥3 具名候选 + 排除理由)**;(d)~~标准成熟度五列~~ **已做(§二补二)**。**剩两项属"通过设计后的执行 plan"、不在文档完成范围**:(c)durable-execution / SandboxDriver 选型 spike(沙箱底座先验 agentscope 2.0.3 DockerWorkspace 能否托管 CDP 九门 harness、跨机扩容是否真需独立 durable-engine);(e)收敛环验证 go/no-go(并发跑 5、有错再追加 5;批跑底座已就位、设 n=5,**不做 n≥30 统计批跑**)。
|
||||
|
||||
### 二补二 · 标准成熟度五列
|
||||
|
||||
@ -97,11 +97,11 @@ date: 2026-06-24
|
||||
| OTel GenAI semconv | OpenTelemetry 独立 semconv-genai 仓 · 1.40.0 | Development(span 语义稳定、整组非 stable) | A2.5 | 钉版本 + 隔离;**无 cost 属性 → TraceLedger 自研**;补 Anthropic 路成本录制 |
|
||||
| SKILL.md | agentskills.io 开放标准 | 可即采 | A10 / 能力面 | — |
|
||||
| ~~Langfuse 热取~~(2026-07-01 反转退历史备选) | OSS MIT 自托管 | 不采(生态原生 yudao⊕Nacos 覆盖) | ~~A13~~ | 已由 yudao 配置中心版本化 ⊕ Nacos 下发 ⊕ per-POST 热重载取代,详见 ADR-4 |
|
||||
| Agent Service / Workspace / MessageBus | agentscope 2.0.2 内置(源码实证;吸收自已归档 agentscope-runtime) | 可即采(已落 `mini-desktop:8200`) | 扩容(A1)/ 沙箱(A6) | DockerWorkspace 能否托管 CDP 九门 harness;跨机是否需独立 durable-engine |
|
||||
| Agent Service / Workspace / MessageBus | agentscope 2.0.3 内置(源码实证;吸收自已归档 agentscope-runtime) | 可即采(已落 `mini-desktop:8200`) | 扩容(A1)/ 沙箱(A6) | DockerWorkspace 能否托管 CDP 九门 harness;跨机是否需独立 durable-engine |
|
||||
| durable-execution(跨机) | Temporal(MIT)/ DBOS(OSS) | 范式 · future-state(跨机才需) | 扩容 | 跨机 run 调度/续跑是否真超出 Agent Service durable session |
|
||||
| microVM 沙箱(远期) | E2B(via E2BWorkspace)/ 阿里云 AgentRun | future-state | 沙箱 | E2B 数据出境 / AgentRun 数据不出境·FC 锁·定价;Chrome+CDP under gVisor |
|
||||
|
||||
护城河两块,标准都不提供、必自研:确定性验收门 + fail-closed 预算硬闸。归属须分清:MCP / goose / AGENTS.md ∈ AAIF;A2A ∈ Linux Foundation;OTel GenAI ∈ OpenTelemetry 独立仓。独立的 `agentscope-runtime` 仓已归档,其工具沙箱 / Agent-as-a-Service / 可观测能力已并入 agentscope 2.0.2(`workspace` / `app` / `event`)——做沙箱与部署用 `agentscope[full]` 一个包,不装那个归档仓(本仓 [`agentscope-2.0-facts.md`](../../../../.agents/knowledge/agentscope-2.0-facts.md) 早有此结论)。
|
||||
护城河两块,标准都不提供、必自研:确定性验收门 + fail-closed 预算硬闸。归属须分清:MCP / goose / AGENTS.md ∈ AAIF;A2A ∈ Linux Foundation;OTel GenAI ∈ OpenTelemetry 独立仓。独立的 `agentscope-runtime` 仓已归档,其工具沙箱 / Agent-as-a-Service / 可观测能力已并入 agentscope 2.0.3(`workspace` / `app` / `event`)——做沙箱与部署用 `agentscope[full]` 一个包,不装那个归档仓(本仓 [`agentscope-2.0-facts.md`](../../../../.agents/knowledge/agentscope-2.0-facts.md) 早有此结论)。
|
||||
|
||||
### 二补三 · build-vs-buy ADR 决策矩阵
|
||||
|
||||
@ -155,37 +155,37 @@ date: 2026-06-24
|
||||
|
||||
位置 A13。write 路(重要配置发布)走 yudao 配置发布流程审批(`huijing-module-bpm` + `huijing-module-infra` 现货、build-vs-buy 现货优先)= 受治理发版;read 路的运行时热配由 Nacos 下发加 AgentScope per-POST 现装配承担,不再依赖 Langfuse 的 label 指针机制。原 Langfuse 待验证项(EE 锁 protected labels、纯 OSS label 等效性)随该方案退历史备选一并作罢。
|
||||
|
||||
**ADR-5 · 水平扩容 → 近期 2.0.2 Agent Service,跨机 durable-execution future-state**
|
||||
**ADR-5 · 水平扩容 → 近期 2.0.3 Agent Service,跨机 durable-execution future-state**
|
||||
|
||||
agentscope 2.0.2 内置 Agent Service(`create_app`,REST + SSE + 多租户 + durable session,**强依赖 Redis**)与 MessageBus(Redis:事件 replay / 分布式锁 / cancel)已满足 tier2 接入与会话持久(P4 已落 `mini-desktop:8200`,零新增依赖);app 级弹性扩展靠自容器化 ASGI 上 K8s / serverless。跨机的 workflow 持久化与断点续跑超出 agentscope,才需独立引擎。
|
||||
agentscope 2.0.3 内置 Agent Service(`create_app`,REST + SSE + 多租户 + durable session,**强依赖 Redis**)与 MessageBus(Redis:事件 replay / 分布式锁 / cancel)已满足 tier2 接入与会话持久(P4 已落 `mini-desktop:8200`,零新增依赖);app 级弹性扩展靠自容器化 ASGI 上 K8s / serverless。跨机的 workflow 持久化与断点续跑超出 agentscope,才需独立引擎。
|
||||
|
||||
| 候选 | 判定 |
|
||||
|---|---|
|
||||
| agentscope 2.0.2 Agent Service + MessageBus | 近期采(零新增依赖,已落 @8200;durable session / 分布式锁 / cancel / replay) |
|
||||
| agentscope 2.0.3 Agent Service + MessageBus | 近期采(零新增依赖,已落 @8200;durable session / 分布式锁 / cancel / replay) |
|
||||
| Temporal | 跨机 durable-execution 候选(MIT、双栈 SDK;运维重 3 服务) |
|
||||
| DBOS Transact | 候选(最轻、复用 Postgres;Java SDK 新、可观测缺口) |
|
||||
| Restate | 备选(BSL 1.1 法务先清) |
|
||||
| 自研 DB-queue / AgentScope MessageBus 当 durable-exec | 排除(现货优先 / 能力不匹配:MessageBus 无 workflow 持久化) |
|
||||
| ~~agentscope-runtime DeployManager~~ | 排除·**项目已归档**(能力并入 2.0.2) |
|
||||
| ~~agentscope-runtime DeployManager~~ | 排除·**项目已归档**(能力并入 2.0.3) |
|
||||
|
||||
位置 扩容(future-state,先旁路 tier2、不动在产 SAA)。廉价线现状 K-槽 单 JVM 非反模式。待验证:跨机 run 调度 + 续跑 + cancel 是否真需独立引擎(还是 Agent Service durable session + K8s 够);Temporal 单 PG 低 QPS 运维 / DBOS Java 长跑稳定性。
|
||||
|
||||
**ADR-6 · 沙箱执行 → agentscope 2.0.2 Workspace(吸收自已归档 runtime)+ tier2 CDP harness**
|
||||
**ADR-6 · 沙箱执行 → agentscope 2.0.3 Workspace(吸收自已归档 runtime)+ tier2 CDP harness**
|
||||
|
||||
agentscope 2.0.2 内置 Workspace 三后端(源码实证 `LocalWorkspace` / `DockerWorkspace` / `E2BWorkspace`)= agent 工具执行沙箱(Docker/E2B 经容器内 MCP gateway,是 generic 工具沙箱、不直接暴露 CDP)。tier2 九门要 CDP / Chrome 真玩,走 tier2 自家 CDP harness(现状 Local)。
|
||||
agentscope 2.0.3 内置 Workspace 三后端(源码实证 `LocalWorkspace` / `DockerWorkspace` / `E2BWorkspace`)= agent 工具执行沙箱(Docker/E2B 经容器内 MCP gateway,是 generic 工具沙箱、不直接暴露 CDP)。tier2 九门要 CDP / Chrome 真玩,走 tier2 自家 CDP harness(现状 Local)。
|
||||
|
||||
| 候选 | 判定 |
|
||||
|---|---|
|
||||
| Local workspace(现状已 accept) | 留开发态(零隔离) |
|
||||
| agentscope 2.0.2 DockerWorkspace | agent 工具执行近期采(零新增依赖;过渡期需 agentscope 源码 COPY 进镜像) |
|
||||
| agentscope 2.0.3 DockerWorkspace | agent 工具执行近期采(零新增依赖;过渡期需 agentscope 源码 COPY 进镜像) |
|
||||
| 自建 Docker(承载 CDP harness) | 九门真玩近期采(社区镜像暴露 CDP、内网数据主权) |
|
||||
| Docker + gVisor | 隔离加固候选(Chrome+CDP 兼容性待 spike) |
|
||||
| E2BWorkspace / 阿里云 AgentRun | 远期 microVM(E2B 数据出境硬伤;AgentRun 数据不出境、FC 锁) |
|
||||
| ~~独立 agentscope-runtime BrowserSandbox~~ | 排除·**项目已归档**(能力并入 2.0.2 Workspace;且本是 MCP-gateway 工具沙箱、非 CDP) |
|
||||
| ~~独立 agentscope-runtime BrowserSandbox~~ | 排除·**项目已归档**(能力并入 2.0.3 Workspace;且本是 MCP-gateway 工具沙箱、非 CDP) |
|
||||
|
||||
位置 A6 探针 + B 类沙箱。待验证(最高优先):agentscope DockerWorkspace 能否托管 tier2 CDP 九门 harness(对比自建 Docker);Chrome+CDP 在 gVisor/runsc 下;阿里云 AgentRun 定价 / 是否暴露 CDP。
|
||||
|
||||
> **战略发现(已并入,非引入)**:agentscope-runtime 独立仓归档,工具沙箱 / Agent-as-a-Service / 可观测能力已并入 agentscope 2.0.2(Workspace / app / event)。tier2 已锁 2.0.2 → 扩容与沙箱底座零新增依赖,走 2.0.2 内置件、不装归档仓。本轮 §6.8 研究曾误把它当独立可采件,根因是漏 grep 仓内 `agentscope-2.0-facts.md`(已记此结论)+ 未核项目归档状态——已回填进 [`build-vs-buy.md`](../../../../.agents/rules/build-vs-buy.md) R1/R4。
|
||||
> **战略发现(已并入,非引入)**:agentscope-runtime 独立仓归档,工具沙箱 / Agent-as-a-Service / 可观测能力已并入 agentscope 2.0.3(Workspace / app / event)。tier2 已锁 2.0.3 → 扩容与沙箱底座零新增依赖,走 2.0.3 内置件、不装归档仓。本轮 §6.8 研究曾误把它当独立可采件,根因是漏 grep 仓内 `agentscope-2.0-facts.md`(已记此结论)+ 未核项目归档状态——已回填进 [`build-vs-buy.md`](../../../../.agents/rules/build-vs-buy.md) R1/R4。
|
||||
|
||||
下面 §三 把每条 A 协议对到它采的标准,并如实标"现 / 建"(定级已冻)。
|
||||
|
||||
@ -255,7 +255,7 @@ B 类对接上面某几条 A 协议,换引擎 / 换框架 / 换渠道时被换
|
||||
- `B-TPL-<品类>`(现:5 品类 prompt-md 形态 / 建:RAG 语料、模板 DB 表;模板是品类框架引导生成,不是 pre-built 整局代码)
|
||||
- `B-COMPLIANCE-ATOM-style / ip`(桩,compliance 模块内同进程可替换 Java 实现,聚合取 max;不宜改成异步 MCP——会破坏 evaluate 同步语义)
|
||||
|
||||
> **机制依据**(AgentScope 2.0.2 源码实证):skill = 含 SKILL.md 的目录,frontmatter 携 name + description,经内置 SkillViewer 回灌正文给 agent,自身不执行代码——这是"契约不做成 skill"的硬依据。tool = agent 能直接 call 的最细执行单元(进程内 Python 经 `FunctionTool` 薄壳 / 跨进程经 `MCPTool` / 内置 Bash·Read·Write)。MCP 完全语言无关(Stdio 子进程或 HTTP),`command` 可以是任何语言的 server。探针(node/CDP)从 Python agent 跑起来靠 skill + Bash shell-out 或 MCP。
|
||||
> **机制依据**(AgentScope 2.0.3 源码实证):skill = 含 SKILL.md 的目录,frontmatter 携 name + description,经内置 SkillViewer 回灌正文给 agent,自身不执行代码——这是"契约不做成 skill"的硬依据。tool = agent 能直接 call 的最细执行单元(进程内 Python 经 `FunctionTool` 薄壳 / 跨进程经 `MCPTool` / 内置 Bash·Read·Write)。MCP 完全语言无关(Stdio 子进程或 HTTP),`command` 可以是任何语言的 server。探针(node/CDP)从 Python agent 跑起来靠 skill + Bash shell-out 或 MCP。
|
||||
|
||||
---
|
||||
|
||||
@ -315,7 +315,7 @@ tier2 这条线另有一套总览图,与 §5 各 facet 的细化图互补:
|
||||
|
||||
### 5.1 运行时形态
|
||||
|
||||
tier2(最高深度档)的运行时按 AgentScope 2.0.2 的真实对象结构落地,不自造接入层。对外的接入面是官方 **Agent Service**——`create_app` 拉起一个 FastAPI 应用,天生多租户、对外 REST + SSE,会话状态可持久化、可恢复。八个官方 router(`/sessions`、`/chat`、`/schedule`、`/credential`、`/workspace`、`/model`、`/tts_model`,外加 agent 管理面)覆盖了会话、对话、定时、密钥托管、执行环境这些底座能力。底下一套 **MessageBus**(Redis 实现)撑起分布式协作:Redis Stream 做事件 replay 日志(断线晚到的订阅者能回放、不丢中间过程)、pub/sub 做唤醒广播、分布式锁保证同一会话同时只有一个进程在跑、还有取消信令。所以业务侧接 tier2 的真实姿势是:经 REST `POST /sessions` 建一个 durable 会话,再经 SSE 收事件流,断线靠 MessageBus 补发。
|
||||
tier2(最高深度档)的运行时按 AgentScope 2.0.3 的真实对象结构落地,不自造接入层。对外的接入面是官方 **Agent Service**——`create_app` 拉起一个 FastAPI 应用,天生多租户、对外 REST + SSE,会话状态可持久化、可恢复。八个官方 router(`/sessions`、`/chat`、`/schedule`、`/credential`、`/workspace`、`/model`、`/tts_model`,外加 agent 管理面)覆盖了会话、对话、定时、密钥托管、执行环境这些底座能力。底下一套 **MessageBus**(Redis 实现)撑起分布式协作:Redis Stream 做事件 replay 日志(断线晚到的订阅者能回放、不丢中间过程)、pub/sub 做唤醒广播、分布式锁保证同一会话同时只有一个进程在跑、还有取消信令。所以业务侧接 tier2 的真实姿势是:经 REST `POST /sessions` 建一个 durable 会话,再经 SSE 收事件流,断线靠 MessageBus 补发。
|
||||
|
||||
会话初始化有三条加载路径,对应"游戏 = 长生命周期项目"的三种入场:续接之前的会话(从 `SessionRecord.state` 取回历史工作记忆与轮次,resume)、加载一个已有工程(`Workspace.workdir` 指向已存在的游戏目录,进迭代模式、改源不改包重新构建)、新建(阶段 2 的模板初始化工具铺出空骨架)。三条路只是初始 state 与 workdir 不同,汇到同一个 Agent 装配点,不为每种入场各写一条链路。
|
||||
|
||||
@ -325,9 +325,9 @@ tier2(最高深度档)的运行时按 AgentScope 2.0.2 的真实对象结构落
|
||||
|
||||
横切关注点统一挂在 **Middleware 洋葱**上,不散进业务逻辑。四道洋葱钩子(`on_reply` 管整次回复进出、`on_reasoning` 管推理加模型调用、`on_acting` 管单次工具调用的 I/O、`on_model_call` 管裸模型 API)加一道顺序变换钩子(`on_system_prompt`),逐层内外相套,未实现的钩子运行时自动跳过。成本刹车、超时硬切、卡死探测、可观测都是这套扩展点上的实现(详见 §5.3 熔断、§5.7 观测)。
|
||||
|
||||
多 agent 协作走部署态的 **Agent Team** 星形(leader 用 `TeamCreate` / `AgentCreate` / `TeamSay` 调度 worker),不是进程内 pipeline——2.0.2 已删掉进程内的 MsgHub / pipeline 那套同步编排原语。任务目标与进度的承载也对齐这套结构:目标 = 输入(brief / play_spec / GDD),进度 = `AgentState.tasks_context` 逐项用 `TaskCreate` / `TaskUpdate` 追踪,像一份 todo 清单,没有预先画死的 workflow DAG。
|
||||
多 agent 协作走部署态的 **Agent Team** 星形(leader 用 `TeamCreate` / `AgentCreate` / `TeamSay` 调度 worker),不是进程内 pipeline——2.0.3 已删掉进程内的 MsgHub / pipeline 那套同步编排原语。任务目标与进度的承载也对齐这套结构:目标 = 输入(brief / play_spec / GDD),进度 = `AgentState.tasks_context` 逐项用 `TaskCreate` / `TaskUpdate` 追踪,像一份 todo 清单,没有预先画死的 workflow DAG。
|
||||
|
||||
> **现 / 建(2026-07-03 更新)**:Agent Service、MessageBus、AgentState + StorageBase、Workspace 三实现是 2.0.2 现成件(已逐条核源码)。tier2 的非常驻装配、本地 runner、注入工具集、自建硬熔断、`Tier2TraceMiddleware`**已落并经 feie-005 accept**,服务化已部署 `mini-desktop:8200`。**两处早稿错已纠**:① "官方预算软刹 `ReplyBudgetControlMiddleware`"——2.0.2 源码核验该类不存在,tier2 用自建 `on_system_prompt` + 硬熔断替代;② 多轮不是"搬进 Agent 内部"——纯内部 ReAct 过早放弃,实际是内部单轮 + 有界外层 resume 续修(见 §5.3)。**三处状态按真跑核准降准**:checkpoint 的落地形态是**每次外层 resume 快照三字段工作记忆到本地 JSON**(`work_memory`),不是设计意图里的"每轮落 Redis durable session"——后者已编码、真跑未验证(收敛环显式走本地 runner);Agent Service 的**服务壳已编码**(`create_app` 建 FastAPI app + RedisStorage/MessageBus + admin 只读三路由 `/control/roles`·`/traces`·`/cost`,正是 §5.2 phase-1 的最小切片),但服务态的生成主链尚未完整落位、真跑未验证——准确状态是"已编码、真跑未验证",既非"待"、也不写"已落";**阶段 1 工作室 Agent Team 已从 Phase B 提前落地**——`design_team` 以 worker-as-tool 摆出四专家星形,studio 与批跑**默认开启**(`use_team=True` / `do_design=True`)。仍待:Redis durable session 完整跑通、SandboxDriver 选型。
|
||||
> **现 / 建(2026-07-03 更新)**:Agent Service、MessageBus、AgentState + StorageBase、Workspace 三实现是 2.0.3 现成件(已逐条核源码)。tier2 的非常驻装配、本地 runner、注入工具集、自建硬熔断、`Tier2TraceMiddleware`**已落并经 feie-005 accept**,服务化已部署 `mini-desktop:8200`。**两处早稿错已纠**:① "官方预算软刹 `ReplyBudgetControlMiddleware`"——0 号 spike 期核验官方当时无此类(2.0.3 已补进原生 token 制、仍保自建 ¥ 闸,见 tech-decisions §15),tier2 用自建 `on_system_prompt` + 硬熔断替代;② 多轮不是"搬进 Agent 内部"——纯内部 ReAct 过早放弃,实际是内部单轮 + 有界外层 resume 续修(见 §5.3)。**三处状态按真跑核准降准**:checkpoint 的落地形态是**每次外层 resume 快照三字段工作记忆到本地 JSON**(`work_memory`),不是设计意图里的"每轮落 Redis durable session"——后者已编码、真跑未验证(收敛环显式走本地 runner);Agent Service 的**服务壳已编码**(`create_app` 建 FastAPI app + RedisStorage/MessageBus + admin 只读三路由 `/control/roles`·`/traces`·`/cost`,正是 §5.2 phase-1 的最小切片),但服务态的生成主链尚未完整落位、真跑未验证——准确状态是"已编码、真跑未验证",既非"待"、也不写"已落";**阶段 1 工作室 Agent Team 已从 Phase B 提前落地**——`design_team` 以 worker-as-tool 摆出四专家星形,studio 与批跑**默认开启**(`use_team=True` / `do_design=True`)。仍待:Redis durable session 完整跑通、SandboxDriver 选型。
|
||||

|
||||
|
||||

|
||||
@ -363,15 +363,15 @@ tier2(最高深度档)的运行时按 AgentScope 2.0.2 的真实对象结构落
|
||||
|
||||
**为什么单写、不并行写**:经营游戏的多个系统共享同一套状态与约定,拆给并行 agent 几乎必然不一致。一手教训是曾把"造 Flappy Bird"拆给并行子 agent,背景跑成了马里奥。单写意味着只有一个 agent 持整个工程的全局视图。要分清边界:单写只管阶段 2 写代码这一环,阶段 1 的工作室设计仍用 Agent Team 星形多 agent 发散——设计要发散与专业分工,实现要防写冲突而收敛到单写。
|
||||
|
||||
**为什么把多轮放进 Agent 内、而不是外层**:tier2 与低档 WG1 的真正差别不在 prompt、不在生成域,而在"多轮自治放在哪一层"。WG1 是 `ReActConfig(max_iters=1)` 单轮加外层 repair 重试——单写、单轮、靠外层喂错重跑;它故意单轮,是早期为压便宜档单价的做法——当时怕 AgentScope 框架的 token 膨胀吃掉便宜档薄利润。但单次预算抬到低深度档 < ¥10 后这条约束放松了,三档已统一改用 AgentScope 编排;WG1 单轮省 token 的优势退为 SAA 远期适配时的备选,不再是"不引 AgentScope"的理由(见 §一、§5.2 预算闸)。tier2 原打算把多轮搬进 Agent 内部 ReAct(放开 max_iters),但 **0 号 spike 实测推翻了"纯内部多轮"**:AgentScope 2.0.2 原生 ReAct 一旦模型产出"无 tool_call 的纯文本回合"就退出,M3 调一次 run_gates 看到 fix 就收尾、根本没续修——纯自治 ReAct 会过早放弃。**修法是回归 wg1 的"有界外层 resume"范式**:编排层(`studio.py`)在 agent 停下后,若没真 finish、门没绿、还有预算,就带 verdict 失败反馈再 reply(跨 reply 保留 memory = 原地续修),上限 6 次,外加 finish 门(门没绿不许 finish)。所以"多轮放哪一层"的最终答案不是"搬进 Agent 内部",而是"内部 ReAct 单轮 reason→act + 有界外层 resume 续修",即 wg1 外层 repair 范式从单轮放到多轮。参照系是 WG1 单轮加外层 repair(现行已落)与 A-model 在 M3 上跑通的多轮 ReAct。从 A-model 复用三件成熟范式——agent 自己 reason 判"够了"才终止的 done 门(不靠外层固定轮数,finish 工具收尾吐出 `src/` 源工程)、每轮先跑便宜检查再决定下一步的快反馈、以及把历史压缩了喂下一轮的长程一致性(多文件富游戏轮数多、上下文长,压缩才不撑爆窗口)。fork 起步、独立演进:它复用的框架接缝在 2.0.2 全兼容、零签名改,但拖的 validate / run / prompt / roles 是 LittleJS 专属,按 Phaser 重写近乎全新写——真功夫在重写面加 net-new 的多轮循环、Workspace、Service。
|
||||
**为什么把多轮放进 Agent 内、而不是外层**:tier2 与低档 WG1 的真正差别不在 prompt、不在生成域,而在"多轮自治放在哪一层"。WG1 是 `ReActConfig(max_iters=1)` 单轮加外层 repair 重试——单写、单轮、靠外层喂错重跑;它故意单轮,是早期为压便宜档单价的做法——当时怕 AgentScope 框架的 token 膨胀吃掉便宜档薄利润。但单次预算抬到低深度档 < ¥10 后这条约束放松了,三档已统一改用 AgentScope 编排;WG1 单轮省 token 的优势退为 SAA 远期适配时的备选,不再是"不引 AgentScope"的理由(见 §一、§5.2 预算闸)。tier2 原打算把多轮搬进 Agent 内部 ReAct(放开 max_iters),但 **0 号 spike 实测推翻了"纯内部多轮"**:AgentScope 2.0.3 原生 ReAct 一旦模型产出"无 tool_call 的纯文本回合"就退出,M3 调一次 run_gates 看到 fix 就收尾、根本没续修——纯自治 ReAct 会过早放弃。**修法是回归 wg1 的"有界外层 resume"范式**:编排层(`studio.py`)在 agent 停下后,若没真 finish、门没绿、还有预算,就带 verdict 失败反馈再 reply(跨 reply 保留 memory = 原地续修),上限 6 次,外加 finish 门(门没绿不许 finish)。所以"多轮放哪一层"的最终答案不是"搬进 Agent 内部",而是"内部 ReAct 单轮 reason→act + 有界外层 resume 续修",即 wg1 外层 repair 范式从单轮放到多轮。参照系是 WG1 单轮加外层 repair(现行已落)与 A-model 在 M3 上跑通的多轮 ReAct。从 A-model 复用三件成熟范式——agent 自己 reason 判"够了"才终止的 done 门(不靠外层固定轮数,finish 工具收尾吐出 `src/` 源工程)、每轮先跑便宜检查再决定下一步的快反馈、以及把历史压缩了喂下一轮的长程一致性(多文件富游戏轮数多、上下文长,压缩才不撑爆窗口)。fork 起步、独立演进:它复用的框架接缝在 2.0.3 全兼容、零签名改,但拖的 validate / run / prompt / roles 是 LittleJS 专属,按 Phaser 重写近乎全新写——真功夫在重写面加 net-new 的多轮循环、Workspace、Service。
|
||||
|
||||
**续修原语的落点在 2026-07-01/02 又前进了一步(护城河 middleware 线)。** 上面讲的"有界外层 resume"是 spike 期的形态——编排层(`studio.py`)在 agent 停下后,判断没真 finish、门没绿、还有预算,就带 verdict 失败反馈再 reply 一次。护城河续修把它从编排层外挂**迁进了 `on_reasoning` 的 RepairMiddleware**:整局在**单次 POST 内**于 finish 点拦截——agent 想 finish 时,middleware 独立重跑门,没绿就压制这次 finish、把结构化反馈注入同一会话让它接着修,不再每轮重开 POST。这条是**生产主路**,便宜档 Service 与富档共用同一份 RepairMiddleware。tier2 本地 runner 的 `studio.py` 外层 resume 仍然并存(收敛环就走它),作为 fallback 形态——两套语义一致(都是"门没绿加有预算就带反馈续修、门始终是 judge 纯代码判"),差别只在拦截点:一个在 POST 内的 finish 处,一个在 POST 外的编排层。同文件头注释曾写"不再外层 repair",与它自己 400 行开外的外层 resume 代码相左,随本轮一并纠正。
|
||||
|
||||
**四道熔断加预算闸**叠在中间件洋葱上,任一先触发即停本局:步数硬顶(给每系统的构建-修复定上限、给整局定 max_iters,防模型靠多轮反复试错把门擦边混过去)、预算闸、卡死探测(语义层判 agent 是否原地打转、空转换汤不换药,而非单纯计步;还要防 agent 改 driver 来绕过它)、双层超时(单步钉死一次工具调用、整局钉死本局总时长)。这套熔断 tier2 是**自建的、且实际比"软刹"强**——要纠一处早稿错:早稿把"官方 `ReplyBudgetControlMiddleware` 软刹"当现成件,但 2.0.2 源码核验**该类根本不存在**;tier2 用自建的 `on_system_prompt` 变换钩子 + 中间件洋葱上订阅模型调用结束事件的硬熔断替代,把 token 按 new-api 计费口径折成 ¥ 累进。**¥ 越限的行为在 2026-07-02/03 定为两段式(创始人裁定,起因是护城河续修不该被预算硬闸旁路)**:先是**软停线**(便宜档 ¥10 / 富档 ¥50)——越线不断链,设软停标记、经 `on_system_prompt` 强提醒 agent 基于当前工程状态尽快 finish 交尽力产物,只许收尾类动作(finish、构建、跑门),禁新增大额生成调用,给续修留活路;再是**硬地板**(软停线 ×1.5 = 便宜档 ¥15 / 富档 ¥75)——它与轮数、墙钟两道闸任一先到即停,保证软停之后 ¥ 上界数学上仍封得死("软停不等于无界")。**生产两档已统一走两段式**(2026-07-03 W-ARCH② 实施):便宜档 CLI 与生产 Service 经 `cheap_budget.build_cheap_breaker` 单一装配点组 breaker、数值同源 genconfig(generation.yaml budget 区),软停后 `on_acting` 拦生成面工具(write_file/write_source/scaffold_init,收尾类恒放行),硬地板 fail-closed 数学封顶;middleware 的 hard 单段语义原样保留为默认档(未显式装配面与实验路的兜底,spike 实测 60/80 轮硬熔断已落)。这道预算闸的三层强制架构见 §5.2。
|
||||
**四道熔断加预算闸**叠在中间件洋葱上,任一先触发即停本局:步数硬顶(给每系统的构建-修复定上限、给整局定 max_iters,防模型靠多轮反复试错把门擦边混过去)、预算闸、卡死探测(语义层判 agent 是否原地打转、空转换汤不换药,而非单纯计步;还要防 agent 改 driver 来绕过它)、双层超时(单步钉死一次工具调用、整局钉死本局总时长)。这套熔断 tier2 是**自建的、且实际比"软刹"强**——要纠一处早稿错:早稿把"官方 `ReplyBudgetControlMiddleware` 软刹"当现成件,但 0 号 spike 期核验官方当时无此类(2.0.3 已补进原生 token 制、仍保自建 ¥ 闸,见 §15);tier2 用自建的 `on_system_prompt` 变换钩子 + 中间件洋葱上订阅模型调用结束事件的硬熔断替代,把 token 按 new-api 计费口径折成 ¥ 累进。**¥ 越限的行为在 2026-07-02/03 定为两段式(创始人裁定,起因是护城河续修不该被预算硬闸旁路)**:先是**软停线**(便宜档 ¥10 / 富档 ¥50)——越线不断链,设软停标记、经 `on_system_prompt` 强提醒 agent 基于当前工程状态尽快 finish 交尽力产物,只许收尾类动作(finish、构建、跑门),禁新增大额生成调用,给续修留活路;再是**硬地板**(软停线 ×1.5 = 便宜档 ¥15 / 富档 ¥75)——它与轮数、墙钟两道闸任一先到即停,保证软停之后 ¥ 上界数学上仍封得死("软停不等于无界")。**生产两档已统一走两段式**(2026-07-03 W-ARCH② 实施):便宜档 CLI 与生产 Service 经 `cheap_budget.build_cheap_breaker` 单一装配点组 breaker、数值同源 genconfig(generation.yaml budget 区),软停后 `on_acting` 拦生成面工具(write_file/write_source/scaffold_init,收尾类恒放行),硬地板 fail-closed 数学封顶;middleware 的 hard 单段语义原样保留为默认档(未显式装配面与实验路的兜底,spike 实测 60/80 轮硬熔断已落)。这道预算闸的三层强制架构见 §5.2。
|
||||
|
||||
**M3 的接法**是这条线能不能成的根因之一。tier2 agent 经官方 `AnthropicChatModel` 走 `AnthropicCredential.base_url`(指向 new-api 的 Anthropic 端点),到 MiniMax-M3,计费统一从 new-api 一个平面走。"用对 M3"是三件事:走 Anthropic 原生协议加 agentic 工具循环(循环调工具写源 / build / 跑门 / 读 verdict / 改,而不是 OpenAI 式单次 JSON 填空);thinking 分离(开 thinking,且 max_tokens 须严格大于 thinking_budget);完整 response 与历史保留(每轮的 thinking / text / tool_use 块原样回传入历史,否则 M3 的交错思维失效)。旧用法 60% 失败的最深根因正是反着来——关 thinking、单次 JSON 填空、失败从头重生成,是用法错、不是模型天花板。
|
||||
|
||||
> **现 / 建(2026-07-03 更新)**:本面核心**已落并经 feie-005 accept**——M3 Anthropic 接法链路、有界外层 resume + finish 门、自建硬熔断(非官方软刹,该类 2.0.2 不存在)、写源/改/快检/跑门内循环都已跑通;`max_tokens > thinking_budget` 启动校验、`RecordingChatModel(Anthropic)` 成本取证已落。**续修原语已迁进 `RepairMiddleware`**(护城河 middleware 线,2026-07-01/02 已代码落地,单 POST 内 finish 点拦截续修,便宜档 Service 与富档共用),外层 resume 在本地 runner 路并存。**预算两段式已全落**(W-ARCH② 2026-07-03 实施):软停线越线只许收尾(`on_acting` 拦生成面工具)+ 硬地板 ×1.5 fail-closed;便宜档 CLI 与生产 Service 经 `cheap_budget.build_cheap_breaker` 同源,真 M3 smoke 实证软停触发与硬地板 fail-closed 都真转。**收敛环已真跑判 conditional**(见 §4.2)。待:agent 层 win-balance 攻坚、把偏脆的文本契约检查(play-scene 工厂结构)做成更稳的结构化校验。
|
||||
> **现 / 建(2026-07-03 更新)**:本面核心**已落并经 feie-005 accept**——M3 Anthropic 接法链路、有界外层 resume + finish 门、自建硬熔断(非官方软刹;该类 spike 期官方无、2.0.3 才补原生 token 制,仍保自建 ¥ 闸)、写源/改/快检/跑门内循环都已跑通;`max_tokens > thinking_budget` 启动校验、`RecordingChatModel(Anthropic)` 成本取证已落。**续修原语已迁进 `RepairMiddleware`**(护城河 middleware 线,2026-07-01/02 已代码落地,单 POST 内 finish 点拦截续修,便宜档 Service 与富档共用),外层 resume 在本地 runner 路并存。**预算两段式已全落**(W-ARCH② 2026-07-03 实施):软停线越线只许收尾(`on_acting` 拦生成面工具)+ 硬地板 ×1.5 fail-closed;便宜档 CLI 与生产 Service 经 `cheap_budget.build_cheap_breaker` 同源,真 M3 smoke 实证软停触发与硬地板 fail-closed 都真转。**收敛环已真跑判 conditional**(见 §4.2)。待:agent 层 win-balance 攻坚、把偏脆的文本契约检查(play-scene 工厂结构)做成更稳的结构化校验。
|
||||

|
||||
|
||||

|
||||
@ -386,7 +386,7 @@ tier2(最高深度档)的运行时按 AgentScope 2.0.2 的真实对象结构落
|
||||
|
||||
L1 的主体是九门,每门在真浏览器里真玩一局取确定性证据:A_boot(能否 boot,轮询 boot 信号)、B_uncaught(有无未捕获异常,监听 console 与 CDP 错误)、C_frame(帧在不在推进,前后取帧号差大于零)、D_render(画面有无真实内容,截图回读亮像素阈值)、E_live(画面在不在变,对多帧取哈希去重)、F_wiring(逻辑真调引擎还是空桩,查引擎 API 调用有没有出现)、G_input(注入输入后状态有无变化)、H_progress(核心机制有无真进展,driver 驱动加玩后断言、含 latch 终态)、I_control(控制响应跟不跟手,输入到反应的时序在阈值内)。九门里只有 H_progress 落 L2,其余落 L1;E_live 与 H_progress 是条件门(没有 driver 时降为 advisory),其余是硬门。九门全绿等于机制地板通过、可发——把"做完了"钉在客观证据上,绝不让模型自评。
|
||||
|
||||
现有九门是为低档的 LittleJS 建的,探针钩子硬编码了 LittleJS 专属取法。tier2 复用的是"真玩判定加零自评"这套哲学、**不是**这套代码,探针要为 Phaser 整套重写——canvas 选择器、帧源、boot 信号、输入注入与 state 读取四条钩子各自重写,不是参数化一键切。沙箱底座曾被列为 spike 的前置阻断项:agentscope-runtime 独立仓已归档、能力并入 2.0.2,原打算先小验 agentscope 2.0.2 内置 Workspace 的 Docker 后端能否托管这套 CDP 探针(它是 MCP-gateway 工具沙箱、不直接暴露 CDP),够就用、不够回落自建 Docker 薄沙箱复用现有 harness。**但 2026-06-28 收敛环 runbook 已解除这道前置**:实测证明 harness 能在 in-process(本地 runner)直接跑起来,收敛环就走本地 runner、不再卡等 DockerWorkspace 托管结论;跨机 / Docker 沙箱选型降为 go/no-go 之后的 Phase B 项、不阻塞收敛。原"这个结论必须在生成迭代开跑前出来、否则 spike 跑不起来"的判断已被证伪。
|
||||
现有九门是为低档的 LittleJS 建的,探针钩子硬编码了 LittleJS 专属取法。tier2 复用的是"真玩判定加零自评"这套哲学、**不是**这套代码,探针要为 Phaser 整套重写——canvas 选择器、帧源、boot 信号、输入注入与 state 读取四条钩子各自重写,不是参数化一键切。沙箱底座曾被列为 spike 的前置阻断项:agentscope-runtime 独立仓已归档、能力并入 2.0.3,原打算先小验 agentscope 2.0.3 内置 Workspace 的 Docker 后端能否托管这套 CDP 探针(它是 MCP-gateway 工具沙箱、不直接暴露 CDP),够就用、不够回落自建 Docker 薄沙箱复用现有 harness。**但 2026-06-28 收敛环 runbook 已解除这道前置**:实测证明 harness 能在 in-process(本地 runner)直接跑起来,收敛环就走本地 runner、不再卡等 DockerWorkspace 托管结论;跨机 / Docker 沙箱选型降为 go/no-go 之后的 Phase B 项、不阻塞收敛。原"这个结论必须在生成迭代开跑前出来、否则 spike 跑不起来"的判断已被证伪。
|
||||
|
||||
九门是超休闲单局的机制地板,不查跨系统接线;富游戏的难点恰在跨系统,所以在九门之上补三道 tier2 专属的确定性门。**三联动门**证三个系统真耦合而非孤岛:订单要的物品必须能被合成系统产出(从合成链静态推到订单的跨表可达性检查)、合成链必须是有向无环图(拓扑检查不许成环)、完成订单时必须真调资源系统加金币、合成消耗时必须真调扣食材。**经济门**用真输入把两条路驱动到终态:可盈利路径(金币从开局攒到目标判赢)、可破产路径(连续若干订单流失判输),关键约束是两条路都得被 harness 的真输入序列驱动跑到终态——能在数据表里算出来和能被真玩到是两回事。**latch 门**管终态落定不回弹、宿主能读到终局,承接的是"游戏无 emit 通道、终态焊成可轮询 latch、宿主轮询读"这条现行装载约束。九门加这三门合起来全绿,才算 tier2 的富游戏机制地板通过。
|
||||
|
||||
@ -413,7 +413,7 @@ spike 第二段放开让 agent 自产或扩展 driver 时,会撞上一个 Goodha
|
||||
|
||||
引擎不是"一次选定、所有游戏长在上面的固定底座",而是一个**动态加载的能力包**;换引擎等于换"我手里有哪些工具能调"那一组,不是架构重写。能力包五件套各管一面:**skill** 是这一引擎下"如何做某一类事"的固化 playbook(沉淀对的写法、少让模型现场摸索)、**tool** 是上面九个工具的该引擎实现(经 FunctionTool 薄壳接进 Toolkit)、**mcp** 把引擎侧能力标准化暴露成可调接口、**rag** 是引擎文档与范例的检索增强(补模型训练数据里这个引擎的密度,见得越多自治循环越少编不存在的 API)、**scaffold** 是模板初始化铺的工程骨架(平台预建的那 25%)。换引擎就是换这一套加载的工具集,不动两阶段角色、不动三层校验主干。这一面正是 §二"工具采 MCP-native、playbook 采 SKILL.md 开放标准"的落点。
|
||||
|
||||
prompt 分**两阶段角色**。阶段 1 工作室设计师跑在 Agent Team 星形上:leader 拆解用户意图,经 `AgentCreate` 拉起玩法、关卡、数值、UI、音乐、特效、资产等设计 worker 发散,经 `TeamSay` 把各路结论汇回 leader 收敛;这阶段只读加对话——设计 worker 用 `PermissionMode.EXPLORE` 只读已有工程代码与工程内设计文档,与用户跨 session 多轮对话、不写代码。阶段 2 单写 coder:模板初始化铺骨架、把每个设计结论写成工程内文档、单写 agent 跑 ReAct 多轮写代码、过三层校验、产出真 Phaser 源工程。星形有一条铁律:worker 只能经 TeamSay 把结果报回 leader,禁止 worker 互评互相喊话,所有协调过 leader 这个唯一中心(2.0.2 已删进程内的 MsgHub / pipeline,工作室必须建在部署态 Agent Team 上)。
|
||||
prompt 分**两阶段角色**。阶段 1 工作室设计师跑在 Agent Team 星形上:leader 拆解用户意图,经 `AgentCreate` 拉起玩法、关卡、数值、UI、音乐、特效、资产等设计 worker 发散,经 `TeamSay` 把各路结论汇回 leader 收敛;这阶段只读加对话——设计 worker 用 `PermissionMode.EXPLORE` 只读已有工程代码与工程内设计文档,与用户跨 session 多轮对话、不写代码。阶段 2 单写 coder:模板初始化铺骨架、把每个设计结论写成工程内文档、单写 agent 跑 ReAct 多轮写代码、过三层校验、产出真 Phaser 源工程。星形有一条铁律:worker 只能经 TeamSay 把结果报回 leader,禁止 worker 互评互相喊话,所有协调过 leader 这个唯一中心(2.0.3 已删进程内的 MsgHub / pipeline,工作室必须建在部署态 Agent Team 上)。
|
||||
|
||||
tier2 与 A-model(低档那条 LittleJS 轻量经营档)**两档分立、运行期零依赖**(引擎不同,但同走 AgentScope 编排),但 A-model 的引擎无关契约可以复用、渲染按 Phaser 重做。复用的是四个插件的契约与命名(`scene-fsm` 场景状态机、`hud-ui` 界面、`session-score` 局内计分、`timer-scheduler` 定时调度)、`sim-business` 经营配方(数值与系统结构、非渲染件)、以及九门基线那套 driver 感知 advisory 分级范式;但探针要为 Phaser 整套重写。源项目契约维持独立 schema、不并进 A-model 的 LittleJS keystone(见 §5.6)。
|
||||
|
||||
@ -451,7 +451,7 @@ SAA 那一侧的能力面是另一套形态,但它现已降为最低优先级、
|
||||
|
||||
一份 trace 契约要管多个异构框架的 adapter——AgentScope(ReAct)为主,SAA(十六节点裁决)是远期适配进来时的另一个 adapter——办法是**接口层对称、内容层不对称**:一个对称的公共核心子集加各轨一个不对称的 JSON 扩展段。消灭轨迹分散(split-brain)的真口径是"每个 adapter 诚实镜像它真有的字段、没有的绝不编造",而不是强求各 adapter 字段对齐——ReAct 是"想一步、做一动作、看一结果",SAA 是十六节点的阶段裁决,本就不同构,强求对齐等于逼一个 adapter 编造它根本没有的字段。公共核心子集是五个字段(`traceId`、`step`、`cost`、`verdict`、`timestamp`),各 adapter 必填、同名同义;扩展段各写各的——SAA 那条塞阶段、修复轮次、门裁,ReAct 塞推理、动作、观察。这份契约约束的是数据口径、不是采集机制:采集各按各的框架来,数据口径不随框架漂移。它该落成 `contracts/trace/` 下契约组的新一类,含字段定义、schema 版本、脱敏规则、各 adapter 怎么映射,以及一条策略——轨迹写不进去时默认 best-effort 不阻塞主生成流程、但落一条告警(不能让一次落库抖动废掉整局已跑出的生成,也不能让它无声丢失)。这一位当前还没建,随 spike 或控制面 phase-1 落地再新立,别当现成件引用。
|
||||
|
||||
采集机制采 **OpenTelemetry GenAI 这套标准**,而且 tier2 这条线几乎不必自己埋点——AgentScope 2.0.2 自带一套完整的强类型 Event System,agent 每跑一步就吐出强类型事件流,经官方 TracingMiddleware 直接调真 OTel SDK 转成 span、汇进 AgentScope Studio 可视化。七类事件里,文本、思考、工具调用各带起始/增量/结束三相,工具结果一类,模型调用用一对起止事件圈住——**结束那一下带这次调用的 token 用量**,成本台账的 token 正是从这里抓;回复事件圈住一轮完整的 reason→act→observe。所以 tier2 写轨迹的活只是"订阅加映射",不是"埋点加采集":订阅 Event System、走官方 TracingMiddleware→OTel 管道,再加一层 adapter 按核心子集加扩展段映射进统一表。SAA 那条 Java 线远期适配进来时,则按自己的节点裁决埋点、走同一份契约的另一个 adapter。各 adapter 机制各异、契约一致,正是"接口对称、内容不对称"在可观测面的落点。存储复用已部署的 MySQL 加对象存储,不上重型可观测中间件——观测早建是为 spike 调试和对账当下就用得上,不等于现在就铺独立基建。
|
||||
采集机制采 **OpenTelemetry GenAI 这套标准**,而且 tier2 这条线几乎不必自己埋点——AgentScope 2.0.3 自带一套完整的强类型 Event System,agent 每跑一步就吐出强类型事件流,经官方 TracingMiddleware 直接调真 OTel SDK 转成 span、汇进 AgentScope Studio 可视化。七类事件里,文本、思考、工具调用各带起始/增量/结束三相,工具结果一类,模型调用用一对起止事件圈住——**结束那一下带这次调用的 token 用量**,成本台账的 token 正是从这里抓;回复事件圈住一轮完整的 reason→act→observe。所以 tier2 写轨迹的活只是"订阅加映射",不是"埋点加采集":订阅 Event System、走官方 TracingMiddleware→OTel 管道,再加一层 adapter 按核心子集加扩展段映射进统一表。SAA 那条 Java 线远期适配进来时,则按自己的节点裁决埋点、走同一份契约的另一个 adapter。各 adapter 机制各异、契约一致,正是"接口对称、内容不对称"在可观测面的落点。存储复用已部署的 MySQL 加对象存储,不上重型可观测中间件——观测早建是为 spike 调试和对账当下就用得上,不等于现在就铺独立基建。
|
||||
|
||||
成本不是估的,从 new-api 的 quota 权威口径折出每款多少人民币——每次调用的 quota 就是真实的倍率成本,比按公开单价估更准。OTel 的语义约定里没有成本属性,所以"成本钉 new-api 计费行"这条自研口径要保留,经 traceId 关联进 trace。这里有一个红线缺口:M3 那一档走 Anthropic 原生端点,而现有成本记录只覆盖 OpenAI 路,抓不到它,于是 M3 这档的 token 用量采不到、单款成本对它直接缺、全矩阵成本没法对比。接点是补一个包住 Anthropic 模型调用的录制变体,抓每次按模型分列的 token 用量,把 Anthropic 路补齐。计费平面的纪律是"协议自由、计费收口"——M3 走 Anthropic 端点、便宜档走各自端点,协议与 SDK 不锁死、每档走各自最优端点,但所有路最终都收口到 new-api 的 quota 按模型折 ¥ 这一个计费平面。成本台账按 AI 深度档对账两段式预算:软停线 = 低深度档一次生成 ¥10、最高深度档 ¥50(越线只许收尾、交尽力产物),硬地板 = 软停线 ×1.5(¥15 / ¥75,与轮数/墙钟任一先到即停、封死 ¥ 上界),图像与音乐生成各走独立预算线、不计入这两个上限(数字红线来源=创始人 2026-06-25,两段式 2026-07-03 裁定,失效条件=单位经济或模型单价大变即复审)。
|
||||
|
||||
@ -464,11 +464,11 @@ SAA 那一侧的能力面是另一套形态,但它现已降为最低优先级、
|
||||
|
||||
### 5.8 四层职责
|
||||
|
||||
把 tier2 的运行时拆成 environment、harness、context、prompt 四层,是一个**职责视角**,叠在 AgentScope 2.0.2 的真实对象结构(Agent / Workspace / Toolkit / Middleware / AgentState / Agent Service)之上,不是四个平行筒仓、更不是互相调用的对等模块。读的时候带着"职责→真实载体"的对应:environment 的真实载体是 Workspace(沿两轴注入 Agent,见 §5.1);harness 是 Agent 的 ReAct 循环原语加 Middleware 洋葱加 tier2 自建的验收门;context 与 prompt 是每一步组装进模型窗口的运行时载荷加离线指令,两者是 prompt ⊂ context 的嵌套关系。业界主流的口径是 prompt ⊂ context ⊂ harness 三层嵌套、environment 并进 harness 当对外数据面;本文拆成四层是为了讲清"单写者 ReAct 加跑确定性门"这种结构。
|
||||
把 tier2 的运行时拆成 environment、harness、context、prompt 四层,是一个**职责视角**,叠在 AgentScope 2.0.3 的真实对象结构(Agent / Workspace / Toolkit / Middleware / AgentState / Agent Service)之上,不是四个平行筒仓、更不是互相调用的对等模块。读的时候带着"职责→真实载体"的对应:environment 的真实载体是 Workspace(沿两轴注入 Agent,见 §5.1);harness 是 Agent 的 ReAct 循环原语加 Middleware 洋葱加 tier2 自建的验收门;context 与 prompt 是每一步组装进模型窗口的运行时载荷加离线指令,两者是 prompt ⊂ context 的嵌套关系。业界主流的口径是 prompt ⊂ context ⊂ harness 三层嵌套、environment 并进 harness 当对外数据面;本文拆成四层是为了讲清"单写者 ReAct 加跑确定性门"这种结构。
|
||||
|
||||
复用边界看两个维度:来源(官方现成,即 AgentScope 2.0.2 自带,还是自建)乘以共享(各档公共,还是 tier2 私有)。一个关键的交叉结论是——**公共组件等于自建与共享的交集**(九门、三层校验、CDP、计费、送审、feed、trace),它们是团队自建、被各档共用的,**不是官方现成能力**;"框架里有"不等于"公共组件"。每个自建项还标出它用哪种 AgentScope 扩展点落地:验收门是框架外的确定性断言、硬熔断三件是挂在洋葱上的 Middleware、角色 prompt 与模型路由是纯数据的 Prompt 热配置、skill 目录经 Workspace 的 add_skill 注入、工作记忆与经验召回是 AgentState 的 context 加经验库。把载体类型标清楚,是为了让"换引擎等于换 id 和 version、trace 始终按 id/version 归因"这条目标态有落点,也防止把本该热配的东西硬编码进机制。
|
||||
复用边界看两个维度:来源(官方现成,即 AgentScope 2.0.3 自带,还是自建)乘以共享(各档公共,还是 tier2 私有)。一个关键的交叉结论是——**公共组件等于自建与共享的交集**(九门、三层校验、CDP、计费、送审、feed、trace),它们是团队自建、被各档共用的,**不是官方现成能力**;"框架里有"不等于"公共组件"。每个自建项还标出它用哪种 AgentScope 扩展点落地:验收门是框架外的确定性断言、硬熔断三件是挂在洋葱上的 Middleware、角色 prompt 与模型路由是纯数据的 Prompt 热配置、skill 目录经 Workspace 的 add_skill 注入、工作记忆与经验召回是 AgentState 的 context 加经验库。把载体类型标清楚,是为了让"换引擎等于换 id 和 version、trace 始终按 id/version 归因"这条目标态有落点,也防止把本该热配的东西硬编码进机制。
|
||||
|
||||
一次诚实的对地基现成度的上修:有几样早稿打算自建的能力,其实官方已有现成件,该删掉自建、改用官方——token 计量用模型响应自带的用量、结构化输出用模型层能力、可观测 trace 用官方 TracingMiddleware(纯 OTel)、经验召回用现成的记忆框架、多 agent 总线用 Agent Team。**这里要纠一处早稿错**:早稿还列了"软预算控制用官方 `ReplyBudgetControlMiddleware`",但 0 号 spike 期 2.0.2 源码核验**该类不存在**——这一项不属"改用官方",反而归下面"必须自建"(tier2 已用自建 `on_system_prompt` + 订阅模型调用结束事件的硬熔断实现)。官方确实没有、必须自建或引第三方的是:RAG 检索管线、评测模块、成品级的框架互通、以及两块护城河——确定性验收门(框架不提供)和强制 fail-closed 的预算硬闸。
|
||||
一次诚实的对地基现成度的上修:有几样早稿打算自建的能力,其实官方已有现成件,该删掉自建、改用官方——token 计量用模型响应自带的用量、结构化输出用模型层能力、可观测 trace 用官方 TracingMiddleware(纯 OTel)、经验召回用现成的记忆框架、多 agent 总线用 Agent Team。**这里要纠一处早稿错**:早稿还列了"软预算控制用官方 `ReplyBudgetControlMiddleware`",但 0 号 spike 期核验官方当时无此类(2.0.3 已补进原生 token 制、仍保自建 ¥ 闸,见 §15)——这一项不属"改用官方",反而归下面"必须自建"(tier2 已用自建 `on_system_prompt` + 订阅模型调用结束事件的硬熔断实现)。官方确实没有、必须自建或引第三方的是:RAG 检索管线、评测模块、成品级的框架互通、以及两块护城河——确定性验收门(框架不提供)和强制 fail-closed 的预算硬闸。
|
||||
|
||||
配置分三类,决定一样东西改了要不要发版。硬代码机制类(确定性门断言、四道熔断、基线硬门强制、循环与记忆的组装压缩机制、权限硬上限、那几条铁律)随代码走、不外置。版本化安全与构建配置类(依赖锁、引擎版本、构建 profile、启用的沙箱类型、权限上限只可降不可升)审计留痕、不热改。热配置策略类(prompt 文本、各 agent 的模型路由、few-shot、skills、max_iters、熔断阈值、新增门的 observe/enforce 档、上下文预算、压缩阈值、枚举内的 RAG 源、记忆模式)改配置不重新部署服务代码。但这里的"不发版"只指不重部署代码:其中影响生产质量/安全的**重要配置**(关键 agent、关键玩法模板、prompt 正文、生成门阈值)的发布仍须走**配置发布流程审批**、通过才生效,本质是一次**受治理的配置发版**(后期阶段做、复用 yudao,见 §5.2 管理面);只有非关键热配置才即时生效。一条颗粒度澄清:新增或删除一类内容等于改枚举、是硬代码;已有类里增减取值(比如多挂一个 RAG 源)是可配置。三类门也同此分:基线确定性硬门永远强制、不可关,新增确定性门走 observe→enforce(默认只观测,达标率稳了才赋拒发权),M3 视觉软检永远只观察、绝不放行也绝不拒发。
|
||||
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user