新闻资讯-歌剧话剧

用 Gws CLI控制谷歌邮箱、日程…

发布时间:2026-03-10 16:46:37  浏览量:2

我肯定花了整个周末写自定义Google API集成,做的事情无非就是列出Drive文件夹中的文件或发送电子邮件——十二个不同的包装库,每个都有自己对错误处理和重试逻辑的看法!

这正是Zapier、Make和n8n围绕其建立整个业务的确切痛点:将丑陋的集成管道隐藏在更好的界面后面。

但如果你是一个开发者,这种便利仍然像是你和API之间的另一层抽象。

所以Google没有再添加一层抽象,而是最近发布了gws,它在运行时读取Google的实时API目录,并动态构建每个命令、每个标志、每个参数。

这意味着当Google添加新的Sheets端点时,你的CLI将支持它,无需等待维护者跟进。

它还附带核心Google Workspace API技能、助手、角色和食谱,这些让Zapier和n8n这样的工具看起来非常手动。

这就是我们讨论它的原因。

让我们看看这对于在Google Workspace之上构建AI代理的人意味着什么,以及我认为真正的权衡在哪里,因为它们确实存在。

本质上,gws是一个单一的二进制文件(用Rust编写,通过npm、Cargo或预构建二进制分发),将整个Google Workspace API包装在可组合的终端命令后面。

npm install -g @googleworkspace/cli

这一安装让你可以编程访问Gmail、Drive、Calendar、Sheets、Docs、Chat、Admin、Meet、Forms、Keep、Classroom、Tasks,基本上每个有公共API的Google Workspace服务。

使gws与所有其他Google API包装器根本不同的是动态命令生成架构。

当你运行这样的命令时:

gws drive files list --params '{"pageSize": 10}'

CLI使用两阶段解析策略:

阶段1:服务识别

:读取argv[1](例如drive)以识别目标服务

阶段2:动态命令构建

:从Google获取该服务的Discovery Document(缓存24小时),然后从文档的资源和方法构建clap::Command树重新解析剩余参数以对抗这个动态生成的命令树认证,构建HTTP请求,执行

Discovery Service是Google自己的机器可读目录,包含所有服务中每个API方法、参数、模式和OAuth范围。

这正是Google用来生成自己客户端库的相同元数据来源。gws只是在运行时直接读取它并将其转换为CLI命令。

这意味着这个工具 literally 不可能过时,因为没有跟踪API变化的维护负担。

每个响应——成功、错误、下载元数据——都以结构化JSON返回,这是主要输出格式,设计为可以直接管道传输到jq、由脚本解析或由LLM消费。

# 将分页结果流式传输为NDJSONgws drive files list --params '{"pageSize": 100}' --page-all | jq -r '.files.name' # 在执行前预览请求(dry-run)gws chat spaces messages create \--params '{"parent": "spaces/xyz"}' \--json '{"text": "Deploy complete."}' \--dry-run # 内省任何方法的请求/响应模式gws schema drive.files.list

--dry-run标志是我希望在我使用过的每个API工具中早点知道的功能。能够在触发前预览确切的HTTP请求正是你想要的安全网,当代理在自动发送电子邮件或创建日历事件时。

如果你一直在构建需要与Google Workspace交互的AI代理,现状确实需要:

使用正确的范围设置OAuth2凭证为你需要的每个API端点编写包装函数手动处理分页(Google的分页模型因服务而异)解析不同API的不同响应形状管理令牌刷新、凭证存储、错误处理针对实时API测试所有这些,因为Google的Workspace API没有很好的沙盒环境

对于你希望代理访问的每个新服务,在代理甚至可以进行第一次调用之前,你正在寻找数小时的样板代码。

但使用gws,你可以每个动作运行一个命令

# 发送电子邮件gws gmail +send --to alice@company.com --subject 'Q2 Report Ready' \--body 'Hey Alice, the Q2 report is ready for review.' # 上传文件到Drivegws drive files create --json '{"name": "report.pdf"}' --upload ./report.pdf # 创建电子表格gws sheets spreadsheets create --json '{"properties": {"title": "Q1 Budget"}}' # 搜索来自特定人员的未读邮件gws gmail users.messages list \--params '{"userId": "me", "q": "from:boss@company.com is:unread"}'

当你尝试某些东西的成本是一个终端命令而不是200行Python脚本时,你会更愿意尝试代理到Workspace的集成。

5、MCP服务器

内置的MCP服务器模式在本文撰写后已被删除。由于该决定可能仍会被重新考虑,我们保留了此部分以供参考。如果您需要临时替代方案,可以考虑Google Workspace MCP

运行:

gws mcp -s drive,gmail,calendar

启动一个通过stdio的MCP服务器,将那些Workspace API作为结构化工具公开。

将其插入Claude Desktop、VS Code或任何MCP兼容客户端,LLM现在可以原生管理你的Workspace。

在我的本地机器上认证一次:gws auth setup启动我需要的服务的MCP服务器让LLM通过结构化工具调用处理电子邮件分类、日程安排或文档管理

运行gemini extensions install https://github.com/googleworkspace/cli也让你的本地Gemini代理直接访问所有gws命令,继承你现有的凭证。

仓库附带超过100个代理技能,这些是SKILL.md文件,作为AI代理的结构化指令。

它们涵盖每个支持的API,加上常见工作流的更高级别助手,以及为Gmail、Docs、Calendar和Sheets精选的50个食谱。

你可以通过以下方式安装它们:

# 一次安装所有技能npx skills add https://github.com/googleworkspace/cli # 或者只选择你需要的npx skills add https://github.com/googleworkspace/cli/tree/main/skills/gws-drivenpx skills add https://github.com/googleworkspace/cli/tree/main/skills/gws-gmail

对于OpenClaw用户,你可以直接符号链接它们:

ln -s $(pwd)/skills/gws-* ~/.openclaw/skills/

gws-shared技能包含一个install块,这样OpenClaw如果gws不在PATH上,会自动通过npm安装CLI。(我对这种安装时体验的关注表示真诚的欣赏)。

标签: 谷歌 邮箱 mcp cli gws
sitemap