返回博客列表

AgentScope 2.0 深度解析:不约束模型、只给基元,3.2 万星的 Agent 框架怎么设计

2026-10-06T14:00:00+08:00
AgentScopeAgent多 AgentMCPA2ARealtime开源Tutorial

AgentScope 2.0 深度解析:不约束模型、只给基元,3.2 万星的 Agent 框架怎么设计

大多数 Agent 框架在替模型做决定,它的选择是把决定权还回去。

AgentScope 是阿里开源的生产级 Agent 框架,目前 32,783 stars、3,611 forks、608 个 open issues,Apache-2.0 许可,Python 3.11+,最新版本 v2.0.9(2026-09-28),文档在 docs.agentscope.io。

它对自己的定位在 README 第一段就写清楚了,而且这句话值得单独拎出来看:

We design for increasingly agentic LLMs. Our approach leverages the models' reasoning and tool use abilities rather than constraining them with strict prompts and opinionated orchestrations.

翻译一下:它是为"越来越像 Agent 的模型"设计的——靠模型自己的推理与工具使用能力,而不是用刻板的提示词和强观点的编排把它捆住。 项目的一句宣传语是 "Build and run agents you can see, understand and trust"(构建并运行你能看见、能理解、能信任的 Agent)。

这篇文章拆它的设计:九个 SDK 基元、ReAct 循环与事件总线、权限与中间件、记忆与沙箱、以及把 SDK 变成产品的 Agent Service。

本文提纲

  1. 它是什么:一个"给基元、不做决定"的框架
  2. 生态与家族:不只是一个 Python 库
  3. SDK 的九个基元
  4. 第一个能跑的 Agent
  5. ReAct 循环与事件系统:为什么它"看得见"
  6. 上下文、权限与中间件
  7. 记忆与沙箱:八种执行后端
  8. 从 SDK 到产品:Agent Service
  9. 2026 年 9 月的更新,以及选型边界

它是什么:一个"给基元、不做决定"的框架

Agent 框架大致分两种路线。一种是强编排:给你图、给你状态机、给你预定义的协作模式,你按它的范式把流程画出来。另一种是给基元:它只提供 Agent 循环、工具、上下文、事件、权限这些零件,具体怎么组合由你和模型决定。

AgentScope 2.0 明确站在第二种,而且理由讲得挺硬:如果你的编排逻辑写死了,模型能力升级时你享受不到红利——更聪明的模型本来能自己找到更好的路径,却被你的流程图锁住了。所以它的取舍是"把模型当成越来越能干的执行者,而不是需要被脚手架约束的组件"。

这个取向也解释了它后面很多设计:为什么要做中间件钩子而不是固定流程、为什么权限系统要细到工具和资源、为什么事件系统要把推理过程完整暴露出来("看得见"才能"理解"和"信任")。

生态与家族:不只是一个 Python 库

AgentScope 所在的 agentscope-ai 组织有 23 个公开仓库,星数分布很有意思:

仓库 星数 语言 定位
QwenPaw 35,441 TypeScript 个人 AI 助手,可本机或云端部署
agentscope 32,783 Python 本文主角,Agent 框架
AgentTeams 5,698 Go 协作式多 Agent OS,透明、human-in-the-loop
agentscope-java 5,872 Java "构建分布式、生产级、长期运行的 Agent"
agentscope-spark-design 455 TypeScript UI 组件库
agentscope-samples 351 Python 可直接运行的样例集合
agentscope-runtime-java 186 Java Agent 部署与工具沙箱运行时
skills 128 Python AgentScope 生态的技能合集
PawBench 114 Python 评测 LLM × harness 性能的基准
agentscope-typescript / agentscope-go 86 / 47 TS / Go 多语言版本

三点值得注意。第一,多语言是认真的:Python 之外有 Java(6k 星,且明确面向"分布式、长期运行")、Go、TypeScript。第二,它有配套评测基准(PawBench)——一个框架敢自己做 harness 级评测,说明它在乎"同一模型在不同 harness 下差多少"。第三,全家桶是围绕同一个理念展开的:框架 + 运行时 + 个人助手 + 多 Agent OS + UI 组件 + 技能库。

另外它有一篇早期的学术论文(arXiv 2402.14034,cs.MA),这在国内工业界开源的 Agent 框架里不算常见。

SDK 的九个基元

官方把 SDK 层拆成九个 building block,这张表基本就是它的架构图:

基元 里面有什么
ReAct 推理-行动循环;结构化输出;实时中断与恢复;批量工具执行(顺序或并发)
Toolkit 工具管理:Python 函数、MCP server、skills;内置编码工具(shell、文件编辑、搜索)与任务/计划工具
Model LLM、embedding、TTS,覆盖 OpenAI、Anthropic、Gemini、DashScope、DeepSeek、Moonshot、Volcengine、xAI、Ollama
Context 自动压缩、工具结果 offload、上下文注入(系统提示词、RAG、记忆),全部通过中间件实现
Event System 统一事件总线,把推理过程、工具调用、多模态内容(文本/图像/音频)流式推给前端
Permission & HITL 对工具与资源的细粒度控制、确认、bypass 模式
Middleware 循环上的可组合钩子:reply、reasoning、acting、model calling、权限检查、上下文压缩、系统提示词
Memory Agentic memory,后端可切换(ReMe、Mem0)
Workspace / Sandbox 隔离的工具与代码执行:local、Docker、Apple Container、Bubblewrap、E2B、OpenSandbox、Daytona、K8s

