CrawAI搭建本地Agent Team问题整理

问题整理

项目概述

markdown 在 M3 Mac (18GB 内存) 上搭建本地 + API 混合的 Java Agent Team,包含架构师、程序员、测试员、代码审查员四个角色。


1.python版本问题

问题现象

ERROR: Could not find a version that satisfies the requirement crewai<0.40.0,>=0.30.0
ERROR: No matching distribution found for crewai<0.40.0,>=0.30.0

title
1
2
3
4
5
6
7
8
9
10
11
12
### 原因
- 系统 Python 3.9 版本过低
- crewai 0.30+ 需要 Python 3.10-3.13

### 解决方案
```bash
# 安装 Homebrew Python 3.11
brew install python@3.11

# 重建虚拟环境
/opt/homebrew/bin/python3.11 -m venv venv
source venv/bin/activate

2.依赖冲突问题

问题现象

1
2
langchain-ollama 0.1.0 requires langchain-core<0.3.0,>=0.2.20
langchain 0.1.20 requires langchain-core<0.2.0,>=0.1.52

原因:

crewai 0.35 依赖 langchain-core 0.1.x
langchain-ollama 新版依赖 langchain-core 0.2.x
版本要求互相矛盾

解决方案:

使用 langchain_community 内置的 Ollama,避免安装 langchain-ollama 包:

1
2
3
4
5
6
7
8
# 使用 community 内置版本
from langchain_community.llms import Ollama

llm = Ollama(
model="deepseek-r1:7b",
base_url="http://localhost:11434",
temperature=0.2
)

3。CrewAI 1.x API 兼容性问题

问题现象:

1
2
ImportError: Fallback to LiteLLM is not available
Error instantiating LLM from environment/fallback: OPENAI_API_KEY is required

原因:

  • crewai 1.9 强制使用内置LLM

  • 默认寻找 OpenAI,不支持直接传 langchain 对象

  • LiteLLM 依赖复杂,容易冲突

解决方案

降级到 crewai 0.35 稳定版

1
pip install "crewai==0.35.0"

使用传统 API:

1
2
3
4
5
6
7
8
9
from crewai import Agent
from langchain_community.llms import Ollama

llm = Ollama(model="deepseek-r1:7b", ...)

agent = Agent(
llm=llm, # 直接传 langchain 对象
...
)

4. 模型 API 限制问题

问题现象:

1
2
3
4
openai.PermissionDeniedError: Kimi For Coding is currently only available for 
Coding Agents such as Kimi CLI, Claude Code, Roo Code, Kilo Code, etc.


原因:

  • kimi-code 模型仅限特定工具调用
  • 标准 API 调用被拒绝

解决方案

更换为标准模型

1
2
3
4
5
6
ROLE_LLM_MAPPING = {
"architect": "deepseek-reasoner", # 推理强
"coder": "kimi-k2.5", # 换标准模型
"tester": "deepseek-chat",
"reviewer": "kimi-k2.5",
}

5. 7B 本地模型质量问题

问题现象:

  • 产生幻觉代码(如俄语строгий модус

  • 无限循环委托(Delegate work to coworker

  • Formatting errors incremented

原因:

  • 7B 蒸馏模型能力有限

  • 复杂任务超出模型理解范围

  • allow_delegation=True 导致循环

解决方案:

短期:优化提示词

1
2
3
architect = Agent(
allow_delegation=False, # 禁止委托,避免循环
backstory="你必须独立完成设计,直接输出结果。禁止:不写代码、不委托他人、不询问。",

长期:接入云端 API

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
from langchain_openai import ChatOpenAI

# DeepSeek API(性价比高)
llm = ChatOpenAI(
model="deepseek-chat",
api_key=os.getenv("DEEPSEEK_API_KEY"),
base_url="https://api.deepseek.com/v1",
)

# Kimi API(上下文长)
llm = ChatOpenAI(
model="kimi-k2",
api_key=os.getenv("KIMI_API_KEY"),
base_url="https://api.moonshot.cn/v1",
)

6. 流程中断与断点续跑

问题现象:

  • 流程中断后,修复 bug 如何恢复?

  • 重复运行会重复消耗 API 费用

  • 需要保留中间产出

解决方案:

1
2
3
4
5
6
7
8
9
10
# persistence.py - 保存执行状态
def save_state(agent_name, task_name, result, output_file):
# 保存结果到文件
# 记录完成状态到 JSON

def should_skip(agent_name):
# 检查该 Agent 是否已完成

def get_previous_result(agent_name):
# 读取之前保存的结果

文件输出结构:

1
2
3
4
5
6
7
output/
├── 01-architecture-design.md # 阶段 1 产出
├── 02-code-implementation.md # 阶段 2 产出
├── 03-unit-tests.md # 阶段 3 产出
├── 04-code-review.md # 阶段 4 产出
├── crew_state.json # 状态记录
└── SUMMARY.md # 汇总报告

执行逻辑:

1
2
3
4
5
6
7
8
9
def run_crew_with_resume():
# 检查状态,已完成则跳过
if should_skip("architect"):
print("⏭️ 架构师已完成,跳过")
result = get_previous_result("architect")
else:
# 执行并保存
result = crew.kickoff()
save_state("architect", ...)

7. M3 Mac 内存监控问题

问题:

  • top/ps 看不到 Ollama 真实内存占用

  • 模型显示加载但内存只有几百 MB

  • 统一内存架构难以理解

解决方案:

正确查看内存

1
2
3
4
5
6
7
8
9
# 查看模型是否加载
ollama ps

# 查看系统总内存(包含 GPU 部分)
vm_stat | grep "free"

# 活动监视器看联动内存
open -a "Activity Monitor"
# 看"内存"标签页的"联动内存"列

内存构成理解

1
2
3
4
5
显示占用 17GB,实际:
├── App 内存:~2GB(CPU 进程)
├── 联动内存:~11GB(GPU/ANE 用,含 Ollama 9GB)
├── 缓存文件:~2GB(可释放)
└── 被压缩:~3GB

8. 最终推荐配置

1
2
3
4
5
6
python=3.11
crewai=0.35.0
langchain=0.1.20
langchain-community=0.0.38
langchain-core=0.1.52
openai=1.83.0 # API 调用需要

角色-模型分配

角色 推荐模型 理由
架构师 deepseek-reasoner 推理最强,适合复杂设计
程序员 kimi-k2.5 / deepseek-chat 代码生成质量好
测试员 deepseek-chat 平衡稳定
审查员 kimi-k2.5 长上下文,能看全文件 |

本地备用(断网/测试)

1
2
3
4
5
# 内存紧张时用 7B
llm = Ollama(model="qwen2.5-coder:7b") # ~4.5GB

# 内存充足时用 14B(M3 18GB 极限)
llm = Ollama(model="qwen2.5-coder:14b") # ~9GB

关键经验总结

  1. 版本锁定:crewai 0.35 是目前最稳定的本地模型版本
  2. 模型选择:7B 只能跑通流程,生产用必须上 API
  3. 状态保存:每个 Agent 完成立即写文件,支持断点续跑
  4. 内存管理:M3 统一内存看”联动内存”,不是进程 RSS
  5. API 策略:DeepSeek 性价比高,Kimi 上下文长,组合使用