BaseHalf
全部文章

上下文就是界面

我们对 Agent 说“改进一下这个”,它不知道“这个”是什么。为了让这个词管用,我们做了些什么。

十月的一天,我们中的一个人在新笔记里写了个问题,切到 Agent Area,只想说一句“改进一下这个”。Agent 不知道是哪篇笔记,也不知道是笔记里的哪一段。

通常的办法是报文件名、贴段落,再解释它在哪儿。那句话明明就选中在眼前的屏幕上,还要这样转述一遍,实在有点怪。可和 Agent 一起工作,大部分时候就是这种感觉。模型够好,输入框也没问题,缺的是当下的处境:四十个文件里你说的是哪个,这份草稿是从什么写来的,你正看着哪一行。

第一次尝试

这个问题我们试着解决过,失败了。早先的 BaseHalf 会在你每次移动时,把你的位置写进文件夹里的一个文件,供 Agent 读取。

Agent 得自己决定每一轮都去读这个文件,没有哪个 Agent 能稳定做到。你一离开画布它就过期了,而且没有任何提示。里面的列号也是错的。每动一下光标,git 里就多一处改动。九月我们把它删了,写下原因,并认定指向某个东西是 Agent 自己的事。

第二次尝试

几周之后,那句“改进一下这个”让我们改了主意。不管该谁负责,这件事一直没人做成。BaseHalf 的编辑器是自己写的,任何 Agent 的 IDE 集成都看不进去,终端里的 Codex 更是没有这种集成。

于是这份记录又回来了,这次照着上回出错的清单来做:

  • 它记下你选中的文字和所在的行,只有选中别的内容时才会变。
  • 它放在 git 看不到的缓存文件夹里,窗口一关就消失。
  • Agent 加载的 skill 写明了它什么时候有用:当一个请求没说是哪个文件的时候。
  • 状态栏始终显示记录的内容,Agent 能读到什么,你就能看到什么。

最后这条回答了一个你本来会不断问自己的问题:它以为我说的是什么?答案就写在窗口底部。

一个词

现在你选中一句话,直接问就行。我们拿决策笔记里的一行试了试,“Sync the packing list once signal returns”(信号恢复后同步打包清单),输入 “who asked for this?”(这是谁提的?)。回答的开头是:

Nobody asked for it directly. I took "this" to mean the line you just selected, "Sync the packing list once signal returns" (offline-maps.md:14). It looks like the decision note's own conclusion, drawn from three things its sources do say.

意思是:没有人直接提过。它把“这”理解为刚选中的这一行,看起来是决策笔记自己得出的结论,依据是来源里确实写过的三件事。

画布上一篇笔记里选中了 “Sync the packing list once signal returns” 这句话,Agent Area 里的 Claude Code 回答说没有人直接提过,状态栏显示着选中的句子。

要不要去看,仍然由 Agent 自己决定;请求里明确提到别的内容时,以你说的为准。

这个小功能花了一份规格、一个 skill 和两次尝试。为了“这个”这个词,我们觉得这个工作量刚刚好。一句简短的话要管用,前提是双方都看得到它周围的东西,而 AI 工具最值得花心思设计的,就是这部分。