15-王牌超能力-代码解释器与无头浏览器
15|王牌超能力:代码解释器与无头浏览器
概述
为Agent装载三大王牌超能力:文件操作、代码解释器(Code Interpreter)和无头浏览器(Headless Browser),让Agent从”聊天机器人”升级为”数字白领”。
核心概念
1. 三大王牌超能力
| 能力 | 说明 | 核心价值 |
|---|---|---|
| 文件操作 | 读取、写入、局部编辑(Diff) | 精准修改大文件,不复写全文 |
| 代码解释器 | 自主编写Python代码并执行 | 处理复杂数学、数据清洗、图表生成 |
| 无头浏览器 | 自主打开网页、点击、截图 | 无API时抓取数据、视觉分析 |
2. 安全风控:绝不能裸奔!
毁灭性风险:
- 幻觉生成
rm -rf *,系统瞬间灰飞烟灭 - Prompt Injection攻击,下载恶意脚本,沦为”肉鸡”
解决方案:沙盒(Sandbox)隔离技术
3. AIO-Sandbox架构
开源方案:AIO-Sandbox,利用Docker容器隔离出独立环境
沙盒特性:
- Agent可在沙盒里肆意妄为写代码、装依赖、甚至搞崩溃系统
- 重启Docker容器即可恢复如初
- 通过MCP协议将沙盒工具暴露给外层Agent
沙盒工具库(33+工具):
sandbox_browser_screenshot:屏幕截图browser_click/browser_scroll:点击和滚动browser_get_clickable_elements:获取可交互元素sandbox_execute_code:执行Python/JS代码sandbox_execute_bash:执行Shell命令sandbox_file_operations:文件读写
4. 代码实战:阿里股票早报
任务:撰写基于真实数据的阿里巴巴港股早盘报告
Agent能力调度:
- 写Python代码调用Yahoo Finance获取K线数据
- 唤醒无头浏览器百度搜索最新舆情
- 结合量化分析与舆情计算输出
完整代码:https://github.com/kid0317/crewai_mas_demo/blob/main/m2l10/m2l10_sandbox.py
quant_analyst = Agent(
role="全能金融数据与舆情分析师",
goal="使用代码抓取真实金融数据并进行量化分析,结合浏览器检索舆情,输出投资早报",
backstory="精通Python和金融量化分析,需要数据时优先写代码抓取,需要舆情时熟练操作浏览器",
mcp_servers=[MCPServerHTTP(url="http://localhost:8022")], # 挂载沙盒
llm=aliyun_llm,
)
关键要点
- Bash is All You Need:Claude Code底层只有4个工具(read/write/edit/bash),但bash能完成任何任务
- 沙盒是必选项:绝不允许在宿主机上直接赋权Agent运行代码
- 工具优先级:代码调用API > 专业搜索工具 > 浏览器硬爬
- 预置依赖:Docker镜像中预装pandas/requests/bs4等,避免反复pip install
- 强模型要求:复杂代码逻辑和浏览器交互对模型智商要求极高,小参数模型会疯狂撞墙
实践示例
沙盒MCP挂载
from crewai.mcp import MCPServerHTTP
from crewai.mcp.filters import create_static_tool_filter
# 白名单过滤,只暴露需要的工具
SANDBOX_TOOL_FILTER = create_static_tool_filter(
allowed_tool_names=[
"sandbox_execute_bash",
"sandbox_execute_code",
"sandbox_file_operations",
"sandbox_browser_screenshot",
"browser_click",
"browser_scroll",
]
)
sandbox_mcp = MCPServerHTTP(
url="http://localhost:8022/mcp",
tool_filter=SANDBOX_TOOL_FILTER,
)
复杂任务定义
task = Task(
description="""
作为阿里巴巴港股个人工作助理,完成早盘报告:
1)使用沙盒的浏览器和代码执行能力,获取阿里港股最新行情和30日K线数据
2)用Python在沙盒中进行量化分析(涨跌幅、K线形态、支撑位)
3)通过浏览器检索阿里最新新闻资讯(百度搜索)
4)整合分析与舆情,撰写可直接发送的分析报告
""",
expected_output="符合AlibabaMorningReport Pydantic模型的JSON数据",
agent=quant_analyst,
)
常见问题/坑点
| 反模式 | 后果 | 解决方案 |
|---|---|---|
| 主机裸奔 | rm -rf *或恶意脚本直接摧毁系统 | 必须用Docker沙盒隔离 |
| stdout污染 | 代码夹杂Log或忘记print,Agent拿到乱码 | 清理输出,确保关键信息print到stdout |
| 生吞HTML | 直接把Raw HTML丢给模型,Token爆炸 | 用bs4解析提取关键信息 |
| 忽视异步渲染 | SPA页面立即抓取,只能拿到loading空壳 | 等待页面加载完成再抓取 |
| 小模型硬上 | 规划复杂逻辑失败,疯狂报错 | 使用足够强的模型(Claude 3.5+/GPT-4+) |
关联知识
- 14-MCP协议-标准化定义工具接口:MCP协议与沙盒集成
- 16-Skills生态-让Agent接入大量工具:Skills设计哲学
- 17-项目实战2-能力篇-XiaoPaw飞书本地工作助手:沙盒在真实项目中的应用
参考资源
- 沙盒工具列表:https://github.com/kid0317/crewai_mas_demo/blob/main/m2l10/m2l10_mcp_tools.md
- 阿里股票实战代码:https://github.com/kid0317/crewai_mas_demo/blob/main/m2l10/m2l10_sandbox.py
- AIO-Sandbox项目:https://github.com/hughcrt/aio-sandbox
学习时间
- 课程时长:36:40
- 笔记整理:2026-04-10
状态
- 课程学习
- 沙盒环境搭建
- 代码解释器实践
- 无头浏览器抓取
下次复习日期
2026-04-17