仓库地址: https://github.com/shivkumarganesh/Agentic-Context-Engineering 分析日期: 2025-10-27 星标数: 43 ⭐
这是一个实现 ACE (Agentic Context Engine) 框架的开源项目,该框架让大型语言模型能够通过反馈循环实现持续经验学习。系统通过构建和维护一个"行动手册"(playbook),随着时间推移不断改进 AI 的表现。
核心理念: 让 AI 从每个任务中学习,构建可复用知识库,使其随着时间推移变得越来越有效。
| 维度 | 传统 RAG | ACE 框架 |
|---|---|---|
| 知识来源 | 静态文档 | 自生成见解 |
| 更新机制 | 手动重建索引 | 每个任务后自动更新 |
| 上下文类型 | 事实信息 | 策略、模式、最佳实践 |
| 学习能力 | 无学习能力 | 持续改进 |
| 个性化 | 有限 | 随用户领域自动成长 |
- ✅ 需要持续学习和改进的 AI 助手
- ✅ 领域特定的知识积累系统
- ✅ 团队协作的经验知识库
- ✅ 个性化学习和适应的应用
用户任务输入
↓
┌─────────────────────────────────────────┐
│ ACE 持续学习循环 │
├─────────────────────────────────────────┤
│ │
│ 1️⃣ RETRIEVER (检索器) │
│ 功能: 从知识库中获取 Top-K 相关知识 │
│ 方式: 评分排序 或 FAISS 语义检索 │
│ ↓ │
│ │
│ 2️⃣ GENERATOR (生成器) │
│ 功能: 使用检索到的知识解决任务 │
│ 输出: 答案 + 推理追踪 │
│ ↓ │
│ │
│ 3️⃣ REFLECTOR (反思器) │
│ 功能: 分析任务执行过程 │
│ 提取: 2-6 个可复用的见解 │
│ ↓ │
│ │
│ 4️⃣ CURATOR (策展器) │
│ 功能: 合并、去重、评分、更新知识库 │
│ 维护: 知识质量和相关性 │
│ │ │
│ └──→ 反馈到 RETRIEVER (闭环) │
└─────────────────────────────────────────┘
每个学习到的"知识点"包含:
{
"id": "uuid-字符串",
"content": "具体的策略、陷阱或护栏描述",
"tags": ["领域标签", "类型标签"],
"helpful": 5, // 被标记为有用的次数
"harmful": 1, // 被标记为有害的次数
"last_seen": "2025-10-11T14:30:00Z"
}评分机制: score = helpful - harmful
-
Strategies (策略): 成功的解决方法
- 示例: "创建播放列表时按强度曲线组织"
-
Pitfalls (陷阱): 需要避免的错误
- 示例: "不要假设所有歌曲都是 3-4 分钟"
-
Guardrails (护栏): 安全和验证检查
- 示例: "始终验证用户输入的有效性"
Agentic-Context-Engineering/
├── ace_playbook.py # 核心实现 (29KB)
│ ├── Retriever 逻辑
│ ├── Generator 逻辑
│ ├── Reflector 逻辑
│ └── Curator 逻辑
├── streamlit_app.py # UI 界面 (25KB)
│ ├── 持续对话界面
│ ├── 知识库可视化
│ └── 实时追踪展示
├── ARCHITECTURE.md # 详细架构文档
├── samples.md # 测试用例
├── 2510.04618v1.pdf # 参考论文
└── requirements.txt # 依赖列表
# 核心依赖
streamlit>=1.36.0 # Web 界面
langchain>=0.2.0 # LLM 编排
langchain-openai>=0.1.7 # OpenAI 集成
faiss-cpu>=1.8.0 # 向量检索
pydantic>=2.7.0 # 数据验证
tiktoken>=0.7.0 # Token 计数
matplotlib>=3.0.0 # 可视化格式: JSONL (JSON Lines)
playbook.jsonl # 每行一个完整的 JSON 对象
优势:
- 易于追加和更新
- 人类可读,便于调试
- 简单解析,无需复杂模式
- 可扩展到数千条知识点
"创建一个混合不同风格的 90 分钟锻炼播放列表"
# 获取 Top-8 相关知识点
[
"创建基于时间的播放列表时需要计算总时长",
"锻炼播放列表应混合高强度和恢复歌曲",
"考虑歌曲之间的过渡时间",
...
]# 输入到 LLM:
# - System: "你是生成器,使用这些知识点..."
# - Playbook: [8 个相关知识点]
# - User Task: "创建 90 分钟播放列表..."
# 输出:
{
"answer": "这是一个 90 分钟的锻炼播放列表...",
"trace": [
"步骤 1: 计算 90 分钟 = 5400 秒",
"步骤 2: 选择有氧和力量训练歌曲的混合",
"步骤 3: 按强度曲线排列..."
]
}# 分析任务执行,提取新见解:
[
{
"content": "锻炼播放列表应按强度曲线组织(热身→高峰→放松)",
"tags": ["workout", "organization", "strategy"],
"vote": "helpful"
},
{
"content": "不要忘记考虑歌曲之间的过渡时间",
"tags": ["timing", "pitfall"],
"vote": "helpful"
}
]# 处理新知识点:
1. 检查是否已存在相同内容
2. 如果存在: helpful_count += 1
3. 如果不存在: 创建新条目
4. 保存到 playbook.jsonl
5. 返回更新后的 Top-K- 💬 类似 ChatGPT 的聊天体验
- 📝 保存完整对话历史
- 🔍 每轮展示使用的知识点、推理追踪、新生成的见解
模式 A: 基于评分 (默认)
- 速度快
- 按
(helpful - harmful)排序 - 适合通用任务
模式 B: FAISS 语义检索
- 更准确
- 基于语义相似度
- 适合特定领域任务
展示评分最高的 10 个知识点
显示整体学习信号的健康度
识别知识覆盖的领域和空白
追踪学习速度和饱和度
三层方案:
- UI 密码输入 (仅会话期间)
- Streamlit Secrets (云部署)
- 环境变量 (本地开发)
当前实现: 精确内容匹配
found = next(
(b for b in bullets if b.get("content","").strip() == content),
None
)论文建议: 语义去重
# 未来增强: 使用 embedding 相似度
similarity = cosine_similarity(new_embedding, existing_embedding)
if similarity > 0.9:
merge_bullets()llm_gen = ChatOpenAI(model="gpt-4-mini", temperature=0)
llm_ref = ChatOpenAI(model="gpt-4-mini", temperature=0)为什么 temperature=0?
- 生成器: 需要一致性和可重复性
- 反思器: 需要可靠的知识提取,避免创造性解释
Generator 输出:
{
"answer": "任务答案",
"trace": ["推理步骤1", "推理步骤2"]
}Reflector 输出:
{
"bullets": [
{
"content": "见解内容",
"tags": ["标签"],
"vote": "helpful/harmful"
}
]
}优势:
- 程序化解析,无需字符串处理
- 类型安全
- 易于组合和调试
# 创建虚拟环境
python -m venv .venv
source .venv/bin/activate # Windows: .venv\Scripts\activate
# 安装依赖
pip install -r requirements.txt方法 1: UI 输入 (推荐) 运行应用后在侧边栏输入 OpenAI API Key
方法 2: 环境变量
export OPENAI_API_KEY=sk-your-key-here # Linux/Mac
$env:OPENAI_API_KEY="sk-your-key-here" # Windows方法 3: Streamlit Secrets
# .streamlit/secrets.toml
OPENAI_API_KEY = "sk-your-key"streamlit run streamlit_app.py- 随着使用积累个人领域知识
- 记住你的偏好和工作方式
- 自动总结和复用成功策略
- 多用户共享基础知识库
- 每个用户有独立的个性化层
- 自动提炼团队最佳实践
- 从每次客户交互中学习
- 积累常见问题解决方案
- 识别和避免常见陷阱
- 根据学生反馈调整教学策略
- 识别学习难点和误区
- 个性化学习路径
-
语义去重
- 使用 embedding 相似度替代精确匹配
- 合并语义相近的知识点
-
时间衰减
- 降低长期未使用知识点的权重
- 自动归档过时知识
-
知识库修剪
- 移除负分知识点
- 限制总容量,保持质量
-
多用户支持
- 用户级独立知识库
- 共享基础知识层
- 协作过滤推荐
-
知识溯源
- 追踪每个知识点的来源任务
- 可视化知识演化路径
-
A/B 测试
- 对比有/无特定知识点的性能
- 自动优化知识库组成
-
领域自适应
- 自动检测任务领域
- 领域特定的知识检索
-
导出/导入
- 跨团队共享知识库
- 知识库版本控制
-
论文 PDF:
2510.04618v1.pdf- 完整的理论基础
- 实验结果和性能分析
-
架构文档:
ARCHITECTURE.md- 22KB 详细实现指南
- 代码和论文对照说明
-
测试样例:
samples.md- 多轮对话测试用例
- 验证上下文保持能力
- Section 1: ACE 概念和动机
- Section 2: 四组件详细规范
- Section 3: 实现考虑和设计选择
- Section 4: 实验结果和性能分析
- Section 5: 局限性和未来工作
ACE 创建了一个正反馈循环,每个任务都提升未来表现。这不是简单的缓存,而是真正的学习。
四个组件相对独立,可以分别优化:
- 更好的检索算法
- 更强的生成模型
- 更深入的反思分析
- 更智能的知识管理
系统的每个决策都是可见的:
- 使用了哪些知识点
- 推理过程是什么
- 提取了什么新见解
- 知识库如何变化
不需要预先定义领域知识,系统会自动从使用中学习和适应特定领域。
通过评分机制,系统会自然地强化有用的知识,淡化无用的知识。
-
知识质量依赖 LLM
- 反思器提取的知识质量受限于模型能力
- 可能产生噪声或不准确的见解
-
简单去重
- 当前只做精确匹配
- 语义相近的知识点可能重复
-
无知识修剪
- 知识库会持续增长
- 未实现自动清理机制
-
单线程处理
- 演示版本未考虑并发
- 生产环境需要队列和锁机制
- 🔒 添加用户认证和授权
- 🗃️ 使用专业数据库替代 JSONL
- 🔍 实现向量数据库加速检索
- 🧹 添加 PII 清洗和内容审核
- 📊 完善监控和日志系统
- ⚡ 实现异步处理和队列
- 🔄 添加知识库备份和恢复
Agentic Context Engineering (ACE) 代表了 AI 系统从"静态响应"到"持续学习"的重要转变。
核心价值:
- ✨ 让 AI 从经验中学习
- 🔄 自动积累领域知识
- 📈 性能随使用提升
- 🎯 适应用户特定需求
适合谁:
- 🔬 AI 研究者和工程师
- 👨💻 构建智能应用的开发者
- 🏢 需要知识管理的团队
- 🎓 学习前沿 AI 技术的学生
这个实现是一个高质量的参考实现,代码清晰、文档完善,非常适合学习、研究和扩展。
本地路径: /Users/sequoia/Desktop/AI-Ideas/应用探索/Agentic-Context-Engineering/
创建日期: 2025-10-27