☰
OpenWork 开源版 Claude Cowork 深度解析:从原理到实战,手把手教你搭建本地AI协作系统
2026/9/27 12:47:45 网站建设 项目流程

1. 为什么要在本地搭一套 AI 协作系统

OpenWork 是一个开源、可扩展、本地优先的 AI 协作系统,定位是 Claude Cowork 的开源替代方案。它能做什么?简单说,你给它一个目标,它会自己拆解步骤、调用工具、读写你授权的文件夹,最后把结果汇报给你。适合谁?适合三类人:一是对数据隐私敏感、不想把本地文件交给云端处理的开发者;二是想控制成本、不愿每月掏一百多美元订阅费的个人和小团队;三是想研究 AI Agent 架构、需要一套可读可改源码的技术爱好者。

Claude Cowork 的思路确实吸引人,但它有几个现实门槛:订阅费用高、文件内容要上传云端处理、平台锁定在 macOS 且只能绑定 Anthropic 自家模型。OpenWork 把这几件事反过来做——源码开放、文件操作在本地完成、支持接入多家模型提供商。它的核心引擎是 OpenCode,一个客户端-服务器架构的开源 AI 编码代理,OpenWork 本质上是给这套引擎套了一个图形化外壳,把终端命令变成点击操作。

不过,真正落地时会遇到一个绕不开的环节:模型 API 通道。OpenWork 本身不提供模型,你得自己接一个能稳定调用 Claude、GPT 等模型的入口。这篇就围绕这条链路,从架构原理讲到 config.toml 和 settings.json 的配置骨架,再到用 CC Switch 接入 TaoToken 统一 Key 通道,最后跑通一次本地协作验证。全程可复制,跟着做就行。

2. 前置准备:TaoToken 统一 Key 与 API 通道

在动手改配置之前,先把模型通道这件事理清楚。OpenWork 通过 OpenCode 引擎调用模型,而 OpenCode 支持自定义 base URL 和 API Key。这意味着你可以把请求指向一个统一的 API 网关,而不是在每个工具里分别填不同厂商的密钥。

TaoToken 在这里扮演的就是统一通道的角色。它提供兼容主流模型接口的 API 地址,你只需要一个 Key,就能在 OpenWork、CC Switch 以及其他编码工具之间复用同一套凭证。这样做的好处很直接:换工具不用重新申请密钥,额度集中管理,排查问题时也只需要盯一个入口。

你需要先拿到两样东西:一个是 API Key,一个是 API 基础地址。Key 在控制台的 API Keys 页面创建,地址使用https://taotoken.net/api。注意这个地址后面不加任何多余路径,OpenCode 和 CC Switch 都会在这个基础上拼接具体的接口端点。

创建 Key 的入口在这里:

控制台 API Keys:https://taotoken.net/console/api-keys?utm_source=taotoken_aicg_blog_end&utm_content=api_keys&utm_campaign=rewrite

拿到 Key 之后先别急着填进配置文件,建议在终端里用一条 curl 验证通道是否通。这一步能帮你排除掉大部分"配置没错但就是不通"的玄学问题。验证命令在第四节给出,这里先把 Key 妥善保存,后面 config.toml 和 settings.json 都要用到同一个值。

如果你后续打算长期跑编码类任务或 Agent 工作流,可以顺带了解一下 Coding Plan,它针对高频调用场景做了额度优化:

Coding Plan:https://taotoken.net/coding-plan?utm_source=taotoken_aicg_blog_end&utm_content=coding_plan&utm_campaign=rewrite

3. 可复制配置:config.toml 与 settings.json 骨架

OpenWork 的配置分两层:OpenCode 引擎层用config.toml,OpenWork 应用层用settings.json。两层各管各的,别混在一起写,否则会出现"应用读到了但引擎没生效"的情况。

先看引擎层的config.toml。这个文件通常放在~/.config/opencode/config.toml,如果你用的是自定义目录,以实际安装路径为准。核心是声明一个 provider,把 base URL 指向 TaoToken,模型名按你实际要用的填:

# ~/.config/opencode/config.toml # OpenCode 引擎配置:统一走 TaoToken 通道 [provider.taotoken] name = "taotoken" base_url = "https://taotoken.net/api" api_key_env = "TAOTOKEN_API_KEY" [provider.taotoken.models.claude-sonnet] name = "claude-sonnet" context_window = 200000 [provider.taotoken.models.gpt-4o] name = "gpt-4o" context_window = 128000 [agent.default] provider = "taotoken" model = "claude-sonnet"

这里有个细节值得说:api_key_env指向的是环境变量名,而不是把 Key 明文写进文件。这样做的好处是配置文件可以安全地提交到版本库或分享给同事,密钥通过环境变量注入。设置环境变量的命令:

# 写入 shell 配置,重启终端后生效 echo 'export TAOTOKEN_API_KEY="你的Key"' >> ~/.zshrc source ~/.zshrc # 验证变量已生效 echo $TAOTOKEN_API_KEY

再看应用层的settings.json。这个文件一般在~/.config/openwork/settings.json,负责 OpenWork 界面侧的默认行为,比如默认工作区、默认 provider、权限策略:

{ "defaultProvider": "taotoken", "defaultModel": "claude-sonnet", "workspaceRoot": "/Users/yourname/Projects", "permissionMode": "ask", "autoApprove": { "read": true, "write": false, "shell": false }, "server": { "mode": "host", "port": 4096 } }

