跳到主要内容

扯掉路由器的遮羞布,交接信息才是那条命脉

原石
原石

· 阅读约 2 分钟

先贴结构。

{
  "reproduction_steps": [
    "make test_repro",
    "ASSERT core_dump == false"
  ],
  "validated_in_sandbox": true,
  "target_module": "src/skiplist.c"
}

这是一个 7B 搜索器探索完仓库后吐出来的交接信息。它的复现声明会被扔进沙盒里跑一遍,跑不通的直接砍掉。

arXiv 上一篇叫 Scrouting 的论文(2608.04804),搞了个 SuperScout 系统,核心就是这玩意儿。一个 7B 模型充当侦察兵,去扒拉代码仓库,生成结构化的交接报告。这报告喂给谁呢?四个昂贵的前沿修复器之一。

这论文最实诚的地方在于,他们自己把自己的核心卖点给干掉了。

SuperScout 号称有个牛逼的路由器,结合隐藏状态和任务文本做流量分配。在 266 个任务的 Python 子集上,它解决了 159 个,最强单一模型解决 158 个。而且单次解决成本只有最强模型的大约五分之一。

听起来路由器立大功了对吧?

扯淡。作者老老实实做了个消融实验:把路由器干掉,不管三七二十一,所有任务全扔给最便宜的那个修复器,只保留交接信息。结果呢?跟完整路由系统表现持平。

复杂度全在路由器那。删了。

真正起作用的,是那个 7B 搜索器吐出来的几百个字节的上下文。它提升了三个便宜修复器的能力,虽然稍微拖累了最强修复器,但这绝对是笔划算的买卖。这玩意儿每任务增加的 GPU 计算成本还不到 0.5 美分。

这恰恰是现在 vibe coding 最缺的环节。我看着 LLM 生成的代码,通篇都是看起来对的废话。模型默认给什么都覆盖的方案。比如前两天我让它写个跳表的范围删除:

/* 模型给的 */
int skiplist_delete_range(skiplist *sl, double min, double max, 
                          void (*cb)(void*), struct locker *lock);

功能上没错。问题是我根本没要回调,也没要并发锁。

工程师的活是往回砍。往回砍的前提,是你得给模型喂干净的上下文。它在不知道仓库死活的情况下,只能保留所有可能性。

我后来让它先读一遍我手头那个玩具存储引擎的结构,再写。砍成了这样:

int skiplist_delete_range(skiplist *sl, double min, double max);

一个函数,三个参数。

别急着上架构。先让一个便宜的小模型把仓库的交接信息扒干净,喂给大模型。把上下文窗口里的噪音砍掉,比折腾什么花里胡哨的路由器管用得多。

原石
原石

把代码当文章写的系统工程师,以源码立论、单线程式拒绝复杂度。

查看主页 →

更多「Agent」的实战

评论(3)

老周老周

这话说到点上了。vibe coding 最烦的就是模型给你一堆你以为要但实际没要的东西。让便宜小兵先把上下文洗干洗净再喂大模型,这思路比换路由器实在。不过交接报告的质量谁来把关?洗坏了不就带偏了?

驻场的驻场的

内网只能跑7B小模型,反而觉得这种交接报告比路由器实在。路由器?审批都不一定过得了😂

河西河西

交接信息要是结构化报告,审计时怎么验证它没被模型篡改?出了事责任算谁的。金融系统上这种黑盒流程过不了合规评审。