1. 项目概述:为什么AI Agent需要任务规划
在AI辅助编程领域,我们常常遇到一个令人头疼的现象:当给AI Agent分配一个包含多个步骤的复杂任务时,它经常会在执行过程中"迷失方向"。就像一位没有地图的旅行者,虽然知道最终目的地,却可能在半路上走错岔路、重复绕圈,甚至完全偏离航线。
这种现象在技术实现上表现为三种典型问题:
- 重复劳动:AI会反复执行已经完成的操作
- 步骤跳跃:跳过关键环节直接进入下一步
- 目标偏离:逐渐忘记最初的任务要求
问题的根源在于当前主流大语言模型的工作机制。随着对话轮次的增加,早期设定的系统提示和任务规划会被新产生的上下文不断"稀释"。就像一个不断被新信息填满的黑板,最初写在左上角的重点内容最终会被挤到右下角,然后被擦除。
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. 核心设计思路解析
2.1 系统架构设计
项目采用了一种巧妙的双机制设计来应对上述挑战:
code复制+--------+ +-------+ +---------+
| User | ---> | LLM | ---> | Tools |
| prompt | | | | + todo |
+--------+ +---+---+ +----+----+
^ |
| tool_result |
+----------------+
|
+-----------+-----------+
| TodoManager state |
| [ ] task A |
| [>] task B <- doing |
| [x] task C |
+-----------------------+
|
if roundsSinceTodo >= 3:
inject <reminder>
这个架构的核心创新点在于:
- 状态管理:通过TodoManager持久化维护任务进度
- 监督机制:当AI连续3轮不更新任务状态时自动注入提醒
2.2 关键约束设计
| 约束条件 | 技术实现 | 设计目的 |
|---|---|---|
| 最多20条待办 | items.size() > 20检查 |
防止上下文窗口溢出 |
| 单任务进行中 | inProgressCount > 1检查 |
强制顺序执行避免多线程混乱 |
| 3轮提醒机制 | roundsSinceTodo计数器 |
保持AI对整体进度的关注 |
这些约束不是随意设置的,而是基于对大语言模型行为模式的深入观察:
- 20条限制对应主流模型的有效上下文长度
- 单任务限制模拟人类"专注一件事"的工作方式
- 3轮提醒是基于实验得出的最佳平衡点(太频繁会干扰,太少会遗忘)
3. Java实现详解
3.1 TodoManager核心逻辑
java复制public cl
