wakatime在vscode中真正依赖本地wakatime-cli,插件仅作调度;未安装cli、api key位置错误或配置文件权限不当均会导致「connecting…」或无数据,须验证cli、检查~/.wakatime.cfg、重启vscode并查日志。

装完插件不代表能统计——WakaTime 在 VSCode 里真正干活的是本地 wakatime-cli,插件只是调度器。没装 CLI、API key 写错位置、配置文件权限不对,都会导致状态栏一直显示「Connecting…」或完全没数据。
确认 wakatime-cli 是否已安装并可执行
VSCode 插件不自带 CLI,它会在首次启动时尝试自动下载,但 macOS/Linux 下常因网络问题静默失败,Windows 上 PowerShell 脚本又容易路径出错。
- 打开终端,运行
wakatime-cli --version;如果报command not found,说明 CLI 根本没进系统 PATH - macOS/Linux:去 官网下载二进制,放进
/usr/local/bin或~/bin,再运行chmod +x /path/to/wakatime-cli - Windows:下 zip 包解压到
C:\wakatime\,把该路径加进「系统环境变量」PATH(不是用户变量),然后重启终端 - 装完必须彻底关闭所有 VSCode 窗口再重开——它只在启动时扫描一次 CLI
~/.wakatime.cfg 配置写错一行就全挂
VSCode 设置里的 wakatime.apiKey 只用于首次登录,后续所有行为都读 ~/.wakatime.cfg(Windows 是 %USERPROFILE%\wakatime.cfg)。这个文件写错格式、少下划线、多空格、用中文等号,WakaTime 就会静默拒绝加载。
- 手动创建该文件,内容至少包含两行:
[settings]api_key = d1a12345-6789-0abc-def1-234567890abc(key 去 wakatime.com/settings/api-key 复制) - 别写成
apikey = ...(缺下划线)、api_key = ...(开头空格)、api_key=...(中文等号) - macOS/Linux 用户执行
chmod 600 ~/.wakatime.cfg,否则 CLI 会因权限过高直接跳过读取 - 改完配置,关掉所有 VSCode 窗口再重开——
Developer: Reload Window不生效
项目名是「Unknown Project」?Git 根目录或 .wakatime-project 没配对
WakaTime 不认 VSCode 工作区(.code-workspace),也不按你打开的文件夹名推断项目。它只找「当前文件向上最近的 .git 目录名」;找不到就 fallback 到 Unknown。
- 如果你开的是子目录(比如
~/projects/backend/src,但.git在~/projects/backend),它会用backend作为项目名——这是正常行为 - 想强制指定?在项目根目录(即你想统计的那个层级)新建文件
.wakatime-project,里面只写一行纯文本,比如:my-nextjs-app(不要引号、不要空格、不要多余换行) - monorepo 场景下,每个 package 都应有独立
.wakatime-project,否则所有编辑都算进同一个项目 - 没初始化 Git 的临时项目,
.wakatime-project是唯一可靠方案
为什么 Python/JS 文件没被计入语言统计?后缀、忽略规则和 CLI 日志说了算
WakaTime 按文件后缀识别语言,不是按你实际写了什么。一个没后缀的 Dockerfile、或路径含 node_modules 的文件,会被直接跳过。
- 检查文件是否真有后缀:
script.py✅,script❌(无后缀默认归为Other) - 打开命令面板,运行
WakaTime: Show Log,搜Skipping file because it matches ignore pattern—— 如果命中,说明被exclude规则拦了 - 想临时排除某类文件?在
~/.wakatime.cfg的[settings]下加:exclude = ^/tmp/|.*\.log$|/node_modules/(注意用|分隔,正则开头^表示绝对路径) - TS 被计成 JS?在配置里加
[languages]段:typescript = ts,tsxjavascript = js(旧版 CLI 默认把.ts归 JS)
最常被忽略的一点:WakaTime 从不统计「打开编辑器但没操作」的时间,也不统计终端里 python train.py 的运行耗时——它只响应键盘输入、保存、切换标签页这些编辑事件。日志路径 ~/.wakatime.log 是唯一真相来源,别只盯着状态栏看。











