引言:一个 AI Agent 重度使用者的工具进化

作为一名 OpenClaw AI 助手的重度使用者,我的日常工作流早已离不开自动化:

  • 每天早上 8:17,AI 自动推送今日日程和待办任务
  • 股票分析 自动抓取数据并生成技术报告
  • 博客发布 中英文双语自动部署
  • 记忆管理 自动备份到 GitHub

这些自动化的背后,离不开对 Google 服务的深度整合:Google Calendar 管理日程、Google Tasks 追踪待办、Google Drive 存储文件。

之前我写过两篇文章分享我的方案:

但最近我遇到了几个痛点,促使我重新思考整个方案…


一、之前方案的问题

1.1 Python OAuth 脚本的问题

在《AI 助手日程管理实战》中,我用 Python 脚本 + OAuth 接入 Google Calendar 和 Tasks:

# 之前的方案
from google.oauth2.credentials import Credentials
creds = Credentials.from_authorized_user_file('token.json')
service = build('tasks', 'v1', credentials=creds)

但 Token 经常过期

  • invalid_grant: Token has been expired or revoked
  • 每隔几天就要重新授权
  • 导致每日简报的任务列表显示 “获取失败”

维护成本高

  • 需要手动刷新 token
  • 脚本分散,功能单一
  • 不同服务需要不同脚本

1.2 rclone 的问题

在《rclone 挂载 Google Drive》中,我用 rclone 管理文件:

rclone mount gdrive: ~/GoogleDrive

但 AI Agent 调用困难

  • rclone 是文件系统层面的挂载
  • OpenClaw 想操作 Drive 文件需要复杂的命令拼接
  • 上传下载需要本地文件中转

配置分散

  • rclone 一套配置
  • Python 脚本另一套配置
  • 管理混乱

1.3 我的新需求

作为一个 AI Agent 使用者 而非开发者,我想要:

一站式管理 - 一个工具管理所有 Google 服务
Token 自动管理 - 不用手动刷新
AI 友好 - OpenClaw 可以直接调用
中文支持 - 邮件主题不乱码

直到我发现 Google 官方推出的 gws(Google Workspace CLI)


二、Google Workspace CLI 是什么?

gws 是 Google 官方推出的命令行工具,简单来说:

就像 kubectl 管理 Kubernetes、aws 管理 AWS 一样,gws 让你用一行命令管理所有 Google 服务。

2.1 覆盖的服务

服务我能做什么对应之前方案
Google Tasks创建/完成任务替代 Python OAuth 脚本
Google Calendar查看/创建日程替代 Python OAuth 脚本
Gmail收发邮件之前没有
Google Drive上传/下载/管理文件替代 rclone
Google Sheets读写表格之前没有
Google Docs编辑文档之前没有

2.2 对我这个 AI Agent 用户的价值

之前的工作流

OpenClaw → Python 脚本 → Google API → Calendar/Tasks
       ↓
     rclone → Google Drive

现在的工作流

OpenClaw → gws → 所有 Google 服务

统一、简洁、官方支持


三、实战:从旧方案迁移到新方案

3.1 安装 gws

npm install -g @googleworkspace/cli

3.2 认证配置(一劳永逸)

之前的痛点:Python 脚本的 OAuth token 几天就过期。

gws 的解决方案

  1. 创建 Google Cloud 项目(一次性)
  2. 启用需要的 API(Drive、Gmail、Calendar、Tasks)
  3. OAuth 授权,获取 refresh_token
  4. refresh_token 有效期 7 天,自动续期

配置完成后,OpenClaw 可以直接调用:

export GOOGLE_WORKSPACE_CLI_TOKEN="ya29.xxx"

# 查看任务
gws tasks tasks list

# 发送邮件
gws gmail users.messages send ...

3.3 替换之前的 Python 脚本

之前获取 Tasks 的脚本(经常失效):

# 之前的代码,token 经常过期
from google_tasks_oauth import get_tasks_service
service = get_tasks_service()  # 经常报错

现在用 gws

# 一行命令,稳定可靠
gws tasks tasks list --format table

对比

维度之前 Python 脚本现在 gws
Token 管理手动刷新,经常过期refresh_token 自动续期
功能范围单一(只能 Tasks)全面(所有 Google 服务)
稳定性⭐⭐⭐⭐⭐⭐⭐⭐
易用性⭐⭐⭐⭐⭐⭐

3.4 替换 rclone

之前用 rclone 管理 Drive

# 挂载到本地
rclone mount gdrive: ~/GoogleDrive

# 然后操作本地文件

现在用 gws

# 直接操作 Drive,无需挂载
gws drive files list
gws drive files create --upload ./file.txt

对比

维度之前 rclone现在 gws
文件访问挂载为本地文件系统API 直接操作
AI 调用复杂(需要本地路径)简单(直接命令)
批量操作✅ 高效⚠️ 逐个处理
适用场景大文件传输日常文件管理

结论:rclone 保留用于大文件批量传输,gws 用于日常文件管理


四、实战:OpenClaw 集成示例

4.1 每日简报集成

