下载

Token Forest 隐私声明

版本 1.0-beta · 最后更新 2026-08-16 · 自首个公开版本(v0.1.0,2026-07-09)起生效

发布者:Poietic Studio

本页为英文版《隐私声明》的中文翻译,便于阅读。如中英文之间存在任何歧义,以英文版为准。

Token Forest 是一款把 Claude Code / OpenAI Codex 用量变成像素树成长的桌面应用。本声明说明应用会读取什么、保存什么,以及——仅在你主动开启后——上传什么。同一文本以 PRIVACY.md 发布于公开产品仓库,其 git 历史即本声明的公开变更记录。

摘要

  • 核心功能完全在你的设备上运行:无需账号、无需 API key、无需网络。
  • 应用没有遥测、广告、崩溃上报。可选的更新检查默认关闭;即使打开,App 也不会自己装任何东西—— 它只告诉你有新版本,你要的话再把安装包下下来交给你自己运行。
  • 它读取的是 AI 编程工具已经写在你本机的使用日志——从不读取你的源代码文件。
  • 不保存、不上传 prompt 或对话内容。
  • 全球排行榜为可选功能,默认关闭。开启前会弹出同意确认,列出将同步的全部字段;关闭时会请求删除你的记录。
  • 我们不出售个人数据——默认模式下我们根本收不到任何数据。

应用在本地读取什么

Token Forest 读取受支持工具在本机生成的使用日志:

Claude Code:  ~/.claude/projects/**/*.jsonl
OpenAI Codex: ~/.codex/sessions/**/rollout-*.jsonl

从日志中使用:四类 token 数量(input / output / cache 读 / cache 写)、时间戳、来源(Claude/Codex)、模型标识、会话标识、项目目录名、Git 分支名、AI 生成的会话标题,以及消息类型结构(仅用于区分真实提问与工具结果)。

解析日志行时,其完整内容(可能包含 prompt 文本)会经过内存。Token Forest 不需要理解 prompt 含义,不会把 prompt/对话正文写入自己的数据文件,更不会上传;也从不打开你的源代码文件。

应用在本地保存什么

当前 Beta 将数据文件保存在应用目录旁;后续版本会迁移到标准每用户目录(Windows:%LOCALAPPDATA%\TokenForest\,macOS:~/Library/Application Support/TokenForest/)并自动迁移数据。

文件内容
garden.json每棵树的 token、阶段、果实、装饰、首次使用时间;以及已收取 token 按模型的累计(模型名 + 四类数量,无日期)
config.json窗口位置、语言、气泡模式、排行榜状态、昵称、地区
growth_ledger.json按日期 × 树种 × token 类型的成长流水
usage_ledger.json聚合会话元数据:日志路径、项目名、分支、AI 标题、时间、模型、按日 token 汇总
account.json仅在开启过排行榜后存在:匿名用户 ID 与 Supabase 会话令牌
sync_error.json仅在开启过排行榜后存在:最近一次排行榜同步失败的错误信息与时间(仅用于诊断;从不上传)
update_state.json仅在更新检查跑过后存在:上次成功检查与上次尝试检查的时间,以及缓存下来的最新版本号、发布页链接、安装包的 SHA-256 与大小

这些文件只存在于你的机器上,不会上传。usage_ledger.json 含文件路径等本地元数据,同一台电脑的其他用户若能读你的文件即可看到,请把应用数据目录视为私人目录。自 v0.2.0 起,会话令牌保存在操作系统的凭据存储中——macOS 钥匙串、Windows 凭据管理器。account.json 里保留一份副本,是为了让不认识凭据存储的旧版本仍能找到你的账号,而不是当成「从没注册过」重新注册、把你榜上那一行变成孤儿。删除这些文件(或卸载并删除目录)即清除全部本地数据。

默认网络行为

默认情况下,Token Forest 不发出任何网络请求:成长、气泡、商店、胶囊模式、数据面板全部离线可用,成本估算使用内置价格表。

