☰
【AI Coding实战】用 Cursor + TaoToken 写一个自动发周报机器人:从 settings.json 到定时任务
2026/9/27 15:08:33 网站建设 项目流程

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 本身可以接不同的模型提供方,但如果你同时用多个模型、又想在脚本里调用 LLM,Key 管理会变得很乱:Cursor 里配一个、脚本里配一个、环境变量里再配一个,改起来容易漏。TaoToken 的作用就是把这些统一起来——一个 Key、一个 API 地址,Cursor 和你的 Python 脚本共用同一套通道。

你需要先拿到 API Key。打开控制台创建:

https://taotoken.net/console?utm_source=taotoken_aicg_blog_end&utm_medium=csdn&utm_campaign=rewrite&utm_content=console

创建完 Key 之后,去 API Keys 页面可以随时查看和管理:

https://taotoken.net/api-keys?utm_source=taotoken_aicg_blog_end&utm_medium=csdn&utm_campaign=rewrite&utm_content=api-keys

这里有个关键点:TaoToken 的 API 基础地址是https://taotoken.net/api,注意这个地址后面不加UTM 参数,脚本里直接用它就行。Key 建议放在环境变量里,不要硬编码进代码,后面配置里我会写成TAOTOKEN_API_KEY。

注意:Key 只创建一次就够,Cursor 和 Python 脚本共用同一个。如果你团队里多人用,建议每人各自创建,方便排查用量。

配好之后,你可以在模型对话页面先手动测一句,确认通道是通的:

https://taotoken.net/model-chat?utm_source=taotoken_aicg_blog_end&utm_medium=csdn&utm_campaign=rewrite&utm_content=model-chat

如果你打算长期用 Cursor 做编码、跑 Agent,可以了解一下 Coding Plan,它更适合高频调用场景:

https://taotoken.net/coding-plan?utm_source=taotoken_aicg_blog_end&utm_medium=csdn&utm_campaign=rewrite&utm_content=coding-plan

接入文档在这里,遇到参数问题可以对照查:

https://taotoken.net/doc?utm_source=taotoken_aicg_blog_end&utm_medium=csdn&utm_campaign=rewrite&utm_content=doc

前置准备就这些,不复杂。核心就一句话:一个 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结尾不要多加/v1,TaoToken 的地址就是https://taotoken.net/api;${env:TAOTOKEN_API_KEY}这种写法依赖你的系统环境变量,Windows 用setx,macOS/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.txt

3.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", encoding="utf-8") as f: return json.load(f) def save_logs(logs): with open(LOG_FILE, "w", encoding="utf-8") as f: json.dump(logs, f, ensure_ascii=False, indent=2) 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(days=7) 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": f"Bearer {API_KEY}", "Content-Type": "application/json" } payload = { "model": "gpt-4o", "messages": [{"role": "user", "content": prompt}], "temperature": 0.3 } resp = requests.post(API_URL, headers=headers, json=payload, timeout=60) 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 xxx@xx.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_HOST=smtp.example.com SMTP_PORT=587 SMTP_USER=you@example.com SMTP_PASSWORD=你的邮箱授权码 SMTP_FROM=you@example.com

requirements.txt里就三行:

requests python-dotenv

装依赖:

pip install -r requirements.txt

4. 验证请求:从记录到发信跑通闭环

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": f"Bearer {os.getenv('TAOTOKEN_API_KEY')}"}, json={"model": "gpt-4o", "messages": [{"role": "user", "content": "回复:通道正常"}]}, timeout=30 ) 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 your@email.com

你会先在终端看到周报预览,格式大概是「本周完成 / 进行中 / 下周计划 / 风险与求助」四段。确认没问题后,邮件会自动发出。到这里,从记录到汇总到发送的完整链路就跑通了。

4.4 加定时任务实现无人化

Windows 用任务计划程序,新建基本任务,触发器设为每周五 17:00,操作填:

程序: python 参数: weekly_report.py weekly --send-email --to your@email.com 起始于: C:\path\to\weekly-report-bot

macOS/Linux 用 crontab:

0 17 * * 5 cd /path/to/weekly-report-bot && /usr/bin/python3 weekly_report.py weekly --send-email --to your@email.com

这样每周五下午五点,周报自动生成、自动发送,你只需要每天花十秒记一句话。

5. 本篇常见报错排查

5.1 RuntimeError: 使用 SMTP 发送时需要 SMTP_HOST/SMTP_USER/SMTP_PASSWORD

这是最常见的报错,本质是.env没被读到。三个检查点:一是.env文件是不是和脚本在同一目录;二是load_dotenv()有没有在读取环境变量之前调用;三是变量名有没有拼错。如果你在 Cursor 的终端里跑,注意终端的工作目录是不是项目根目录。

5.2 401 Unauthorized

Key 无效或没带上。检查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_source=taotoken_aicg_blog_end&utm_medium=csdn&utm_campaign=rewrite&utm_content=doc

6. 继续往下走:把机器人升级成真正的 Agent

跑通基础版之后,这个项目还有不少可以演进的方向。第一是接入 IM,把每天的记录从命令行改成在飞书或 Slack 里发一句话,机器人自动抓取;第二是多维度分析,让 LLM 不只汇总,还算出本周投入时间分布、工作类型占比;第三是接入公司内部系统,比如工单、订单、异常数据,自动生成业务级周报。

如果你打算长期用 Cursor 做这类 Agent 开发,建议把模型通道固定下来,用 Coding Plan 管理调用额度会更省心:

https://taotoken.net/coding-plan?utm_source=taotoken_aicg_blog_end&utm_medium=csdn&utm_campaign=rewrite&utm_content=coding-plan

需要新建或轮换 Key 的时候,回到 API Keys 页面操作:

https://taotoken.net/api-keys?utm_source=taotoken_aicg_blog_end&utm_medium=csdn&utm_campaign=rewrite&utm_content=api-keys

最后留一个我踩过的坑:定时任务里的 Python 路径一定要写绝对路径,crontab 的环境变量和你在终端里不一样,.env里的变量最好在脚本里显式加载,别指望系统帮你带进去。把这两点处理好,你的周报机器人就能稳定跑下去,每周五准时把周报送到邮箱,而你只需要每天记一句话。

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询