Tao Sun fd5dc46aa4 Update codebase_maintainer.py 9 luni în urmă
..
codebase 95cdeaa786 update 10 luni în urmă
data 95cdeaa786 update 10 luni în urmă
project 95cdeaa786 update 10 luni în urmă
.env.example 87aadc6ee4 add chapter9 10 luni în urmă
01_context_builder_basic.py 95cdeaa786 update 10 luni în urmă
02_context_builder_with_agent.py 95cdeaa786 update 10 luni în urmă
03_note_tool_operations.py 95cdeaa786 update 10 luni în urmă
04_note_tool_integration.py abaafad0c6 fix print error 10 luni în urmă
05_terminal_tool_examples.py 95cdeaa786 update 10 luni în urmă
06_three_day_workflow.py 82914339d3 Update 06_three_day_workflow.py 9 luni în urmă
README.md 95cdeaa786 update 10 luni în urmă
codebase_maintainer.py fd5dc46aa4 Update codebase_maintainer.py 9 luni în urmă

README.md

Chapter 9 - 上下文工程示例代码

本目录包含第九章"上下文工程"的所有示例代码和演示文件。

📁 目录结构

chapter9/
├── 01_context_builder_basic.py          # ContextBuilder 基础用法
├── 02_context_builder_with_agent.py     # ContextBuilder 与 Agent 集成
├── 03_note_tool_operations.py           # NoteTool 基本操作
├── 04_note_tool_integration.py          # NoteTool 高级集成
├── 05_terminal_tool_examples.py         # TerminalTool 使用示例
├── 06_three_day_workflow.py             # 完整三天工作流演示
├── codebase_maintainer.py               # 代码库维护助手(核心组件)
├── codebase/                            # 示例代码库
│   ├── data_processor.py
│   ├── api_client.py
│   ├── utils.py
│   └── models.py
├── data/                                # 示例数据
│   └── sales_2024.csv
├── logs/                                # 示例日志
│   └── app.log
└── project/                             # 示例项目
    ├── README.md
    └── main.py

🚀 快速开始

1. 配置嵌入模型

所有使用记忆功能的示例都需要配置嵌入模型。最简单的方式:

import os
# 使用 TF-IDF(无需额外依赖或下载)
os.environ['EMBED_MODEL_TYPE'] = 'tfidf'
os.environ['EMBED_MODEL_NAME'] = ''  # 必须清空

2. 运行示例

# 进入 chapter9 目录
cd code/chapter9

# 运行 TerminalTool 示例(无需 LLM)
python 05_terminal_tool_examples.py

# 运行 NoteTool 基本操作(无需 LLM)
python 03_note_tool_operations.py

# 运行完整工作流演示(需要配置 LLM)
python 06_three_day_workflow.py

📖 示例说明

基础示例

01_context_builder_basic.py

  • ContextBuilder 的基本用法
  • 上下文包(ContextPacket)的创建和管理
  • Token 限制和上下文优先级

02_context_builder_with_agent.py

  • ContextBuilder 与 SimpleAgent 集成
  • 自动上下文管理
  • 对话历史的处理

03_note_tool_operations.py

  • NoteTool 的 CRUD 操作
  • 笔记搜索和标签管理
  • 笔记导出功能

04_note_tool_integration.py

  • NoteTool 与 ContextBuilder 集成
  • 长期项目追踪
  • 基于历史笔记的建议

05_terminal_tool_examples.py

  • TerminalTool 的典型使用场景
  • 探索式导航
  • 数据文件分析
  • 日志分析
  • 代码库分析
  • 安全特性演示

高级示例

06_three_day_workflow.py

完整的长程智能体工作流演示,包括:

  • 第一天:探索代码库
  • 第二天:分析代码质量
  • 第三天:规划重构任务
  • 一周后:检查进度
  • 跨会话连贯性演示
  • 三大工具协同演示

使用我们创建的示例代码库(./codebase),包含:

  • data_processor.py - 数据处理模块(含多个 TODO)
  • api_client.py - API 客户端(需要改进错误处理)
  • utils.py - 工具函数(需要优化)
  • models.py - 数据模型(需要补充验证)

codebase_maintainer.py

核心组件:代码库维护助手,集成了:

  • ContextBuilder - 上下文管理
  • NoteTool - 结构化笔记
  • TerminalTool - 即时文件访问
  • MemoryTool - 对话记忆(仅使用 working 记忆)

⚙️ 配置说明

嵌入模型配置

有三种选择:

方案一:TF-IDF(推荐用于测试)

import os
os.environ['EMBED_MODEL_TYPE'] = 'tfidf'
os.environ['EMBED_MODEL_NAME'] = ''  # 重要!

优点

  • ✅ 无需额外依赖
  • ✅ 无需 API key
  • ✅ 无需下载模型

缺点

  • ⚠️ 语义理解能力较弱

方案二:本地 Transformer(推荐用于离线使用)

import os
os.environ['EMBED_MODEL_TYPE'] = 'local'
os.environ['EMBED_MODEL_NAME'] = 'sentence-transformers/all-MiniLM-L6-v2'
os.environ['HF_TOKEN'] = 'your_huggingface_token'

