摘要:我们花了两个月业余时间,用两三千行 Python 代码构建了一个名为 Rocky 的开源 Coding Agent。它的系统提示词只有 30 行,代码量是同类项目的十分之一,却能在 SWE-bench Verified 上达到 81% 的解决率。这篇文章记录了我们在设计决策、安全机制、评测方法和自进化路径上的思考——以及那些”做对了”和”做错了”的选择。

1. Background: 为什么还要做一个 Coding Agent

过去一年,Coding Agent 赛道已经拥挤不堪。Codex 和 Claude Code 凭借强大的模型能力和成熟的工程实践占据了头部位置,开源社区也有 OpenCode 这样的数十万行代码的庞然大物。

我们为什么还要做一个?

首先是成本与隐私。Claude Code 的订阅制和闭源策略意味着你的每一次交互都发生在别人的服务器上,而它此前的源代码泄露事件更是让隐私问题雪上加霜。对于个人开发者来说,如果只是想做一些文献调研、写个小脚本,每个月为订阅制付费并不划算。

其次是可定制与可扩展性。OpenCode 虽然开源,但它的代码量在数十万行级别,想要理解它的完整机制并做个性化修改,几乎是一个不可能完成的任务。我们想要的是一个”透明”的工具——能看清它每一步在做什么,能理解它为什么做出某个决策。

最后是从学习到动手做。作为一个算法研究者,我对 Agent 的底层机制有着天然的好奇:一个 while true 循环加上工具调用,为什么就能完成如此复杂的任务?模型和 harness 之间的边界在哪里?这些问题在现有的工业级实现中很难找到答案,因为它们被淹没在数十万行代码和复杂的工程架构中。

于是我们决定自己动手做rockycode。Rocky 的名字来自安迪·威尔的小说《挽救计划》中的外星工程师——一个动手能力极强、有点过于热情、不太有边界感的角色(也是有点过于符合人设了…)

2. 设计决策

2.1 极简主义:30 行系统提示词

Rocky 的系统提示词只有 30 行,大约 300-500 个 token。相比之下,Kimi 的提示词大约是它的 5-6 倍,其他主流 Coding Agent 的提示词普遍在 5-10 倍这个量级。

这个决定源于我们对当前模型迭代趋势的观察:模型本身已经足够强大,harness 的职责是”不破坏”而不是”增强”。当模型的能力足够强时,冗长的提示词反而可能引入噪声和约束冲突。我们的实验也验证了这一点——在 SWE-bench Verified 上,添加 reflection、verify 等”增强”算子并没有带来统计显著的提升。

dudu学姐的补充:这其实是一个很有意思的结论。很多 Agent 框架在提示词上堆砌大量规则,本质上是在弥补模型能力的不足。但当模型能力跨过某个阈值后,这些规则反而成了限制。Rocky 的 30 行提示词之所以 work,恰恰是因为 DeepSeek V4 这样的模型已经足够”懂”工具调用的语义。

2.2 透明性:轨迹落盘

Rocky 的所有运行轨迹都保存在本地,没有服务端。这意味着你可以随时查看它在某次任务中的完整决策链:它看到了什么、调用了什么工具、为什么做出某个选择。

这个设计源于一个实际痛点:dudu学姐之前尝试过,从 Codex 导出过全量的交互记录,但聊天历史和工具调用是分开存储的,工具调用的格式极其复杂,几乎无法用于分析。而 Rocky 的轨迹是中心化的、结构化的,写个小脚本就能做 case analysis。

我们的判断:这个决定在后续的开发中被证明是极其正确的。它让我们能够快速定位问题——比如发现某个 bug 是因为权限控制缺失导致 Rocky 直接调用了 bash 工具,而不是走我们预设的搜索流程。没有透明的轨迹,这种调试几乎不可能完成。而这些长程轨迹也是后续为rockycode引入自进化等高阶能力的基础原料。

2.3 搜索:DeepSeek 原生集成

模型内生搜索功能的支持,是 rockycode的一个亮点。我们集成了 DeepSeek 的原生搜索能力,用户只需要花 DeepSeek API 的钱,就能获得开箱即用的搜索功能,无需额外配置 MCP 服务或第三方搜索 API。

成本上很低:我们用 Rocky 做了一次 Deep Research,花了大约 1 元人民币,返回了 80 条参考文献,其中 63 条链接完全正确,10 条部分正确。同样的任务用 GPT-5.6 的 Max 模式,成本高出几个数量级。

同时这个搜索工具支持访问arXiv和huggingface,这使得rockycode自带的research模式能够又便宜又好用,无需配置其他任何工具,就能够让rocky完成每日的感兴趣论文的读取与检索。

【图1:Deep Research 成本对比图——横轴为不同工具,纵轴为单次调研成本(对数刻度),标注 Rocky 约 1 元 vs GPT-5.6 的显著成本差异】

3. Safety: 重到不想用的沙箱

这是 rockycode 开发过程中最”痛苦”也最必要的部分。

第一版 Rocky 没有权限控制。测试时我们发现它运行得飞快,但仔细一看——它直接在用 bash 工具执行命令。这意味着它可以 rm -rf 你的整个项目。这不是危言耸听:Claude Code 和 GPT-5.6 都曾出现过在开发者未察觉的情况下删除整个工作目录的案例。

