← 返回信息流
AI 资讯Hacker News·1 天前

从零构建基础AI智能体:实现长任务规划

原标题:Build a Basic AI Agent from Scratch: Long Task Planning

速览

本文指导开发者从零构建基础AI智能体,核心聚焦于长任务规划能力的实现。通过拆解复杂目标,智能体能够自主制定并执行多步骤计划。这一技术路径为开发具备更高自主性和复杂问题解决能力的AI应用提供了重要参考。

AI 深度解读

从零构建基础 AI Agent:长任务规划深度解读

背景

在之前的“从零构建基础 AI Agent”系列文章中,我们已经为 Agent 赋予了核心工具能力,使其能够自主工作。这些工具包括查找文件、读写文件、执行 Bash 命令以及获取网络内容。仅凭这些工具,我们就获得了一个相当强大的 Agent。

然而,当面对长周期且复杂的任务时,现有的 Agent 架构暴露出了局限性。虽然它在简单交互中表现良好,但在处理需要长时间专注的复杂任务时,往往无法进行长远思考,甚至在取得微小进展后就会停止工作。

这种现象的根本原因在于,大型语言模型(LLM)的训练数据主要基于对话模式,即“一问一答”的交互形式。这种模式对于简单的聊天机器人是合适的,但对于需要接收指令并持续工作直至结果返回的 Agent 来说,这种短视的行为模式是致命的。因此,赋予 Agent 长任务规划(Long Task Planning) 能力成为下一步的关键。

核心内容

为了实现长任务规划,我们需要让 Agent 具备以下核心能力:

  1. 理解目标:准确理解任务的核心意图。
  2. 预先规划:在行动前制定整体策略。
  3. 任务拆解:将复杂任务分解为具体的、可执行的步骤。
  4. 状态追踪:实时监控待办(pending)、进行中(in progress)和已完成(done)的任务状态。
  5. 动态调整:当计划受阻时,能够重新思考并调整方法。
  6. 结果验证:在结束任务前,确认所有计划内的步骤均已实际完成。

为了赋予 Agent 这些能力,作者引入了两个新的内存工具,并在系统提示词(System Prompt)中明确了使用规范。

新工具 1:草稿本(Scratchpad)

这是一个简单但强大的工具,本质上是模型的一个私有工作记忆空间

  • 功能:允许模型写入思考过程、中间发现或草稿,并在稍后读取。
  • 核心价值:强制模型在开始执行之前,先理清思路并规划整体方法,避免盲目行动。
  • 技术实现:内容保存在内存中而非文件或数据库,因为不同会话间的草稿不需要共享。
  • 代码逻辑
    • read_scratchpad():读取当前内容,若为空则返回 "(empty)"。
    • write_scratchpad(content):写入新内容,覆盖之前的所有内容。

新工具 2:待办事项列表(To-do list)

待办事项列表用于将工作分解为具体任务,并追踪其生命周期。

  • 功能:管理任务的“待办”、“进行中”、“已完成”、“取消”和“失败”状态。
  • 约束机制
    • 同一时间只允许一个任务处于“进行中”状态,防止多线程混乱。
    • 禁止无效的状态转换。
    • 禁止重复的任务 ID。
  • 重试机制:引入了 RETRY_LIMIT(默认 3 次)。如果任务失败并尝试重新进入“进行中”状态,计数器会增加。达到重试上限后,Agent 不应继续重试,而应升级报告给用户。
  • 技术实现:同样基于内存存储,确保会话隔离。
  • 关键操作
    • todo_append:添加新任务。
    • todo_list:列出当前任务状态及统计信息。
    • todo_update:更新任务内容或状态,并处理重试逻辑。

系统提示词(System Prompt)的升级

除了工具本身,作者还在系统提示词中详细指导模型如何使用这些工具进行长任务规划。

  • 角色定义:具备编码和研究能力的助手。
  • 工具分类
    • 行动工具read_file, write_file, edit_file, glob_files, grep, run_bash, webfetch
    • 规划工具
      • Scratchpad:用于思考、存储中间结果或起草内容。每次写入会完全替换旧内容。
      • To-do list:用于持久化任务追踪,包含状态管理。
  • 工作目录:明确告知模型,除非另有说明,否则所有操作均在当前目录下进行。

关键要点

  • LLM 的固有缺陷:原生 LLM 倾向于短视的对话交互,缺乏长期规划和状态保持能力,直接用于复杂自动化任务会导致中途停滞。
  • 外部记忆的重要性:通过 ScratchpadTo-do list 将“思考过程”和“任务状态”外化到内存中,弥补了 LLM 上下文窗口内的短期记忆限制。
  • 结构化约束To-do list 不仅是一个列表,更是一个带有状态机逻辑的管理器(如限制并发、重试计数),这强制 Agent 遵循更严谨的工作流。
  • 规划先行Scratchpad 的存在旨在强制模型在调用行动工具前,先在内存中完成“思考-规划”阶段,从而减少无效的操作尝试。
  • 会话隔离:所有规划工具均基于内存实现,确保不同会话间的任务状态互不干扰,符合 Agent 的独立性需求。

意义与影响

这一更新标志着 AI Agent 从“单次任务执行者”向“长期项目管理者”的演进。

  1. 提升复杂任务成功率:通过引入状态追踪和重试机制,Agent 能够处理那些需要多步骤、长时间跨度且可能遇到错误的复杂工程或研究任务。
  2. 增强可解释性与可控性To-do list 提供了清晰的执行路径视图,开发者可以直观地看到 Agent 正在做什么、卡在哪里以及剩余多少工作,极大地提高了 Agent 行为的可观测性。
  3. 降低幻觉与错误累积Scratchpad 鼓励模型显式地记录中间状态和推理过程,这有助于在长链条推理中保持逻辑一致性,减少因遗忘上下文而导致的错误累积。
  4. 为更高级的 Agent 架构奠定基础:这种“规划-执行-反思”的循环是构建更复杂 Agent 框架(如 ReAct、Plan-and-Solve)的基础组件。通过标准化的工具接口和内存管理,后续可以更容易地集成更强大的规划算法或外部知识库。

总之,通过增加长任务规划能力,该系列教程展示的 Agent 不再仅仅是一个聪明的聊天机器人,而是一个具备持久性、规划性和自我修正能力的自主智能体雏形。

查看原文 →medium.com