需要

  1. 安装依赖:pip install sentence-transformers
  2. Hugging Face Token(从 https://huggingface.co/settings/tokens 获取)
  3. 首次运行会下载模型(约 90MB)

配置 HF Token 的方式

# 方式一:使用 huggingface-cli(推荐,一次配置永久使用)
pip install huggingface-hub
huggingface-cli login

# 方式二:在代码中设置
os.environ['HF_TOKEN'] = 'hf_your_token_here'

# 方式三:命令行设置
export HF_TOKEN="hf_your_token_here"

方案三:通义千问 DashScope(推荐用于生产环境)

import os
os.environ['EMBED_MODEL_TYPE'] = 'dashscope'
os.environ['EMBED_MODEL_NAME'] = 'text-embedding-v3'
os.environ['EMBED_API_KEY'] = 'your_dashscope_api_key'

需要

  1. 注册:https://dashscope.aliyun.com/
  2. 获取 API key
  3. 安装依赖:pip install dashscope

LLM 配置

如果使用需要 LLM 的示例,需要配置:

from hello_agents import HelloAgentsLLM

# 使用默认配置(需要设置 OPENAI_API_KEY)
llm = HelloAgentsLLM()

# 或者明确指定
llm = HelloAgentsLLM(
    api_key="your_api_key",
    base_url="https://api.openai.com/v1",
    model="gpt-4"
)

记忆功能配置

codebase_maintainer.py 已配置为只使用 working 记忆,避免需要 Qdrant 向量数据库:

self.memory_tool = MemoryTool(
    user_id=project_name,
    memory_types=["working"]  # 只使用工作记忆
)

如果需要更强大的记忆功能(episodic, semantic),需要安装并启动 Qdrant:

# 使用 Docker 启动 Qdrant
docker run -p 6333:6333 qdrant/qdrant

🔍 示例文件说明

演示数据文件

data/sales_2024.csv

包含 40+ 条销售数据,字段包括:

  • date(日期)
  • product(产品)
  • category(类别:Electronics, Furniture)
  • quantity(数量)
  • price(价格)
  • customer_id(客户ID)
  • region(地区:North, South, East, West)

logs/app.log

模拟一天的应用日志,包含:

  • 多种日志级别(INFO, WARNING, ERROR)
  • 多种错误类型(DatabaseConnectionError, ValidationError 等)
  • 时间戳从 2024-01-19 14:00 到 23:30

codebase/

包含 4 个 Python 模块,共 10+ 个 TODO 注释,适合演示:

  • 代码分析
  • TODO 查找
  • 函数定义搜索
  • 代码统计

🐛 常见问题

Q1: RuntimeError: 所有嵌入模型都不可用

原因:嵌入模型配置不正确。

解决:确保设置了 EMBED_MODEL_NAME 为空字符串:

os.environ['EMBED_MODEL_TYPE'] = 'tfidf'
os.environ['EMBED_MODEL_NAME'] = ''  # 必须有这行!

Q2: Qdrant 连接失败

原因:默认配置尝试连接 Qdrant 向量数据库。

解决方案一(推荐):使用只需 working 记忆的配置(已在 codebase_maintainer.py 中配置)

解决方案二:安装并启动 Qdrant:

docker run -p 6333:6333 qdrant/qdrant

Q3: 下载 Hugging Face 模型失败

原因:网络问题或缺少 Token。

解决方案

  1. 配置 HF Token(见上文"方案二")
  2. 或使用镜像:export HF_ENDPOINT=https://hf-mirror.com
  3. 或改用 TF-IDF:os.environ['EMBED_MODEL_TYPE'] = 'tfidf'

Q4: TerminalTool 提示"不允许的命令"

原因:TerminalTool 有白名单限制,只允许安全的命令。

解决:使用允许的命令列表中的命令,如:

  • 文件操作:ls, cat, head, tail, grep, find
  • 文本处理:awk, sed, cut, sort, uniq, wc
  • 其他:pwd, cd, tree, stat

📝 运行顺序建议

  1. 先运行无需 LLM 的示例

    • 03_note_tool_operations.py - 了解 NoteTool
    • 05_terminal_tool_examples.py - 了解 TerminalTool
  2. 配置嵌入模型后运行

    • 01_context_builder_basic.py - 理解上下文管理
  3. 配置 LLM 后运行

    • 02_context_builder_with_agent.py - Agent 集成
    • 04_note_tool_integration.py - 高级集成
    • 06_three_day_workflow.py - 完整工作流

🎯 学习路径

  1. 基础概念01_context_builder_basic.py
  2. 工具使用03_note_tool_operations.py, 05_terminal_tool_examples.py
  3. Agent 集成02_context_builder_with_agent.py
  4. 高级应用04_note_tool_integration.py
  5. 实战案例06_three_day_workflow.py

💡 提示

  • 所有示例都在代码开头包含了嵌入模型配置
  • TF-IDF 方案适合快速测试和演示
  • 生产环境建议使用 DashScope 或本地 Transformer
  • codebase_maintainer.py 是完整的实战案例,值得深入学习

📚 相关文档

  • 详细文档:docs/chapter9/第九章 上下文工程.md
  • API 文档:查看各工具类的 docstring
  • 项目主页:README.md

🤝 贡献

如有问题或建议,欢迎提 Issue 或 PR!