之前的简报任务获取经常失败(Token 过期),现在改为 gws:

# rss_news.py 中修改
def get_google_tasks():
    """使用 gws 获取任务(替代之前的 OAuth 脚本)"""
    import subprocess
    
    result = subprocess.run(
        ['gws', 'tasks', 'tasks', 'list', 
         '--params', '{"tasklist": "@default"}',
         '--format', 'json'],
        capture_output=True,
        text=True,
        env={'GOOGLE_WORKSPACE_CLI_TOKEN': 'ya29.xxx'}
    )
    
    # 解析 JSON 返回任务列表
    import json
    data = json.loads(result.stdout)
    return data.get('items', [])

效果:Token 有效期 7 天,且支持自动刷新,不再频繁失效。

4.2 发送邮件(新增功能)

之前的情况

  • 我的自动化流程中缺少邮件通知能力
  • 如果需要发送邮件,只能手动打开 Gmail 网页

现在用 gws

# 发送邮件(需注意中文编码)
~/.openclaw/workspace/send-email.sh \
  [email protected] \
  '测试邮件' \
  '这是邮件内容'

遇到的坑:中文主题直接发送会乱码,需要 MIME 编码处理。

解决方案:封装脚本自动处理 UTF-8 Base64 编码:

# 正确的 MIME 编码
Subject: =?UTF-8?B?5rWL6K+V6YKu5Lu2?=  # "测试邮件"的Base64编码

效果:现在 OpenClaw 可以直接调用发送邮件,比如日报完成后自动邮件通知。

4.3 文件管理

之前用 rclone 需要挂载,现在直接操作:

# 上传到 Drive
gws drive files create \
  --upload ./document.md \
  --params '{"parents": ["FOLDER_ID"]}'

# 下载文件
gws drive files get \
  --params '{"fileId": "FILE_ID"}' \
  --output ./downloaded.md

OpenClaw 可以直接调用这些命令


五、新旧方案完整对比

5.1 架构对比

组件之前方案现在方案
Google TasksPython OAuth 脚本gws
Google CalendarPython OAuth 脚本gws
Gmail❌ 没有gws
Google Driverclonegws + rclone(保留)
Google Sheets❌ 没有gws
Token 管理分散,易过期统一,自动续期
配置维护多套配置一套配置

5.2 使用体验对比

场景之前现在评价
每日简报Token 经常过期Token 稳定 7 天✅ 显著提升
发送邮件❌ 没有此功能支持中文✅ 新增能力
文件上传rclone 挂载直接命令✅ 更便捷
大文件传输rclone 高效gws 逐个处理⚠️ rclone 保留
配置复杂度中等较高(初始配置)⚠️ 学习成本

5.3 维护成本对比

项目之前现在
需要维护的脚本数量3-4 个1 个(gws 封装)
Token 刷新频率每 2-3 天每 7 天
官方支持❌ 社区方案✅ Google 官方
API 更新同步手动更新自动同步

六、我的建议

6.1 适合迁移到 gws 的场景

你和我一样是 AI Agent 重度用户

  • 需要让 OpenClaw/Claude 直接调用 Google 服务
  • 希望统一的管理接口

需要一站式管理

  • 不想维护多个脚本
  • 希望 Drive + Gmail + Calendar + Tasks 统一管理

追求稳定性

  • 受够了 Token 频繁过期
  • 希望官方长期支持

6.2 保留原有方案的场景

⚠️ 只需要单一功能

  • 只需要读取 Calendar,Python 脚本更简单

⚠️ 大文件批量传输

  • rclone 在批量传输上更高效,保留作为补充

⚠️ 不想折腾配置

  • gws 初始配置较复杂,短期使用不值得

6.3 我的最终架构

OpenClaw AI 助手
    ├── 日程/任务管理 → gws (替代 Python 脚本)
    ├── 邮件发送 → gws (新增功能)
    ├── 日常文件操作 → gws (替代 rclone 大部分场景)
    └── 大文件批量传输 → rclone (保留)

不是完全替代,而是互补


七、总结

从 Python OAuth 脚本 + rclone 到 Google Workspace CLI,我的工具栈完成了一次进化:

解决的问题

  • ✅ Token 频繁过期 → refresh_token 7 天有效期
  • ✅ 功能分散 → 一站式管理
  • ✅ 缺少邮件功能 → 完整 Gmail 支持
  • ✅ 中文乱码 → 正确的 MIME 编码

付出的代价

  • ⚠️ 初始配置复杂度提升
  • ⚠️ 需要学习新的命令格式
  • ⚠️ 大文件操作不如 rclone 高效

最终评价

作为一个 AI Agent 使用者而非开发者,gws 让我的自动化工作流更加统一、稳定、可扩展。虽然配置门槛较高,但一劳永逸,值得投入时间。

如果你也在用 OpenClaw 或其他 AI Agent 框架,并且深度依赖 Google 服务,强烈推荐尝试 gws


参考


本文作者是一个 OpenClaw AI 助手的使用者,而非 Google 开发者。文章从用户视角出发,分享真实的迁移经验。