hello_agent第九章总结

文章目录

文档来源 https://github.com/datawhalechina/hello-agents/blob/main/docs/chapter9/

上下文工程 知识树

一、ContextBuilder(hello_agents/context/builder.py)

核心定位

实现GSSC流水线,统一上下文管理接口,保障token预算内高价值信息留存

核心数据结构

  1. ContextPacket:信息基本单元,封装content/timestamp/token_count/relevance_score/metadata,含__post_init__参数校验
  2. ContextConfig:配置管理,含max_tokens/reserve_ratio/min_relevance等参数,__post_init__验证参数合法性

GSSC流水线实现(核心函数)

  1. Gather(_gather):多源信息汇集,容错机制包裹外部调用,系统指令高优先级,对话历史仅保留最近N条,整合系统指令/记忆/RAG/对话历史/自定义包
  2. Select(_select):智能信息选择,分离系统指令与其他信息,计算综合分数(相关性×权重+新近性×权重),贪心算法按分填充token,_calculate_relevance(杰卡德相似度)/_calculate_recency(指数衰减模型)辅助评分
  3. Structure(_structure):结构化输出,按类型分组信息,构建[Role & Policies]/[Task]/[Evidence]/[Context]/[Output]分区模板
  4. Compress(_compress):兜底压缩,分区压缩保持结构完整,超限则截断,_truncate_text/_count_tokens实现文本截断与token估算

核心功能函数

  1. build:整合GSSC全流程,对外提供上下文构建入口

集成与实践

  1. 与Agent集成:封装为ContextAwareAgent,run方法中自动构建上下文并调用LLM
  2. 最佳实践:动态调整token预算、向量相似度优化相关性计算、缓存不变内容、监控日志、A/B测试参数

二、NoteTool(hello_agents/tools/builtin/note_tool.py)

核心定位

Markdown+YAML结构化笔记,智能体持久化记忆管理,适配长时程任务

存储格式

  1. 单笔记文件:YAML前置元数据(id/title/type/tags等)+Markdown正文
  2. 索引文件:notes_index.json,维护笔记元数据与文件路径,支持快速检索

核心操作函数(七大核心)

  1. _create_note:生成唯一ID,构建元数据与MD内容,保存文件并更新索引,_build_markdown辅助构建文件格式
  2. _read_note:根据note_id读取文件,_parse_markdown分离YAML与正文,返回元数据+内容
  3. _update_note:更新笔记字段,刷新时间戳,重新构建并保存文件,同步更新索引
  4. _search_notes:按query/type/tags过滤,标题+内容检索,按更新时间排序
  5. _list_notes:按type/tags过滤,返回笔记元数据,按更新时间倒序
  6. _summary:生成笔记统计,含总数/类型分布/最近更新笔记
  7. _delete_note:删除笔记文件,从索引中移除并保存索引

核心集成函数

  1. run:统一调用入口,分发不同action至对应核心操作函数
  2. _notes_to_packets:将笔记转换为ContextPacket,适配ContextBuilder

与ContextBuilder集成

在Agent的run方法中检索相关笔记,转换为ContextPacket传入build方法,按笔记类型设置相关性分数

三、TerminalTool(hello_agents/tools/builtin/terminal_tool.py)

核心定位

安全的命令行执行能力,支持即时文件系统操作,实现JIT上下文检索

安全机制

  1. 命令白名单:仅允许ls/cat/grep等只读/文本处理命令
  2. 沙箱隔离:限制工作目录,禁止访问外部路径与通过...逃逸
  3. 超时控制:设置command执行超时时间,防止资源耗尽
  4. 输出限制:限制命令输出大小,避免内存溢出

核心功能函数

  1. _execute_command:执行命令,cwd指定当前目录,捕获stdout/stderr,检查输出大小与返回码,处理超时/异常
  2. _handle_cd:专属处理cd命令,解析目标路径,校验是否在工作目录内,更新当前目录
  3. run:统一调用入口,校验命令白名单,分发cd命令至_handle_cd,其余至_execute_command

典型使用模式

探索式导航、数据文件分析、日志文件分析、代码库分析

与其他工具协同

  1. 与MemoryTool:将文件系统探索结果存入语义记忆
  2. 与NoteTool:将关键发现记录为blocker/action等类型笔记
  3. 与ContextBuilder:将命令输出转换为ContextPacket,传入build方法补充上下文

四、三大工具整合实战-代码库维护助手

核心架构

整合ContextBuilder+NoteTool+TerminalTool+MemoryTool,实现跨会话长程任务管理

核心类:CodebaseMaintainer

  1. init:初始化LLM与所有工具,配置ContextConfig,初始化对话历史与统计信息
  2. run:按模式预处理(探索/分析/规划),检索相关笔记并转换为ContextPacket,构建上下文调用LLM,后处理自动创建笔记,更新对话历史
  3. 模式化函数:explore/analyze/plan_next_steps,封装不同模式的run调用
  4. 工具封装函数:execute_command/create_note,直接调用TerminalTool/NoteTool并更新统计
  5. 统计与报告:get_stats/generate_report,收集会话数据,生成并保存JSON报告

核心流程

探索代码库→分析代码质量→规划重构任务→跨会话追踪进度,自动化记录问题与计划

相关推荐
NAGNIP12 小时前
一文搞懂深度学习中的通用逼近定理!
人工智能·算法·面试
冬奇Lab13 小时前
一天一个开源项目(第36篇):EverMemOS - 跨 LLM 与平台的长时记忆 OS,让 Agent 会记忆更会推理
人工智能·开源·资讯
冬奇Lab13 小时前
OpenClaw 源码深度解析(一):Gateway——为什么需要一个"中枢"
人工智能·开源·源码阅读
林小帅14 小时前
【笔记】OpenClaw 架构浅析
前端·agent
林小帅15 小时前
【笔记】OpenClaw 生态系统的多语言实现对比分析
前端·agent
AngelPP17 小时前
OpenClaw 架构深度解析:如何把 AI 助手搬到你的个人设备上
人工智能
宅小年17 小时前
Claude Code 换成了Kimi K2.5后,我再也回不去了
人工智能·ai编程·claude
九狼17 小时前
Flutter URL Scheme 跨平台跳转
人工智能·flutter·github
ZFSS17 小时前
Kimi Chat Completion API 申请及使用
前端·人工智能
warm3snow17 小时前
Claude Code 黑客马拉松:5 个获奖项目,没有一个是"纯码农"做的
ai·大模型·llm·agent·skill·mcp