DEV Community

Kang Jian
Kang Jian

Posted on

craft-agents-oss 深度测评:一个值得关注的 AI Agent 编排框架,但别被 GitHub Stars 骗了

craft-agents-oss 深度测评:一个值得关注的 AI Agent 编排框架,但别被 GitHub Stars 骗了

30秒结论:craft-agents-oss 是一个基于 Python 的轻量级 AI Agent 编排框架,主打“声明式”多 Agent 协作。目前 354 stars,代码质量中上,但文档残缺、API 不稳定、社区几乎为零。适合:喜欢折腾源码的 Python 开发者、需要快速原型验证的多 Agent 场景。不适合:生产环境、追求开箱即用、团队协作项目。

核心功能:声明式 Agent 编排

craft-agents-oss 的核心卖点是“用 YAML 定义 Agent 拓扑”。它不像 LangChain 那样用 Python 代码硬编码流程,而是把 Agent 之间的依赖关系、工具调用、输出映射都写在配置里。

1. 安装与基础使用

pip install craft-agents-oss
# 实测 Python 3.10+ 可用,3.9 有依赖冲突
Enter fullscreen mode Exit fullscreen mode

创建一个最简单的单 Agent 示例:

from craft_agents import Agent, AgentConfig

config = AgentConfig(
    model="gpt-4",
    temperature=0.3,
    max_tokens=1024
)

agent = Agent(config=config)
response = agent.run("解释一下什么是声明式编排")
print(response)
Enter fullscreen mode Exit fullscreen mode

输出:

声明式编排是一种通过描述期望状态而非具体步骤来定义系统行为的方法...
Enter fullscreen mode Exit fullscreen mode

注意:默认使用 OpenAI API,需要设置 OPENAI_API_KEY 环境变量。如果没有,会直接抛出 ValueError,没有 fallback 提示。

2. 多 Agent 编排(核心卖点)

craft-agents-oss 的杀手锏是 Pipeline 类,支持 YAML 定义 DAG。创建一个 workflow.yaml

agents:
  - name: researcher
    model: gpt-4
    system_prompt: "你是一个研究员,负责收集和分析信息。输出JSON格式。"
    tools:
      - web_search
      - calculator

  - name: writer
    model: gpt-4
    system_prompt: "你是一个作家,基于研究员的结果撰写最终报告。"

edges:
  - from: researcher
    to: writer
    transform: "提取researcher输出的summary字段作为writer的输入"
Enter fullscreen mode Exit fullscreen mode

然后在代码中加载:

from craft_agents import Pipeline

pipeline = Pipeline.from_yaml("workflow.yaml")
result = pipeline.run("分析2024年AI Agent框架的对比")
print(result)
Enter fullscreen mode Exit fullscreen mode

踩坑:这个 YAML 解析器极其脆弱。如果 YAML 格式不对(比如缩进错误),报错信息是 KeyError: 'edges',完全不提示具体位置。我调试了 20 分钟才发现少了一个空格。

3. 工具注册机制

框架内置了 5 个工具:web_searchcalculatorpython_replfile_iohttp_request。但 web_search 默认使用 DuckDuckGo,没有 API Key 配置,速度很慢(平均 3-5 秒一次)。

自定义工具示例:

from craft_agents.tools import BaseTool

class MyDatabaseTool(BaseTool):
    name = "db_query"
    description = "查询用户数据库"

    def run(self, query: str) -> str:
        # 实际代码
        return f"查询结果: {query}"

# 注册到 Agent
agent.register_tool(MyDatabaseTool())
Enter fullscreen mode Exit fullscreen mode

问题BaseToolrun 方法签名不固定,文档说返回 str,但内部实现有时返回 dict,导致下游 Agent 解析失败。我提了个 issue,作者回复说“下个版本修复”,但已经 3 周没动静了。

性能测试:Benchmark 数据

在我的测试环境(M1 MacBook Pro 16GB,Python 3.11,OpenAI API 延迟约 200ms)下:

场景 Agent 数量 平均完成时间 Token 消耗 失败率
单 Agent 问答 1 1.2s 342 0%
双 Agent 串联 2 3.8s 1,204 8%
三 Agent 并联 3 5.6s 2,891 15%
四 Agent 复杂 DAG 4 12.3s 5,678 25%