把这张表读一遍,你会发现它把"框架该管的事"和"不该管的事"划得很清楚:管循环、管上下文预算、管权限、管事件;不管你的业务编排长什么样。

第一个能跑的 Agent

官方 quickstart 相当克制——一个 Agent、一个 Toolkit、一个模型,然后扔进终端控制台:

from agentscope.agent import Agent
from agentscope.console import launch_console
from agentscope.tool import Toolkit, Bash, Grep, Glob, Read, Write, Edit
from agentscope.credential import DashScopeCredential
from agentscope.model import DashScopeChatModel

import os, asyncio


async def main() -> None:
    agent = Agent(
        name="Friday",
        system_prompt="You're a helpful assistant named Friday.",
        model=DashScopeChatModel(
            credential=DashScopeCredential(
                api_key=os.environ["DASHSCOPE_API_KEY"]
            ),
            model="qwen3.6-plus",
        ),
        toolkit=Toolkit(
            tools=[Bash(), Grep(), Glob(), Read(), Write(), Edit()]
        ),
    )

    # 终端里对话:流式输出、工具调用确认、Ctrl+C 中断都由框架处理
    await launch_console(agent)

asyncio.run(main())

安装只有一行(要求 Python 3.11+):

uv pip install agentscope

这段代码里有三个设计信号值得注意:

  1. 凭证与模型分离(DashScopeCredential + DashScopeChatModel)——换厂商时改的是模型类,凭证对象可以复用;
  2. 工具是对象而不是装饰器(Bash()、Read()、Write())——内置编码工具开箱即用,这跟"给 Agent 一台电脑"的路线一致;
  3. launch_console 把交互该有的东西都做好了:流式输出、工具调用确认、Ctrl+C 中断——注意最后一条,中断与恢复是一等公民,不是补丁。

ReAct 循环与事件系统:为什么它"看得见"

ReAct 是所有 Agent 框架都会实现的东西,差别在工程细节。AgentScope 2.0 的循环突出了四件事:

  • 结构化输出:模型的推理与行动走结构化通道,而不是从自由文本里正则提取工具调用;
  • 实时中断与恢复:可以在执行中途打断并继续——这正是 Ctrl+C 能干净工作的原因,也是做长任务产品的前提;
  • 批量工具执行:同一轮里模型给出的多个工具调用可以顺序或并发执行,由框架统一调度;
  • 统一事件总线:推理、工具调用、多模态内容都通过事件流出去。

最后一点是"see, understand and trust"的技术基础。大多数 Agent 框架的问题不是不能跑,而是跑起来之后你只能看到结果:中间它想了什么、调了什么、为什么这么调,全靠日志拼。事件总线把这条链路变成了结构化的流,前端可以直接渲染成"推理中 → 调用工具 X → 得到结果 → 继续推理"的时间线。

而且这个事件流是多模态的——文本、图像、音频都能走同一条总线,这为后面的语音/实时 Agent 留了接口。

上下文、权限与中间件

上下文这块,它把三件事都做成内置:自动压缩(接近上限时摘要历史)、工具结果 offload(大结果挪出上下文,需要时再取回)、上下文注入(系统提示词、RAG 结果、长期记忆)。这三件事在很多项目里是各自手写的补丁,这里是框架能力。

权限与 HITL 是细粒度的,覆盖工具与资源两个维度,支持确认流程和 bypass 模式(端到端跑完、不为工具调用停下来)。官方 demo 里专门有一个 bypass 模式的演示——它想说明"安全与流畅是配置问题,不是二选一"。

中间件是我认为这套设计里最有杠杆的部分:钩子横跨 reply、reasoning、acting、model calling、权限检查、上下文压缩、系统提示词。

这意味着你可以做到一些很实际的事,比如:在每次模型调用前动态选模型、在权限检查阶段插入自己的策略、在上下文压缩时替换成自己的摘要策略、在 reply 阶段统一注入企业规范——全部不用改框架、不用 fork。还记得 9 月更新里的 ModelRouterMiddleware 吗?它就是"用中间件做模型路由"的官方实现,正好验证了这套钩子的可扩展性。

记忆与沙箱:八种执行后端

长期记忆走的是 "agentic memory",后端可切换:ReMe 或 Mem0。把记忆做成可替换后端而不是内建数据库,是个务实的选择——记忆方案还在快速演化,锁死任何一个都会后悔。

沙箱这块列得非常全,八种执行后端覆盖了从笔记本到集群:

local  ·  Docker  ·  Apple Container  ·  Bubblewrap
E2B  ·  OpenSandbox  ·  Daytona  ·  K8s