会联网的可选功能是排行榜、价格表更新和更新检查。它们各自独立、全部默认关闭,在你主动操作之前都不会有任何动作:

  • 排行榜 —— 默认关闭,见下一节。
  • 价格表更新(v0.1.5+)—— 在数据面板点击「↻ 更新价格」,或在设置中打开「自动更新价格表」(默认关;开启后每日至多检查一次),会下载一个静态文件 https://tokenforest.com.au/pricing.json,让新发布的模型不用等 App 更新就能计价。这是纯下载:请求不携带任何用量数据、标识符或账号;文件经校验后缓存在本地,任何失败都会静默回退到内置/缓存价格表。
  • 更新检查(v0.2.1+)—— 默认关闭。可以在首次启动的欢迎弹窗里打开,或在设置 → 关于里打开;此外还有一个手动的「检查更新…」,点一次只发一次请求,不会顺手把自动检查打开。开启后,App 会向 GitHub 问一次最新版本:GET https://api.github.com/repos/Ericcccccc777/Poietic-TokenForest/releases/latest,成功之后每日至多一次;连不上时最多每 6 小时重试一次(即一天至多 4 次)。请求没有请求体、URL 不带任何查询参数、无 Cookie、无 Authorization;App 设置的请求头只有三个固定常量(User-Agent: TokenForest-update, Accept: application/vnd.github+json, X-GitHub-Api-Version: 2022-11-28),在每一台安装上都逐字节相同。请求不带版本号、不带平台、不带任何标识符、不带任何用量数据—— 版本比较在你自己的机器上完成。在你点「下载更新」之前不会下载任何东西;下载后的文件会按同一个 GitHub Release 给出的 SHA-256 核对,保留 macOS 的 quarantine / Windows 的 MOTW 来源标记,并且只在访达 / 资源管理器里帮你定位。App 不会替你安装、不会自我替换、不会申请提权。打开它意味着新增一个网络对端:GitHub —— 和任何在线服务一样,GitHub 及沿途的网络基础设施可能按其自身政策处理你的 IP 地址、请求时间和标准服务器日志;而且即使请求不带任何数据,一台开着更新检查的机器仍会在 GitHub 的日志里留下「大致在哪些日子被打开过」的痕迹。

菜单中打开网页的入口(如排行榜网站)只是调用系统默认浏览器,桌面应用本身不在后台发送任何内容。

可选排行榜

默认关闭。选择「开启」会先弹出同意确认,列出将同步的全部字段;确认前不会发送任何内容。

开启后,应用会向 Supabase(数据库服务商)注册匿名账户,并大约每 30 分钟以及启动、换树、退出等时点同步:

