Coding Agent的质量不是由模型单独决定的,而是模型(LLM)与其执行框架(harness)共同构成的系统决定的。
Deep Code的终极目标:在智能编码任务上,Deep Code 应当以比“Claude Code + DeepSeek”这套组合更低的成本,取得更好的效果。实现路径不是幻想用一个通用框架让所有模型都表现最佳,而是不断将框架适配最新的 DeepSeek 模型,让模型看到的工具形态、上下文布局、安全规则和恢复路径,都契合它实际的行为方式。
Armin Ronacher 的文章《Better Models: Worse Tools》指出了一个值得重视的事实:工具 schema 并非「中立」。模型不会把工具模式当作纯粹的抽象约定来遵守,而是带着训练和强化学习过程中形成的使用习惯去接触它。如果某个厂商主要针对一种主流框架训练模型,那么模型可能会非常擅长那个框架的工具生态,却在面对形态不同的工具时意外地不可靠。能力更强的模型可能形成更强的习惯,而更强的习惯会让它更排斥陌生的工具。
这一观察正是 Deep Code 设计的核心依据。Claude Code 是一个为 Anthropic 模型优化的闭源框架,没有理由把 DeepSeek 当作头等对象来对待。而 Deep Code 的选择则是成为 DeepSeek 生态的一部分,它应该为 DeepSeek 量身调优,而不仅仅是“兼容”。
传统编辑工具往往要求模型提供文件路径以及大段的 old_string 和 new_string。这看起来直接,但在真实应用场景中,会有多种典型失败:模型可能编辑过时了的文件视图,匹配到错误的重复块,错误地带上行号,丢失缩进,过度替换,或者生成转义错误的 JSON。结果要么是工具调用失败,要么更糟,甚至产生一个看上去合理、实际错误的文件改动。
Deep Code 给出的方案是片段(snippet)系统。read 工具除了返回文件内容,还会在文本文件上维护一个会话本地的文件状态,并在元数据中返回 snippet_id。edit 工具随后将这个 snippet_id 作为必填参数。片段携带了文件路径、行范围、预览、版本和范围类型信息。
这重塑了编辑的约定:文件必须先被读过才能编辑,片段必须在当前会话中,文件自读取后未被改动,替换只在片段范围内搜索,非唯一匹配会返回候选片段而不是直接猜测,批量替换可以要求声明预期出现次数。
这是一种理解模型行为、而非放任模型的修复策略。它不强求模型在压力下保持完美,而是让正确操作更容易表达,同时让框架掌握足以发现歧义的局部信息。在接口校验上它保持严格,但在编码智能体常见的、可恢复的文本错误上又给予宽容,使智能体在意图清晰时可以继续向前推进。
内置工具有意保持少而精:bash、read、write、edit、AskUserQuestion、UpdatePlan 和 WebSearch,外部 MCP 工具则动态挂载。这是一个刻意的设计决定,它降低了模式的不确定性,让权限分析变得可行,也给了模型一套可预期、可重复的操作语言。
第二个核心设计是用上下文缓存控制成本。DeepSeek 的上下文缓存默认启用,当后续请求完全复用了已缓存的前缀单元,就能命中缓存,并在返回值中给出缓存命中与未命中的token数。这是一套尽力而为的系统,但它确实奖励那些稳定的重复前缀。
Deep Code 的会话架构正是围绕这一特性设计的,而且不需要用户刻意配合。系统提示、工具文档、默认技能、运行时上下文和项目说明,这些稳定内容都被放在易变的用户内容之前。会话消息以 JSONL 持久化,并能被一致地重放。工具调用与工具结果的配对在转换时会被修复,包括中断的工具调用,以保证发回给模型的对话始终保持结构有效。
一个编码智能体不该把所有的知识都塞进上下文里,那样会污染上下文、推高成本,还会削弱指令的优先级。与此同时,很多任务又确实需要可复用的知识:代码审查流程、领域约定、框架特定模式等等。Agent Skills就是在这些知识真正需要时,按需加载的机制。
自动匹配同样借助了模型本身:系统将候选技能的名称和描述发给模型,由模型返回应匹配的技能。已加载的技能不会重复加载,技能也可以声明不参与隐式调用。这一设计让基础框架保持精干,同时又允许丰富的任务特定行为,也使得技能得以跨工具移植。
更深层的架构含义是,技能并非传统意义上的插件,而是被结构化的上下文。它让框架来决定何时把指令、示例、模板、脚本和参考文件引入对话。对于泛化能力强但并非完美的模型来说,这恰恰是最合适的抽象:让默认环境保持干净,在真正能产生帮助的时刻,再注入精准的先验知识。
智能编码必然伴随真实的副作用:读写文件、运行 Shell 命令、访问网络、调用外部工具。一个只提供“全自动模式”的框架不安全,事事弹窗询问又太慢。Deep Code 的创新是引入基于副作用分类的作用域策略。
权限系统定义了具体的作用域,例如目录内外的读、写、删除,Git 日志的查询与修改,网络,MCP 等。bash 工具要求模型声明本次操作的副作用,文件工具则根据路径直接分类。
这不仅仅是安全功能,它本身就是智能体质量的一部分。权限给模型提供了一个可预测的操作边界,低风险工作可以快速推进,高风险动作则会停下来。它也让命令行为变得可审查:一条命令不只是待执行的文本,而是文本、所声明的副作用以及策略决策的组合。
Deep Code 的优势并非来自某个单点妙招,而是源自一系列决策的叠加效应。deepcode-qrcode-benchmark项目展示了在一个真实且有难度的Python需求上,Deep Code+DeepSeek+/plan模式的组合总是能够胜过Claude Code+DeepSeek的组合。