<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>沙箱 on 方糖猫Blog</title>
    <link>https://ftmao.com/blog/tags/%E6%B2%99%E7%AE%B1/</link>
    <description>AI 视频、AI Agent 与工程实践笔记</description>
    <generator>Hugo</generator>
    <language>zh-CN</language>
    <lastBuildDate>Wed, 03 Jun 2026 20:00:00 +0800</lastBuildDate><atom:link href="https://ftmao.com/blog/tags/%E6%B2%99%E7%AE%B1/index.xml" rel="self" type="application/rss+xml" /><item>
      <title>AgentScope 2.0 深度解析：企业级 Agent 工程的底座该怎么选</title>
      <link>https://ftmao.com/blog/posts/agentscope2/</link>
      <pubDate>Wed, 03 Jun 2026 20:00:00 +0800</pubDate>
      <guid>https://ftmao.com/blog/posts/agentscope2/</guid>
      <description>&lt;h1 id=&#34;agentscope-20-深度解析企业级-agent-工程的底座该怎么选&#34;&gt;AgentScope 2.0 深度解析：企业级 Agent 工程的底座该怎么选&lt;/h1&gt;
&lt;blockquote&gt;
&lt;p&gt;最近深入研究了阿里通义实验室开源的 AgentScope 2.0，它是一个面向企业级多智能体场景的工程框架。这篇文章结合我的实际经验，聊聊 AgentScope 2.0 的核心设计，以及它对我们做 Agent 产品化有什么启发。&lt;/p&gt;
&lt;/blockquote&gt;
&lt;hr&gt;
&lt;h2 id=&#34;一从-demo-到生产agent-缺什么&#34;&gt;一、从 Demo 到生产，Agent 缺什么？&lt;/h2&gt;
&lt;p&gt;过去两年，我用 LLM 做过不少 Agent 原型：自动剪辑、视频生成、代码助手。但要从「能跑」变成「能上线」，需要解决的问题远不止 Prompt 调优：&lt;/p&gt;
&lt;table&gt;
	&lt;thead&gt;
			&lt;tr&gt;
					&lt;th&gt;问题&lt;/th&gt;
					&lt;th&gt;说明&lt;/th&gt;
			&lt;/tr&gt;
	&lt;/thead&gt;
	&lt;tbody&gt;
			&lt;tr&gt;
					&lt;td&gt;&lt;strong&gt;代码执行安全&lt;/strong&gt;&lt;/td&gt;
					&lt;td&gt;Agent 生成的代码直接运行，可能删库、耗光资源&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;&lt;strong&gt;高并发隔离&lt;/strong&gt;&lt;/td&gt;
					&lt;td&gt;多个用户同时调用 Agent，如何互不干扰&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;&lt;strong&gt;状态持久化&lt;/strong&gt;&lt;/td&gt;
					&lt;td&gt;Agent 对话状态不能存在内存里，否则重启就丢&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;&lt;strong&gt;工具管理&lt;/strong&gt;&lt;/td&gt;
					&lt;td&gt;Tool 多了之后，Prompt 装不下，也影响模型判断&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;&lt;strong&gt;多 Agent 协作&lt;/strong&gt;&lt;/td&gt;
					&lt;td&gt;复杂任务需要多个 Agent 配合，怎么编排&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;&lt;strong&gt;可观测性&lt;/strong&gt;&lt;/td&gt;
					&lt;td&gt;Agent 为什么做了这个决定？出了问题怎么追溯&lt;/td&gt;
			&lt;/tr&gt;
	&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;AgentScope 2.0 就是围绕这些工程化痛点设计的。&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&#34;二底层架构沙箱与高并发&#34;&gt;二、底层架构：沙箱与高并发&lt;/h2&gt;