我们的解决方案是基于 Docker 的沙箱机制。但说实话,这个沙箱重到我们自己都不想用——你需要安装 Docker app,并且在开启前手动打开网络搜索工具(默认沙箱是无网络模式),这样的使用让rockycode变得繁琐,对于一些高级用户来说似乎不太需要,但如果用户想要做无人托管的自动化运维,沙箱是更好的选择。

这里有一个重要的权衡:沙箱的”重”和 Agent 的”丝滑”是矛盾的。Rocky 在没有权限控制时运行最快,但那是不可持续的——它总有一天会闯祸。我们选择把无法控制的东西做得更重,把可控的部分做得更轻。如果你觉得沙箱太繁琐,可以自己把代码下载下来去掉它,但默认选项我们依然保留了一些更加基础的权限设置。

4. Evaluation: SWE-bench 与打榜的真相

最开始,我们在 SWE-bench Verified 上测了 100 道题(总共 500 道),平均解决率约 81%。DeepSeek V4 Pro 的官方分数是 80 出头,MiniMax M3 也在类似水平。

后来为了保证对比的公平性,我们进行了每个模型三轮参数一致的500道题的评测。

但我要强调:这个分数不能说明我们的 harness 更好,只能说明模型没被我们的 harness 破坏。

我们做了大量尝试:把经典的 ReAct 循环换成 reflection、加 verify 算子、调整工具调用策略……但在 20-100 道题的测试集上,这些改动都没有带来统计显著的差异。最终我们选择了一个非常朴素的 while true 循环——既然新东西在 benchmark 上没有显著提升,那就保持简单。

【图2:SWE-bench Verified 测试结果——不同 harness 变体(baseline、+reflection、+verify)的解决率对比,误差线显示无显著差异】

这个结论可能让很多人意外,但它揭示了一个重要事实:当模型能力足够强时,harness 的边际收益非常有限。这也解释了为什么 Rocky 的代码量可以这么少——我们不需要用复杂的工程架构去弥补模型的不足。

5. Self-Evolution: 自进化与飞轮

Rocky 的长期目标是实现模型和 harness 的协同进化。这个飞轮是:数据 → 训练 → 模型 → 框架。

轨迹落盘是第一步。有了结构化的轨迹数据,我们才能做后续的强化学习训练。但说实话,个人用户很难攒够训练模型所需的数据量——我的使用频率远不足以支撑一次有效的训练。

所以自进化功能(dream/memory)目前默认是关闭的。这些功能的设计思路是:让 Rocky 能够从历史轨迹中提炼模式,形成记忆,并在未来的任务中利用这些记忆。但第一版实现还很粗糙——memory 可能会污染当前文件夹下的所有任务,dream 机制的效果也未经充分验证。

我的反思:自进化是一个听起来很美但实现起来极其困难的方向。我们搭好了框架(数据落盘、记忆机制、反思模块),但”它到底能不能 work”仍然是一个问号。这就像造了一艘飞船,它能飞,但飞行过程中可能会掉一两个零件。

6. 反思:做对了什么,做错了什么

做对的:

  1. 极简主义。30 行提示词、几百行核心循环、两三千行总代码量。这不仅让 Rocky 易于理解和修改,也让我们能够快速迭代。当你想测试一个新想法时,改代码再跑 benchmark 的成本极低。

  2. 透明性优先。轨迹落盘让我们能够做 case analysis,理解 Rocky 为什么做对或做错。这是其他工具无法提供的价值。

  3. 搜索的原生集成。DeepSeek 的搜索能力让 Rocky 在文献调研场景下表现出色,成本优势极其明显。

做错的:

  1. 权限控制加得太晚。第一版没有权限系统,导致 Rocky 可以直接调用 bash 工具。虽然测试时没有造成严重后果,但这是一个巨大的安全隐患。

  2. 沙箱太重。Docker 沙箱虽然安全,但严重影响了用户体验。我自己都因为嫌麻烦而减少了 Rocky 的使用频率。这是一个需要重新设计的权衡。

  3. 低估了大型代码库的挑战。Rocky 目前对大型代码库的支持有限——grep/glob 的方式在复杂项目中不够用,LSP 功能虽然支持但默认关闭。对于个人开发者的小项目够用,但距离工业级还有很大差距。

7. 展望

Rocky 目前是一个”能飞但会掉零件”的飞船。接下来的方向包括:

  • 更完整的 benchmark 测试:跑完 SWE-bench Verified 的全部 500 道题,以及 DeepSWE-bench 的更多题目
  • 自进化机制的完善:让 dream/memory 真正 work,而不是停留在实验阶段
  • 机制解释:用 Rocky 作为工具,对比 DeepSeek V4 和 Kimi 在注意力机制上的不同路线(DSA vs Linear Attention)
  • VSCode 插件:已经开发完成,等待账号注册后发布

我们相信,一个透明、简单、可定制的 Coding Agent 对于学习和研究有着独特的价值。Rocky 不是一个要打败 Claude Code 的工业级产品,而是一个让你理解 Agent 如何工作的实验样本。

如果你感兴趣,欢迎下载试用,或者直接读代码——它足够简单,一眼就能看完。

References

  1. Rocky GitHub Repository(待发布)
  2. DeepSeek V4 - 模型与原生搜索能力
  3. SWE-bench Verified - 代码修复评测基准
  4. DeepSWE-bench - 更严格的代码评测基准
  5. Claude Code - 闭源 Coding Agent
  6. OpenCode - 开源 Coding Agent
  7. Lean 4 - 形式化证明语言
  8. Docker - 沙箱基础设施
  9. 《挽救计划》 - Rocky 名字来源