auto-save 2026-04-01 09:03 (+1, ~1)

This commit is contained in:
2026-04-01 09:04:18 +08:00
parent 7a4ad0efc9
commit 60bab2963b
2 changed files with 759 additions and 25 deletions

View File

@@ -3,44 +3,777 @@
<head> <head>
<meta charset="UTF-8"> <meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0"> <meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>AgentScope 多智能体框架研究</title> <title>AgentScope 多智能体框架深度研究</title>
<style> <style>
:root {
--bg: #0a0a0a;
--card: #111;
--border: #1e1e1e;
--text: #d4d4d4;
--text-dim: #888;
--accent: #60a5fa;
--accent2: #a78bfa;
--green: #4ade80;
--yellow: #facc15;
--red: #f87171;
--orange: #fb923c;
}
* { margin: 0; padding: 0; box-sizing: border-box; } * { margin: 0; padding: 0; box-sizing: border-box; }
body { body {
font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Noto Sans SC", sans-serif;
background: #0a0a0a; color: #e0e0e0; background: var(--bg); color: var(--text);
min-height: 100vh; padding: 2rem; min-height: 100vh; line-height: 1.7;
} }
.container { max-width: 1200px; margin: 0 auto; }
h1 { /* Hero */
font-size: 2.5rem; font-weight: 700; .hero {
background: linear-gradient(135deg, #60a5fa, #a78bfa); text-align: center; padding: 4rem 2rem 3rem;
background: linear-gradient(180deg, #0f172a 0%, var(--bg) 100%);
border-bottom: 1px solid var(--border);
}
.hero-logo {
width: 80px; height: 80px; margin-bottom: 1.5rem;
background: linear-gradient(135deg, var(--accent), var(--accent2));
border-radius: 20px; display: inline-flex; align-items: center; justify-content: center;
font-size: 2.5rem; font-weight: 800; color: #fff;
}
.hero h1 {
font-size: 2.8rem; font-weight: 800;
background: linear-gradient(135deg, var(--accent), var(--accent2));
-webkit-background-clip: text; -webkit-text-fill-color: transparent; -webkit-background-clip: text; -webkit-text-fill-color: transparent;
margin-bottom: 0.5rem; background-clip: text; margin-bottom: 0.8rem;
} }
.subtitle { color: #888; font-size: 1.1rem; margin-bottom: 2rem; } .hero .subtitle { color: var(--text-dim); font-size: 1.15rem; max-width: 700px; margin: 0 auto 1.5rem; }
.hero-badges { display: flex; gap: 0.8rem; justify-content: center; flex-wrap: wrap; }
.badge {
display: inline-flex; align-items: center; gap: 0.4rem;
padding: 0.35rem 0.9rem; border-radius: 20px; font-size: 0.85rem; font-weight: 500;
background: rgba(96,165,250,0.12); color: var(--accent); border: 1px solid rgba(96,165,250,0.2);
}
.badge.green { background: rgba(74,222,128,0.12); color: var(--green); border-color: rgba(74,222,128,0.2); }
.badge.yellow { background: rgba(250,204,21,0.12); color: var(--yellow); border-color: rgba(250,204,21,0.2); }
/* Container */
.container { max-width: 1100px; margin: 0 auto; padding: 2rem 1.5rem; }
/* Section */
.section { margin-bottom: 3rem; }
.section-title {
font-size: 1.6rem; font-weight: 700; margin-bottom: 1.2rem;
padding-bottom: 0.5rem; border-bottom: 2px solid var(--border);
color: #fff;
}
.section-title span { color: var(--accent); margin-right: 0.5rem; }
/* Card */
.card { .card {
background: #141414; border: 1px solid #222; border-radius: 12px; background: var(--card); border: 1px solid var(--border); border-radius: 12px;
padding: 2rem; margin-bottom: 1.5rem; padding: 1.5rem; margin-bottom: 1rem; transition: border-color 0.2s;
}
.card:hover { border-color: rgba(96,165,250,0.3); }
.card h3 { color: var(--accent); font-size: 1.1rem; margin-bottom: 0.6rem; }
.card p, .card li { color: var(--text-dim); line-height: 1.8; }
.card ul { padding-left: 1.2rem; }
.card li { margin-bottom: 0.3rem; }
/* Grid */
.grid-2 { display: grid; grid-template-columns: 1fr 1fr; gap: 1rem; }
.grid-3 { display: grid; grid-template-columns: 1fr 1fr 1fr; gap: 1rem; }
.grid-4 { display: grid; grid-template-columns: repeat(4, 1fr); gap: 1rem; }
/* Table */
.table-wrap { overflow-x: auto; }
table { width: 100%; border-collapse: collapse; font-size: 0.9rem; }
th { background: #1a1a2e; color: var(--accent); text-align: left; padding: 0.8rem 1rem; font-weight: 600; }
td { padding: 0.7rem 1rem; border-bottom: 1px solid var(--border); color: var(--text-dim); }
tr:hover td { background: rgba(96,165,250,0.04); }
/* Code */
.code-block {
background: #0d1117; border: 1px solid var(--border); border-radius: 8px;
padding: 1.2rem; margin: 1rem 0; overflow-x: auto;
font-family: "SF Mono", "Fira Code", monospace; font-size: 0.85rem;
color: #c9d1d9; line-height: 1.6;
}
.code-block .comment { color: #6a737d; }
.code-block .keyword { color: #ff7b72; }
.code-block .string { color: #a5d6ff; }
.code-block .func { color: #d2a8ff; }
/* Tag */
.tag {
display: inline-block; padding: 0.15rem 0.6rem; border-radius: 4px;
font-size: 0.78rem; font-weight: 500; margin-right: 0.4rem; margin-bottom: 0.3rem;
}
.tag-blue { background: rgba(96,165,250,0.15); color: var(--accent); }
.tag-green { background: rgba(74,222,128,0.15); color: var(--green); }
.tag-yellow { background: rgba(250,204,21,0.15); color: var(--yellow); }
.tag-red { background: rgba(248,113,113,0.15); color: var(--red); }
.tag-orange { background: rgba(251,146,60,0.15); color: var(--orange); }
.tag-purple { background: rgba(167,139,250,0.15); color: var(--accent2); }
/* Timeline */
.timeline { position: relative; padding-left: 2rem; }
.timeline::before {
content: ''; position: absolute; left: 0.5rem; top: 0; bottom: 0;
width: 2px; background: var(--border);
}
.timeline-item { position: relative; margin-bottom: 1.2rem; }
.timeline-item::before {
content: ''; position: absolute; left: -1.65rem; top: 0.5rem;
width: 10px; height: 10px; border-radius: 50%;
background: var(--accent); border: 2px solid var(--bg);
}
.timeline-date { font-size: 0.8rem; color: var(--accent); font-weight: 600; margin-bottom: 0.2rem; }
.timeline-text { color: var(--text-dim); font-size: 0.9rem; }
/* Verdict */
.verdict-box {
background: linear-gradient(135deg, rgba(248,113,113,0.08), rgba(250,204,21,0.08));
border: 1px solid rgba(250,204,21,0.25); border-radius: 12px;
padding: 2rem; margin: 1.5rem 0;
}
.verdict-box h3 { color: var(--yellow); font-size: 1.3rem; margin-bottom: 1rem; }
.verdict-box p { color: var(--text-dim); line-height: 1.8; }
.pro-con { display: grid; grid-template-columns: 1fr 1fr; gap: 1rem; margin-top: 1rem; }
.pro { border-left: 3px solid var(--green); padding-left: 1rem; }
.con { border-left: 3px solid var(--red); padding-left: 1rem; }
.pro h4 { color: var(--green); margin-bottom: 0.5rem; }
.con h4 { color: var(--red); margin-bottom: 0.5rem; }
/* Architecture diagram */
.arch-diagram {
background: #0d1117; border: 1px solid var(--border); border-radius: 12px;
padding: 2rem; margin: 1rem 0; text-align: center;
}
.arch-layer {
background: rgba(96,165,250,0.08); border: 1px solid rgba(96,165,250,0.2);
border-radius: 8px; padding: 0.8rem 1.5rem; margin: 0.5rem auto;
max-width: 600px; display: flex; align-items: center; justify-content: center; gap: 1rem;
}
.arch-layer.top { background: rgba(167,139,250,0.08); border-color: rgba(167,139,250,0.2); }
.arch-layer.mid { background: rgba(74,222,128,0.08); border-color: rgba(74,222,128,0.2); }
.arch-layer.bot { background: rgba(250,204,21,0.08); border-color: rgba(250,204,21,0.2); }
.arch-arrow { color: var(--text-dim); font-size: 1.2rem; margin: 0.3rem 0; }
.arch-label { font-size: 0.85rem; font-weight: 600; }
.arch-layer.top .arch-label { color: var(--accent2); }
.arch-layer .arch-label { color: var(--accent); }
.arch-layer.mid .arch-label { color: var(--green); }
.arch-layer.bot .arch-label { color: var(--yellow); }
/* Footer */
.footer {
text-align: center; padding: 2rem; color: var(--text-dim);
font-size: 0.85rem; border-top: 1px solid var(--border); margin-top: 2rem;
}
.footer a { color: var(--accent); text-decoration: none; }
/* Responsive */
@media (max-width: 768px) {
.hero h1 { font-size: 2rem; }
.grid-2, .grid-3, .grid-4 { grid-template-columns: 1fr; }
.pro-con { grid-template-columns: 1fr; }
} }
.card h2 { color: #60a5fa; margin-bottom: 1rem; font-size: 1.3rem; }
.card p { line-height: 1.8; color: #aaa; }
</style> </style>
</head> </head>
<body> <body>
<!-- ===== Hero ===== -->
<div class="hero">
<div class="hero-logo">AS</div>
<h1>AgentScope</h1>
<p class="subtitle">
阿里系开源的生产级多智能体框架 &mdash; "Build and run agents you can see, understand and trust"
</p>
<div class="hero-badges">
<span class="badge">GitHub 21,400+ Stars</span>
<span class="badge green">v1.0.18 (2026-03-26)</span>
<span class="badge yellow">Python 3.10+</span>
<span class="badge">Apache-2.0</span>
</div>
</div>
<div class="container"> <div class="container">
<h1>AgentScope 多智能体框架研究</h1>
<p class="subtitle">AgentScope 开源多Agent框架深度分析与介绍</p> <!-- ===== 1. 一句话定位 ===== -->
<div class="section">
<h2 class="section-title"><span>#1</span> 一句话定位</h2>
<div class="card">
<p style="font-size: 1.1rem; color: var(--text);">
AgentScope 是一个<strong style="color: var(--accent);">多 Agent 编排框架</strong>
它不是一个模型,不是一个 App而是一个帮你把多个 AI Agent 组装在一起、让它们互相通信协作的<strong>开发框架</strong>
<br><br>
类比:如果单个 LLM API 调用是"一个人干活"AgentScope 就是"组建一支团队让多个人分工合作"。
</p>
</div>
</div>
<!-- ===== 2. 核心架构 ===== -->
<div class="section">
<h2 class="section-title"><span>#2</span> 核心架构</h2>
<div class="arch-diagram">
<div class="arch-layer top">
<span class="arch-label">Application Layer</span>
<span class="tag tag-purple">ReAct Agent</span>
<span class="tag tag-purple">User Agent</span>
<span class="tag tag-purple">Custom Agent</span>
</div>
<div class="arch-arrow">&darr;</div>
<div class="arch-layer">
<span class="arch-label">Orchestration</span>
<span class="tag tag-blue">MsgHub</span>
<span class="tag tag-blue">Pipeline</span>
<span class="tag tag-blue">A2A Protocol</span>
</div>
<div class="arch-arrow">&darr;</div>
<div class="arch-layer mid">
<span class="arch-label">Core Modules</span>
<span class="tag tag-green">Memory</span>
<span class="tag tag-green">Tool / MCP</span>
<span class="tag tag-green">Formatter</span>
</div>
<div class="arch-arrow">&darr;</div>
<div class="arch-layer bot">
<span class="arch-label">Model Layer</span>
<span class="tag tag-yellow">DashScope</span>
<span class="tag tag-yellow">OpenAI</span>
<span class="tag tag-yellow">Anthropic</span>
<span class="tag tag-yellow">Ollama</span>
<span class="tag tag-yellow">vLLM</span>
</div>
</div>
<div class="grid-2">
<div class="card">
<h3>Message &mdash; 统一通信</h3>
<p>所有 Agent 之间用统一的 Msg 对象通信,包含 name、content、role 等字段。MsgHub 负责消息路由和广播。</p>
</div>
<div class="card">
<h3>Agent &mdash; 智能体</h3>
<p>核心是 ReActAgent接收消息 &rarr; 思考 &rarr; 调工具 &rarr; 观察结果 &rarr; 循环。支持人机协作实时打断。</p>
</div>
<div class="card">
<h3>Memory &mdash; 记忆系统</h3>
<p>InMemoryMemory短期+ 数据库持久化(长期)+ 自动压缩。支持 ReMe、Qdrant、Milvus 等向量库。</p>
</div>
<div class="card">
<h3>Tool &mdash; 工具注册</h3>
<p>Toolkit 统一注册函数/MCP 工具Agent 通过 function calling 调用。支持 MCP 标准协议、后台异步执行。</p>
</div>
</div>
</div>
<!-- ===== 3. 源码结构 ===== -->
<div class="section">
<h2 class="section-title"><span>#3</span> 源码包结构</h2>
<div class="card">
<div class="code-block">
<span class="comment">// src/agentscope/ 核心包目录</span>
agentscope/
├── <span class="func">agent/</span> <span class="comment"># ReActAgent, UserAgent 等智能体实现</span>
├── <span class="func">model/</span> <span class="comment"># DashScope, OpenAI, Anthropic 等模型封装</span>
├── <span class="func">memory/</span> <span class="comment"># InMemoryMemory, 数据库存储, 压缩</span>
├── <span class="func">tool/</span> <span class="comment"># Toolkit, 工具注册, function calling</span>
├── <span class="func">mcp/</span> <span class="comment"># MCP 客户端 (HttpStatelessClient)</span>
├── <span class="func">a2a/</span> <span class="comment"># Agent-to-Agent 协议实现</span>
├── <span class="func">pipeline/</span> <span class="comment"># MsgHub, sequential_pipeline 编排</span>
├── <span class="func">message/</span> <span class="comment"># Msg 统一消息格式</span>
├── <span class="func">formatter/</span> <span class="comment"># 各模型的 prompt 格式化器</span>
├── <span class="func">plan/</span> <span class="comment"># Agent 计划模块</span>
├── <span class="func">rag/</span> <span class="comment"># RAG 检索增强生成</span>
├── <span class="func">realtime/</span> <span class="comment"># 实时语音交互</span>
├── <span class="func">tts/</span> <span class="comment"># 文本转语音</span>
├── <span class="func">evaluate/</span> <span class="comment"># 评估框架</span>
├── <span class="func">tuner/</span> <span class="comment"># 模型微调 (Trinity-RFT)</span>
├── <span class="func">tracing/</span> <span class="comment"># OpenTelemetry 可观测性</span>
├── <span class="func">session/</span> <span class="comment"># 会话管理 (SQLite)</span>
├── <span class="func">hooks/</span> <span class="comment"># 生命周期钩子</span>
└── <span class="func">embedding/</span> <span class="comment"># 嵌入模型</span>
</div>
</div>
</div>
<!-- ===== 4. 核心特性详解 ===== -->
<div class="section">
<h2 class="section-title"><span>#4</span> 核心特性详解</h2>
<div class="grid-3">
<div class="card">
<h3>ReAct Agent</h3>
<ul>
<li>推理 &rarr; 行动 &rarr; 观察循环</li>
<li>内置工具调用 (function calling)</li>
<li>人机协作实时打断</li>
<li>流式输出支持</li>
</ul>
</div>
<div class="card">
<h3>MCP 集成</h3>
<ul>
<li>MCP 工具 &rarr; 本地可调函数</li>
<li>支持 streamable_http 传输</li>
<li>可直接调用 / 注册给 Agent / 组合封装</li>
</ul>
</div>
<div class="card">
<h3>A2A 协议</h3>
<ul>
<li>Google 提出的 Agent 间通信标准</li>
<li>跨框架 Agent 互操作</li>
<li>任务卡片 / 能力声明</li>
</ul>
</div>
<div class="card">
<h3>多 Agent 编排</h3>
<ul>
<li>MsgHub 消息中心广播</li>
<li>sequential_pipeline 顺序执行</li>
<li>动态增删参与者</li>
<li>灵活的消息路由</li>
</ul>
</div>
<div class="card">
<h3>实时语音</h3>
<ul>
<li>TTS 文本转语音</li>
<li>实时双向语音交互</li>
<li>多 Agent 语音场景(狼人杀)</li>
</ul>
</div>
<div class="card">
<h3>模型微调</h3>
<ul>
<li>Trinity-RFT 强化学习</li>
<li>Agent 行为优化</li>
<li>数据增强 + 合成</li>
<li>狼人杀胜率 50% &rarr; 80%</li>
</ul>
</div>
</div>
</div>
<!-- ===== 5. 模型支持 ===== -->
<div class="section">
<h2 class="section-title"><span>#5</span> 模型支持矩阵</h2>
<div class="table-wrap">
<table>
<thead>
<tr>
<th>模型平台</th>
<th>典型模型</th>
<th>主要用途</th>
<th>接入方式</th>
</tr>
</thead>
<tbody>
<tr>
<td><strong>DashScope</strong></td>
<td>Qwen-max, Qwen3 系列</td>
<td>主力模型,示例默认</td>
<td>内置 DashScopeChatModel</td>
</tr>
<tr>
<td><strong>OpenAI</strong></td>
<td>GPT-4o, GPT-4.1</td>
<td>通用对话/推理</td>
<td>内置 OpenAI 兼容</td>
</tr>
<tr>
<td><strong>Anthropic</strong></td>
<td>Claude Opus/Sonnet</td>
<td>复杂推理/代码</td>
<td>内置支持</td>
</tr>
<tr>
<td><strong>Gemini</strong></td>
<td>Gemini Pro</td>
<td>多模态</td>
<td>可选依赖 [gemini]</td>
</tr>
<tr>
<td><strong>Ollama</strong></td>
<td>Llama, Mistral 等</td>
<td>本地部署</td>
<td>可选依赖 [ollama]</td>
</tr>
<tr>
<td><strong>vLLM</strong></td>
<td>任意 HF 模型</td>
<td>高性能本地推理</td>
<td>内置支持</td>
</tr>
<tr>
<td><strong>HuggingFace</strong></td>
<td>Endpoint 模型</td>
<td>云端托管</td>
<td>Endpoint 接入</td>
</tr>
</tbody>
</table>
</div>
</div>
<!-- ===== 6. 代码示例 ===== -->
<div class="section">
<h2 class="section-title"><span>#6</span> 代码示例</h2>
<div class="card"> <div class="card">
<h2>概述</h2> <h3>Hello AgentScope &mdash; 最简 ReAct Agent</h3>
<p>待补充研究内容...</p> <div class="code-block">
<span class="keyword">from</span> agentscope.agent <span class="keyword">import</span> ReActAgent, UserAgent
<span class="keyword">from</span> agentscope.model <span class="keyword">import</span> DashScopeChatModel
<span class="keyword">from</span> agentscope.formatter <span class="keyword">import</span> DashScopeChatFormatter
<span class="keyword">from</span> agentscope.memory <span class="keyword">import</span> InMemoryMemory
<span class="keyword">from</span> agentscope.tool <span class="keyword">import</span> Toolkit, execute_python_code
<span class="keyword">import</span> asyncio
<span class="keyword">async def</span> <span class="func">main</span>():
toolkit = Toolkit()
toolkit.<span class="func">register_tool_function</span>(execute_python_code)
agent = <span class="func">ReActAgent</span>(
name=<span class="string">"Friday"</span>,
sys_prompt=<span class="string">"You're a helpful assistant."</span>,
model=<span class="func">DashScopeChatModel</span>(
model_name=<span class="string">"qwen-max"</span>,
api_key=os.environ[<span class="string">"DASHSCOPE_API_KEY"</span>],
),
memory=<span class="func">InMemoryMemory</span>(),
formatter=<span class="func">DashScopeChatFormatter</span>(),
toolkit=toolkit,
)
user = <span class="func">UserAgent</span>(name=<span class="string">"user"</span>)
msg = <span class="keyword">None</span>
<span class="keyword">while True</span>:
msg = <span class="keyword">await</span> agent(msg)
msg = <span class="keyword">await</span> user(msg)
asyncio.<span class="func">run</span>(main())
</div>
</div> </div>
<div class="card"> <div class="card">
<h2>核心发现</h2> <h3>MCP 工具调用 &mdash; 把 MCP 服务变成本地函数</h3>
<p>待补充...</p> <div class="code-block">
<span class="keyword">from</span> agentscope.mcp <span class="keyword">import</span> HttpStatelessClient
<span class="keyword">from</span> agentscope.tool <span class="keyword">import</span> Toolkit
<span class="keyword">async def</span> <span class="func">use_mcp</span>():
client = <span class="func">HttpStatelessClient</span>(
name=<span class="string">"gaode_mcp"</span>,
transport=<span class="string">"streamable_http"</span>,
url=<span class="string">"https://mcp.amap.com/mcp?key=YOUR_KEY"</span>,
)
<span class="comment"># MCP 工具 → 本地可调用函数</span>
func = <span class="keyword">await</span> client.<span class="func">get_callable_function</span>(func_name=<span class="string">"maps_geo"</span>)
<span class="comment"># 直接调用</span>
<span class="keyword">await</span> <span class="func">func</span>(address=<span class="string">"天安门广场"</span>, city=<span class="string">"北京"</span>)
<span class="comment"># 或注册给 Agent</span>
toolkit = Toolkit()
toolkit.<span class="func">register_tool_function</span>(func)
</div> </div>
</div> </div>
<div class="card">
<h3>多 Agent 编排 &mdash; MsgHub 消息中心</h3>
<div class="code-block">
<span class="keyword">from</span> agentscope.pipeline <span class="keyword">import</span> MsgHub, sequential_pipeline
<span class="keyword">from</span> agentscope.message <span class="keyword">import</span> Msg
<span class="keyword">async def</span> <span class="func">multi_agent</span>():
<span class="comment"># 创建多个 Agent...</span>
agent1, agent2, agent3, agent4 = ...
<span class="comment"># MsgHub 管理消息广播</span>
<span class="keyword">async with</span> <span class="func">MsgHub</span>(
participants=[agent1, agent2, agent3],
announcement=<span class="func">Msg</span>(<span class="string">"Host"</span>, <span class="string">"请介绍一下自己。"</span>, <span class="string">"assistant"</span>)
) <span class="keyword">as</span> hub:
<span class="comment"># 顺序发言</span>
<span class="keyword">await</span> <span class="func">sequential_pipeline</span>([agent1, agent2, agent3])
<span class="comment"># 动态增删参与者</span>
hub.<span class="func">add</span>(agent4)
hub.<span class="func">delete</span>(agent3)
</div>
</div>
</div>
<!-- ===== 7. 官方示例项目 ===== -->
<div class="section">
<h2 class="section-title"><span>#7</span> 官方示例项目一览</h2>
<div class="table-wrap">
<table>
<thead>
<tr><th>类别</th><th>示例</th><th>说明</th></tr>
</thead>
<tbody>
<tr><td rowspan="7"><strong>智能体</strong></td><td>ReAct Agent</td><td>基础推理-行动循环智能体</td></tr>
<tr><td>Voice Agent</td><td>语音交互智能体</td></tr>
<tr><td>Deep Research Agent</td><td>深度研究/调研智能体</td></tr>
<tr><td>Browser Agent</td><td>浏览器操作智能体</td></tr>
<tr><td>Meta Planner Agent</td><td>任务规划元智能体</td></tr>
<tr><td>A2A Agent</td><td>Agent-to-Agent 通信智能体</td></tr>
<tr><td>Realtime Voice Agent</td><td>实时双向语音智能体</td></tr>
<tr><td rowspan="5"><strong>功能</strong></td><td>MCP</td><td>Model Context Protocol 工具集成</td></tr>
<tr><td>RAG</td><td>检索增强生成</td></tr>
<tr><td>Structured Output</td><td>结构化输出JSON Schema</td></tr>
<tr><td>Memory Compression</td><td>记忆自动压缩</td></tr>
<tr><td>Long-term Memory</td><td>ReMe / Qdrant / Milvus 长期记忆</td></tr>
<tr><td rowspan="2"><strong>工作流</strong></td><td>Multi-Agent Debate</td><td>多智能体辩论</td></tr>
<tr><td>Multi-Agent Realtime</td><td>多智能体实时语音交互</td></tr>
<tr><td><strong>游戏</strong></td><td>Werewolves (9人)</td><td>九人制狼人杀</td></tr>
<tr><td rowspan="3"><strong>微调</strong></td><td>Math Agent</td><td>数学求解微调 (75% → 85%)</td></tr>
<tr><td>Frozen Lake</td><td>冰湖游戏微调 (15% → 86%)</td></tr>
<tr><td>Werewolf Tuning</td><td>狼人杀策略微调 (50% → 80%)</td></tr>
</tbody>
</table>
</div>
</div>
<!-- ===== 8. 生态系统 ===== -->
<div class="section">
<h2 class="section-title"><span>#8</span> 生态系统</h2>
<div class="grid-4">
<div class="card">
<h3>AgentScope Core</h3>
<p>核心框架本体Agent + Model + Memory + Tool 四大模块</p>
</div>
<div class="card">
<h3>AgentScope Runtime</h3>
<p>生产运行时Docker/K8s 部署、安全沙箱、VNC 图形界面、Agent-as-a-Service</p>
</div>
<div class="card">
<h3>AgentScope Studio</h3>
<p>可视化开发/调试环境,拖拽式 Agent 编排</p>
</div>
<div class="card">
<h3>CoPaw</h3>
<p>基于 AgentScope 构建的个人 AI 助手产品 (2026-03 开源)</p>
</div>
</div>
</div>
<!-- ===== 9. 发展时间线 ===== -->
<div class="section">
<h2 class="section-title"><span>#9</span> 发展时间线</h2>
<div class="timeline">
<div class="timeline-item">
<div class="timeline-date">2026-03</div>
<div class="timeline-text">v1.0.18 发布 / CoPaw 个人助手开源 / HuggingFace 修复 / 工具后台执行</div>
</div>
<div class="timeline-item">
<div class="timeline-date">2026-02</div>
<div class="timeline-text">实时语音 Agent 上线,支持多 Agent 实时语音交互</div>
</div>
<div class="timeline-item">
<div class="timeline-date">2026-01</div>
<div class="timeline-text">Memory 数据库支持 + 记忆压缩 / 社区双周会议启动</div>
</div>
<div class="timeline-item">
<div class="timeline-date">2025-12</div>
<div class="timeline-text">A2A 协议集成 / TTS 支持 / 深度研究 Agent</div>
</div>
<div class="timeline-item">
<div class="timeline-date">2025-11</div>
<div class="timeline-text">Trinity-RFT 强化学习 / ReMe 长期记忆 / agentscope-runtime 发布</div>
</div>
<div class="timeline-item">
<div class="timeline-date">2024-02</div>
<div class="timeline-text">AgentScope 论文发布 (arXiv: 2402.14034),框架正式开源</div>
</div>
</div>
</div>
<!-- ===== 10. 安装 ===== -->
<div class="section">
<h2 class="section-title"><span>#10</span> 安装方式</h2>
<div class="grid-2">
<div class="card">
<h3>PyPI 安装(推荐)</h3>
<div class="code-block">
<span class="comment"># 基础安装</span>
pip install agentscope
<span class="comment"># 带可选依赖</span>
pip install agentscope[gemini] <span class="comment"># Gemini 支持</span>
pip install agentscope[ollama] <span class="comment"># Ollama 本地模型</span>
pip install agentscope[rag] <span class="comment"># RAG 检索增强</span>
pip install agentscope[a2a] <span class="comment"># A2A 协议</span>
pip install agentscope[realtime] <span class="comment"># 实时语音</span>
</div>
</div>
<div class="card">
<h3>从源码安装</h3>
<div class="code-block">
git clone -b main \
https://github.com/agentscope-ai/agentscope.git
cd agentscope
pip install -e .
<span class="comment"># 或 uv</span>
uv pip install -e .
</div>
</div>
</div>
</div>
<!-- ===== 11. 与同类对比 ===== -->
<div class="section">
<h2 class="section-title"><span>#11</span> 与同类框架对比</h2>
<div class="table-wrap">
<table>
<thead>
<tr>
<th>维度</th>
<th>AgentScope</th>
<th>LangChain / LangGraph</th>
<th>AutoGen</th>
<th>CrewAI</th>
</tr>
</thead>
<tbody>
<tr>
<td><strong>定位</strong></td>
<td>生产级多 Agent</td>
<td>LLM 应用开发全家桶</td>
<td>多 Agent 对话</td>
<td>角色扮演多 Agent</td>
</tr>
<tr>
<td><strong>核心范式</strong></td>
<td>ReAct + MsgHub</td>
<td>Chain / Graph</td>
<td>对话驱动</td>
<td>任务分配</td>
</tr>
<tr>
<td><strong>MCP 支持</strong></td>
<td style="color: var(--green);">原生支持</td>
<td>社区插件</td>
<td>有限</td>
<td>第三方</td>
</tr>
<tr>
<td><strong>A2A 支持</strong></td>
<td style="color: var(--green);">原生支持</td>
<td></td>
<td></td>
<td></td>
</tr>
<tr>
<td><strong>模型微调</strong></td>
<td style="color: var(--green);">内置 RL</td>
<td></td>
<td></td>
<td></td>
</tr>
<tr>
<td><strong>主要模型</strong></td>
<td>DashScope 为主</td>
<td>OpenAI 为主</td>
<td>OpenAI 为主</td>
<td>不限</td>
</tr>
<tr>
<td><strong>部署</strong></td>
<td>K8s / Docker</td>
<td>LangServe</td>
<td>无内置</td>
<td>无内置</td>
</tr>
<tr>
<td><strong>学习曲线</strong></td>
<td>中等</td>
<td>较陡</td>
<td>较低</td>
<td></td>
</tr>
<tr>
<td><strong>生态成熟度</strong></td>
<td>快速成长中</td>
<td>最成熟</td>
<td>中等</td>
<td>中等</td>
</tr>
</tbody>
</table>
</div>
</div>
<!-- ===== 12. 客观评价 ===== -->
<div class="section">
<h2 class="section-title"><span>#12</span> 客观评价:噱头还是实力?</h2>
<div class="verdict-box">
<h3>结论:不是噱头,但你不一定需要</h3>
<p>
AgentScope 解决的是<strong>真实存在</strong>的工程问题 &mdash; 当你需要多个 AI Agent 协作、通信、共享记忆时,
手写消息路由和状态管理是痛苦的。这个框架确实简化了这个过程。<br><br>
但对于大多数项目(尤其是单 Agent + 工具调用的场景),<strong>直接用 SDK 调 API 更简单、更可控、更省钱</strong>
框架带来的抽象层反而增加了调试成本和依赖风险。
</p>
<div class="pro-con">
<div class="pro">
<h4>值得用的场景</h4>
<ul>
<li>需要 3+ 个 Agent 协作分工</li>
<li>Agent 之间需要消息路由/广播</li>
<li>需要 A2A 跨框架互操作</li>
<li>要做 Agent 行为的 RL 微调</li>
<li>K8s 生产部署多 Agent 服务</li>
</ul>
</div>
<div class="con">
<h4>不需要的场景</h4>
<ul>
<li>单 Agent + RAG直接调 API</li>
<li>浏览器自动化Playwright 就行)</li>
<li>模板填充 + LLM 润色</li>
<li>追求轻量省钱的项目</li>
<li>API 走 Poe/OpenRouter适配要折腾</li>
</ul>
</div>
</div>
</div>
</div>
<!-- ===== 13. 关键链接 ===== -->
<div class="section">
<h2 class="section-title"><span>#13</span> 关键链接</h2>
<div class="grid-3">
<div class="card" style="text-align: center;">
<h3>GitHub</h3>
<p><a href="https://github.com/agentscope-ai/agentscope" style="color: var(--accent);" target="_blank">agentscope-ai/agentscope</a></p>
</div>
<div class="card" style="text-align: center;">
<h3>文档</h3>
<p><a href="https://doc.agentscope.io/zh_CN/" style="color: var(--accent);" target="_blank">doc.agentscope.io</a></p>
</div>
<div class="card" style="text-align: center;">
<h3>论文</h3>
<p><a href="https://arxiv.org/abs/2402.14034" style="color: var(--accent);" target="_blank">arXiv: 2402.14034</a></p>
</div>
</div>
</div>
</div>
<!-- Footer -->
<div class="footer">
<p>AgentScope 深度研究 &mdash; 本地源码: <code>./source/</code> &mdash; 研究日期: 2026-03-28</p>
<p style="margin-top: 0.5rem;">
<a href="https://github.com/agentscope-ai/agentscope" target="_blank">GitHub</a> &bull;
<a href="https://doc.agentscope.io/" target="_blank">Docs</a> &bull;
<a href="https://pypi.org/project/agentscope/" target="_blank">PyPI</a>
</p>
</div>
</body> </body>
</html> </html>

1
source Submodule

Submodule source added at 928b88a109