Files
agentscope/index.html

780 lines
33 KiB
HTML
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
<!DOCTYPE html>
<html lang="zh-CN">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>AgentScope 多智能体框架深度研究</title>
<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; }
body {
font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Noto Sans SC", sans-serif;
background: var(--bg); color: var(--text);
min-height: 100vh; line-height: 1.7;
}
/* Hero */
.hero {
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;
background-clip: text; margin-bottom: 0.8rem;
}
.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 {
background: var(--card); border: 1px solid var(--border); border-radius: 12px;
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; }
}
</style>
</head>
<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">
<!-- ===== 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">
<h3>Hello AgentScope &mdash; 最简 ReAct Agent</h3>
<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 class="card">
<h3>MCP 工具调用 &mdash; 把 MCP 服务变成本地函数</h3>
<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 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>
</html>