☰
Windows WSL 用户必看:Token Monitor 无头 Agent 如何解决 SQLite 用量统计盲区
2026/10/4 6:50:23 网站建设 项目流程

Windows WSL 用户必看:Token Monitor 无头 Agent 如何解决 SQLite 用量统计盲区

【免费下载链接】token-monitorLocal-first desktop widget for tracking token usage, costs, and limits across 43+ AI coding tools—including Claude Code, Codex, Cursor, OpenCode, OpenClaw, and more—with multi-device sync.项目地址: https://gitcode.com/gh_mirrors/tok/token-monitor

如果你在 Windows 上用 WSL 跑 AI 编程工具,Token Monitor 默认就能扫描 WSL 目录,但 OpenCode、Hermes 这类把用量存在 SQLite 数据库里的工具经常"看得见工具、看不到用量"。这篇文章将带你用一个无头 Agent(headless Agent)三步打通 WSL 用量采集链路,让 Token 统计不再出现盲区。

为什么 WSL 里的 SQLite 工具会"隐形"?

Token Monitor 在 Windows 上会扫描正在运行的 WSL 发行版(通过\\wsl$),并约每 5 分钟把用量并入总量。实现见 src/shared/wslUsage.js。

  • 文件型数据没问题:Codex 的 JSONL session、Claude Code 的 transcript 等都是普通文件,Windows 进程跨\\wsl$直接读取即可。
  • SQLite 数据库有盲区:OpenCode、Hermes、ZCode 等工具把当前用量存在.db文件里。Windows 能"找到"数据库,但 SQLite 的文件锁和 WAL(预写日志)无法可靠地跨 WSL 9P 文件系统边界协调,于是出现典型症状:设置 → 采集 → WSL 检测里已识别出工具,用量却一直是 0。
  • 别用"复制 .db 文件"来绕过:最新事务可能还留在-wal边车文件里,分别复制数据库和 sidecar 无法保证快照一致,只会得到脏数据。

无头 Agent 方案:一句话说清架构

官方给出的可靠链路是:

WSL 无头 Agent → Windows 主机 Hub → Token Monitor 小部件

Agent 是一台"没有界面的采集器":它在 WSL 内、贴着数据库的位置运行 Linux 版 tokscale 扫描器,把规范化后的用量摘要(而非原始数据库)发送给 Windows 上托管的 Hub,再由 Hub 推送到 Token Monitor 小部件。入口代码见 src/agent/agent.js,Hub 服务见 src/hub/server.js。

三步配置指南

第 1 步:在 Windows 启动 Hub

打开 Token Monitor 的设置 → 多设备同步,选择在这台设备托管 Hub,记下 Hub URL 与共享密钥。

💡 Hub 默认端口是17321。如果 WSL 无法访问界面显示的主机名,改用 Windows 主机的 IP,端口保持不变。请只在可信网络中开放 Hub,并妥善保存密钥。

第 2 步:在 WSL 内安装无头 Agent

Token Monitor 要求 Node.js 22.15.0 或更高版本,安装前先确认:

node --version npm --version git clone https://gitcode.com/gh_mirrors/tok/token-monitor.git cd token-monitor npm ci

然后创建token-monitor/.env,核心是四个变量:

TOKEN_MONITOR_HUB_URL=http://WINDOWS_HOST_IP:17321 TOKEN_MONITOR_SECRET=你的共享密钥 TOKEN_MONITOR_DEVICE_ID=wsl-agent TOKEN_MONITOR_CLIENTS=opencode,hermes,zcode

⚠️ 注意TOKEN_MONITOR_DEVICE_ID必须与 Windows 小部件的设备 ID不同。Hub 把相同 ID 视为同一台设备,重复 ID 会让后上报的记录覆盖先前的记录。

第 3 步:验证并持续运行

先发送一次快照,确认 Token Monitor 里出现第二台设备、且 SQLite 工具有用量:

npm run agent:once

验证通过后启动持续运行的 Agent:

npm run agent

需要无人值守时,把它交给 WSL 里常用的服务管理器(如 systemd)或登录启动项运行,并把工作目录设为 token-monitor 检出目录,确保.env能被加载。

采集边界怎么定?关键是不重复统计

Hub 会直接相加不同设备的总量,不会跨设备去重同一个 session。所以请二选一:

方案做法适合人群
✅ 推荐保留 Windows 的 WSL 扫描,Agent 只负责 SQLite 工具:TOKEN_MONITOR_CLIENTS=opencode,hermes,zcode大多数用户
备选Agent 采集全部 WSL 工具,然后在 Windows 小部件设置 → 采集中关闭"扫描 WSL 内的工具"想统一管理的人

核心原则只有一条:不要让两个采集器同时上报相同的 Codex、Claude Code 等文件型 session,否则总量会翻倍。

常见问题速查(Troubleshooting)

  • 没有出现第二台设备:检查 Hub URL、共享密钥,以及 Windows 防火墙是否放行了 Hub 端口。
  • 请求被代理拦截:把 Windows 主机 IP 加入NO_PROXY与no_proxy,或为 Agent 进程取消代理环境变量。
  • 总量重复:缩小TOKEN_MONITOR_CLIENTS范围;若 Agent 已负责全部 WSL 工具,就关闭小部件内建的 WSL 扫描。
  • WSL 检测仍显示无数据:这是正常现象。Windows 侧状态只描述它自己的\\wsl$扫描结果;WSL Agent 会以另一台同步设备出现,并成为这些 SQLite 工具的权威数据源。

延伸阅读:文档与源码索引

  • 官方 WSL 配置指南(中文):docs/wsl-sqlite-setup.zh-CN.md
  • 官方 WSL 配置指南(英文):docs/wsl-sqlite-setup.md
  • Windows 侧 WSL 扫描实现:src/shared/wslUsage.js
  • 无头 Agent 入口:src/agent/agent.js
  • 跨运行时架构契约(含 WSL 章节):docs/architecture.md
  • Hub 的 JSON HTTP API 契约:docs/API.md

配好之后,WSL 里每一个 SQLite 工具的 Token 消耗都会以独立设备的身份汇入同一块仪表板——用量盲区就此关闭,成本一目了然。

【免费下载链接】token-monitorLocal-first desktop widget for tracking token usage, costs, and limits across 43+ AI coding tools—including Claude Code, Codex, Cursor, OpenCode, OpenClaw, and more—with multi-device sync.项目地址: https://gitcode.com/gh_mirrors/tok/token-monitor

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

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

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

立即咨询