项目时间是怎么归属的

同一个下午,一个终端、一个浏览器和同一个 AI 工具可能服务好几个项目。赏月先从窗口标题里读项目名,再用前后活动和 AI 会话补上一部分,剩下的不硬分,保持未归属。
直接认出项目名的几种方式
赏月会在每个记录窗口的标题和文档路径里找项目。终端标题里出现 www/mole-mac 或 ~/www/mole-mac,项目就是 mole-mac。放在名为 www、src、code、repos、projects、workspace、developer 或 dev 的文件夹下的文档,会把下一级目录当成项目。浏览器地址是 github.com 或 gitlab.com 时,取路径里的仓库名。最后才轮到那种标题以文件名加破折号再加仓库名结尾的写法,同样按仓库名读。
名字统一转成小写,所以 Mole 和 mole 是同一个项目。Documents、Downloads、node_modules、dist 这类只描述目录结构的名字,以及纯数字的名字都会被忽略。这一切都要先记下窗口标题,如果「隐私」页没有打开「窗口标题」,项目列表就是空的,并且会提示原因。
缺口是怎么补的
很多工作的标题里根本没有项目名,终端里跑着 AI 代理时标题可能只剩一个光标,浏览器里的文档页也不会带出仓库名。赏月用两种有限的办法补上其中一部分。如果你离开某个项目的窗口去了别的应用,3 分钟内又回到原来的应用,中间那些自己认不出项目的窗口,比如查资料、看文档,都会算给这个项目。
第二种办法用 AI 会话。打开「AI 提问」之后,赏月知道你每一次向 Claude Code、Codex、Cursor 或 Antigravity 提问的时刻,以及那个会话所在的工作目录。提问前后大约 5 分钟内的工作类窗口会归到这个会话的项目,前台是终端或 AI 桌面应用时,会先看那一刻哪个会话正在忙。几个项目同时在跑、又分不出最近交代的是哪一个,这段时间就保持未归属,浏览和聊天不会用这种方式补。
一段连续的活动可以在证据变化的地方切开,所以一次终端停留可能一部分算给某个项目,另一部分没有归属。原始记录保持不变,「日览」「周览」「月览」和日报读的是同一批切片。
直接的和推断的分开显示
项目列表里,每个项目的总时长分成「从标题识别」和「根据前后活动推断」两部分,后者是推断时间的标签。「时间线」上由推断得到的归属会标上「推断」。项目列表的悬停提示还会给出多少比例的使用时间可以归到具体项目,并说明其中一部分来自活动衔接和 AI 记录的推断。
这两个数字的分量不一样。从标题识别的时间更可靠,因为窗口本身就写出了项目,推断的时间是对前后情形的合理解读,一个项目如果大部分是推断出来的,引用之前最好再核对一次。覆盖率偏低时,先检查有没有记下窗口标题,再去判断工作是不是真的很分散。
拿一个熟悉的日子核对,并了解边界
挑一天你清楚自己做了什么的日子,对照「时间线」、项目列表和日报,它们讲的应该是同一件事。
有两个边界要知道。多窗格终端只能读到聚焦的那一格的标题,在后台窗格里做的事可能归错项目,或者完全没有归属。另外赏月读的是 Claude Code、Codex、Cursor 和 Antigravity 的会话记录,用其他工具做的工作得不到第二种办法的帮助,只能靠窗口标题。