permissionMode设为ask表示敏感操作弹窗确认;autoApprove里把read设为 true 可以减少读文件时的打扰,但write和shell保持 false,避免 AI 在你没注意时改动文件或执行命令。这个组合是我实测下来比较稳的起点。

两个文件都改完后,检查一下 JSON 和 TOML 的语法。JSON 不允许尾随逗号,TOML 的 section 名不能重复,这两处是最容易手滑的地方。

4. 用 CC Switch 接入并验证请求

CC Switch 是一个用来在多个模型通道之间切换的配置管理工具,它能把 TaoToken 的 Key 和地址统一注入到不同工具的环境里。如果你同时用 OpenWork、命令行工具和其他编辑器插件,用 CC Switch 管一套配置会省很多事。

先安装 CC Switch,然后添加一个 provider 条目,字段和 config.toml 里保持一致:

# 添加 TaoToken 通道 cc-switch add taotoken \ --base-url "https://taotoken.net/api" \ --api-key "$TAOTOKEN_API_KEY" # 设为当前激活通道 cc-switch use taotoken # 查看当前配置 cc-switch current

cc-switch current应该输出类似下面的内容,确认 base URL 和 Key 都已写入:

Active provider: taotoken Base URL: https://taotoken.net/api API Key: sk-****(已脱敏)

接下来做通道验证。先用 curl 直接打一次接口,确认 Key 和地址没问题:

curl -s https://taotoken.net/api/v1/messages \ -H "Authorization: Bearer $TAOTOKEN_API_KEY" \ -H "Content-Type: application/json" \ -d '{ "model": "claude-sonnet", "max_tokens": 64, "messages": [{"role": "user", "content": "回复两个字:通了"}] }'

如果返回里包含正常的文本内容,说明通道是通的。如果返回 401,检查 Key 是否复制完整;返回 404,检查 base URL 有没有多写或少写路径。

通道验证通过后,启动 OpenWork 做一次端到端验证。打开应用,选择 Host 模式,指定一个测试文件夹作为工作区,输入一个简单任务,比如"列出当前目录下所有文件名,并统计数量"。观察右侧时间线面板,你应该能看到 AI 制定计划、调用读取工具、返回结果这一整套流程。如果卡在权限弹窗,点允许继续。

想单独验证模型对话是否正常,可以直接用模型对话入口测一条:

模型对话:https://taotoken.net/models?utm_source=taotoken_aicg_blog_end&utm_content=models&utm_campaign=rewrite

5. 本篇常见错误排查

配置这条链路时,报错基本集中在几个固定位置。下面按现象归类,方便你对号入座。

报错一:provider not found: taotoken

说明 config.toml 里的 section 名和 settings.json 里的defaultProvider对不上。TOML 里写的是[provider.taotoken],那 JSON 里就必须是"taotoken",大小写和拼写都要一致。改完记得重启 OpenWork,配置不会热加载。

报错二:401 Unauthorized

Key 没生效。先确认环境变量在当前终端里能打印出来,再确认 OpenWork 是从哪个终端启动的——如果你在 A 终端设了变量,却从 B 终端启动应用,B 是读不到的。最稳妥的做法是把 export 写进 shell 配置文件并重新登录。

报错三:404 Not Found或路径重复

base URL 写成了https://taotoken.net/api/v1之类带后缀的形式。正确写法就是https://taotoken.net/api,具体端点由工具自己拼接。多写一段路径就会导致请求打到不存在的地址。

报错四:连接超时

先确认网络能正常访问该地址,用 curl 测一次。如果 curl 通但 OpenWork 不通,检查 settings.json 里的server.port是否被其他进程占用,换一个端口再试。

报错五:AI 一直转圈不返回

多半是模型名写错了。config.toml 里的models子项名称要和实际调用的模型标识匹配,别自己造名字。可以先在模型对话页面确认该模型可用,再回填到配置里。

报错六:权限弹窗反复出现

autoApprove配置没生效,或者你改的是错误的 settings.json 路径。用ls ~/.config/openwork/确认文件确实存在,改完后完全退出应用再重启。

6. 把这条链路用起来

配置跑通只是起点。真正让这套本地 AI 协作系统产生价值的,是把它嵌进你日常的工作流里。我的建议是先从单一场景切入,比如固定用它整理某个项目的文档,或者处理一批格式统一的文件。跑顺之后再逐步加技能包、存模板,把重复任务沉淀下来。

统一 Key 通道这件事,越早做越省心。工具会换、模型会更新,但入口收敛成一个之后,迁移成本就低很多。需要管理密钥或查看额度时,从这里进:

API Keys:https://taotoken.net/api-keys?utm_source=taotoken_aicg_blog_end&utm_content=api_keys&utm_campaign=rewrite

接入细节和参数说明以官方文档为准:

接入文档:https://taotoken.net/doc?utm_source=taotoken_aicg_blog_end&utm_content=doc&utm_campaign=rewrite

如果你主要用 Claude 系列做编码,ClaudeCodeAnthropic 这条通道的配置方式也值得看一眼,字段结构和本篇基本一致:

ClaudeCodeAnthropic:https://taotoken.net/claude-code-anthropic?utm_source=taotoken_aicg_blog_end&utm_content=claude_code&utm_campaign=rewrite

最后留一个实操小技巧:把 config.toml 和 settings.json 都纳入你的 dotfiles 仓库管理,但 Key 只走环境变量。这样换机器时克隆仓库、设一次变量就能恢复整套环境,不用再翻控制台找密钥。

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询