AgentScope 框架深度评测 · Ep6DEEP DIVE
SOP、验证者与断点续跑:AgentScope 2.0.9 给「自主」装的刹车和账本
视频版:B站 公开投稿中无对应视频(已核对全部 16 个投稿) 视频总览 →
本期要点POINTS
本期要点
关键实测数据DATA
关键实测数据
| 被测项 | 指标 | 值 | 实测日期 | 原始记录 |
|---|---|---|---|---|
| AgentScope 2.0.9(两步 SOP 演示) | SOP 第 1 步判定次数 | 2 次 | 2026-09-29 | 原始记录 ↗ |
| AgentScope 2.0.9(两步 SOP 演示) | SOP 整段用时 | 23.9 s | 2026-09-29 | 原始记录 ↗ |
| AgentScope 2.0.9(两步 SOP 演示) | 运行状态文件大小 | 2688 字节 | 2026-09-29 | 原始记录 ↗ |
| AgentScope 2.0.9(SOP 断点续跑) | 断点续跑用时(只跑第 2 步) | 9.7 s | 2026-09-29 | 原始记录 ↗ |
| AgentScope 2.0.9(TeamPipeline 演示) | TeamPipeline 整段用时 | 39.6 s | 2026-09-29 | 原始记录 ↗ |
| AgentScope 2.0.9(TeamPipeline 演示) | token 消耗(输入 / 输出) | 输入 4,249 / 输出 1,635 | 2026-09-29 | 原始记录 ↗ |
口径:本地与云不混评(每条读数标了运行环境,两边数字不放在一起比); 一行 = 一条可核读数;论文与第三方数字不进本表(见上方来源表)。 「原始记录」指向公开仓 cnopens/ruiowl-evidence 的固定链接(带 commit SHA,防漂移);标「未收录」者为本地从未留存原始数据文件,不补造。
锐Owl · AgentScope 系列 · 与视频 ep17《框架开始管「你到底做完了没有」》配套 取证与实测:2026-09-29(M4 本机 · agentscope 2.0.9 · venv);版本口径双源核对(GitHub Releases + PyPI) 承接:ep13(AgentScope Ep5,v2.0.7「可观测 = 信任」)→ ep15《Agent 动手之后,谁来拦》→ 本文(把「验」写进框架)
开篇:为什么写这篇
ep13 的结语是「可观测 = 信任」,ep15 的结论是「靠提示词求它别乱来是靠不住的,得靠边界」。这两篇把问题摆到了「谁来拦」这一层,但没有回答下一步:拦住之后,怎么证明一步活真的干完了?
AgentScope 2.0.9(2026-09-28 05:06 UTC)给了一个框架级回答:把「任务拆成有序里程碑 → 每步有人判 → 判不过按预算重试 → 运行状态可存可续 → 关键步骤人来签字」写成框架里的对象。同版本还给了团队流水线、回头问人的工具、更紧的危险命令判定、四家实时语音后端、全屏终端界面与模型路由。
这篇不重复 ep13 讲过的渠道层 / workspace 共享 / Skill 隔离(那些是 2.0.6–2.0.7 的事),只写 2.0.9 的新东西,并且把能真跑的部分真跑了一遍——下面所有「实测」区块都是本机跑出来的原始读数,不是官方文档转述。
一、SOP:把任务写成一组有序里程碑
官方口径(docs.agentscope.io/latest/en/building-blocks/sop):SOP 由五个部件构成——
| 部件 | 职责 |
|---|---|
SOP |
定义:名字 / 描述 / 有序步骤;不含运行状态,一份定义可服务任意次运行 |
SOPStep |
一个步骤 = executor(干活)+ 可选 verifier(判定) |
SOPStepBase |
自定义步骤的基类 |
SOPEngine |
驱动一次运行:按序推进、消耗尝试预算、把人在环的回答路由回被挂起的那一步 |
SOPRunState |
一次运行的全部信息,纯数据、可存可恢复 |
← 表格可左右滑动查看
官方文档里有两句筛选标准,比功能本身更值钱,原文可直接引用:
- 「不运行它,你能说清有几步、每一步谁做吗?」——不能,它就不是一个 SOP;
- 「这一步结束时,真的有人检查吗?」——没有,它就不该单独成一步。
它管什么、不管什么:SOP 管「有几步、谁干、谁验、最多试几次」,不管每一步怎么干——怎么干留给模型自己决定。所以它和「写一段更长的提示词」不是一回事:提示词是请求,SOP 是流程里的硬约束。
实测(本文作者本机,2026-09-29):我们用一个两步骤 SOP 跑了一篇稿子的工序——第 1 步出大纲(带 verifier)、第 2 步写成稿。第 1 步两次判定:第一次 passed=False 被打回,带上意见重来;第二次 passed=True 通过。整段跑完 23.9 秒,运行状态落盘为一个 JSON 状态文件(2,688 字节)。
二、验证者与尝试预算:验收从「口头要求」变成「框架契约」
这是本期最该抄的一条设计:verifier 是步骤的属性,不是流程外的额外检查。也就是说「这一步谁判、判什么」在定义阶段就写死了;运行时不靠人盯,也不靠事后抽查。
配套三件:
- 尝试预算(attempt budget):验不过就重试,但次数有上限——把「无限重试烧钱」变成可配置的值;
- 人在环路由:
SOPEngine把人对问题的回答路由回被挂起的那一步,而不是丢掉上下文重开; - 状态可存可续:运行状态是纯数据。
实测(断点续跑):我们把第 1 步跑完(已通过)后中断进程,再用 --resume 从状态文件重建引擎。结果是:第 2 步只跑了一次,本次运行 9.7 秒——已完成的步骤没有再跑,状态文件(2,688 字节)里的「提交次数 / 判定次数 / 步骤状态」被完整还原。这个数比任何描述都直观:「重来一遍」和「接着走」之间的差价,就是状态能不能落盘。
一句诚实说明:演示里第 1 次审核之所以没过,是因为我们在 verifier 的提示词里故意要求「第 1 次一律不通过」——目的是让「打回 → 带意见重试 → 通过」这条链路在镜头里完整出现。这是演示设计,不是模型能力缺陷;凡是看到「Agent 第一次没过」的视频,都值得先问一句:这是模型真没过,还是设计让它没过。
实验性提醒(官方明示):SOP 模块标注为实验性,接口后续可能变;服务层(deploy/sop)提供流程的 HTTP CRUD、启动运行立即返回后台推进、前端通过 session 事件流实时旁观、以及以人身份签字(sign off as a person)。要接生产,先按「接口可能变」做隔离层。
三、TeamPipeline:只固定「谁能被派、结果回到哪」
官方口径(.../building-blocks/pipeline/team):一个 leader + 若干 member;leader 通过工具调用派活(如 TeamAssign(member="Researcher")),每个成员在自己的上下文里干活,它的最终回复作为工具结果回到 leader。
最值得留意的是一个被官方明写的设计选择:「Results only」——leader 只拿到成员的最终回复,看不到成员中间的推理与工具调用。
与上一代 GoalPipeline 的分野(2.0.8 引入):Goal 是固定循环(规划 → 执行 → 反思,一轮一轮走);Team 只固定两件事——谁能被派、结果回到哪;派给谁、派几次由 leader 自己决定,并且可中断、可续跑。框架不去规定「最优流程」,只固定最容易失控的边界,剩下的判断交给模型。
实测(本机):leader 用 TeamAssign 派活两次,成员各自干完、只把结果交回主线;整段用时 39.6 秒,token 账 输入 4,249 / 输出 1,635(数值取自录屏中原始终端的打印值)。
为什么这么设计,以及它的代价(我的判断):只回结果,主线上下文不会被各个成员的过程淹没——上下文是稀缺资源,把中间推理全塞回主线,只会变慢、变贵、更容易跑偏。但代价同样明确:你也就看不到成员在中间有没有越权、有没有空转。所以「结果回传」这套设计要配上独立的工具调用日志才算闭环——这一点正是本文第五部分判据的来由。
四、责任与成本:把「谁来负责」「谁最贵」也写进框架
1)AskUser —— 让 agent 知道什么时候该停下来问人。 2.0.9 加了这个外部工具:不是让它硬编一个答案,而是把拿不准的地方做成多选题递给人。
2)人工签核 —— 关键节点上,责任留在人这里。 服务层里每一步都可以设成「人来签字才算过」;机器负责把活干到「能签的程度」。这和 SOP 的 verifier 是两套东西:verifier 判得对不对,签核判「要不要由人担这个责」。
3)只读命令判定收紧 —— ep15 那个问题的框架级落地。 2.0.9 把「只读命令」的判定收紧了:破坏性的 git / sed / tee 用法不再被当成无害命令跳过确认。改动很小,方向很清楚——省事的那个口子被堵上了。提示词是请求,判定是边界。
4)实时语音(实验性)—— 对着说,边说边动手。 RealtimeAgent 是语音进、语音出:持续聆听、开口回答,且对话进行中就能调工具(不必等一条完整文本消息);带 VAD 轮次检测判断你说完没有。后端从 2.0.8 的 1 家补齐到 4 家(DashScope / OpenAI Realtime / Gemini Live / xAI Grok Voice)。两条必须如实标注:语音模块官方明标实验性,接口可能变;级联方案(ASR→LLM→TTS)官方标注 "coming soon",不能写成已支持。
5)agentscope.tui —— 全屏终端界面。 聊天、跑实时语音会话都能在终端里完成。对做评测的人,这是最省事的观察窗:不写前端,也能看到 agent 每一步在做什么。
6)模型路由 —— 不是每一句话都值得用最贵的模型。 同版本接入 MiniMax 聊天模型(默认 M3),并给出 ModelRouterMiddleware(背后是新模块 agentscope.classifier,支持 Jev):每一次回复都可以按需挑一个合适的模型。这一条正对着我们这条内容线一直挂着的判据——「效率是衡量标准」:把模型选择从「全局设置」变成「逐轮决策」,成本就从常量变成了变量。
五、选型判据 J1–J6(下次评估同类框架,直接用这六条)
| # | 判据 | 怎么验(可执行) | 本期证据 |
|---|---|---|---|
| J1 | 状态可落盘、可恢复 | 跑到一半杀掉进程,再起一次;看是否只跑剩下的步骤 | 状态文件 2,688 字节;续跑只跑第 2 步 9.7s(整段 23.9s) |
| J2 | 每步有独立判定者 | 判定者(verifier)是否是步骤定义的一部分,而不是流程外的抽查 | SOP 的 SOPStep 自带可选 verifier |
| J3 | 重试有上限 | 有没有可配的尝试预算;没有就是把「烧钱」写成了循环 | SOPEngine 消耗 attempt budget |
| J4 | 责任有落点 | 关键步骤能否设成「人签字才算过」 | 服务层支持 sign off as a person |
| J5 | 过程可见,但不必塞回主线 | 成员只回结果时,有没有独立的工具调用日志可查 | TeamPipeline 只回结果 → 需补日志(本文局限 3) |
| J6 | 接口稳定性有标注 | 新模块是否明标实验性;实验性模块是否已做隔离层 | SOP / 实时语音均标实验性 |
← 表格可左右滑动查看
一句话把六条串起来:能不能进生产,不看它有多能自主,看它干完活之后你还能不能验证它。
六、局限(写清楚比藏着好)
- 实验性:SOP 与实时语音官方标注实验性、接口可能变;本文实测基于 2.0.9 单点版本。
- 未覆盖:语音的级联方案(ASR→LLM→TTS)官方标注 "coming soon",本文未测;本文也未做源码级复核,机制描述来自官方 release notes 与文档原文。
- Results only 的盲区:团队成员只回结果,主线看不到它的中间越权/空转——需要 harness 层日志补齐,本文未做(已列入 J5)。
- 数值性质:所有「实测」为本机单次运行读数(M4 / agentscope 2.0.9 / 百炼 TokenPlan 模型),不是基准分数,不可当性能结论引用。
- 改名日期不可考:仓库已迁至
agentscope-ai/agentscope(老地址modelscope/agentscope返回 301),但生效日期未能一手定位(GitHub 不提供转移日期,Wayback 取数被限流)→ 本文只作背景一句,不做卖点。 - 星数为单点值:32,523 stars 为 2026-09-29 实测(ep13 时为 30.3k),引用请带日期。
复现
# 环境(本文所有实测)
python -m venv ~/workspace/agentscope-test/.venv && source ~/workspace/agentscope-test/.venv/bin/activate
pip install "agentscope==2.0.9" # 2026-09-28 05:06 UTC 发布;PyPI 与 GitHub Release 同刻
python -c "import agentscope; print(agentscope.__version__)"
# 三个演示(脚本与手册随视频一起归档)
# demo1_sop.py —— 两步 SOP:出大纲(带 verifier)→ 成稿;可 --park-after 1 中断存盘、--resume 续跑
# demo2_team.py —— TeamPipeline:leader + 成员,leader 只收结果
# demo3_console.py —— agentscope.tui 全屏终端界面
| 读数 | 值 |
|---|---|
| SOP 第 1 步判定次数 | 2(第 1 次 passed=False 打回 → 第 2 次 passed=True) |
| SOP 整段用时 | 23.9s |
| 状态文件大小 | 2,688 字节 |
| 断点续跑(只跑第 2 步) | 9.7s |
| TeamPipeline 用时 / token | 39.6s / 输入 4,249、输出 1,635 |
← 表格可左右滑动查看
来源
| # | 来源 | 用于 |
|---|---|---|
| [1] | GitHub Release v2.0.9(2026-09-28T05:06Z)|https://github.com/agentscope-ai/agentscope/releases |
SOP / TeamPipeline / 实时语音四后端 / TUI / AskUser / 模型路由 / 只读命令判定收紧 |
| [2] | GitHub Release v2.0.8(2026-09-08) | GoalPipeline(上一代)/ 实时语音首版 / A2A |
| [3] | 官方文档 https://docs.agentscope.io/latest/en/building-blocks/sop |
SOP 五部件、尝试预算、状态可存可续、两句筛选标准 |
| [4] | 官方文档 .../deploy/sop |
服务层:流程 CRUD、后台推进、事件流旁观、人工签字、工具确认 |
| [5] | 官方文档 .../building-blocks/pipeline/team |
TeamPipeline 派活流向、Results only、与 GoalPipeline 的分野 |
| [6] | 官方文档 .../building-blocks/realtime/overview |
语音进语音出、VAD、级联方案 coming soon、实验性标注 |
| [7] | PyPI agentscope 2.0.9(上传 2026-09-28T05:06:51Z) |
版本口径双源一致 |
| [8] | GitHub API + curl -I(2026-09-29 本机实测) |
老地址 301 → agentscope-ai/agentscope;32,523 stars |
← 表格可左右滑动查看
附:一句话口径(供简介 / 三件套复用)
AgentScope 2.0.9 把「验」写进了框架:任务拆成有序里程碑,每步有人判、有尝试预算,状态可存可续——进程挂了从断点接着跑;同版本还给自主配了团队分工、回头问人、更紧的危险命令判定,以及按回复挑模型的成本开关。自主不是不给约束,是把约束写成可验证的步骤、可回退的状态、可签核的人。
信号来源SIGNALS
信号来源
这一期从哪条雷达长出来(雷达 → 产出的双向可追溯):
node_links/radar_items.intent 的 feeds 指向关系当前为 0(M2 首轮回填统一先落 standalone,待人工指认)——回填后此处显示「雷达 YYYY-Www 条目 ③ → 已成为本期」。
来源表SOURCES