今晚装了 Mindwalk 跑我两个真会话,agent 走过的地方发光,没走的一片漆黑

cover

Hello,我是飞飞。

你那些跑了几个钟头的 Claude Code 会话,agent 到底把仓库里哪些文件真摸过、哪些一眼都没看进去?今晚睡前我把自己上午和下午写两篇姊妹稿的两个完整会话,用一个叫 Mindwalk 的东西拍成了一张 3D 夜间地图,回放着看了一遍。发光那半我意料之中,是那大片漆黑没进去的地方让我坐直了。这半黑,是我以前从没量过的一层账。

作者不是新面孔

先说信任问题。Mindwalk 在 GitHub 的坐标是 cosmtrek/mindwalk,作者叫 cosmtrek。这个名字对写 Go 的人不陌生。他前一个作品叫 Air,Go 生态最常用的一款 live reload 工具,现在归 air-verse 组织维护。Reddit、pkg.go.dev、StackOverflow 都还留着它以 cosmtrek/air 起家的痕迹。

说白了这不是又一个 vibe coder 的周末小项目,是个已经把开发者工具做扎实过一次的人做的。看到 GitHub 页面那一瞬间我心里那个默认警惕,直接松了半档。

一条 curl 就装完

安装步骤简单到反常识。

1
2
3
curl -fsSL https://raw.githubusercontent.com/cosmtrek/mindwalk/master/scripts/install.sh | sh
export PATH="$HOME/.local/bin:$PATH"
mindwalk

装到 ~/.local/bin,install 脚本会用 checksums.txt 验签、可用 INSTALL_DIR 换目录、VERSION 锁版本。Windows 有 Releases 压缩包,愿意自己编就 make setup && make build

mindwalk 无参启动,它会自动扫两个目录,~/.claude/projects~/.codex/sessions。前者是 Claude Code 官方存 session 的地方,每个项目是一串 URL 编码过的路径当子目录名,里面是一堆 .jsonl。后者是 Codex 的对应结构。扫完起个随机端口的本地 UI,自动开浏览器。session 数据全在本机跑,一根网线都不用往外拉。

Ploy 篇那张图长这样

打开的头一眼,是我今天上午写「Ploy 迁移工程债」那篇文章时那个会话对应的地图。

Mindwalk Tree 视图·MyHexoBlog 仓库 Ploy 篇 CC 会话·89 次调用·512 里 493 黑

整场我插话 13 次。agent 忙了整场,屏幕上刷过大半页动作,可真正点亮的只有一盏灯,512 个文件里它伸手改过的就 1 个。剩下那 493 个,整会话它一眼都没进去。512 里 493 黑,96% 从头到尾没被 agent 摸过。这个比例,你光凭跑通那点印象根本估不出来,我也是回放着看才吓一跳。

Tree 视图从中央射出去几条主脉。最亮的一支是 source(我的 _posts/ 里那 100 多篇 md 全散在这支上);另一支是 .claude(skill 目录、references、CLAUDE.md 全在这里);再往外是 imagesreferencescontent-publisherskillsspecs 几个分支。整个图看着像一朵有几片长瓣的花。

右下方那个暖琥珀色的亮点标着 blog-cover,那是这次会话唯一被 edited 的目标,Phase 5 那次补配封面的动作在图上就一个孤立的暖点。

换 Terrain 视图再看一份

Tree 视图看重心散射,Terrain 视图看城市地形。你切到 Terrain,画风立刻变一副样子。你要是自己开一份纯调研会话对照,会更明显。我这次对照的是一份 894 个文件的安卓项目性能分析会话。

Mindwalk Terrain 视图·codex 会话·894 个文件它只翻了 41 次·我插话 2 次·全程读一处没改

图从放射状变成一片树图平面,每个文件夹凸起成一个方块,高度是被摸的深度和次数。绿色一片是瞟过的,浅蓝几列是读过的。894 个文件,它一处没改、只翻了 41 次,一多半连门都没推,一趟纯逛的调研。

这是一份纯读会话。城市地图上一整片绿色低矮建筑铺开,蓝色几栋略高一点,剩下暗色的地基是那 488 个没进去过的目录。

两张图并排看之下才明白,Ploy 篇那种「写作型」会话是一朵有编辑热点的花,codex 那份「调研型」会话是一整片没红点的绿城。同一个 agent,同一个模型,形状差得远。

这张形状图,就是 agent 把这次任务理解成了什么样子。我真正盯着的是那半黑,agent 没看到什么。它走过的路糙不糙,只是这半黑之外顺手能读到的另一层。

走得糙不糙也在图上

这半黑之外,还有一层顺手能读到的纹路。同一张图上,agent 走过的那些路糙不糙也全刻着,就挂在 HUD 顶上那条摩擦信号带,三个字段:

  • 报错率:这次会话里 agent 踩错的比例
  • 返工文件:改一版不满意、又推翻重改的那些文件
  • 验后乱动:跑完验证之后还在偷偷改的文件

Ploy 篇那张图上的读数看得我脸僵了一下。

