当 AI 开始自己写代码,我更在意的是它到底做了什么

过去一段时间,我在用 OpenCode 写代码的时候,越来越明显地有一个感觉:AI Coding 现在缺的,可能已经不是"它会不会写",而是"它这次到底是怎么写的"。

在 demo 里,AI 工具看起来都很顺。你提一个需求,它吐一段代码,事情好像就结束了。但真到了日常开发里,情况没这么简单。一个任务会有 session 分叉,会不断有 message 更新,会反复调用工具,还可能在不同 agent 之间切来切去。这个时候,终端当然还能看,但它更像是一个结果窗口,不太像一个观察窗口。

你能看到最后输出了什么,但很难很快回答这些问题:

  • 这个任务到底经过了几个 session
  • 哪一步开始分叉了
  • 中间调用了哪些工具
  • 哪些内容是流式更新出来的
  • 某条异常前后的 payload 到底是什么
  • 这次大概花了多少 token 和 cost

而这些问题,恰恰是你真正把 AI Coding 用进真实开发之后,越来越常见的问题。

所以我做了一个 OpenCode 插件,叫 @wentianen/opencode-viewer

先看一眼界面:

它不是要替代 OpenCode,也不是想把终端再包一层更花的 UI。它更像是给 OpenCode 加了一个"活动观察层":把本地运行过程中产生的 session、message、tool、chat 这些事件记录下来,然后在浏览器里用一个 Viewer 把它们组织起来。

这件事听起来不复杂,但我觉得很有必要。因为 AI Coding 一旦进入深水区,你需要的就不只是"生成代码",而是"看清过程"。

opencode-viewer 现在做的事情也很直接。

它会在本地接入 OpenCode 的活动事件,当前已经覆盖了 session.*message.updatedmessage.part.updatedmessage.part.removedtool.execute.beforetool.execute.afterchat.message。这些信息不是只用来看热闹的,它们拼起来,基本就能把一次 agent 执行链路还原个七七八八。

在界面上,我主要做了四块内容。

第一块是 Session List。它不是简单列一个 session id,而是把 session 的层级关系摊开,让你能看到任务是怎么一路分出去的。对于已经开始用多 session、分支协作的人来说,这一点很重要,因为很多问题本来就不是发生在"最后那个结果"里,而是发生在某一次分叉之后。

第二块是 Timeline。这个区域把 chat、message、tool、session 这些记录揉在一条交互流里看,你可以按类型筛,也可以点进具体记录。终端的问题在于它天然是线性的,但 agent 的执行过程其实不是。Timeline 的价值,就是把这种非线性的执行过程,尽量压成一个能读懂的顺序视图。

第三块是 Detail。很多时候你不是不知道"出问题了",而是不知道"到底哪段 payload 不对"。所以我把原始事件体保留下来,点开就能直接看完整 payload。调工具、看 message 细节、复盘一次异常,这种时候就会很省事。

第四块是 Usage Overview。这个部分会把 tokens、cost、sessions、messages 汇总出来。平时大家都在聊模型能力,但真到长期使用阶段,你迟早会开始关心另外几个问题:这次为什么更贵了,这个任务为什么消息数突然变多了,某个 session 为什么明显更重。到这一步,可观察性就不再是锦上添花,而是实用功能了。

我自己觉得,这个插件至少适合三种场景。

第一种,是你已经开始频繁用 OpenCode 做真实开发,不再满足于"能跑就行",而是想知道它到底做了哪些动作。

第二种,是你在排查 agent 行为。比如它为什么调了这个 tool,为什么这轮 message 是这样长出来的,为什么某个 session 后面突然开始偏题。这个时候,有一个能回看的 Viewer,比翻终端历史轻松得多。

第三种,是你开始在意成本和复盘。AI Coding 一旦从玩具变成生产力工具,你就会关心 token、cost、消息数量、工具调用频率这些东西。你不一定每天都盯着它们,但当它们异常的时候,你需要一个地方能把原因翻出来。

还有一点我自己比较在意:这个 Viewer 是本地的。

它默认会在本地启动一个 service,然后用浏览器打开页面。日志也是本地落地,不是把你的活动数据扔到远端再给你一个后台看。对这类开发工具来说,我觉得"离你近"很重要。你装上、启动、看结果,整个反馈链路应该尽量短。

如果你想试一下,配置也很简单。把插件加到 opencode.json 里就行:

json 复制代码
{
  "$schema": "https://opencode.ai/config.json",
  "plugin": ["@wentianen/opencode-viewer"]
}

这个配置可以放在 ~/.config/opencode/opencode.json,也可以放在项目根目录的 opencode.json。正常启动 OpenCode 之后,插件会自动安装,并尝试拉起本地 Viewer service。

我并不觉得 AI Coding 接下来的关键,只是"再换一个更强的模型"。至少对已经开始重度使用的人来说,下一步很可能是把 agent 的执行过程看清楚。

很多时候,效率提升不是来自"它又多写了多少代码",而是来自"你能不能更快弄明白刚才到底发生了什么"。

这也是我做 opencode-viewer 的原因。

如果你也在用 OpenCode,而且已经开始碰到"过程看不清、问题不好复盘、成本没法感知"这些问题,那这个插件大概率会比你想象中更有用。

相关推荐
Dawson Zhu5 小时前
AI 辅助调试陷入「反复修改」循环?用证据驱动的四步法破局
人工智能·语言模型·架构·aigc·agi
Behaviour5 小时前
iPhone Duo 来了,苹果 Siri AI 接入定制 Gemini
人工智能·ios·语言模型·aigc·iphone
旋生万物6 小时前
量子纠错容错率87%?螺旋拓扑码用“相位保护“给量子比特上保险(附Python)
python·ai编程·量子计算·量子纠错·螺旋计算
kyriewen6 小时前
我用 AI 写完一个需求后才发现,最难的不是 prompt,而是验收
前端·程序员·ai编程
程序员老刘7 小时前
Dart Skills CLI 1.0发布,老刘年初的预言兑现了
flutter·ai编程·dart
旋生万物8 小时前
素数都排在等角螺线上?用螺旋数论给黎曼猜想画一张“几何画像“(附Python)
python·ai编程·数论·黎曼猜想·素数分布
浩风祭月8 小时前
GPT Image 2.5 Sunburst还是Flare?模型选型、Python接入与成本避坑
python·aigc·openai·图像生成·gpt image 2.5
手写码匠8 小时前
DeepSeek 函数调用实战:从零搭建一个会“动手“的 AI 助手
人工智能·深度学习·算法·aigc
殷紫川8 小时前
2026 爆火的「本体」:给大模型装上业务世界观
ai编程