介绍
# Prompt Assemble
## 概述
一个标准化的、Token 安全的提示词组装框架,可保证 API 稳定性。实施**双阶段上下文构建**和**内存安全阀**,以在最大化相关上下文的同时防止 Token 溢出。
**设计目标:** - ✅ 绝不会因内存相关的 Token 溢出而失败 - ✅ 内存始终是可丢弃的增强功能,绝非刚性依赖 - ✅ Token 预算决策集中在提示词组装层
## 何时使用
在以下情况使用此技能: 1. 构建或修改任何组装提示词的 Agent 2. 实施内存检索系统 3. 向现有 Agent 添加新的提示词相关逻辑 4. 任何需要 Token 预算安全的场景
## 核心工作流
``` User Input ↓ Need-Memory Decision ↓ Minimal Context Build ↓ Memory Retrieval (Optional) ↓ Memory Summarization ↓ Token Estimation ↓ Safety Valve Decision ↓ Final Prompt → LLM Call ```
## 阶段详情
### 阶段 0:基础配置 ```python # Model Context Windows (2026-02-04) # - MiniMax-M2.1: 204,000 tokens (default) # - Claude 3.5 Sonnet: 200,000 tokens # - GPT-4o: 128,000 tokens
MAX_TOKENS = 204000 # Set to your model's context limit SAFETY_MARGIN = 0.75 * MAX_TOKENS # Conservative: 75% threshold = 153,000 tokens MEMORY_TOP_K = 3 # Max 3 memories MEMORY_SUMMARY_MAX = 3 lines # Max 3 lines per memory ```
**设计理念:** - 留出 25% 的缓冲空间以确保安全(模型开销、估算误差、突增) - 容量利用率不足优于溢出
### 阶段 1:最小上下文 - 系统提示词 - 最近的 N 条消息(N=3,已修剪) - 当前用户输入 - **默认不包含内存**
### 阶段 2:内存需求决策 ```python def need_memory(user_input): triggers = [ "previously", "earlier we discussed", "do you remember", "as I mentioned before", "continuing from", "before we", "last time", "previously mentioned" ] for trigger in triggers: if trigger.lower() in user_input.lower(): return True return False ```
### 阶段 3:内存检索(可选) ```python memories = memory_search(query=user_input, top_k=MEMORY_TOP_K) for mem in memories: summarized_memories.append(summarize(mem, max_lines=MEMORY_SUMMARY_MAX)) ```
### 阶段 4:Token 估算 计算 base_context + summarized_memories 的预估 Token 数。
### 阶段 5:安全阀(关键) ```python if estimated_tokens > SAFETY_MARGIN: base_context.append("[System Notice] Relevant memory skipped due to token budget.") return assemble(base_context) ```
**硬性规则:** - ❌ 永不降级系统提示词 - ❌ 永不截断用户输入 - ❌ 禁止“侥幸拼接” - ✅ 仅内存层可被牺牲
### 阶段 6:最终组装 ```python final_prompt = assemble(base_context + summarized_memories) return final_prompt ```
## 内存数据标准
### 允许存入长期内存 - ✅ 用户偏好 / 身份 / 长期目标 - ✅ 已确认的重要结论 - ✅ 系统级设置和规则
### 禁止存入长期内存 - ❌ 原始对话日志 - ❌ 推理轨迹 - ❌ 临时讨论 - ❌ 可从聊天历史中恢复的信息
## 快速开始
将 `scripts/prompt_assemble.py` 复制到你的 Agent 中并使用:
```python from prompt_assemble import build_prompt
# In your agent's prompt construction: final_prompt = build_prompt(user_input, memory_search_fn, get_recent_dialog_fn) ```
## 资源
### scripts/ - `prompt_assemble.py` - 包含所有阶段的完整实现(PromptAssembler 类)
### references/ - `memory_standards.md` - 详细的内存内容指南 - `token_estimation.md` - Token 计数策略