同一批文件被它翻来覆去读了近六成。19 次工具调用报了错,没人拦。有一个文件被改了 3 次以上,大概率是那份 _posts/202607131714.md 本尊,polisher 后 grep 硬扫、再补字数、再改破折号回潮那 3 轮。顶上还醒目地挂着一句,这次会话从头到尾没走过一次验证。

这 4 个数字连起来读挺扎心的。

你大概也这样,跑通了、稿子发了,就默认这一趟挺干净。我也一样,脑子里的自我印象是「今天流水线跑得很干净」。可 HUD 一列一列摆出来,是另一个版本:读了六成回头翻的册子、错了 19 次没人拦、有一个文件被反复捶了 3 次以上、验证那步根本没跑。稿子最后是发出去了,只是过程比我以为的糙一档。

Ploy 那篇复盘里我讲过一件事,Ploy 团队跨模型头一次跑评测,1/3 的失败根本不在模型的锅,是跑分台架的假设错了。今天在自己会话的 HUD 上看这三个字段的时候我意识到,同样一批数据从跑通率上看 100% 都过,可摩擦信号带上写着「哪些地方我改了三次、还从没验过」。这是跑分台架之外的那道纹路,卡在跑通和跑对之间。

三个符号让会话可倒带

回放条下面那道时间轴,是把这张图按时间重走一遍。三个符号我上手就记住了:

  • 是上下文压缩(context compaction)
  • 是子代理启动(subagent launch)
  • 是用户轮次(user turn)

每一个都能点一下跳过去。你想看「上一次子代理启动之前 agent 干了什么」,点那个圆圈就行。

Ploy 篇那条时间轴我盯着看了会儿。前段一片蓝绿(search / read / exec 冷色),中段冒出一片密密的橙黄(edit / verify 暖色),那是 writer 那一大段疯狂 Edit / Write 的批量段落。尾部零星几个绿点(verify),基本没什么,跟 HUD 上那句「没验过」对得上。13 个 用户轮次密度不高,说明今天创作节奏是一口气跑、我停下手工插话的次数并不多。

Claude Code 我用了几个月,最难受的一次是一个会话撑到 6 小时。当时我正让它往一个工具文件里加函数,写着写着越看越眼熟,往上翻了两屏,它前面明明写过一个几乎一样的,这会儿又从头造了一遍。那一下我才回过神,是上下文糊了,早前写过的东西它已经忘干净了。当时只能凭直觉拍板「太长了该清」,现在这个 直接告诉你压缩到底发生在哪一秒,糊之前那次压缩就戳在时间轴上。

我为什么盯着黑的那半

回到开头那句话。发光那半在意料之中,那是 skill 目录、.claude/skills/*.md、Obsidian 04-Distribution 那几层,照着 Opus 的脾气磨了小半年的家底,被 agent 走一遍是必然。

盯着黑的那半我坐直了。512 里 493 黑,那一片深色区域里,一部分是我预期就该黑的(比如整个 themes/next/ 的几百个 ejs 模板,写文章根本不用碰);另一部分是让我意外的黑,原以为 agent 会顺手查一下、结果整个会话它都没进去。这两种黑意义完全不同。

作者 README 里那句我抄下来贴进了 skill 经验库:「The agent’s understanding of the task becomes a shape you can see at a glance.」他说 agent 对任务的理解成了你一眼看得见的形状。可我盯着那半黑的时候,脑子里自己冒出来的是另一句,agent 到底懂没懂这个活,过去全埋在几万字日志里,现在摊成一张图,亮的暗的一眼分完。

以前评估 agent 干活好不好,我看跑通、看输出、看月底账单,都是「发生了什么」的信号。现在还得看那半黑的:agent 没看到什么。特别是那种「按我脑子里的范围它本该看一眼、结果整个会话没进去」的黑,是这张形状图上我以前从没读的一块。

我下一步准备用 mindwalk trace 把今天两个会话导成规范化 JSON 存下来。说真的,这个季度的 CC 会话我打算定期回放对照,看那些黑区里有多少是真的不该看、有多少是我 skill description 写太窄导致 agent 压根没被唤起。

Agent View 后台 session 之前也坑过我一次。dashboard 上明明写着 running,我就当它在干活,转头去忙别的了。回来一看,输出停在半小时前那一行没再动过,其实早 hang 在某个工具调用上了。我是眼睛扫到时间戳才觉出不对。要是当时手边有 Mindwalk,摩擦信号带上那一段异常平的曲线,应该早把我叫回来了。

今晚就装一份

Mindwalk 才发布一天,还是很早期的东西,很多细节值得跑起来慢慢磨。但它头一回让我看见 agent 没看见的东西,就冲这一条,够了。

一条 curl,一个 Go 二进制,扫两个默认目录,浏览器打开就是你自己 CC 会话的夜间地图。真的建议今晚 20 分钟装一份看看。

你 CC 会话里那大片黑,是意料之中的黑,还是你自己都没想到 agent 压根没进去的黑?