Wakatime不生成VSCode周报,仅上传心跳数据;Dashboard的「This Week」由服务端按UTC聚合,项目名需.git或.wakatime-project文件确保准确,导出周报须手动处理JSON或用CLI格式化输出。

Wakatime 本身不生成「VSCode 周报」,它只上传原始心跳数据到服务器;你看到的所有图表、语言分布、项目时长,都来自 wakatime.com 后端计算——本地 VSCode 插件不存历史、不聚合、不导出 PDF/Markdown。所谓“周报”,必须手动从 Dashboard 导出,或用 API 拉取后自行组装。
为什么 VSCode 状态栏显示时间,但 Dashboard 没周报?
这是最常被误解的点:VSCode 只负责采集和上传单次心跳(file、time、project、language),不保存也不汇总。Dashboard 上的「This Week」是服务端按 UTC 时间窗聚合的结果,和你本地时区、VSCode 是否开着无关。
- 你周一 9:00 编辑
main.py2 分钟 → 上传一条心跳 - 周二 14:30 切换到
index.tsx并敲了 5 秒 → 再传一条 - 这些离散记录只有到 wakatime.com 后,才被归入「上周一 00:00–本周日 23:59」UTC 时间窗,并算出总时长、Top Projects
如果你刚装插件不到 24 小时,Dashboard 就不可能有「上周」数据——它没历史可聚。
如何让周报里项目名准确,不全是 “Unknown Project”
WakaTime 默认靠 Git 仓库根目录名推断项目,不是靠 VSCode 工作区或文件夹名。没 .git 或路径不对,就 fallback 到 Unknown Project,导致周报里所有时间堆成一团,无法拆分。
- 确认每个项目根目录下存在
.git(运行git rev-parse --show-toplevel验证) - 如果开的是子目录(如
/monorepo/packages/frontend),但.git在/monorepo,WakaTime 会把整个 monorepo 当一个项目——此时应在/monorepo/packages/frontend下新建.wakatime-project文件,内容仅一行:frontend - 避免在项目路径中含空格或中文,某些旧版
wakatime-cli会解析失败
改完后必须关闭所有 VSCode 窗口再重开,否则新 .wakatime-project 不生效。
怎么导出可读的周报(PDF / Markdown / CSV)
Dashboard 页面右上角有 Export 按钮,但它只导出原始 JSON(含每条心跳的 timestamp、entity、type 等字段),不是人能直接读的“周报”。要生成可读内容,得自己处理:
- 点击
Export→ 选JSON→ 下载到本地 - 用 Python 快速转 Markdown 示例:
import json with open('wakatime.json') as f: data = json.load(f) week_total = sum(h['duration'] for h in data['data']) print(f'## 编程周报({data["start"]} – {data["end"]})\n- 总时长:{week_total//3600}h {(week_total%3600)//60}m') - 更省事:用官方 CLI 工具执行
wakatime-cli --today或--last-week,它会直接打印格式化文本(需先配置好~/.wakatime.cfg)
注意:wakatime-cli --last-week 输出的是服务端已聚合好的结果,和 Dashboard 显示一致,不是本地缓存。
为什么 TypeScript 总被记成 JavaScript,拉低周报语言准确性
旧版 wakatime-cli(.ts 和 .tsx 映射到 JavaScript,导致周报里「JavaScript」虚高、「TypeScript」为 0——这不是 VSCode 插件问题,是 CLI 的语言映射表没更新。
- 终端运行
wakatime-cli --version,确认 ≥v1.65.0 - 编辑
~/.wakatime.cfg,在[settings]下添加:[languages] typescript = ts,tsx javascript = js,javascript
- 重启 VSCode,新开一个
.ts文件编辑 10 秒以上,等 2 分钟后刷新 Dashboard 的「Languages」页,确认 TypeScript 单独出现
这个配置必须写对位置、不能有拼写错误(比如写成 typescripts 或漏掉 [languages] 段落),否则 CLI 启动时静默忽略,周报继续不准。



