字段是否公开展示
随机匿名 ID(Supabase 生成;归属你的记录,同时也是你徽章图片与项目图片的地址)是(出现在这两个链接里)
展示昵称(留空则生成「匿名用户#编号」)
收集的树 Token 总数
每棵树的 Token 数与成长阶段是(树详情)
地区——仅在你主动选择后是(国旗)
当前树种
App 版本号
上一个匿名 ID —— 仅在会话失效重新注册后:把新记录与被接替的旧记录关联,便于下架旧的(v0.1.6+)
防作弊摘要——四个数字,见下(v0.1.5+)
你收取的 token 按模型的构成——模型名、所属厂商、输入/输出/缓存读/缓存写数量及其合计,不带日期(v0.2.0+)是(模型榜)
项目展示 —— 由你自己填写的项目名称、一句话简介、链接,以及一张图片(v0.2.2+)。默认关闭,在排行榜设置里。图片在离开本机之前会被压到 512px / 64 KB 并去掉位置、相机等信息;关掉这个开关后,下一次同步会清空这几项并删除已上传的图片(详见下文「项目展示」一节)。
服务端生成的创建/更新时间可能显示

这一列里,「是」代表它会出现在公开页面上,「否」代表不会。防作弊那四个数字还额外锁在数据库层:App 与网站使用的公开只读密钥连读都读不到那几列。

小字说明:昵称留空时生成的匿名名按你的界面语言渲染,因此榜单会间接体现你的 UI 语言。

按模型的构成(v0.2.0+)。排行榜除了「谁的树最大」,还有「使用最多的模型」「厂商对比」这类榜单。它们由一份按模型的构成支撑:模型名(如 claude-opus-4-8)、它所属的厂商,以及四类 token 数量及其合计。

除 token 榜外,这份构成还用于两个公开榜单。厂商使用量榜把所有玩家在某个厂商、某个型号上的 token 加在一起,是全社区合计。网站上显示的是这份合计,但它背后那些「某个人某个模型用了多少」的明细,可以通过我们的公开数据库接口读到,并且能对应到某个匿名 ID。树林价值榜显示你收取的 token 折算成美元的估算:金额在我们的服务器上算,用你本来就会同步的数量乘以各模型的公开价格——你的机器从不发送任何金额,也不会为此多上传字段。它是估算不是账单:不考虑订阅、折扣与免费额度,厂商改价时所有人同时变动,而每个 token 归到哪个模型名下来自你自己的机器,未经独立核验。两个榜单都会标明自己覆盖了全部已统计 token 的多少。它统计的只是你亲手点掉的那些气泡。每颗气泡都带着「自己是由哪几个模型烧出来的」,这份构成在你点掉气泡的那一刻才入账——和树的分数同一时刻、同一笔能量;没被点、直接过期的气泡两边都不算。Token Forest 不会为了这个榜去翻你安装之前的历史日志。

厂商由模型名派生,而不是由哪个 CLI 记的日志派生:用户常把 DeepSeek、GLM、Kimi 经 ANTHROPIC_BASE_URL 接进 Claude Code,按来源归会把它们错记成 Claude。

它不带日期。只有累计量,没有按天、按小时、按会话的拆分,因此和防作弊那四个数字一样,还原不出你几点在工作、几点在休息。按日期的拆分留在你的机器上,供数据面板使用。

记账从 v0.2.0 开始。更早收取的 token 没有模型归属,也不会补算,所以模型合计通常小于你的分数。一次同步最多带 30 个模型(真实用户通常 5~15 个),超出的按用量倒序截断;模型名要过两道校验——App 这边把字符集不合规的归进单独一格「unknown」,服务端再独立复核一次字符集与违禁词表,没过的行直接丢弃。

任何模式下都不会上传:原始日志、prompt/对话正文、源代码、会话标题、文件路径、从日志里读到的项目文件夹名、Git 分支、按会话用量、成本估算、未被你收取的 token 的任何信息,以及任何逐片段/按时段的 token 使用明细——包括上面那份模型构成的按日期拆分。

与任何在线服务一样,Supabase 的基础设施会为运行与安全处理标准连接数据(如 IP 地址、请求时间),适用其自身政策。

防作弊摘要(v0.1.5+)

排行榜分数是你自己机器算出来的一个数字,单看它什么也证明不了——而且这把刀是双刃的:有人可以改本地存档把它抬上去;而一个诚实的重度用户,把气泡攒一整天再一次性收取,产生的跳变和作弊长得一模一样。为了把两者分开,每一次让分数上涨的同步会附带四个聚合数字,说明这次涨分是怎么赚到的:

  • 这些新增的 token 分布在多少个 5 分钟片段里,
  • 其中最多的一片有多少 token,
  • 它们的总和,以及
  • 从最早的片段到最晚的片段跨了多久。

片段按 Claude Code / Codex 日志里那条消息自己的时间戳切分——也就是 token 真正被消耗的时刻——所以囤了一整天的气泡会正确地读作「很多个平平无奇的片段」,而不是「一次不可能的暴涨」。

我们刻意不上传逐片段的时间线。一份 5 分钟粒度的 token 使用记录,等同于一份「你几点在工作、几点在睡觉」的日志。这四个聚合数字还原不出它:它们只说最多的那一片有多大,从不说那是哪一片。精确的逐片段数值在你的机器上计算、用来推导出这四个数字,然后就留在你的机器上,不会离开。

这四个数字不在公开排行榜上展示——数据库层面已对公开只读角色撤销了这几列的读取权限。只有管理员在审核某个具体账号时可见,且仅供参考:它们辅助人的判断,不会自动惩罚任何人。如果应用无法为自己给出的数字背书(例如中途升级过,或在收取气泡和同步之间被关闭),它会什么都不报,而不是报一个错的。

开启 · 暂停 · 关闭

  • 开启——定期同步。
  • 暂停——停止更新,最后一次记录保留在榜上。
  • 关闭——停止同步,并发送删除请求撤下你的记录。

Beta 限制,如实说明:删除请求失败时(例如离线),当前 Beta 尚不会重试或确认;联网后再切一次「关闭」会重新发送。可靠的删除确认机制会在正式版前补齐。你也可以联系我们协助删除(见「联系我们」),提供 App 内显示的匿名名/编号即可——请勿把 account.json 里的令牌发给任何人。

网站

本网站不使用分析工具、广告跟踪或营销 Cookie。托管商会为提供与保护服务处理标准服务器日志(IP、浏览器标识、请求页面、时间)。排行榜页面读取上述公开榜单数据,浏览无需登录。本站还会为主动索取的玩家提供一张徽章图片:它的地址里含有你的匿名 ID,显示的是与你榜上那一行相同的公开数字。你把它贴到哪里,那个页面的访客(或该平台的图片代理)就会来本站取图,我们因此会看到上面说的那类标准服务器日志。将来若引入 analytics 等服务,会先更新本声明。

首页展示了一段演示视频。在你点击播放之前,页面不会向任何视频平台发起请求 —— 静止状态下显示的只是一张由本站提供的图片。当你点击播放、或点击切换片源的按钮时,视频会从 YouTube(中文页默认从哔哩哔哩)加载,自那时起对应平台可能按其隐私政策写入它自己的 Cookie 并获取你的 IP 地址。只要不播放视频,即可完全避开两者。

服务提供商

仅为明确功能使用少量服务商:Supabase(匿名认证 + 排行榜数据库)、网站托管商、GitHub(产品仓库、Issues 与 Release 下载)。服务商区域与政策链接将在首个正式版前在本节补全。

项目展示(v0.2.2+,默认关闭)

排行榜设置里有一个叫「项目展示」的开关。打开之后可以填项目名称(最多 24 字)、一句话简介(最多 80 字)、一个链接,以及一张图片。这四项会随排行榜同步一起公开显示在你那一行旁边。有几件事必须说清楚:

  • 默认关闭,而且排行榜本身没开时它什么也不做。如果你从没打开过,这四项一个字节都不会发送;而把它关掉时,这四项会以空值发送一次,用来清空已经存下的内容。
  • 内容由你自己写,显示出来的就是你写的,只会去掉首尾的空格。不要填任何你不希望公开的信息。
  • 我们可能暂不显示它。如果你的账号正在接受审核,项目展示不会出现在排行榜上,由人工放行后再显示;你榜上的其余内容不受影响,等待期间你填的内容也不会被删除。「不显示」不等于「藏起来」:它只是不出现在公开页面上,你填的内容仍留在我们这边,图片也仍保留它原来的直接地址。
  • 图片在离开你的机器之前会被重新编码 —— 缩到最长边不超过 512 像素、64 KB 以内,并在这一步去掉其中的位置、相机等信息。你拿手机里的照片来传,它的 GPS 坐标不会跟着走。
  • 关掉开关就是撤下。下一次同步会清空榜单上的这几项并删除已上传的图片;整个关掉排行榜则会连同你那一行一起删除。不是只在你这边隐藏。Beta 限制,如实说明:这次清理发生在「关掉」这个动作到达我们这边的时候,所以如果此时离线、或者 App 的匿名会话已失效无法鉴权,榜上那几项和那张图片会维持原样,直到之后某次尝试成功。也可以联系我们代为删除。
  • 链接必须以 https:// 开头,接受之前会先校验。文字会经过与展示昵称同一套词表审查,本机一遍、服务端再一遍。

如何验证这些承诺

我们很清楚“相信我们”这句话本身不够分量。断网状态下应用照常运行——你可以亲自试试。Release 会发布 SHA-256 校验值与签名状态,Release notes 会单独列出任何隐私/网络变化;有四个早期版本例外——v0.1.0、v0.1.1、v0.1.2 未公布校验值,v0.1.9 两样都没有。源代码目前是私有的,但我们在考虑开放核心的用量读取组件,让“只读日志、默认零上传”可以被独立审计。

你的控制权

  • 完全离线使用——不开启排行榜即可;
  • 随时在树的菜单中暂停或关闭同步;
  • 修改或清空昵称与地区;
  • 删除应用数据文件/卸载即删除本地数据;
  • 点「关闭」会请求删除你的排行榜记录。若此时离线,或匿名会话已失效无法鉴权,该记录可能会留在榜上,直到之后某次尝试成功为止(应用会在本地记录这次失败)。可联系我们确认或强制删除。

变更

未来版本若新增任何数据处理(遥测、崩溃上报、新的网络对端、新排行榜字段),会在该版本发布之前更新本声明与 App 内同意文案,并在 Release notes 的「Privacy or network changes」一节中明确列出。

到目前为止按这个流程处理过三次:价格表更新(随 v0.1.5 发布,新增的对端是本站托管商)、更新检查(v0.2.1,新增的对端是 GitHub),以及项目展示(v0.2.2,第一次出现由你自己填写的内容和由你上传的文件)。三者都默认关闭。

联系我们

发布者:  Poietic Studio
隐私:    contact@tokenforest.com.au(专用信箱 privacy@tokenforest.com.au 正在开通中)
安全:    见 Security 页
网站:    https://www.tokenforest.com.au