结论:Agent 数量超过 3 个时,失败率飙升。主要原因是:

  1. Agent 间 JSON 解析错误(输出格式不规范)
  2. 工具调用超时(默认 30 秒,但无重试机制)
  3. 上下文窗口溢出(框架不自动 truncate)

踩坑记录:真实遇到的 7 个坑

坑 1:YAML 配置中的变量引用

文档说支持 ${{ variable }} 语法,但实际只支持顶层变量。嵌套变量会报 KeyError

# 不支持的写法
agents:
  - name: ${env.AGENT_NAME}  # 报错
Enter fullscreen mode Exit fullscreen mode

坑 2:并发控制缺失

多个 Agent 并行执行时,没有线程安全机制。我遇到 list index out of range,原因是共享的 results 列表被并发修改。

坑 3:日志系统混乱

printlogging 混用,无法统一控制日志级别。生产环境没法用。

坑 4:模型切换不彻底

配置了 model: claude-3,但内部仍然调用 OpenAI 的 chat completion 接口。需要手动改源码里的 llm.py

坑 5:依赖版本冲突

requirements.txtpydantic==2.5.0fastapi==0.104.0 不兼容。我花了 1 小时降级 pydantic 到 1.10.0。

坑 6:没有错误重试

Agent 调用失败直接抛异常,没有指数退避或重试机制。生产环境需要自己包装。

坑 7:文档与代码不一致

README 里的 API 示例和实际代码对不上。比如 Pipeline.from_yaml 在文档里是类方法,但代码里是静态方法。

横向对比:同类工具对比

特性 craft-agents-oss LangChain AutoGPT CrewAI
安装复杂度 低(1 条命令) 中(依赖多) 高(需要 Docker)
声明式配置 ✅ YAML 原生 ❌ 代码为主 ❌ 无 ❌ 代码为主
工具生态 5 个内置工具 100+ 集成 50+ 插件 10+ 内置
并发支持 ❌ 无 ✅ 有 ❌ 单线程 ✅ 有
错误处理 ❌ 无重试 ✅ 有重试 ❌ 无 ✅ 有重试
文档质量 ⭐⭐ ⭐⭐⭐⭐⭐ ⭐⭐⭐ ⭐⭐⭐⭐
社区活跃度 ⭐ (354 stars) ⭐⭐⭐⭐⭐ ⭐⭐⭐⭐ ⭐⭐⭐
生产就绪度 ⚠️ 部分
学习成本 低(2 小时) 中(1 天) 低(1 小时) 中(半天)

craft-agents-oss 的差异化优势:YAML 配置确实比 LangChain 的 Python DSL 更直观,适合非开发者快速上手。但代价是灵活性和健壮性不足。

最终评价

打分(满分 5 分)

维度 分数 说明
功能完整性 ⭐⭐⭐ 基础功能都有,但细节缺失
性能 ⭐⭐ 多 Agent 场景失败率高
性价比 ⭐⭐⭐⭐ 开源免费,但维护成本高
文档质量 ⭐⭐ 示例少,错误多
社区生态 几乎无社区

总分:2.4/5

推荐场景

  1. 个人原型验证:如果你需要快速搭建一个 2-3 个 Agent 的 demo,craft-agents-oss 比 LangChain 轻量
  2. 学习 Agent 编排:源码只有 2000 行,适合阅读学习
  3. 非生产环境工具:比如内部知识库查询、个人助理

不推荐场景

  1. 任何需要 SLA 的生产环境
  2. 需要 5+ Agent 协作的复杂场景
  3. 团队协作项目(代码规范、测试覆盖率都不够)
  4. 需要多模型支持(目前只稳定支持 OpenAI)

我的建议

如果你正在找 best AI tools 做 Agent 编排,我的选择优先级是:

  1. LangChain - 生产环境首选
  2. CrewAI - 多 Agent 协作更成熟
  3. craft-agents-oss - 仅限快速原型

不过 craft-agents-oss 的声明式理念值得关注。如果你愿意花时间看源码、提 PR,这个框架有潜力。但作为独立开发者,我的时间更值钱,不会在生产环境用它。

最后说一句:GitHub Stars 不代表一切。354 stars 的 craft-agents-oss 和 10 万 stars 的 LangChain 之间的差距,不是数量级,而是工程化水平。


试用链接

如果你还是想试试,建议先 fork 再改,不要直接 pip install。我踩过的坑,希望你不要再踩了。

Top comments (0)