auto-save 2026-04-01 09:03 (+1, ~1)
This commit is contained in:
773
index.html
773
index.html
@@ -3,44 +3,777 @@
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
<title>AgentScope 多智能体框架研究</title>
|
||||
<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, sans-serif;
|
||||
background: #0a0a0a; color: #e0e0e0;
|
||||
min-height: 100vh; padding: 2rem;
|
||||
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;
|
||||
}
|
||||
.container { max-width: 1200px; margin: 0 auto; }
|
||||
h1 {
|
||||
font-size: 2.5rem; font-weight: 700;
|
||||
background: linear-gradient(135deg, #60a5fa, #a78bfa);
|
||||
|
||||
/* 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;
|
||||
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 {
|
||||
background: #141414; border: 1px solid #222; border-radius: 12px;
|
||||
padding: 2rem; margin-bottom: 1.5rem;
|
||||
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; }
|
||||
}
|
||||
.card h2 { color: #60a5fa; margin-bottom: 1rem; font-size: 1.3rem; }
|
||||
.card p { line-height: 1.8; color: #aaa; }
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
|
||||
<!-- ===== Hero ===== -->
|
||||
<div class="hero">
|
||||
<div class="hero-logo">AS</div>
|
||||
<h1>AgentScope</h1>
|
||||
<p class="subtitle">
|
||||
阿里系开源的生产级多智能体框架 — "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">
|
||||
<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">↓</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">↓</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">↓</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 — 统一通信</h3>
|
||||
<p>所有 Agent 之间用统一的 Msg 对象通信,包含 name、content、role 等字段。MsgHub 负责消息路由和广播。</p>
|
||||
</div>
|
||||
<div class="card">
|
||||
<h3>Agent — 智能体</h3>
|
||||
<p>核心是 ReActAgent:接收消息 → 思考 → 调工具 → 观察结果 → 循环。支持人机协作实时打断。</p>
|
||||
</div>
|
||||
<div class="card">
|
||||
<h3>Memory — 记忆系统</h3>
|
||||
<p>InMemoryMemory(短期)+ 数据库持久化(长期)+ 自动压缩。支持 ReMe、Qdrant、Milvus 等向量库。</p>
|
||||
</div>
|
||||
<div class="card">
|
||||
<h3>Tool — 工具注册</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>推理 → 行动 → 观察循环</li>
|
||||
<li>内置工具调用 (function calling)</li>
|
||||
<li>人机协作实时打断</li>
|
||||
<li>流式输出支持</li>
|
||||
</ul>
|
||||
</div>
|
||||
<div class="card">
|
||||
<h3>MCP 集成</h3>
|
||||
<ul>
|
||||
<li>MCP 工具 → 本地可调函数</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% → 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">
|
||||
<h2>概述</h2>
|
||||
<p>待补充研究内容...</p>
|
||||
<h3>Hello AgentScope — 最简 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">
|
||||
<h2>核心发现</h2>
|
||||
<p>待补充...</p>
|
||||
<h3>MCP 工具调用 — 把 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 编排 — 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>的工程问题 — 当你需要多个 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 深度研究 — 本地源码: <code>./source/</code> — 研究日期: 2026-03-28</p>
|
||||
<p style="margin-top: 0.5rem;">
|
||||
<a href="https://github.com/agentscope-ai/agentscope" target="_blank">GitHub</a> •
|
||||
<a href="https://doc.agentscope.io/" target="_blank">Docs</a> •
|
||||
<a href="https://pypi.org/project/agentscope/" target="_blank">PyPI</a>
|
||||
</p>
|
||||
</div>
|
||||
|
||||
</body>
|
||||
</html>
|
||||
|
||||
1
source
Submodule
1
source
Submodule
Submodule source added at 928b88a109
Reference in New Issue
Block a user