|
|
@@ -2038,43 +2038,13 @@ context = context_builder.build(
|
|
|
|
|
|
### 9.6.1 场景设定与需求分析
|
|
|
|
|
|
-(1)业务场景
|
|
|
+<strong>业务场景</strong>
|
|
|
|
|
|
-假设我们正在维护一个中型 Python Web 应用,代码库包含:
|
|
|
+假设我们正在维护一个中型 Python Web 应用,这个代码库包含约 50 个 Python 文件,使用 Flask 框架构建,涵盖数据模型、业务逻辑、API 接口等多个模块,同时存在一些技术债务需要逐步清理。在这样的场景下,我们需要一个智能助手来帮助我们探索代码库,理解项目结构、依赖关系和代码风格;识别代码中的问题,比如代码重复、复杂度过高、缺少测试等;追踪任务进度,记录待办事项、已完成工作和遇到的阻塞;并基于历史上下文提供连贯的重构建议。
|
|
|
|
|
|
-- 约 50 个 Python 文件
|
|
|
-- 使用 Flask 框架
|
|
|
-- 包含数据模型、业务逻辑、API 接口等模块
|
|
|
-- 存在一些技术债务需要逐步清理
|
|
|
+<strong>挑战与解决方案</strong>
|
|
|
|
|
|
-我们需要一个智能助手来:
|
|
|
-
|
|
|
-- <strong>探索代码库</strong>:理解项目结构、依赖关系、代码风格
|
|
|
-- <strong>识别问题</strong>:发现代码重复、复杂度高、缺少测试等问题
|
|
|
-- <strong>追踪任务</strong>:记录待办事项、已完成工作、遇到的阻塞
|
|
|
-- <strong>提供建议</strong>:基于历史上下文,提供连贯的重构建议
|
|
|
-
|
|
|
-(2)挑战与解决方案
|
|
|
-
|
|
|
-这个场景面临几个典型的长程任务挑战:
|
|
|
-
|
|
|
-<strong>挑战1:信息量超出上下文窗口</strong>
|
|
|
-
|
|
|
-整个代码库可能包含数万行代码,无法一次性放入上下文窗口。
|
|
|
-
|
|
|
-<strong>解决方案</strong>:使用 TerminalTool 进行即时、按需的代码探索,只在需要时查看具体文件。
|
|
|
-
|
|
|
-<strong>挑战2:跨会话的状态管理</strong>
|
|
|
-
|
|
|
-重构任务可能持续数天,需要跨多个会话保持进度。
|
|
|
-
|
|
|
-<strong>解决方案</strong>:使用 NoteTool 记录阶段性进展、待办事项和关键决策。
|
|
|
-
|
|
|
-<strong>挑战3:上下文质量与相关性</strong>
|
|
|
-
|
|
|
-每次对话需要回顾相关的历史信息,但不能被无关信息淹没。
|
|
|
-
|
|
|
-<strong>解决方案</strong>:使用 ContextBuilder 智能筛选和组织上下文,确保高信号密度。
|
|
|
+这个场景面临几个典型的长程任务挑战。首先是信息量超出上下文窗口的问题,整个代码库可能包含数万行代码,无法一次性放入上下文窗口,我们通过使用 TerminalTool 进行即时、按需的代码探索来解决这个问题,只在需要时查看具体文件。其次是跨会话的状态管理挑战,重构任务可能持续数天,需要跨多个会话保持进度,我们使用 NoteTool 记录阶段性进展、待办事项和关键决策来应对。最后是上下文质量与相关性的问题,每次对话需要回顾相关的历史信息,但不能被无关信息淹没,我们通过 ContextBuilder 智能筛选和组织上下文,确保高信号密度。
|
|
|
|
|
|
### 9.6.2 系统架构设计
|
|
|
|
|
|
@@ -2769,55 +2739,11 @@ print(json.dumps(report, indent=2, ensure_ascii=False))
|
|
|
|
|
|
### 9.6.5 运行效果分析
|
|
|
|
|
|
-通过这个完整的案例,我们可以看到长程智能体的几个关键特性:
|
|
|
-
|
|
|
-(1)跨会话的连贯性
|
|
|
-
|
|
|
-智能体通过 NoteTool 保持了跨多天、多个会话的任务连贯性:
|
|
|
-
|
|
|
-- 第一天探索的问题,在第二天分析时被自动考虑
|
|
|
-- 第三天规划时,能够综合前两天的所有发现
|
|
|
-- 一周后检查时,完整的历史都被保留
|
|
|
-
|
|
|
-(2)智能的上下文管理
|
|
|
-
|
|
|
-ContextBuilder 确保每次对话都有高质量的上下文:
|
|
|
-
|
|
|
-- 自动汇集相关笔记(特别是 blocker 类型)
|
|
|
-- 根据对话模式动态调整预处理策略
|
|
|
-- 在 token 预算内选择最相关的信息
|
|
|
-
|
|
|
-(3)即时的文件系统访问
|
|
|
-
|
|
|
-TerminalTool 支持灵活的代码探索:
|
|
|
-
|
|
|
-- 无需预先索引整个代码库
|
|
|
-- 可以即时查看具体文件内容
|
|
|
-- 支持复杂的文本处理(grep, awk等)
|
|
|
-
|
|
|
-(4)自动化的知识管理
|
|
|
-
|
|
|
-系统自动化地管理发现的知识:
|
|
|
-
|
|
|
-- 发现问题时自动创建 blocker 笔记
|
|
|
-- 讨论计划时自动创建 action 笔记
|
|
|
-- 关键信息自动存储到记忆系统
|
|
|
-
|
|
|
-(5)人机协作
|
|
|
-
|
|
|
-这个系统支持灵活的人机协作模式:
|
|
|
-
|
|
|
-- 智能体可以自动化地完成探索和分析
|
|
|
-- 人类可以通过笔记系统进行干预和指导
|
|
|
-- 支持手动创建详细的计划笔记
|
|
|
+通过这个完整的案例,我们可以看到长程智能体的几个关键特性。首先是跨会话的连贯性,智能体通过 NoteTool 保持了跨多天、多个会话的任务连贯性,第一天探索的问题在第二天分析时被自动考虑,第三天规划时能够综合前两天的所有发现,一周后检查时完整的历史都被保留。其次是智能的上下文管理,ContextBuilder 确保每次对话都有高质量的上下文,自动汇集相关笔记(特别是 blocker 类型),根据对话模式动态调整预处理策略,在 token 预算内选择最相关的信息。
|
|
|
|
|
|
-这个基础框架可以进一步扩展:
|
|
|
+第三个特性是即时的文件系统访问,TerminalTool 支持灵活的代码探索,无需预先索引整个代码库,可以即时查看具体文件内容,支持复杂的文本处理(grep、awk等)。第四是自动化的知识管理,系统自动化地管理发现的知识,发现问题时自动创建 blocker 笔记,讨论计划时自动创建 action 笔记,关键信息自动存储到记忆系统。最后是人机协作,这个系统支持灵活的人机协作模式,智能体可以自动化地完成探索和分析,人类可以通过笔记系统进行干预和指导,支持手动创建详细的计划笔记。
|
|
|
|
|
|
-- <strong>集成 RAGTool</strong>:为代码库建立向量索引,结合语义检索
|
|
|
-- <strong>多智能体协作</strong>:拆分为专门的探索者、分析者、规划者
|
|
|
-- <strong>自动化测试</strong>:集成测试工具,自动验证重构结果
|
|
|
-- <strong>版本控制集成</strong>:通过 TerminalTool 执行 git 命令,追踪代码变更
|
|
|
-- <strong>可视化界面</strong>:使用 Gradio/Streamlit 构建 Web 界面
|
|
|
+这个基础框架可以进一步扩展,比如集成 RAGTool 为代码库建立向量索引结合语义检索,拆分为专门的探索者、分析者、规划者实现多智能体协作,集成测试工具自动验证重构结果,通过 TerminalTool 执行 git 命令追踪代码变更,或者使用 Gradio/Streamlit 构建可视化界面。
|
|
|
|
|
|
## 9.7 本章总结
|
|
|
|