这个清单的读法是"按隔离强度递增":local 最快但没隔离;Docker 是通用选择;Apple Container 和 Bubblewrap 分别是 macOS 与 Linux 上的轻量系统级隔离;E2B、OpenSandbox、Daytona 是托管沙箱服务;K8s 面向集群化部署。

它把"沙箱"当作一个可插拔的接口,而不是绑定某个实现——对要过安全审计的团队,这一点比"支持 Docker"更有价值:你可以先在本地开发,再平滑切到 E2B 或 K8s,Agent 代码不用改。

从 SDK 到产品:Agent Service

很多框架止步于"能跑一个 Agent",AgentScope 额外给了一个开箱即用的 Agent Service:FastAPI 后端 + 预置 Web UI,把 Agent 变成多租户、多会话的应用。

能力 内容
Serving 多租户、多会话隔离、FastAPI 后端、预置 Web UI
Agent Team leader–worker 编排、内置团队工具、任务规划
Channels 接入 IM 平台:飞书(Lark)、Discord、自定义渠道、消息路由
RAG Service Blob 存储、索引 worker、多租户检索
MCP & Skill Hub 浏览 Hub(GitHub MCP Registry、ClawHub)、装进自己的库、加到工作区
Resource Sharing 组级/组织级共享模型、MCP server、skills 与工作区
Persistence Agent 状态与会话的 SQL / NoSQL 持久化
Scheduling 定时任务、Agent 唤醒、后台任务卸载

启动方式就是两段命令:

git clone -b main https://github.com/agentscope-ai/agentscope.git
cd agentscope/examples/agent_service

# 启动 agent service 后端
python main.py
cd agentscope/examples/web_ui

# 启动 Web UI
pnpm install
pnpm dev

官方演示了四个能力:Agent team(leader 生成 worker 并通过内置团队工具协调)、任务规划(把复杂工作拆成可跟踪的计划并随时更新)、bypass 模式下的权限控制、以及后台任务卸载——一个长跑工具挪到后台,结果回来时唤醒 Agent,对话继续。

最后这条我觉得最能说明它的产品化程度:"后台任务的结果唤醒 Agent"听起来简单,但它要求状态持久化、事件重放、会话续接全部正确,是 Demo 和产品的分水岭。

2026 年 9 月的更新,以及选型边界

把最近一个月的更新排在一起看,方向很清楚:

  • SOP(标准作业程序,实验性):把多步任务当成标准流程来跑,框架和 agent service 都支持;
  • TeamPipeline:leader agent 把任务分派给成员 agent;
  • ModelRouterMiddleware:为每次回复选择合适的模型(模型路由内建化);
  • JevClassifierModel:通过 TypeSafe SDK 接入 Jev 分类模型——也就是前几天日报里那个"决策模型"类别;
  • Realtime voice agent(实验性):支持 DashScope、OpenAI、Gemini、xAI 的 realtime API,做语音到语音;
  • A2A 协议支持:用 A2AAgent 与任何远程 A2A agent 对话;
  • Pipeline:用固定逻辑在一条事件流后面跑多个 Agent。

这份清单有两个信号:一是它在补齐"确定性"那一半(SOP、Pipeline、TeamPipeline 都是有固定逻辑的编排),说明"不写死编排"并不意味着拒绝编排,而是把编排变成可选的一层;二是它对协议与模态的跟进很快(MCP、A2A、realtime 语音),这三样恰好是 2026 年 Agent 生态的三条主线。

什么时候该选它?

  • 你要生产级的多租户 Agent 服务,而不只是一个能跑的循环——Agent Service 直接给了你后端、Web UI、渠道、RAG、权限和调度;
  • 你在国内技术栈里(飞书渠道、DashScope/Qwen 默认、Java 版可复用 Java 中台)——顺便说一句,今天就有一篇工程复盘讲用 Java 版 Harness + RuoYi 中台做企业 Agent 平台(链接);
  • 你需要沙箱可插拔(从本地开发到 K8s 部署不用重写)或者记忆后端可替换;
  • 你重视可观测与可干预:事件总线 + 中间件 + 细粒度权限,这三样决定了你能不能在出问题时说清楚发生了什么。

什么时候不必选它?

  • 你的工作流非常固定(就是三步顺序调用)——直接写 Python 更省事,上框架是负担;
  • 你团队已经在 LangGraph 这类图编排范式上投入很多,且不打算换范式——两套心智模型混用成本很高;
  • 你需要的是极简:只想包一个工具循环,那 OpenAI Agents SDK 或裸 API 更轻;
  • 你要求单一语言的极薄依赖——AgentScope 的能力面很宽,功能多本身就意味着需要更多时间理解它的抽象。

参考链接

你的 Agent 项目现在是"写死的流程"还是"给模型自由的基元"?评论区聊聊你的取舍,觉得这份拆解有用就点个赞。


作者: itech001 来源: 公众号:AI人工智能时代(the-ai-era) 网站: https://www.theaiera.top/ 关注每日最新AI新闻和技术博客,主页有更多的文章的AI 技术参考:https://www.theaiera.top

本文首发于 AI人工智能时代,转载请注明出处。

分享给朋友