在提供给代理更多自主权和灵活性的同时,减少了98%的令牌消耗。
⚠️ 重要提示:保持此仓库为私有
此实现将OAuth凭证存储在
./mnt/mcp-creds/中,这些凭证当前已提交到仓库。Agencii平台即将推出适用于MCP服务器的正确OAuth流程。在此之前,请确保您的仓库可见性设置为私有以保护您的凭证。
此实现遵循Anthropic的MCP代码执行模式,其中代理编写代码与MCP服务器交互,而不是直接调用工具。代理通过探索文件系统来发现工具,并仅加载每个任务所需的内容。
传统的MCP(直接工具调用):
代码执行模式:
销售运营代理
├── IPythonInterpreter(代码执行)
├── PersistentShellTool(文件发现)
└── MCP服务器(作为代码API)
├── servers/notion/(15个工具)
│ ├── search.py
│ ├── fetch.py
│ └── ...(其他工具)
└── servers/gdrive/(4个工具)
├── search.py
├── read_file.py
├── read_sheet.py
└── update_cell.py
git clone <your-repo>
cd code-exec-agent
# 创建虚拟环境
python -m venv venv
source venv/bin/activate # 在Windows上:venv\Scripts\activate
# 安装依赖项
pip install -r requirements.txt
添加到.env:
OPENAI_API_KEY=your-openai-key
# Google Drive(必需)
GDRIVE_CREDENTIALS_JSON={"installed":{"client_id":"...","client_secret":"...","redirect_uris":["http://localhost"]}}
# Notion(通过mcp-remote使用OAuth - 自动配置)
获取Google Drive凭证:
GDRIVE_CREDENTIALS_JSONnpx @isaacphi/mcp-gdrive
# 在浏览器中跟随OAuth流程
# 在“设置自动令牌刷新”后按Ctrl+C
python agency.py
任务: 将Google文档中的转录内容添加到Notion页面
将此Google文档中的转录内容 https://docs.google.com/document/d/YOUR_DOC_ID
添加到此Notion页面 https://www.notion.so/YOUR_PAGE_ID
过程:
./mnt/skills/是否有现有技能servers/gdrive/read_file.pyservers/notion/update_page.pyfrom servers.gdrive import read_file
from servers.notion import update_page
# 读取转录内容(保留在执行环境中)
transcript = await read_file(fileId="YOUR_DOC_ID")
# 更新Notion页面
await update_page(data={
"page_id": "YOUR_PAGE_ID",
"command": "replace_content",
"new_str": transcript
})
按照以下步骤工作流程使用Cursor的AI命令:
创建一个具有2个内置工具的销售运营代理:IPythonInterpreter和PersistentShellTool
为什么选择这些工具:
IPythonInterpreter - 执行带有顶级await的代码PersistentShellTool - 发现文件并读取工具定义/mcp-code-exec
向销售运营代理添加以下mcp服务器:
https://developers.notion.com/docs/get-started-with-mcp
https://github.com/isaacphi/mcp-gdrive
这会做什么:
servers/notion/,包含15个工具文件servers/gdrive/,包含4个工具文件server.py/write-instructions @sales_ops.py
主要角色:执行团队的操作任务
商业目标:提高效率
过程:
1. 在./mnt/skills文件夹中发现技能
2. 如果匹配任务,则使用技能
3. 如果没有发现技能,则仅读取必要的工具文件
4. 在IPythonInterpreter中导入和组合工具
5. 建议新增技能
保持这些指令简短。不要添加MCP使用示例或列出所有MCP。代理应自主发现它们。
代理还应通过尽可能少地调用工具并仅读取完成任务所需的工具文件来最小化令牌消耗。
输出:总结 + 技能建议
关键工作流程要点:
./mnt/skills/如果您看到认证错误:
我添加了密钥,请重新测试Google Drive工具,确保每个工具都准备好生产
然后进行认证:
npx @isaacphi/mcp-gdrive
# 本地测试
python agency.py
# 部署到Agency Swarm平台
git push origin main
# 转到platform.agency-swarm.ai
# 从仓库创建新的代理
# 添加环境变量
用户:将转录内容添加到Notion
代理 → MCP:gdrive.read_file(docId)
MCP → 代理:[完整的50KB转录内容在上下文中]
代理 → MCP:notion.update_page(pageId, transcript)
[代理再次重写完整的50KB转录内容]
结果:消耗32,000个令牌
用户:将转录内容添加到Notion
代理 → Shell:ls ./mnt/skills/
代理 → Shell:cat servers/gdrive/read_file.py
代理 → IPython:
from servers.gdrive import read_file
from servers.notion import update_page
transcript = await read_file(fileId="...")
await update_page(data={...})
结果:首次运行12,00-00个令牌,使用技能后4,000个令牌
而不是一开始就加载所有19个工具:
# 传统:所有工具立即加载
✗ 150K令牌 - 上下文中所有19个工具的完整定义
# 代码执行:按需加载
✓ 2K令牌 - 列出目录查看可用工具
✓ 仅读取当前任务所需的2个文件
代理构建自己的可重用函数库:
./mnt/skills/
├── copy_gdrive_to_notion.py
├── export_sheet_to_csv.py
└── search_and_email_results.py
技能跨越聊天会话持久存在。每次完成任务都是创建新技能的机会。
测试任务: 将Google文档中的转录内容复制到Notion页面
| 方法 | 首次运行 | 使用技能 | 减少量 |
|---|---|---|---|
| 直接MCP | 32K令牌 | 32K令牌 | - |
| 代码执行 | 12K令牌 | 4K令牌 | 88% |
✅ 使用代码执行模式:
❌ 使用传统MCP:
代理对每个任务遵循以下过程:
1. 检查技能
└─ ls ./mnt/skills/
└─ 如果找到匹配项 → 执行技能 → 完成
2. 确定所需工具
└─ 根据任务:Notion?Drive?两者?
3. 仅读取必要工具
└─ cat servers/notion/fetch.py
└─ cat servers/gdrive/read_file.py
└─ 不要读取server.py或其他文件
4. 在代码中组合工具
└─ 在IPythonInterpreter中编写Python代码
└─ 直接使用await(启用顶级await)
5. 建议新技能
└─ 分析工作流程
└─ 提出可重用函数
└─ 保存到./mnt/skills/
内容操作:
search() - 在工作区中进行语义搜索fetch() - 获取页面/数据库详情create_pages() - 创建新页面update_page() - 更新属性/内容move_pages() - 移动到新父级duplicate_page() - 复制页面数据库操作:
create_database() - 使用模式创建update_database() - 更新模式评论:
create_comment() - 添加评论get_comments() - 获取所有评论工作区:
get_teams() - 列出团队get_users() - 列出用户list_agents() - 列出自定义代理get_self() - 获取机器人信息get_user() - 获取特定用户Drive:
search() - 搜索文件read_file() - 读取内容Sheets:
read_sheet() - 读取电子表格update_cell() - 更新单元格值code-exec-agent/
├── sales_ops/ # 主代理
│ ├── sales_ops.py # 代理配置
│ ├── instructions.md # 代理提示(性能的关键)
│ └── tools/ # 内置工具(空 - 使用框架)
├── servers/ # 作为代码的MCP服务器
│ ├── notion/
│ │ ├── server.py # 连接管理
│ │ ├── __init__.py # 导出所有工具
│ │ ├── search.py # 单个工具
│ │ └── ... (15个工具)
│ └── gdrive/
│ ├── server.py
│ ├── __init__.py
│ └── ... (4个工具)
├── mnt/
│ ├── skills/ # 代理创建的可重用函数
│ └── mcp-creds/ # OAuth令牌(自动管理)
├── agency.py # 入口点
├── .env # 凭证
└── requirements.txt
问题: 代理读取server.py、README.md等。
解决方案: 更新instructions.md:
**不要** 读取任何其他工具、README或服务器文件,以避免额外的令牌消耗。
仅读取您为特定任务所需的内容。
问题: 部署后OAuth/认证不起作用。
解决方案:
./mnt/mcp-creds/或者
问题: 没有启用持久存储,因此技能不会被保存。
解决方案:
python agency.py
平台优势:
./mnt/存储(技能保留)✅ 如果满足以下条件则准备就绪:
⚠️ 不推荐用于:
这是一个代码执行模式的参考实现。欢迎改进:
MIT