Skip to content

TRAE Work CN 默认关闭导致已安装用户零感知,建议改善 opt-in 提示 #492

Closed

Description

@Hu9956

背景

PR #474 feat: 支持 TRAE Work CN Token 统计 已合入 main (v0.91.3),本机验证链路正常:

  • ~/Library/Application Support/TRAE SOLO CN/User/globalStorage/storage.json 存在,iCubeAuthInfo://icube.cloudide 为合法 tc v5 密文(2464B,magic 74 63 05 10 00 00),status 显示 auth readable
  • TOKENTRACKER_TRAE_CN_USAGE=1 时:sync → 404 条 trae-cn 写入 queue.jsonl(GLM-5.2 / DeepSeek 等)
  • 无 env 时:sync → 0 buckets queued,queue.jsonl 0 条 trae-cn,status 仅一行 usage sync off (set TOKENTRACKER_TRAE_CN_USAGE=1 to enable)

原因是按审查要求 S1 加的默认关闭 opt-in:

src/lib/trae-cn-config.js:27 isTraeCnUsageEnabled() 仅在 TOKENTRACKER_TRAE_CN_USAGE=1/true 时发请求到 https://api.trae.cn/trae/api/v1/pay/query_user_usage_group_by_session(涉及本地 JWT 外发,CodeQL file-data-to-network)。

问题

  • 对于已安装 TRAE SOLO CN 的用户,默认行为等同于“未支持”——无用量、无告警、无引导
  • README 表格写 TRAE Work CN | ✅ Auto,docs/PRIVACY.md 写 During eligible ... when auth exists,均未提 env,与代码行为不一致
  • init 不检测/status 提示淹没在 30+ 行里、sync 静默跳过,Settings 无开关,发现率极低

建议(需你拍板,PR 可按结论提小改动)

方案 A(最小改动,推荐先做): 仅增强 status —— 已装且 auth readable 但未 opt-in 时,把该行高亮(黄字/加粗)并在末尾追加一行显眼 hint,例如:

⚠ TRAE Work CN detected but usage sync is off — run: export TOKENTRACKER_TRAE_CN_USAGE=1 && launchctl setenv ...

方案 B: A + sync 时若检测到 traeCnInstalled && !optIn && !isBackgroundLightweightSync,在 stderr 打印一次提醒(每次 sync 最多一次,避免刷屏)。

方案 C(全链路): B + init 检测到 CN 安装时给出说明,并将 isTraeCnUsageEnabled 扩展为 env || config.json,让 init 可持久化写入配置(现仅 env 可持久化靠 shell profile,对桌面端不友好)。

方案 A/B 不改持久化,风险最小;方案 C 需要新增配置键,但体验最完整。

询问

  • 是否接受上述任一提示增强?倾向哪一档?
  • 是否愿意在文档中明确 opt-in 要求,或考虑将默认改为开启+在 init 做隐私确认(与其他被动读取器一致)?

复现:tokentracker status vs TOKENTRACKER_TRAE_CN_USAGE=1 tokentracker status;tokentracker --debug sync 对比 pendingBytes / queue.jsonl 中 trae-cn 计数。

Activity

  1. linear commented on Aug 21, 2026

    @linear
  2. xiufengsun commented on Aug 23, 2026

    @xiufengsun
    Owner

    文档确实在说谎,这部分已经改了(d385fdf2):

    • 五个语言版本的 provider 表格和 docs/PRIVACY.md 的两处,现在都把 TOKENTRACKER_TRAE_CN_USAGE=1 写在第一句。状态列保留 ✅ Auto —— 在这张表里它的含义是「不用手工装 hook 或插件」,这一点没变;缺的是 opt-in 本身。
    • status 采纳方案 A 的最小版:已安装 + auth readable + 未 opt-in 时,那一行前面加 ⚠。信息本来就在,问题是它和另外 30 行中性的安装行长得一样。

    方案 B 不做。sync 的 stderr 对桌面端用户根本看不到,对终端用户则是每次 sync 都要看一遍的噪音,而这个提示只需要看到一次。

    方案 C 值得做,但不是加个配置键的量级。要持久化的是「允许把本地登录凭据发给第三方」这个授权,它得在 Settings 里看得见、能撤销、撤销后立刻生效,而不是藏在 config.json 里让人以后忘掉自己开过。这个单独排。

    默认开启不会做。这条链路把本地存的 JWT 发到 TRAE 的接口,跟其余全部被动读取器不是一个性质 —— 那些只读本机文件。显式 opt-in 是刻意的,会一直这样。

  3. xiufengsun commented on Aug 29, 2026

    @xiufengsun
    Owner

    这条的核心诉求已经落地,先关闭。

    • 五个语言版本的 provider 表格和 docs/PRIVACY.md 都把 TOKENTRACKER_TRAE_CN_USAGE=1 写在第一句,文档不再和实际行为矛盾。
    • status 在「已安装 + auth readable + 未 opt-in」时给那一行加 ⚠,从三十行同样中性的安装行里区分出来。

    方案 C 我仍然认为该做,但它不是加一个配置键的量级:要持久化的是「允许把本地登录凭据发给第三方」这个授权,得在 Settings 里看得见、能撤销、撤销后立即生效。这跟本 issue 的「提示不足」是两件事,我另开条目跟踪,不挂在这里等。

    默认开启不做,理由不变。感谢你把链路验证得这么完整。

  4. xiufengsun commented on Aug 29, 2026

    @xiufengsun
    Owner

    跟踪条目已开:#538。

  5. locked as resolved and limited conversation to collaborators on Sep 28, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions