找回密码
立即注册
搜索
热搜: Java Python Linux Go
发回帖 发新帖

460

积分

0

好友

58

主题
发表于 昨天 05:49 | 查看: 4| 回复: 0

上周,Qoder 旗下的智能体 Quest 完成了一项颇具象征意义的任务:它重构了自身的长程任务执行逻辑。这并非一次简单的功能迭代,因为重构过程涉及交互层流程优化、中间层状态管理以及 Agent Loop 逻辑调整等多个层面。

在整个从需求定义到代码合入主干的过程中,Quest 的开发团队只做了三件事:描述需求、审查最终生成的代码、验证实验结果。这清晰地诠释了“自主编程”的定义:AI 不再仅仅是辅助或结对,而是能够自主地完成任务。

Qoder Quest 1.0 自进化智能体发布海报

Token 产出的不是代码,而是可交付的产物

Copilot 能补全代码,但你需要逐行确认。Cursor 或 Claude Code 可以重构逻辑,但调试和处理报错仍然是你的工作。这些工具虽然提升了效率,但人依然是执行主体。

Quest 致力于解决一个核心问题:Token 产出的必须是可交付的产物。如果 AI 编写了代码,最终仍需要人工来调试、测试和兜底,那么这些 Token 的价值就大打折扣。只有当 AI 能够稳定地产出完整、可运行、可直接交付的成果时,才算真正实现了自主编程。

Agent 效果 = 模型能力 × 架构设计

从工程实践出发,可以总结出一个公式:Agent 效果 = 模型能力 × Agent 架构(上下文 + 工具 + Agent Loop)

模型能力是基础,但同一个模型在不同的架构下,其表现可能天差地别。Quest 通过优化上下文管理、工具选择和 Agent Loop 这三个维度的架构,来充分释放底层模型的能力。

上下文管理:Agentic 而非机械

随着任务推进,对话历史会不断膨胀。如果全部保留,会淹没模型的注意力;如果机械地截断,又可能丢失关键信息。Quest 采用了“Agentic 上下文管理”策略:让模型自主判断何时进行压缩和总结。

模型自主压缩

在长程任务中,Quest 会让模型在合适的时机总结已完成的工作。这并非简单地“保留最近 N 轮对话”,而是让模型理解哪些信息对后续任务至关重要,哪些可以被压缩。

压缩的触发时机基于多个因素:

  • 对话轮数达到阈值
  • 上下文长度接近限制
  • 任务阶段切换(例如从调研阶段进入实现阶段)
  • 模型检测到上下文冗余

模型根据当前任务状态进行自主决策,而非机械地执行固定规则。

动态 Reminder 机制

传统做法是将所有注意事项都写进系统提示词。但这会导致提示词臃肿、模型注意力分散,并降低缓存命中率。

以语言偏好为例:

  • 传统方案:在系统提示词中硬编码“请用中文回复”。每次用户切换语言,整个提示词的缓存就失效,推理成本成倍增加。
  • Quest 方案:通过 Reminder 机制动态注入需要关注的上下文。语言偏好、项目规范、临时约束等信息按需添加到对话中,既保证了信息的及时传递,又避免了系统提示词无限膨胀。

这样做的好处显而易见:

  • 提高缓存命中率,降低推理成本
  • 保持系统提示词简洁,提升模型注意力
  • 灵活适配不同场景的特定需求

工具选择:为什么 Bash 是最佳拍档

如果只能保留一个工具,Quest 的选择一定是 Bash。这个决定可能有些反直觉。市面上多数 Agent 会提供丰富的专用工具:文件读写、代码搜索、Git 操作等等。但工具数量的增加会提高模型的选择复杂度和出错概率。

Bash 的三个优势

  1. 大而全。Bash 几乎能完成所有系统级操作:文件管理、进程控制、网络请求、文本处理、Git 操作。一个工具覆盖了大部分场景,模型无需在众多工具中做选择。
  2. 可编程、可组合。管道、重定向和脚本机制让简单的命令能组合成复杂的工作流。这与 Agent 的任务拆解思路高度契合:将大任务拆成小步骤,每个步骤用一行或几行命令完成。
  3. 模型天生熟悉。大模型在预训练时已经见过海量的 Unix 命令和 Shell 脚本。因此,当遇到问题时,模型往往能自行找到解决路径,无需在 Prompt 中进行详细教学。

Less is More

Quest 仍然保留了少量固定工具,主要用于安全隔离和 IDE 协同。但始终坚持一个原则:能用 Bash 解决的,绝不创造新工具。

每增加一个工具,就增加了模型的选择负担和出错的可能性。简洁的工具集反而让 Agent 的表现更加稳定和可预测。

Agent Loop:Spec -> Coding -> Verify

一个能够自主编程的 Coding Agent 需要一个完整的执行闭环:收集上下文 → 制定计划 → 执行编码 → 验证结果 → 迭代优化。

观察市面上的 Coding Agent,用户最常说的话是“跑起来...”、“能运行就行”、“帮我调这个报错”。这恰恰暴露了它们的能力短板:在验证环节偷懒了。AI 写代码,却需要人来测试,这还算不上自主编程。

Spec 驱动的开发流程

  • Spec 阶段:动手编码前先澄清需求,明确验收标准。对于复杂任务,Quest 会生成一份详细的技术规格书,确保 AI 和用户对“完成”的定义达成共识。
    Spec 包含的要素:功能描述、验收标准、技术约束、测试要求。
  • Coding 阶段:根据 Spec 实现功能。这个阶段 Quest 自主推进,无需用户持续监督。
  • Verify 阶段:自动运行测试,验证实现是否符合 Spec。验证类型包括语法检查、单元测试、集成测试等。如果不符合,则自动进入下一轮迭代,而不是把问题抛给用户。

整个流程可以抽象为以下伪代码:

while not task_complete:
    spec = clarify_requirements(task)
    code = implement(spec)
    result = verify(code, spec)

    if result.success:
        deliver(code)
        break
    else:
        task = refine_based_on_feedback(result.issues)

通过 Hook 机制,这三个阶段可以灵活地扩展和组合。例如,在 Verify 阶段接入自定义的测试框架或 lint 规则,确保每次交付都符合团队的工程标准。

对抗模型的“退缩”倾向

当前多数大模型是为 ChatBot 场景训练的。在面对长上下文或复杂任务时,它们倾向于“退缩”,给出模糊的回答或询问更多信息来拖延执行。

Quest 通过架构设计帮助模型克服这种倾向:在合适的时机注入必要的上下文和指令,推动模型完成完整的任务链路,而不是中途放弃或将问题甩回给用户。

自动适配复杂度,而非堆砌功能

Quest 面对的不只是代码补全,而是完整的工程任务。这些任务可能涉及多个模块、多种技术栈,需要长时间持续推进。

设计原则是:根据任务复杂度自动适配策略,用户无需关心背后是如何调度的。

动态加载 Skills

当任务涉及特定框架或工具时,Quest 会动态加载对应的 Skills。Skills 封装了经过验证的工程实践,例如:TypeScript 配置最佳实践、React 状态管理模式、数据库索引常见陷阱、API 设计规范。

这不是让模型每次都从零开始推理,而是直接复用沉淀下来的工程经验。团队也可以将自身的工程规范封装成 Skills,让 Quest 按照团队的方式工作,例如:代码风格指南、Git 提交规范、测试覆盖率要求、安全审查清单。

智能模型路由

当单一模型的能力不足以覆盖任务需求时,Quest 会自动调度多个模型协同工作。有的模型擅长推理,有的擅长写作,有的擅长处理长上下文。

智能路由会根据子任务的特性选择最合适的模型,对用户而言,面对的始终是一个统一的 Quest。

多 Agent 架构

当任务复杂到需要并行推进、分模块处理时,Quest 会启动多 Agent 架构:主 Agent 负责规划和协调,子 Agent 执行具体任务。但这个能力被克制地使用。因为多 Agent 并非银弹,上下文传递存在损耗,任务拆分的门槛也较高。只在确实必要时才启用。

为未来模型而设计

Quest 从第一天起就是为最先进的(SOTA)模型而设计的。其架构不是为了给过去的模型打补丁,而是确保随着底层模型能力的提升,Agent 的能力也能水涨船高。

这就是为什么 Quest 没有提供模型选择器。用户不需要在不同模型间纠结,这个决策由系统自动完成。用户只需描述任务,Quest 负责调度最合适的能力来完成它。

换句话说,Quest 不是适配今天模型的 Agent,而是为 6 个月后的模型准备的 Agent。

为什么不暴露文件编辑过程

Quest 没有文件树,也不支持用户直接修改文件。这是一个反直觉的产品决策。

许多 Coding Agent 会实时展示每次文件修改,让用户随时可以介入编辑。Quest 选择不这样做,原因有三:

  1. 不打断 Agent 的执行心流。用户介入会打断任务的连贯执行,也容易引入不一致性。
  2. 让用户从“盯代码”转向“关注问题本身”。既然目标是自主编程,就应该让用户将注意力放在需求定义和结果审查上。
  3. 这是自主编程的发展方向。未来的用户关心的是“任务完成了没有”,而不是“这行代码改了什么”。Quest 的界面围绕最终产物设计,而非围绕执行过程。

自进化:越用越强

Quest 的一项技术突破在于其自主进化能力。它能深度分析项目的代码结构、架构演进、团队规范,并将这些信息内化为“项目理解”。

具体表现为:

  • 理解项目模块划分和依赖关系
  • 识别代码风格和命名习惯
  • 学习项目特定的架构模式
  • 掌握团队的工程实践

面对陌生的 API 或新框架,Quest 会通过探索和实践进行自我学习:阅读文档、尝试调用、分析错误、调整方案。使用时间越长,它对项目的理解就越深,表现也越好。

Skills 系统进一步扩展了这种能力。团队可以将工程规范、常用模式封装成 Skills,让 Quest 持续习得新技能。Quest 不仅执行任务,还会在执行过程中不断学习。

我们用 Quest 构建 Quest

Quest 团队自身就是 Quest 的深度用户。文章开头提到的“用 Quest 重构 Quest”并非案例包装,而是日常工作的真实写照。

在产品邀请测试阶段,用户就曾通过 Quest 处理过 80 万镜像的构建、验证与校验,也用它画过原型图、做过设计稿,还完成过长达 26 小时的长程任务构建。Quest 正在改变我们自己的工作方式。

在工程架构上,我们保持了足够的容错和泛化能力。一个常见的诱惑是:为了某个产品效果而在工程上做妥协,把 Agent 做成固化的 Workflow。Quest 的选择是:产品展示从用户视角出发,工程实践则坚定地采用 Agentic 架构。这样不会限制模型能力的发挥,也为未来的模型升级做好了准备。

从结对到自主

AI 辅助编程大致经历了三个阶段:代码补全、结对编程、自主编程。Quest 正在探索第三阶段的可能性。

当开发者的角色从“代码编写者”转变为“意图定义者”,软件开发的范式将发生根本性的改变。开发者将从繁琐的编码细节中解放出来,专注于更高层次的问题定义和架构设计。

这就是 Quest 正在构建的未来:一个能够自进化、真正实现自主编程的 Coding Agent




上一篇:计算机基础扫盲:并发与并行、多核与超线程的原理与区别
下一篇:Web后端登录接口安全设计:防范暴力破解与中间人攻击的实践策略
您需要登录后才可以回帖 登录 | 立即注册

手机版|小黑屋|网站地图|云栈社区 ( 苏ICP备2022046150号-2 )

GMT+8, 2026-1-18 18:13 , Processed in 0.803857 second(s), 41 queries , Gzip On.

Powered by Discuz! X3.5

© 2025-2026 云栈社区.

快速回复 返回顶部 返回列表