&lt;h3 id=&#34;21-docker-沙箱不是打包业务代码&#34;&gt;2.1 Docker 沙箱不是打包业务代码&lt;/h3&gt;
&lt;p&gt;很多开发者有个误解：用 Docker 跑 Agent，就要把业务代码打包进镜像。&lt;/p&gt;
&lt;p&gt;AgentScope 2.0 的设计完全不同：&lt;strong&gt;业务代码运行在宿主机，Docker 只作为执行沙箱&lt;/strong&gt;。&lt;/p&gt;
&lt;div class=&#34;code-block&#34;&gt;
    &lt;button class=&#34;code-copy&#34; type=&#34;button&#34; hidden aria-label=&#34;Copy code to clipboard&#34;&gt;
      &lt;span class=&#34;code-copy-label&#34; aria-hidden=&#34;true&#34;&gt;Copy&lt;/span&gt;
    &lt;/button&gt;
    &lt;pre tabindex=&#34;0&#34;&gt;&lt;code class=&#34;language-mermaid&#34; data-lang=&#34;mermaid&#34;&gt;flowchart TD
    A[&amp;#34;宿主机进程（Agent 推理、Prompt 组装）&amp;#34;]
    B[&amp;#34;Docker 容器（只运行命令，不存业务代码）&amp;#34;]
    C[&amp;#34;容器内执行 rm -rf / 也伤不到宿主机&amp;#34;]
    A -- &amp;#34;通过 Docker API 下发指令&amp;#34; --&amp;gt; B
    B -- &amp;#34;内核级隔离&amp;#34; --&amp;gt; C&lt;/code&gt;&lt;/pre&gt;
  &lt;/div&gt;&lt;p&gt;这种设计的几个好处：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;业务迭代快&lt;/strong&gt;：改代码不用重新打镜像&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;安全性高&lt;/strong&gt;：危险操作被锁在容器里&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;资源可控&lt;/strong&gt;：每个容器的 CPU/内存/网络都可以限制&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;22-mcp-网关解决跨容器通信&#34;&gt;2.2 MCP 网关解决跨容器通信&lt;/h3&gt;
&lt;p&gt;容器隔离后，容器内的 Agent 访问不到宿主机的 MCP 工具。AgentScope 2.0 的做法是内置 &lt;strong&gt;MCP 网关&lt;/strong&gt;，通过 HTTPS 在容器内外转发请求。&lt;/p&gt;
&lt;div class=&#34;code-block&#34;&gt;
    &lt;button class=&#34;code-copy&#34; type=&#34;button&#34; hidden aria-label=&#34;Copy code to clipboard&#34;&gt;
      &lt;span class=&#34;code-copy-label&#34; aria-hidden=&#34;true&#34;&gt;Copy&lt;/span&gt;
    &lt;/button&gt;
    &lt;pre tabindex=&#34;0&#34;&gt;&lt;code class=&#34;language-mermaid&#34; data-lang=&#34;mermaid&#34;&gt;flowchart LR
    A[&amp;#34;容器内 Agent&amp;#34;] -- &amp;#34;HTTPS&amp;#34; --&amp;gt; B[&amp;#34;MCP 网关&amp;#34;]
    B -- &amp;#34;本地调用&amp;#34; --&amp;gt; C[&amp;#34;宿主机 MCP Server&amp;#34;]&lt;/code&gt;&lt;/pre&gt;
  &lt;/div&gt;&lt;p&gt;这解决了一个很实际的问题：沙箱安全和工具可用性之间的冲突。&lt;/p&gt;
&lt;h3 id=&#34;23-三种隔离粒度&#34;&gt;2.3 三种隔离粒度&lt;/h3&gt;
&lt;p&gt;AgentScope 2.0 支持不同级别的隔离：&lt;/p&gt;
&lt;table&gt;
	&lt;thead&gt;
			&lt;tr&gt;
					&lt;th&gt;模式&lt;/th&gt;
					&lt;th&gt;粒度&lt;/th&gt;
					&lt;th&gt;适用场景&lt;/th&gt;
			&lt;/tr&gt;
	&lt;/thead&gt;
	&lt;tbody&gt;
			&lt;tr&gt;
					&lt;td&gt;&lt;code&gt;GLOBAL&lt;/code&gt;&lt;/td&gt;
					&lt;td&gt;全局共享&lt;/td&gt;
					&lt;td&gt;内部工具、只读查询&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;&lt;code&gt;USER&lt;/code&gt;&lt;/td&gt;
					&lt;td&gt;用户级隔离&lt;/td&gt;
					&lt;td&gt;推荐默认，兼顾安全和性能&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;&lt;code&gt;SESSION&lt;/code&gt;&lt;/td&gt;
					&lt;td&gt;会话级隔离&lt;/td&gt;
					&lt;td&gt;高敏感操作、金融/政务场景&lt;/td&gt;
			&lt;/tr&gt;
	&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;不是越隔离越好。全用 SESSION 的话，资源消耗和启动延迟都会爆掉。&lt;/p&gt;
&lt;h3 id=&#34;24-warm-pool-预热池&#34;&gt;2.4 Warm Pool 预热池&lt;/h3&gt;
&lt;p&gt;高并发下，「1 请求 1 容器」的冷启动根本扛不住。AgentScope 2.0 用 Warm Pool 提前准备一批待命容器，请求来了直接分配。&lt;/p&gt;
&lt;div class=&#34;code-block&#34;&gt;
    &lt;button class=&#34;code-copy&#34; type=&#34;button&#34; hidden aria-label=&#34;Copy code to clipboard&#34;&gt;
      &lt;span class=&#34;code-copy-label&#34; aria-hidden=&#34;true&#34;&gt;Copy&lt;/span&gt;
    &lt;/button&gt;
    &lt;pre tabindex=&#34;0&#34;&gt;&lt;code class=&#34;language-mermaid&#34; data-lang=&#34;mermaid&#34;&gt;flowchart LR
    A[&amp;#34;请求&amp;#34;] --&amp;gt; B[&amp;#34;Warm Pool（预热的容器）&amp;#34;]
    B --&amp;gt; C[&amp;#34;秒级分配&amp;#34;]&lt;/code&gt;&lt;/pre&gt;
  &lt;/div&gt;&lt;p&gt;这个思路和我们做视频渲染 Worker 预热池很类似：把启动成本前置，用空间换时间。&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&#34;三核心设计模式&#34;&gt;三、核心设计模式&lt;/h2&gt;
&lt;h3 id=&#34;31-react-与-pe-模式&#34;&gt;3.1 ReAct 与 PE 模式&lt;/h3&gt;
&lt;p&gt;AgentScope 2.0 原生支持两种模式：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;ReAct&lt;/strong&gt;：边思考边行动，适合需要动态决策的任务&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;PE（Plan &amp;amp; Execute）&lt;/strong&gt;：先计划再执行，适合步骤明确的长任务&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;我在方糖猫里用的是 ReAct，因为视频生成过程中经常有「素材不足→换方案→继续生成」这种动态分支。PE 更适合审批流、报告生成这类流程相对固定的场景。&lt;/p&gt;
&lt;h3 id=&#34;32-结构化输出&#34;&gt;3.2 结构化输出&lt;/h3&gt;
&lt;p&gt;AgentScope 2.0 通过 &lt;code&gt;structured_model&lt;/code&gt; 机制，把 LLM 输出映射成 Java/Python 对象。&lt;/p&gt;
&lt;p&gt;这和我们在第六篇文章里讲的 Schema + Pydantic 校验是一个思路，只是框架帮你封装好了。对于企业级应用来说，结构化输出不是可选项，是必选项。&lt;/p&gt;
&lt;h3 id=&#34;33-工具组动态激活&#34;&gt;3.3 工具组动态激活&lt;/h3&gt;
&lt;p&gt;大模型上下文窗口有限，Tool 多了之后不能全塞进 Prompt。AgentScope 2.0 的做法是：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;把工具分组（Tool Group）&lt;/li&gt;
&lt;li&gt;模型先决定激活哪个组&lt;/li&gt;
&lt;li&gt;再获取组内具体工具&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;这种「渐进式披露」让模型在每一步只需要关注少量工具，降低决策噪音。&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&#34;四分层记忆系统&#34;&gt;四、分层记忆系统&lt;/h2&gt;
&lt;p&gt;AgentScope 2.0 把记忆分成短期和长期两层：&lt;/p&gt;
&lt;h3 id=&#34;41-短期记忆&#34;&gt;4.1 短期记忆&lt;/h3&gt;
&lt;p&gt;默认是内存级缓存，适合单轮或多轮对话内的上下文。可以自定义扩展，比如接入 Redis。&lt;/p&gt;
&lt;h3 id=&#34;42-长期记忆&#34;&gt;4.2 长期记忆&lt;/h3&gt;
&lt;p&gt;支持两种外部记忆框架：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Graphiti&lt;/strong&gt;：时序知识图谱，适合需要时间感知的场景&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Mem0&lt;/strong&gt;：混合存储，同时处理语义关联和结构化关系&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;长期记忆对于 Agent 的个性化和持续学习很重要。比如一个客服 Agent，如果能记住用户上个月的问题，体验会好很多。&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&#34;五多智能体协作编排&#34;&gt;五、多智能体协作编排&lt;/h2&gt;
&lt;p&gt;AgentScope 2.0 提供了几种协作模式：&lt;/p&gt;
&lt;table&gt;
	&lt;thead&gt;
			&lt;tr&gt;
					&lt;th&gt;模式&lt;/th&gt;
					&lt;th&gt;说明&lt;/th&gt;
					&lt;th&gt;适用场景&lt;/th&gt;
			&lt;/tr&gt;
	&lt;/thead&gt;
	&lt;tbody&gt;
			&lt;tr&gt;
					&lt;td&gt;用户对话循环&lt;/td&gt;
					&lt;td&gt;ReActAgent + UserAgent&lt;/td&gt;
					&lt;td&gt;单助手交互&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;轮询 Round-Robin&lt;/td&gt;
					&lt;td&gt;按顺序分配任务&lt;/td&gt;
					&lt;td&gt;流水线处理&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;路由 Routing&lt;/td&gt;
					&lt;td&gt;路由 Agent 分发给专家 Agent&lt;/td&gt;
					&lt;td&gt;复杂任务分发&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;Handoff&lt;/td&gt;
					&lt;td&gt;确定性的任务交接&lt;/td&gt;
					&lt;td&gt;审批流、工单系统&lt;/td&gt;
			&lt;/tr&gt;
	&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;我在做口播自动剪辑时，其实也需要多 Agent 协作：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;一个 Agent 负责分析文案结构&lt;/li&gt;
&lt;li&gt;一个 Agent 负责规划视觉元素&lt;/li&gt;
&lt;li&gt;一个 Agent 负责检查输出合规性&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;当时我们是硬编码在代码里的，如果用 AgentScope 2.0 的 Handoff 或 Routing 模式，代码会更清晰。&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&#34;六状态持久化不能存在内存里&#34;&gt;六、状态持久化：不能存在内存里&lt;/h2&gt;
&lt;p&gt;AgentScope 2.0 通过 &lt;code&gt;agent.state_dict()&lt;/code&gt; 保存完整状态，支持多种后端：&lt;/p&gt;
&lt;div class=&#34;code-block&#34;&gt;
    &lt;button class=&#34;code-copy&#34; type=&#34;button&#34; hidden aria-label=&#34;Copy code to clipboard&#34;&gt;
      &lt;span class=&#34;code-copy-label&#34; aria-hidden=&#34;true&#34;&gt;Copy&lt;/span&gt;
    &lt;/button&gt;
    &lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-python&#34; data-lang=&#34;python&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;state &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; agent&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;state_dict()
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;store&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;save(session_id, state)
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;# 重启后恢复&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;state &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; store&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;load(session_id)
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;agent&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;load_state_dict(state)&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
  &lt;/div&gt;&lt;p&gt;支持 Redis、MySQL、JSON 文件等后端。这一点对于企业级应用非常关键：服务重启后，用户的对话上下文不能丢。&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&#34;七对我们自研-agent-的启发&#34;&gt;七、对我们自研 Agent 的启发&lt;/h2&gt;
&lt;p&gt;研究完 AgentScope 2.0，我最大的感受是：&lt;strong&gt;优秀的 Agent 框架不是在教你写 Prompt，而是在解决工程化问题&lt;/strong&gt;。&lt;/p&gt;
&lt;p&gt;对比我们自研的 Agent 架构，有几点值得借鉴：&lt;/p&gt;
&lt;h3 id=&#34;71-沙箱执行应该提前考虑&#34;&gt;7.1 沙箱执行应该提前考虑&lt;/h3&gt;
&lt;p&gt;我们目前 Agent 生成的代码是在 Python Worker 里直接执行的，虽然有限制，但不如 Docker 隔离彻底。未来如果要支持更开放的 Agent 能力，沙箱是必须的。&lt;/p&gt;
&lt;h3 id=&#34;72-工具管理需要分组&#34;&gt;7.2 工具管理需要分组&lt;/h3&gt;
&lt;p&gt;我们现在是把所有 Tool 塞进 Prompt，Tool 多了之后会影响模型判断。可以借鉴 Tool Group 的思路。&lt;/p&gt;
&lt;h3 id=&#34;73-状态持久化要补全&#34;&gt;7.3 状态持久化要补全&lt;/h3&gt;
&lt;p&gt;我们目前的任务状态存在数据库，但 Agent 的完整对话上下文没有持久化。服务重启后，长任务会丢失上下文。&lt;/p&gt;
&lt;h3 id=&#34;74-多-agent-协作模式可以显式化&#34;&gt;7.4 多 Agent 协作模式可以显式化&lt;/h3&gt;
&lt;p&gt;与其在代码里写死协作逻辑，不如抽象成 Routing / Handoff 模式，更容易扩展和维护。&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&#34;八选型建议什么时候用-agentscope-20&#34;&gt;八、选型建议：什么时候用 AgentScope 2.0&lt;/h2&gt;
&lt;h3 id=&#34;强烈推荐&#34;&gt;强烈推荐&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;企业级多租户服务&lt;/li&gt;
&lt;li&gt;需要 K8s 分布式部署&lt;/li&gt;
&lt;li&gt;对安全隔离有严格要求（金融、政务、医疗）&lt;/li&gt;
&lt;li&gt;已有 Spring Boot 微服务架构的团队&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;谨慎评估&#34;&gt;谨慎评估&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;只是做单轮 LLM 调用&lt;/li&gt;
&lt;li&gt;追求极简代码量&lt;/li&gt;
&lt;li&gt;团队没有 Java/Python 工程化背景&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;AgentScope 2.0 是一个「重框架」，对于简单场景可能是过度设计。但对于要上线、要服务真实用户的企业级 Agent 应用，它的价值很明显。&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&#34;九总结&#34;&gt;九、总结&lt;/h2&gt;
&lt;p&gt;AgentScope 2.0 给我的最大启发是：&lt;strong&gt;Agent 产品化的竞争，正在从模型能力转向工程底座&lt;/strong&gt;。&lt;/p&gt;
&lt;p&gt;谁能更好地解决安全、并发、状态、工具管理、多 Agent 协作这些问题，谁就能让 Agent 真正跑在生产环境里。&lt;/p&gt;
&lt;p&gt;对于像我这样从 0 自研 Agent 系统的团队，AgentScope 2.0 不一定直接替换现有架构，但它提供了一套值得参考的工程化标准。&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;&lt;em&gt;你在做 Agent 工程化时，遇到过哪些头疼的问题？欢迎在评论区交流。&lt;/em&gt;&lt;/p&gt;
</description>
    </item>
    
  </channel>
</rss>
