ARTICLE DETAIL

资讯详情

深耕网站视觉设计与运营推广的一线实战洞察。

【AI Coding实战】用 Cursor + TaoToken 写一个自动发周报机器人:从 settings.json 到定时任务

【AI Coding实战】用 Cursor + TaoToken 写一个自动发周报机器人:从 settings.json 到定时任务 1. 从「每周憋周报」到一条命令搞定这个机器人到底在做什么如果你每周五下午都在做同一件事——翻聊天记录、翻 Git 提交、翻待办清单然后拼凑出一份自己都不想看的周报那这篇内容就是写给你的。我们要用 Cursor 配合 TaoToken 做一个自动发周报机器人每天下班前用一句话记录今天干了什么周五一条命令LLM 自动把零散记录汇总成结构化周报再通过邮件发出去。整个过程你不需要从零手写完整代码而是用自然语言描述系统让 Cursor 帮你把代码补全、把报错修掉。适合谁三类人最合适一是每天写代码但懒得写周报的工程师二是想入门 AI Coding、Agent 但不知道从哪下手的产品/运营同学三是已经在用 Cursor但只会让它补全函数、还没跑通「完整自动化链路」的开发者。核心检索词先摆在这Cursor 做 AI Coding、TaoToken 统一 Key/API 通道、LLM 汇总、Agent 机器人、CLI 定时任务。这几个词会贯穿全文你跟着做就能跑通。我试过最原始的版本手动把每天的工作记在备忘录周五复制粘贴给大模型让它总结。问题是备忘录不会自动结构化模型每次输出格式还不一样最后还是要手动调。所以这次我们把它做成一个真正的闭环系统输入层是 CLI 一句话存储层是 JSON加工层是 LLM执行层是定时任务加邮件。这已经是一个 Personal Agent 的雏形——有 Memory、有 Reasoning、有 Action。下面按「先讲清楚问题 → 配好 TaoToken → 给出可复制配置 → 验证请求 → 排错 → 收尾」的顺序走每一步都能直接抄。2. 前置准备用 TaoToken 统一 Key 和 API 通道在动手写代码之前先把模型通道这件事解决掉。Cursor 本身可以接不同的模型提供方但如果你同时用多个模型、又想在脚本里调用 LLMKey 管理会变得很乱Cursor 里配一个、脚本里配一个、环境变量里再配一个改起来容易漏。TaoToken 的作用就是把这些统一起来——一个 Key、一个 API 地址Cursor 和你的 Python 脚本共用同一套通道。你需要先拿到 API Key。打开控制台创建https://taotoken.net/console?utm_sourcetaotoken_aicg_blog_endutm_mediumcsdnutm_campaignrewriteutm_contentconsole创建完 Key 之后去 API Keys 页面可以随时查看和管理https://taotoken.net/api-keys?utm_sourcetaotoken_aicg_blog_endutm_mediumcsdnutm_campaignrewriteutm_contentapi-keys这里有个关键点TaoToken 的 API 基础地址是https://taotoken.net/api注意这个地址后面不加UTM 参数脚本里直接用它就行。Key 建议放在环境变量里不要硬编码进代码后面配置里我会写成TAOTOKEN_API_KEY。注意Key 只创建一次就够Cursor 和 Python 脚本共用同一个。如果你团队里多人用建议每人各自创建方便排查用量。配好之后你可以在模型对话页面先手动测一句确认通道是通的https://taotoken.net/model-chat?utm_sourcetaotoken_aicg_blog_endutm_mediumcsdnutm_campaignrewriteutm_contentmodel-chat如果你打算长期用 Cursor 做编码、跑 Agent可以了解一下 Coding Plan它更适合高频调用场景https://taotoken.net/coding-plan?utm_sourcetaotoken_aicg_blog_endutm_mediumcsdnutm_campaignrewriteutm_contentcoding-plan接入文档在这里遇到参数问题可以对照查https://taotoken.net/doc?utm_sourcetaotoken_aicg_blog_endutm_mediumcsdnutm_campaignrewriteutm_contentdoc前置准备就这些不复杂。核心就一句话一个 Key、一个 API 地址Cursor 和脚本共用。3. 可复制配置settings.json 骨架 周报脚本3.1 Cursor 的 settings.json 配置骨架Cursor 的模型配置可以写在 settings.json 里。下面这份骨架你可以直接复制把TAOTOKEN_API_KEY换成你自己的 Key或者保持环境变量引用。注意 JSON 里不能写注释我这里用文字说明每一项{ cursor.aiProvider: openai, cursor.openaiApiKey: ${env:TAOTOKEN_API_KEY}, cursor.openaiBaseUrl: https://taotoken.net/api, cursor.models: [ { name: gpt-4o, provider: openai, baseUrl: https://taotoken.net/api } ], cursor.chat.defaultModel: gpt-4o }几个容易踩的点baseUrl结尾不要多加/v1TaoToken 的地址就是https://taotoken.net/api${env:TAOTOKEN_API_KEY}这种写法依赖你的系统环境变量Windows 用setxmacOS/Linux 写进.zshrc或.bashrc。配好之后重启 Cursor在 Chat 里问一句「你现在用的是哪个模型」能正常回你就说明通道通了。3.2 周报机器人的目录结构在 Cursor 里新建一个项目文件夹让 Cursor 帮你生成下面这个结构。你可以直接把这段话丢给 Cursor帮我创建一个 Python 项目 weekly-report-bot包含 - work_log.json 用来存每日工作记录 - weekly_report.py 主脚本支持 daily 和 weekly 两个子命令 - .env 存 SMTP 和 API 配置 - requirements.txt生成出来的结构大概是这样weekly-report-bot/ ├── work_log.json ├── weekly_report.py ├── .env └── requirements.txt3.3 核心脚本 weekly_report.py下面这份是主脚本骨架你可以直接复制也可以让 Cursor 基于它继续补全。它做了三件事daily子命令写入当天记录weekly子命令读取一周数据并调用 LLM 汇总汇总后可选发邮件。import os import json import sys import smtplib from datetime import datetime, timedelta from email.mime.text import MIMEText from email.header import Header import requests from dotenv import load_dotenv load_dotenv() LOG_FILE work_log.json API_URL https://taotoken.net/api/chat/completions API_KEY os.getenv(TAOTOKEN_API_KEY) def load_logs(): if not os.path.exists(LOG_FILE): return [] with open(LOG_FILE, r, encodingutf-8) as f: return json.load(f) def save_logs(logs): with open(LOG_FILE, w, encodingutf-8) as f: json.dump(logs, f, ensure_asciiFalse, indent2) def add_daily(content): logs load_logs() today datetime.now().strftime(%Y-%m-%d) logs.append({date: today, content: content}) save_logs(logs) print(f[OK] 已记录 {today}: {content}) def get_week_logs(): logs load_logs() week_ago datetime.now() - timedelta(days7) return [x for x in logs if datetime.strptime(x[date], %Y-%m-%d) week_ago] def summarize_with_llm(logs): text \n.join([f{x[date]}: {x[content]} for x in logs]) prompt f请把下面这周的工作记录汇总成结构化周报包含本周完成、进行中、下周计划、风险与求助。语言简洁专业。\n\n{text} headers { Authorization: fBearer {API_KEY}, Content-Type: application/json } payload { model: gpt-4o, messages: [{role: user, content: prompt}], temperature: 0.3 } resp requests.post(API_URL, headersheaders, jsonpayload, timeout60) resp.raise_for_status() return resp.json()[choices][0][message][content] def send_email(subject, body, to_addr): host os.getenv(SMTP_HOST) port int(os.getenv(SMTP_PORT, 587)) user os.getenv(SMTP_USER) password os.getenv(SMTP_PASSWORD) from_addr os.getenv(SMTP_FROM, user) if not all([host, user, password]): raise RuntimeError(使用 SMTP 发送时需要SMTP_HOST/SMTP_USER/SMTP_PASSWORD) msg MIMEText(body, plain, utf-8) msg[Subject] Header(subject, utf-8) msg[From] from_addr msg[To] to_addr with smtplib.SMTP(host, port) as server: server.starttls() server.login(user, password) server.sendmail(from_addr, [to_addr], msg.as_string()) print(f[OK] 邮件已发送至 {to_addr}) def main(): if len(sys.argv) 2: print(用法: python weekly_report.py daily 今天的工作内容) print( python weekly_report.py weekly [--send-email --to xxxxx.com]) return cmd sys.argv[1] if cmd daily: add_daily(sys.argv[2]) elif cmd weekly: logs get_week_logs() if not logs: print([WARN] 本周没有记录) return report summarize_with_llm(logs) print( 周报预览 ) print(report) if --send-email in sys.argv: to_addr sys.argv[sys.argv.index(--to) 1] send_email(本周周报, report, to_addr) else: print(f未知命令: {cmd}) if __name__ __main__: main()3.4 .env 配置TAOTOKEN_API_KEY你的Key SMTP_HOSTsmtp.example.com SMTP_PORT587 SMTP_USERyouexample.com SMTP_PASSWORD你的邮箱授权码 SMTP_FROMyouexample.comrequirements.txt里就三行requests python-dotenv装依赖pip install -r requirements.txt4. 验证请求从记录到发信跑通闭环4.1 先验证 LLM 通道在正式跑脚本前先单独测一下 TaoToken 的接口通不通。你可以写一个最小测试import os, requests from dotenv import load_dotenv load_dotenv() resp requests.post( https://taotoken.net/api/chat/completions, headers{Authorization: fBearer {os.getenv(TAOTOKEN_API_KEY)}}, json{model: gpt-4o, messages: [{role: user, content: 回复通道正常}]}, timeout30 ) print(resp.status_code) print(resp.json()[choices][0][message][content])返回200并且打印出「通道正常」说明 Key 和地址都没问题。如果返回401检查 Key 是不是复制多了空格返回404检查地址是不是写成了https://taotoken.net/api/v1。4.2 记录每日工作每天下班前执行python weekly_report.py daily 1. 完成订单模块接口联调2. 修复导出 CSV 乱码3. 参加需求评审执行后work_log.json会多一条[ { date: 2026-03-31, content: 1. 完成订单模块接口联调2. 修复导出 CSV 乱码3. 参加需求评审 } ]4.3 生成并发送周报周五执行python weekly_report.py weekly --send-email --to youremail.com你会先在终端看到周报预览格式大概是「本周完成 / 进行中 / 下周计划 / 风险与求助」四段。确认没问题后邮件会自动发出。到这里从记录到汇总到发送的完整链路就跑通了。4.4 加定时任务实现无人化Windows 用任务计划程序新建基本任务触发器设为每周五 17:00操作填程序: python 参数: weekly_report.py weekly --send-email --to youremail.com 起始于: C:\path\to\weekly-report-botmacOS/Linux 用 crontab0 17 * * 5 cd /path/to/weekly-report-bot /usr/bin/python3 weekly_report.py weekly --send-email --to youremail.com这样每周五下午五点周报自动生成、自动发送你只需要每天花十秒记一句话。5. 本篇常见报错排查5.1 RuntimeError: 使用 SMTP 发送时需要 SMTP_HOST/SMTP_USER/SMTP_PASSWORD这是最常见的报错本质是.env没被读到。三个检查点一是.env文件是不是和脚本在同一目录二是load_dotenv()有没有在读取环境变量之前调用三是变量名有没有拼错。如果你在 Cursor 的终端里跑注意终端的工作目录是不是项目根目录。5.2 401 UnauthorizedKey 无效或没带上。检查Authorization头是不是Bearer加 Key中间有一个空格。另外确认TAOTOKEN_API_KEY环境变量在脚本运行时确实存在可以在脚本开头加一句print(bool(API_KEY))调试。5.3 404 Not Found地址写错了。TaoToken 的基础地址是https://taotoken.net/api聊天补全的完整路径是https://taotoken.net/api/chat/completions。不要自己加/v1也不要漏掉/chat/completions。5.4 邮件发送成功但收件箱没有先看垃圾邮件文件夹。如果用了企业邮箱SMTP 通常需要「授权码」而不是登录密码去邮箱设置里开启 SMTP 服务并生成授权码。另外SMTP_PORT用 587 配starttls()用 465 的话要改成SMTP_SSL。5.5 Cursor 里模型不响应先确认 settings.json 的baseUrl是https://taotoken.net/api然后重启 Cursor。如果还是不行去模型对话页面手动测一句确认是通道问题还是 Cursor 配置问题。接入文档里有各客户端的配置示例可以对照检查https://taotoken.net/doc?utm_sourcetaotoken_aicg_blog_endutm_mediumcsdnutm_campaignrewriteutm_contentdoc6. 继续往下走把机器人升级成真正的 Agent跑通基础版之后这个项目还有不少可以演进的方向。第一是接入 IM把每天的记录从命令行改成在飞书或 Slack 里发一句话机器人自动抓取第二是多维度分析让 LLM 不只汇总还算出本周投入时间分布、工作类型占比第三是接入公司内部系统比如工单、订单、异常数据自动生成业务级周报。如果你打算长期用 Cursor 做这类 Agent 开发建议把模型通道固定下来用 Coding Plan 管理调用额度会更省心https://taotoken.net/coding-plan?utm_sourcetaotoken_aicg_blog_endutm_mediumcsdnutm_campaignrewriteutm_contentcoding-plan需要新建或轮换 Key 的时候回到 API Keys 页面操作https://taotoken.net/api-keys?utm_sourcetaotoken_aicg_blog_endutm_mediumcsdnutm_campaignrewriteutm_contentapi-keys最后留一个我踩过的坑定时任务里的 Python 路径一定要写绝对路径crontab 的环境变量和你在终端里不一样.env里的变量最好在脚本里显式加载别指望系统帮你带进去。把这两点处理好你的周报机器人就能稳定跑下去每周五准时把周报送到邮箱而你只需要每天记一句话。
返回列表