工具:OpenClaw(开源AI Agent框架)
任务:让Agent自动读取Gmail未读邮件,根据内容判断是否需要回复,并草拟回复邮件
耗时:一下午 + 两天调试
先说结果:它确实能跑通,但绝不是“打开即用”。如果你也想试试,这篇笔记能帮你省下至少半天试错时间。
第一步:安装
OpenClaw的GitHub页面写得很清楚,但有几个坑文档里没强调。
我的环境:MacBook Pro M2,64GB内存(内存大点好,Agent跑起来吃资源)
安装命令就一行:pip install openclaw 或者用Docker。我选了pip,因为想本地跑。
坑1:Python版本。OpenClaw需要3.11以上,我原本3.9,折腾了十分钟升级。如果你也是老环境,先装pyenv。
坑2:依赖库冲突。安装时有个playwright的依赖没自动装好,导致浏览器自动化功能报错。手动装一下:playwright install。
装完跑openclaw --version,显示0.7.2,搞定。
第二步:配置邮箱权限
要让Agent读Gmail,得开Google API。
文档里给了一个OAuth流程,跟着走就行。但我卡在了一个地方:Google Cloud Console里要启用Gmail API,然后创建桌面应用的凭据,下载credentials.json放到项目根目录。
第一次运行时会弹浏览器让你登录Google账号授权。这里注意:如果你开了两步验证,需要生成一个应用专用密码,不是直接输登录密码。这个在文档的FAQ里才找到,浪费了二十分钟。
授权成功后,本地会生成token.json,下次就不需要重新授权了。
第三步:写Agent配置
OpenClaw的核心是agent.yaml配置文件。我写了一个最简版本:
name: email_responder
trigger:
schedule: "*/30 * * * *" # 每30分钟执行一次
steps:
- name: check_unread
use: gmail/list
params:
query: "is:unread"
max_results: 5
- name: analyze_content
use: llm/prompt
params:
prompt: |
以下是邮件内容,判断是否需要回复。
需要回复的标准:对方提问、要求行动、或者明显期待回复。
如果只是通知、广告、或者“感谢您的订阅”之类,标记为不需要回复。
邮件: {{ step1.result }}
输出格式: 需要回复: 是/否, 理由: xxx
- name: draft_reply
use: llm/prompt
condition: "{{ step2.need_reply }} == '是'"
params:
prompt: |
根据以下邮件草拟一封回复邮件。语气友好、专业。
原始邮件: {{ step1.result }}
回复草稿:
- name: save_draft
use: gmail/create_draft
params:
to: "{{ step1.sender }}"
subject: "Re: {{ step1.subject }}"
body: "{{ step3.draft }}"
这个YAML的意思是:每半小时检查一次未读邮件,每条用LLM判断要不要回复,需要的话就生成草稿并保存到Gmail草稿箱(不是直接发送,这样我可以人工审核)。
坑3:变量引用语法。文档里写的是{{ step1.result }},但实际执行时发现要写{{ steps.check_unread.result }}(用step的name)。我翻了好几个issue才找到正确写法。
第四步:跑起来
运行命令:openclaw run --config agent.yaml
第一次跑,报错了:“gmail/list 这个tool不存在”。
我这才意识到,OpenClaw默认并没有集成Gmail工具。需要安装插件:openclaw install plugin-gmail
插件装完后,再跑,又报错:“缺少gmail credentials”。原来插件需要独立的认证,不能直接用主OAuth。我又去Google Cloud Console加了一个Gmail专用凭据,放进插件目录。
折腾完这些,终于跑通了。终端输出显示:检测到2封未读,判断需要回复的1封(一个客户问项目进度),生成了草稿。
踩坑总结
-
不要相信“一键安装”。依赖、版本、权限,每一步都可能卡住。建议预留一整个下午。
-
Agent的确定性比你想象的低。同一个邮件,LLM判断“需要回复”有时是、有时否。我用的是GPT-4o-mini,温度调到了0.2才稳定一些。
-
本地运行很耗资源。每半小时跑一次,CPU风扇偶尔狂转。如果7x24小时跑,建议用轻量云服务器。
-
安全第一。我让Agent只生成草稿不直接发送,这个决策救了我一次——有一次它把“不回复”判断成了“回复”,差点发出去了。人工审核这个环节不能省。
实际效果
跑了三天,处理了23封邮件。判断准确率大概85%。误判的那几封主要是广告邮件和自动通知,LLM有时会误以为对方在提问。我加了几个关键词黑名单(“unsubscribe”、“newsletter”),效果好了不少。
时间节省:以前每天早上手动处理邮件要15到20分钟,现在只需要花两分钟扫一眼草稿箱,确认后点击发送。一个月下来省了大概六七个小时。
要不要自己试试?
如果你也有一类重复性高、规则明确的邮件处理需求(比如客服工单、内部审批提醒),这个方案值得折腾。但如果你只是想玩玩Agent,建议先用OpenClaw自带的demo配置跑一遍,别直接上邮箱权限。
最后说一句:OpenClaw还很年轻,稳定性和文档都在快速迭代中。我写的这些配置方法,可能三个月后就过时了。到时候记得去翻它的官方文档——这是玩开源项目的基本觉悟。