Know what you
actually did.
看清你到底
做了什么。

Claude Code already writes a status memory for you, every day. work-atlas reads the whole series — not just the latest file — and reconciles it against what your sessions prove you did. Claude Code 每天都在替你写一份 status memory。work-atlas 读整个序列——不是只读最新那份——再跟会话证明你做过的事对账。

Try the live demo →点开 live demo → View on GitHub去 GitHub
work-atlas dashboard

What wa web generates — a static site you open straight from disk. No server, no build step. Open the interactive version → 这是 wa web 生成的面板——从硬盘直接打开的静态站点,不用起服务、不用构建。打开可交互版本 →

The problem问题

Task trackers rely on you to log. You get busy. You stop.待办工具靠你自觉登记。你一忙,就不记了。

And that's exactly when you most need to know what's open, what's stalled, and what you finished but never cleaned up. work-atlas doesn't ask you to remember — it reconstructs your work from the sessions you already ran.而这恰恰是你最需要知道「哪些没做完、哪些停滞了、哪些做完但没收尾」的时候。work-atlas 不靠你记——它从你已经跑过的会话里,重建你干过的活。

How it works怎么做到的

Three sources, reconciled both ways三路来源,两个方向对账

Declared声明层

Memory, as a series记忆,作为序列

One status file per project per day, with its - [ ] / - [x] list, blockers and next steps. Read as a series it yields a completion log and a day-by-day timeline — read as a snapshot it yields neither.每个项目每天一份 status,带 - [ ] / - [x] 清单、阻塞和下一步。当序列读能拿到完成史和逐日演进;只读最新一份,两样都拿不到。

the authority权威源
Observed观测层

What you did你做的

Mined from session transcripts: which project, for how long, which files changed, what you were asking at the time. You don't log it — it's reconstructed, for free.从会话记录里挖出来:哪个项目、干了多久、改了哪些文件、当时在问什么。你不用记——自动重建,零成本。

mined for you自动挖
Reconciled对账

Both directions两个方向

Said, didn't do — loose ends, stalled work, todos carried forward for weeks. Did, didn't say — real hours on a project with no record at all. Most trackers are blind to the second one.说了没做——遗留项、停滞的活、连着几周被带过来却没划掉的待办。做了没说——有实打实工时、却毫无记录的项目。多数工具对第二种是瞎的。

the point核心
Why memory为什么是记忆

The answers were already on disk答案本来就在硬盘上

A session transcript can tell you that a file changed. It cannot tell you whether the task is finished, who you are waiting on, or why you chose this approach over the one you tried first. The memory can — and it has been accumulating this whole time.会话记录能告诉你某个文件被改了,但答不出这件事做完没有、在等谁、以及当初为什么选了这条路而不是先试的那条。记忆答得出——而且它一直在攒。

A completion log一份完成史

Every - [x] you ever ticked, deduped, dated by when it first landed. Filter by project, copy the lot. This is what a year-end summary is made of.你勾掉过的每一个 - [x],去重,标上第一次落地的日期。按项目筛,整份复制。年终总结就是从这儿来的。

A day-by-day timeline逐日演进

Per project: what got finished on which day, when it started being blocked, and the file:line references and commit hashes the notes left behind.按项目铺开:哪天完成了什么、什么时候开始卡住,以及记录里留下的 file:line 和 commit。

The durable notes长期记忆

The memories that outlive the task: how you work, what was agreed, which traps you already fell into. Cross-linked, searchable, browsable.比任务活得久的那部分:怎么干活、约定了什么、踩过哪些坑。互相链接,可搜可翻。

Only waiting on you只等你动手

The blocked items that aren't waiting on anybody else — take the photo, read the part number, run the test once. The only pile you can clear alone.那些不是在等别人的阻塞项——拍张照、读个编号、跑一次实测。唯一你能独自清掉的一批。

The miner挖掘器

Reconstructed, honestly, for nothing如实重建,零成本

Everything is parsed locally — no model calls, no API key, nothing leaves the machine. A sweep of hundreds of sessions and months of memory takes seconds.全部本地解析——不调模型、不要 API key,数据不出这台机器。几百个会话加几个月的记忆,扫一遍只要几秒。

$0
to read every session and every memory — pure local parsing读全部会话和记忆的成本——纯本地解析
30min
idle-gap cap, so an overnight session isn't counted as work空闲上限,过夜挂机不算工时
1/machine
cache file, so several machines merge into one year-end summary缓存一机一份,多台机器并成一份年终总结
The site面板

Panorama first, then what to do next先看全景,再看该干什么

The overview reads top to bottom: the numbers, where the time went, activity on a real calendar axis, then a card per project sorted by whether it's blocked — each one showing its current sticking point up front.首页从上往下读:数字、时间花在哪、真实日历轴上的活动分布,然后是按「有没有卡住」排序的项目卡——每张直接把当前卡点摆出来。

Per-project page with its day-by-day timeline

Drill into a project and you get its whole history: what's open, the day-by-day evolution, the session log, and the evidence it left behind. Try it →点进一个项目就是它的完整历史:还开着什么、逐日演进、会话记录、留下的证据。点开看 →

What else还有什么

And a way to talk to it还有一张能对话的嘴

Talk to it跟它说话

Install the skill and just tell Claude: "the auth migration is done, but the cookie isn't rotated on logout." It records the task and keeps the loose end.装上 skill,直接跟 Claude 说:「auth 迁移做完了,但登出时 cookie 没清。」它把任务记下,还把遗留项留住。

Reports报告

Pick a window in the browser and copy a paste-ready summary — facts only, no model in the loop. Or run wa report year and let claude -p write the prose around it.在页面上选个时间窗,复制一份能直接粘的小结——纯事实,不经模型。或者跑 wa report year,让 claude -p 把叙述写在事实外面。

Portable可移植

Install on a new machine and wa scan finds its sessions on its own. Your data lives in your own private repo, never in the tool.装到新机器,wa scan 自己找到会话。你的数据在你自己的私有仓,永远不进工具本身。

No build step零构建

Markup, styles and behaviour are real files, not strings inside Python. No node toolchain to install a CLI. Swap the front end and the data contract stays put.页面、样式、脚本都是真实文件,不是 Python 里的字符串。装个 CLI 不用先装 node。前端整个换掉,数据契约照旧。

Get started开始用

Three commands in三条命令上手

Python 3.8+. Runtime deps are just click and PyYAML.Python 3.8+,运行依赖只有 click 和 PyYAML。

# install
pipx install git+https://github.com/TbusOS/work-atlas.git

# set up + mine this machine's sessions
wa init
wa scan

# see it
wa web --open        # overview, projects, completion log, memories
wa memory            # what memory still lists as open
wa report year       # a year-end summary
wa skill install     # let Claude record tasks for you