用智谱
GLM-4.7 + Composio 打造本地化 Cowork 开发环境
1.
前言:为什么要做这次“心脏移植”?
最近想玩玩 cowork ,但是 Anthropic 中只有 Pro 和 Max
用户可以使用。因此在考虑用其他方式平替,刚好发现
open-claude-cowork
这个开源项目,它提供了一个非常棒的 Electron 客户端,能让你像用 IDE
一样开发 AI Agent。但是,它默认绑定了 Claude 的 API。
这就引出了今天的实战目标 :
借助国产的 智谱 GLM-4.7 ,同时保留强大的
Composio 工具集成能力?进而实现一个本地化的
Cowork工具。
今天就带大家手把手完成这次“本地化手术”。下面是实现后的效果:
2. 准备工作
在动手术前,我们需要准备好手术台和工具。
2.1 必需软件
没啥特别的,标准的前端环境:
Node.js : v18 以上(硬性要求)
npm : 随 Node 安装
2.2 必需账号
我们需要两个服务的“入场券”:
智谱 AI (GLM) : 我们的新“心脏”。
Composio : 我们的“机械臂”(负责调用外部工具)。
注册地址
费用:免费版每月 20K 调用,个人开发足够了。
3. 实战开始:四步完成替换
3.1 第一步:克隆项目与安装
先把项目拉下来,这是 open-claude-cowork 的底座。
1 2 3 4 5 6 7 8 9 # 1. 克隆项目 git clone [https://github.com/ComposioHQ/open-claude-cowork.git](https://github.com/ComposioHQ/open-claude-cowork.git) cd open-claude-cowork # 2. 安装外层依赖(Electron 客户端) npm install # 3. 安装内层依赖(后端服务) cd server && npm install && cd ..
3.2 第二步:配置“新心脏” (GLM)
这是最关键的一步。我们需要通过环境变量告诉系统:“嘿,别去连 Anthropic
了,去连智谱”。
复制配置文件:
编辑 .env 文件,注意看这里的 Base
URL ,这是能够“欺骗”客户端使用 GLM 的关键:
1 2 3 4 5 6 7 8 9 10 # ===== 智谱 AI 配置 ===== # 关键点:使用智谱提供的 Anthropic 兼容接口 ANTHROPIC_BASE_URL=[https://open.bigmodel.cn/api/anthropic](https://open.bigmodel.cn/api/anthropic) # 填入你的智谱 API Key (格式如 49b2...Br) ANTHROPIC_API_KEY=你的智谱API密钥 # 模型指定为最新的 GLM-4.7 ANTHROPIC_DEFAULT_MODEL=glm-4.7 # ===== Composio 配置 (可选,建议配上) ===== COMPOSIO_API_KEY=你的Composio密钥
3.3 第三步:修复代码逻辑
(防奔溃补丁)
原项目的代码有点“轴”,如果你没配 Composio 的
Key,后端启动时会直接报错奔溃。为了让它更健壮,我们需要修改一下
server/server.js。
找到 server/server.js 约第 105
行附近:
我们将原有的逻辑替换为下面的防御性代码 。这段代码的核心逻辑是:只有当
API Key 存在且有效时,才去初始化
Composio,否则就优雅地跳过,而不是报错。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 // 修改 server/server.js try { let mcpServers = {}; let composioSession = composioSessions.get(userId); // 1. 校验 Key 是否有效(过滤掉默认的占位符) const isValidApiKey = process.env.COMPOSIO_API_KEY && process.env.COMPOSIO_API_KEY !== 'your-composio-api-key-here' && !process.env.COMPOSIO_API_KEY.startsWith('your-'); // 2. 只有 Key 有效且 Session 不存在时,才初始化 if (isValidApiKey && !composioSession) { console.log('[COMPOSIO] Creating new session for user:', userId); res.write(`data: ${JSON.stringify({ type: 'status', message: 'Initializing Composio session...' })}\n\n`); try { composioSession = await composio.create(userId); composioSessions.set(userId, composioSession); // 更新 OpenCode 配置 updateOpencodeConfig(composioSession.mcp.url, composioSession.mcp.headers); mcpServers = { composio: { type: 'http', url: composioSession.mcp.url, headers: composioSession.mcp.headers } }; } catch (error) { console.log('[COMPOSIO] Init failed, continuing without tools:', error.message); } } else if (!isValidApiKey) { console.log('[COMPOSIO] Skipping Composio (No valid API Key)'); } // ... 后续代码保持不变
3.4 第四步:启动双服务
这个项目是 前后端分离
的架构,所以需要开两个终端窗口。
终端 1 (后端服务):
1 2 cd server && npm start # 看到 "Backend server running on http://localhost:3001" 代表成功
终端 2 (客户端 UI):
1 2 npm start # Electron 窗口会自动弹出
4. 效果验证:它能干什么?
启动后,你面对的是一个看似普通的聊天窗口,但背后已经是
GLM-4.7 + 500种工具 的完全体了。
4.1 基础测试:身份验证
问它:“你是谁?”
如果它回答“我是 Claude...”,别担心,这是因为系统提示词里写死了。
关键看后台日志,如果请求发往了
open.bigmodel.cn,说明替换成功!
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 你好!让我来介绍一下自己: 🤖 我是谁 我是 Claude,由 Anthropic 开发的 AI 助手。我可以通过 Claude Code 这个 CLI 工具与你交互,帮助你完成各种编程和日常任务。 💡 我的核心功能 1. 代码开发与编辑✍️ 编写代码 - 支持各种编程语言(Python、JavaScript、TypeScript、Go、Rust 等) 📝 编辑文件 - 读取、修改、创建项目文件 🔍 代码搜索 - 使用 Grep/Glob 快速查找代码和文件 🐛 调试问题 - 分析错误、修复 bug 2. 项目操作📂 探索代码库 - 理解项目结构和架构 🏗️ 实现新功能 - 设计并添加新模块、API、组件 🔄 重构代码 - 优化现有代码结构 📋 任务管理 - 使用 TodoList 跟踪多步骤任务 3. Git 与版本控制🔀 Git 操作 - 提交代码、创建分支、查看状态 📌 创建 Pull Request - 自动生成 PR 描述 📜 查看历史 - 浏览提交记录和变更 4. 终端与命令执行⚡ 运行命令 - 执行 bash 命令(npm、git、docker 等) 🧪 运行测试 - 执行单元测试、集成测试 🔨 构建项目 - 编译、打包项目 5. 智能代理🤖 子代理系统 - 可启动专门的代理处理复杂任务 📚 通用研究 - 搜索信息、分析问题 🗺️ 架构规划 - 为复杂功能设计实现方案 🌍 网页搜索 - 获取最新信息(如刚才的 iPhone 价格查询) 6. 其他能力📊 读取图片/PDF - 支持多模态内容理解 📓 Jupyter Notebook - 编辑 .ipynb 文件 🖼️ 图片分析 - 分析远程 URL 图片 🌐 网页抓取 - 读取网页内容 🎯 我可以帮你做什么? 编程相关 - "帮我实现用户登录功能" - "修复这个 bug: xxx" - "重构这段代码" - "写一个 Python 脚本处理数据" - "解释这段代码的作用"项目管理 - "创建一个 git commit" - "查看项目结构" - "搜索所有包含 'config' 的文件" - "运行测试"信息查询 - "搜索最新的 React 文档" - "查找 Python 如何处理日期" 💡 特点 🔐 安全优先 - 执行危险操作前会询问你 📋 任务追踪 - 自动管理复杂任务列表 🤝 协作模式 - 遇到模糊需求会主动询问 🧠 上下文记忆 - 记住对话中的信息 有什么我可以帮你的吗? 😊
4.2 进阶测试:联网搜索
(WebSearch)
输入:“帮我搜索一下最新的 iPhone 16价格。”
幕后流程 :
GLM 判断需要联网。
调用 Composio 的 WebSearch 工具。
Composio 抓取 Google/Bing 结果。
GLM 总结结果并返回给你。
4.3 高级测试:本地文件操作 (File
Edit)
输入:“在当前目录创建一个 hello_glm.py,内容是打印 1 到
100 的斐波那契数列。”
幕后流程 :
GLM 生成 Python 代码。
调用 Write 工具将代码写入你本地硬盘。
你可以在文件夹里直接看到这个文件!
5. 架构原理解析
为了让大家更清楚我们到底改了哪里,我画了一张架构图:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 graph TD subgraph Client [Electron 客户端] UI[聊天界面 UI] Renderer[渲染进程] end subgraph Server [本地后端 :3001] Express[Express Server] SDK[Claude Agent SDK] subgraph Tools [工具集] Builtin[内置工具: 读/写/Bash] Composio[Composio 工具路由] end end subgraph Cloud [云端服务] GLM[智谱 GLM-4.7 API] External[外部服务: GitHub/Gmail/Search] end UI -->|HTTP/SSE| Express Express -->|调用| SDK SDK -->|替换为| GLM SDK -->|Tool Call| Tools Composio -->|OAuth/API| External style GLM fill:#f96,stroke:#333,stroke-width:2px style SDK fill:#bbf,stroke:#333,stroke-width:2px
我们可以看到,Claude Agent SDK
是中间层,我们通过修改 Base
URL,成功地对其进行了“欺骗”,接入了智谱的模型,同时保留了右侧强大的工具能力。
6. 避坑指南 (FAQ)
在实战中,你可能会遇到这几个坑,我都替你踩过了:
Q: 启动报 EADDRINUSE: 3001?
A : 上次关闭没关干净。终端运行
lsof -ti:3001 | xargs kill -9 杀掉进程。
Q: 智谱 API 报 401 错误?
A : 检查 .env 里的 Key
是不是智谱的(格式有点号),别填成了 Anthropic 的 Key。
Q: 为什么 Gmail 工具用不了?
A : 第一次使用敏感工具(GitHub/Gmail等),Composio
会在浏览器弹出一个 OAuth 授权窗口,你需要登录并授权。
7. 彩蛋:一键启动脚本
每次都要开两个终端太麻烦?我写了一个 Shell 脚本
occ,放在 ~/.local/bin/ 下即可一键启动:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 #!/bin/bash # 保存为 occ 并赋予执行权限 chmod +x occ PROJECT_DIR="$HOME/path/to/open-claude-cowork" # 改成你的路径 # 1. 启动后端 (后台运行) if ! lsof -ti:3001 > /dev/null; then echo "🚀 启动后端服务..." cd "$PROJECT_DIR/server" && npm start > /dev/null 2>&1 & sleep 3 # 等待启动 fi # 2. 启动前端 echo "🖥️ 启动客户端..." cd "$PROJECT_DIR" && npm start
结语
通过这次改造,我们成功拥有了一个
低延迟、低成本、高扩展性 的本地 AI Agent
开发环境。无论是用来做代码辅助,还是自动化任务流,体验都非常棒。
如果你在配置过程中遇到问题,欢迎在评论区留言,我们一起 debug!Happy
Hacking! 👨💻