
评测盲区:为什么「能用」不等于「可用」?
在大模型评测领域,我们有 MMLU 测知识、HumanEval 测代码、BFCL 测函数调用。但对于 Agent 系统,评测维度往往停留在「任务完成率」这个单一指标上。
这里存在一个评测盲区:我们很少评测 Agent 能力的「可迁移性」和「可工程化程度」。
举个例子:在 Claude Code 环境中,构建了一套完整的内容创作 Agent——写文章、生成配图、制作播客、抓取网页、一键发布公众号。从任务完成率来看,这套系统表现优秀。
但问题来了: 这套能力只能在本地环境运行。无法通过 Web 访问、无法 API 调用、无法自动化、无法开放给他人使用。从工程化角度评测,这套系统的可部署性得分几乎为 0。
这引出了一个重要的评测维度:Agent 能力的解耦性——即 Agent 能力能否从特定运行环境中剥离出来,以标准化方式对外提供服务。
架构解析:Claude Agent SDK 的三层设计
要理解解耦的难点,首先要理解 Claude Agent SDK 的架构设计。从评测角度看,这套架构包含三个核心抽象层:
🏗️ 三层架构模型
Layer 1 | 用户层
Web / API / CLI 等交互界面
↓
Layer 2 | 编排层 ← 核心
主 Agent + Skills(决策与调度中心)
↓
Layer 3 | 执行层
Subagents + Tools + 文件系统
从评测方法论角度,这三层各自承担不同的能力维度:
| 组件 | 本质 | 评测关注点 |
| :— | :— | :— |
| Skills | Markdown 文档(工作流程定义) | 流程覆盖率、指令遵循度 |
| 主Agent | 决策调度中心(理解需求、选择工具) | 意图识别准确率、工具选择合理性 |
| Subagents | 独立执行单元(上下文隔离) | 任务完成率、上下文污染率 |
关键洞察: Skills 不是代码,而是声明式的工作流定义。这意味着它具备天然的可迁移性——只要编排层能正确解析和执行,Skills 就能在任何环境运行。
隐藏成本:Claude Code 做了哪些「脏活」?
在评测 Agent 系统时,我们容易忽略「基础设施成本」。Claude Code 之所以让 Skills 运行起来「很简单」,是因为它在背后做了大量工程工作:
-
自动加载和触发
扫描.claude/skills/目录,解析 Markdown,根据 description 字段自动在合适时机注入对话上下文。 -
内置工具箱
提供 Read、Edit、Execute、Grep 等文件操作能力,Skills 可以直接调用这些工具完成任务。 -
上下文管理
所有 Skills 共享同一个工作台:文件系统、git 仓库、对话历史,实现跨 Skill 的数据流转。
从评测角度看,这些「隐藏成本」正是解耦的核心挑战。要让 Skills 在 Web/API 环境运行,你需要自己实现这三件事。
方案对比:三种解耦路径的评测分析
从工程化评测角度,我们可以从实现复杂度、可维护性、扩展性、生态兼容性四个维度,对比三种解耦方案:
方案一:直接使用 Claude Agent SDK
官方提供的 Agent 开发框架,将 Skills 转换为 System Prompt,工具封装为 Tools。
* ✅ 官方支持
* ✅ 功能完整
* ⚠️ 改造成本中等
适用场景: Skills 已成熟,追求长期稳定运行
方案二:自建轻量级编排层
基于 Anthropic API + Tool Use 功能,自己实现简化版编排逻辑。
* ✅ 轻量灵活
* ✅ 完全可控
* ❌ 需自行处理复杂逻辑
适用场景: 快速验证 MVP,Skills 还在迭代
方案三:基于 MCP 协议
每个 Skill 封装为独立的 MCP Server,通过标准化协议调用。
* ✅ 标准化
* ✅ 生态丰富
* ⚠️ 架构较重
适用场景: 构建开放生态,让他人复用你的 Skills
实施路径:方案一的工程化步骤
以推荐的 Claude Agent SDK 方案为例,给出可复现的实施步骤:
Step 1:改造 Skills 为 System Prompt
原来的 Markdown Skill 文件内容,整合到 Agent 的 system prompt 中。核心改造点:
* Skills 内容 → System Prompt 的一部分
* 工具函数 → SDK 的 Tools 格式
* 触发逻辑 → Prompt 中的条件判断
Step 2:封装工具函数
“`python
@tool
def generate_image(prompt: str) -> str:
“””调用图片生成 API”””
# 实现你的图片生成逻辑
pass
@tool
def publish_to_wechat(title: str, content: str) -> str:
“””发布到公众号”””
# 调用微信公众号 API
pass
“`
Step 3:构建主 Agentpython
main_agent = Agent(
model="claude-sonnet-4-20250514",
system_prompt="""
你是内容创作助手,工作流程:
1. 询问主题和目标读者
2. 提出 3 种文章结构
3. 分段写作并确认
4. 生成配图
5. 发布到公众号
""",
tools=[generate_image, publish_to_wechat]
)
Step 4:暴露 Web API
通过 FastAPI 框架,将 Agent 的核心处理能力封装为标准的 Web API 接口,便于集成到各类前端应用或微服务架构中。
“`python
@app.post(“/chat”)
async def chat(request: ChatRequest):
# 1. 获取或创建当前会话的上下文
context = get_session_context(request.session_id)
# 2. 调用主 Agent 处理用户消息
response = await main_agent.run(
message=request.message,
context=context
)
# 3. 保存更新后的会话上下文
save_session_context(request.session_id, context)
# 4. 返回 Agent 的响应
return {"response": response}
“`
工程化注意事项
将 Agent 从原型推向生产环境,需在以下关键环节进行工程化加固:
- 上下文管理:采用文件系统或分布式缓存(如 Redis)作为 Skills 间共享数据的中转站,确保状态持久化与跨会话一致性。
- 错误处理:为关键 Skills 和 LLM 调用实现指数退避重试、熔断及服务降级策略,提升系统整体鲁棒性。
- 成本控制:优化提示词(Prompt)长度,并采用历史对话摘要(Compact)或向量检索等策略压缩上下文,以降低大模型 API 调用成本。
评测结论与核心要点
基于对主流 Agent 架构的深入评测,我们提炼出以下核心观点:
- Skills 是知识层:作为声明式的工作流定义,Skills 封装了具体领域能力,具备天然的可迁移性和复用性。
- Agent 是决策层:作为系统的“大脑”,Agent 负责理解用户意图、动态选择并协调执行相应的 Skills。
- 编排层是解耦关键:一个设计良好的编排层(Orchestrator)是 Skills 与 Agent 核心逻辑解耦的基础,直接决定了 Agent 能力能否工程化、规模化落地。
- 评测建议:在评估 Agent 系统时,除功能与性能外,应增加 「可部署性」 与 「可迁移性」 维度,考察其架构是否支持平滑的工程化实践。
关注“鲸栖”小程序,掌握最新AI资讯
本文来自网络搜集,不代表鲸林向海立场,如有侵权,联系删除。转载请注明出处:http://www.itsolotime.com/archives/19286
