1. 从“会聊天”到“能办事”:OpenClaw 网络能力到底解决了什么问题
很多人第一次用 OpenClaw 这类个人 AI 助手时,都会经历一个心理落差:前几天配好 SOUL.md、调好性格、聊得挺开心,但真到干活的时候,它还是只会“给建议”。你问它“今天有什么重要邮件”,它回你一段“你可以打开 Gmail 查看收件箱,建议按发件人筛选……”——这不叫助手,这叫说明书。
问题的根子不在模型智商。同一个模型,接上 Gmail、Calendar、Web Search、Playwright 浏览器之后,行为会完全不同:它会真的去拉你的邮件、真的去查你的日程、真的打开一个网址把页面内容读回来。OpenClaw 的网络能力,本质上是给 LLM 装上一套“触达现实世界的手”,而 Skills 就是这套手的安装机制。
这篇文章面向三类人:一是已经在跑 OpenClaw、想从“聊天玩具”升级到“能办事工具”的个人用户;二是想把外部集成抽象成 Skill 的 Agent 开发者;三是单纯想搞清楚 OAuth 授权、Playwright 浏览器操作在个人助手场景里怎么落地的人。我会把可复制的 Skills 配置片段、OAuth 回调设置、Playwright 调用示例都摊开讲,每一步都给出验证动作,你照着做就能看到结果。
先明确一个判断标准:当你的助手能在一句话里串联 Gmail、Calendar、Web Search 三个系统,并且返回结构化结果时,它才算跨过了“玩具到工具”的分水岭。下面从 Skills 体系讲起,再逐个接入邮件、日历、搜索、浏览器,最后把安全边界和常见报错排干净。
2. OpenClaw Skills 体系与 gog 技能包:给助手装应用的正确姿势
OpenClaw 里所有外部能力都通过 Skills 提供。你可以把它理解成“给 AI 装 App”:模型是操作系统,Skill 是应用,工具调用(tool call)是应用暴露给系统的 API。这个类比很重要,因为它决定了你配置时的思路——你不是在写业务代码,你是在给一个已经有大脑的系统安装手脚。
四个核心技能的能力边界大致是这样:
| 技能 | 提供的能力 | 典型场景 | 敏感度 |
|---|---|---|---|
| Gmail | 读取、搜索、摘要、可选发送 | “今天有什么重要邮件” | 高(可读私密数据) |
| Google Calendar | 查询、创建、修改日程 | “下周三下午约个会” | 中高 |
| Web Search | 联网搜索与结果整合 | “最近 React 19 有什么变化” | 低 |
| Browser (Playwright) | 访问、解析、截图、交互 | “看下竞品定价页改没改” | 高(可操作网页) |
这些技能有几个共性设计要点,值得你在自研 Agent 时直接抄:统一的配置与调用方式,让 LLM 通过结构化工具调用来驱动;明确的能力边界,比如 Gmail Skill 会把“读取”和“发送”拆成不同权限;能在对话上下文中暴露可用技能,让模型自己决定何时调用。
其中最值得单独讲的是gog——一个把 Gmail、Google Calendar、Google Drive 打包在一起的 Google Workspace 技能包。它的价值在于:你只需要配置一套 OAuth 授权,就能一次性连通多种 Google 服务。如果你分别接三个 API,就要维护三套凭证、三次授权、三个刷新逻辑;gog 把它们收敛成一个授权入口,这是“抽象层”带来的真实收益。
安装命令很直接:
clawdhub install gog首次运行会引导你走浏览器 OAuth 流程,生成token.json。这个文件是长效凭证,后面所有 Google 服务的静默访问都靠它。注意:gog 的授权范围取决于你在 Google Cloud 里启用了哪些 API,所以下一步必须先回 Google Cloud 把 API 打开,否则授权拿到的 token 也访问不了对应服务。
3. 可复制配置:OAuth 客户端、credentials.json 与 gog 授权全流程
这一节是整篇最“动手”的部分。我按顺序给你可复制的配置片段和路径,你对着做即可。
3.1 Google Cloud 项目与 API 启用
打开 Google Cloud Console,新建项目(名字随意,比如My AI Assistant)。进入“API 和服务 → 库”,搜索并启用两个 API:Gmail API 和 Google Calendar API。如果你后面想用 Drive,再把 Google Drive API 也启用。这一步决定了你后续 OAuth 凭证能访问的范围。
3.2 创建 OAuth 客户端并落地 credentials.json
进入“API 和服务 → 凭证”,点击“创建凭证 → OAuth 客户端 ID”。应用类型选桌面应用(Desktop app)。创建后下载 JSON,重命名为credentials.json,放到 OpenClaw 工作目录:
mv ~/Downloads/client_secret_*.json ~/clawd/credentials.json chmod 600 ~/clawd/credentials.jsoncredentials.json是“换 token 的身份证”,真正的长效访问凭据会写入token.json。两者权限都要收紧,后面安全章节会展开。
3.3 gog 技能配置片段
gog 的配置通常落在 OpenClaw 的技能配置目录里。一个可参考的 JSON 片段如下(路径按你的实际工作目录调整):
{ "skills": { "gog": { "enabled": true, "credentialsPath": "~/clawd/credentials.json", "tokenPath": "~/clawd/token.json", "scopes": [ "https://www.googleapis.com/auth/gmail.readonly", "https://www.googleapis.com/auth/calendar" ], "services": { "gmail": { "sendEnabled": false }, "calendar": { "writeEnabled": true } } } } }这里有两个关键设计:scopes只勾选你真正需要的权限(读邮件 + 日历读写),sendEnabled: false明确关闭发信能力。这就是“权限最小化”在配置层的落地——即使 Skill 支持发邮件,你也先在配置里关掉,需要时再开。
3.4 OAuth 授权回调设置
桌面应用的 OAuth 回调通常是http://localhost加一个随机端口,Google 会自动处理。但如果你在服务器上跑 OpenClaw,没有本地浏览器,就需要手动完成回调。典型做法是:在本地机器上跑授权命令,把生成的token.json安全地传到服务器。
# 本地完成授权,生成 token.json gog auth login --credentials ~/clawd/credentials.json --token ~/clawd/token.json # 传到服务器(用 scp 或你信任的通道) scp ~/clawd/token.json user@your-server:~/clawd/token.json如果你用的是 TaoToken 这类统一接入层来管理模型调用,OAuth 授权和模型 Key 是两套独立凭证,不要混在一起存。模型侧的统一入口在 TaoToken API,而 Google 的 OAuth token 只属于 gog 技能本身。
3.5 验证授权是否成功
授权完成后,先做一次最小验证,别急着上复杂对话:
gog gmail list --max 3如果返回三封邮件的标题和发件人,说明 OAuth 链路通了。如果报invalid_grant或token has been expired or revoked,说明 token 没写对或授权被撤销,回到 3.4 重新授权。
4. 验证请求与成功结果:邮件、日历、搜索、Playwright 逐个跑通
配置完不等于能用,必须逐个技能验证。这一节给你每个技能的验证命令和预期结果。
4.1 Gmail:从列清单到帮你决策
在对话里直接说:
帮我看看 Gmail 今天有什么新邮件。一个理想的返回是这样的:
今天共 5 封新邮件: [重要] 合作方回复 —— 关于下周会议时间确认,需要你回复 GitHub —— Your repository has been starred Hetzner —— Invoice for July Newsletter —— This Week in AI 广告 —— 已自动忽略注意三个关键点:AI 做了“重要/次要/噪音”的初筛;找出“需要你行动”的那封并标记;对 Newsletter、广告自动降权。你得到的是“决策前摘要”,不是原始信息流。可以设一个每天早 8 点的定时任务,让它自动拉取并整理。
4.2 Google Calendar:自然语言操作日程
因为 gog 的授权已经覆盖 Calendar,只要你启用了 Calendar API,日历功能基本零额外配置。直接问:
明天有什么安排?返回示例:
明天(7 月 19 日 周六)的安排: • 10:00-11:00 产品讨论会(腾讯会议) • 14:30 牙医预约(提醒:别忘了带医保卡) • 无其他安排,下午可以 deep work。创建事件也一样:
帮我在下周三下午 3 点创建一个会议,主题是 "SEO 策略讨论",时长 1 小时。如果时间冲突,它会主动提醒并给修正建议。这把“打开日历 App → 找时间 → 建事件 → 调时间”压缩成一轮对话。
4.3 Web Search:打破模型知识的时间墙
以 Brave Search API 为例,先注册拿 Key,然后:
openclaw configure --section web按向导填入 Key,系统写入配置文件。验证:
搜索一下 "OpenClaw alternatives 2026"好的返回不是一串链接,而是聚合、去重、对齐后的自然语言总结,并给出“个人助手 vs 自主 Agent”的定位差异。搜索结果应该被视为模型的原材料,而不是终端用户的终点页面——这是 Skill 层设计的核心思路。
4.4 Playwright 浏览器:让 AI 像真实用户一样看网页
浏览器技能基于 Playwright,覆盖三类动作:访问 URL 并提取结构化内容、截图保存、执行点击/输入/滚动等交互。验证:
帮我打开 https://example.com 看看首页现在长什么样。返回会包含标题、主要结构、加载状态和截图路径。更实战的用法是竞品定价监控:打开页面、解析价格相关 DOM、与上次快照对比,给出“是否涨价/是否新增套餐”的结论。
一个可参考的 Playwright 调用片段(Skill 内部逻辑示意):
const { chromium } = require('playwright'); async function fetchPage(url) { const browser = await chromium.launch({ headless: true }); const page = await browser.newPage(); await page.goto(url, { waitUntil: 'networkidle' }); const title = await page.title(); const prices = await page.$$eval('.price', els => els.map(e => e.textContent.trim())); await page.screenshot({ path: 'snapshot.png', fullPage: true }); await browser.close(); return { title, prices }; }安全提醒:Browser Relay / CDP 只推荐在 localhost 或受控内网(如 tailnet)使用,强烈不建议暴露到公网,否则等于把浏览器的远程控制权交出去。
5. 本篇常见错排查:401、local proxy failed、reading choices、OAuth 报错对照
配置过程中最容易卡在几个固定报错上。我把真实遇到的错误和排查路径列出来,你对照着查。
5.1 401 Unauthorized
最常见的原因是模型侧 Key 或 OAuth token 失效。先分清是哪一层:如果是调用模型时报 401,检查你的 API Key 是否过期、是否带对了 Base URL。用 TaoToken 统一接入时,Base URL 填https://taotoken.net/api,Key 在 API Keys 页面 管理。如果是 gog 报 401,多半是token.json过期,重新走 3.4 的授权流程。
5.2 local proxy failed
这个报错通常出现在网络请求被本地代理拦截时。检查你的环境变量HTTP_PROXY/HTTPS_PROXY是否指向了一个已经关闭的代理端口。清掉这些变量再试:
unset HTTP_PROXY HTTPS_PROXY ALL_PROXY如果你在容器里跑,检查容器的网络模式是否允许出站。
5.3 reading choices / reading 'choices'
这是解析模型响应时的典型错误,意思是代码在读取response.choices时拿到了undefined。原因通常是:请求根本没成功(返回的是错误对象),或者你用的 SDK 版本和返回结构不匹配。排查顺序:先打印完整响应体,确认choices字段是否存在;再确认模型 ID 是否写对。Base URL + Key + Model ID 三件套必须同时正确,缺一个都会走到这个报错。
5.4 OAuth 相关报错
redirect_uri_mismatch:OAuth 客户端类型选错了,桌面应用不要手动配回调 URI。access_denied:授权时没勾选对应 scope,回 Google Cloud 检查 API 是否启用。invalid_grant:token 被撤销或过期,重新授权。
5.5 CC Switch / Cline MCP / Codex auth.json 场景
如果你在 CC Switch、Cline MCP 或 Codex 里配置 OpenClaw 相关能力,同样要写全三件套:Base URL、Key、Model ID。以 Codex 的auth.json为例:
{ "base_url": "https://taotoken.net/api", "api_key": "sk-你的Key", "model": "claude-sonnet-4-5" }Cline MCP 的配置则在 MCP servers 里指定 command 和 env,把 Key 通过环境变量注入,不要硬编码进配置文件。
6. 安全边界与下一步:让 AI 碰到真实数据前先想清楚的事
当助手能读邮件、管日历、操作浏览器时,它已经具备访问大量敏感数据的潜力。OpenClaw 提供了一个安全体检命令:
openclaw security audit openclaw security audit --deep openclaw security audit --fix # 确认无误再用--fix前必须人工确认,避免误改配置。几条硬规则:API Key 永远不进 Git,用环境变量或.env注入;token.json权限设为chmod 600,泄露立即撤销重授权;权限最小化,只读 Gmail 就别勾发送;服务器开防火墙、SSH 密钥登录、定期更新系统。
还有一点容易被忽略:在SOUL.md和AGENTS.md里写清楚行为边界——哪些操作必须二次确认(转账、删库、发敏感邮件),哪些数据永远不能外传,什么情况下应该拒绝执行。这背后是“规则优先级”和“身份角色”的设计,你不只是在写配置,而是在塑造一个有边界感的数字人格。
下一步,你可以把这套经验迁移到自己的 Agent 框架:把所有外部集成统一抽象为 Skill,而不是散落的 API 调用;在每个 Skill 层设计清晰的能力边界和权限配置;把“联网搜索 + 浏览器操作”当基础能力而非附加功能;在敏感操作处加二次确认和可审计日志。想继续深入模型接入和 Coding Plan 的,可以从 TaoToken 模型对话 和 Coding Plan 入手,把网络能力和模型调用串成一条完整链路。