Refactor: enhance memory distillation logic and streamline SOP
This commit is contained in:
20
ga.py
20
ga.py
@@ -443,15 +443,19 @@ class GenericAgentHandler(BaseHandler):
|
||||
def do_conclude_and_reflect(self, args, response):
|
||||
'''Agent觉得当前任务完成后有重要信息需要记忆时调用此工具。
|
||||
'''
|
||||
prompt = '''### [总结提炼经验] 既然你觉得当前任务有重要信息需要记忆,请提取最近一次任务中【事实验证成功且长期有效】的环境事实与用户偏好,更新至全局记忆。
|
||||
1. 严禁记录任何任务特定中间执行过程或临时变量经验,那是过程记忆不是全局记忆。
|
||||
2. 若无高价值新事实,那就不更新任何内容。
|
||||
3. 尽量先查看现有全局记忆形式,仅作少量修改不要影响其余部分。insight也要同步更新全局记忆的短印象来提醒存在性。
|
||||
4. 优先使用file_read和file_patch来保证少量修改。
|
||||
5. 必须先阅读L0的记忆更新SOP来确保了解修改规则。
|
||||
6. 必须先阅读L0的记忆更新SOP来确保了解修改规则,这是重复强调。''' + get_global_memory()
|
||||
prompt = '''### [总结提炼经验] 既然你觉得当前任务有重要信息需要记忆,请提取最近一次任务中【事实验证成功且长期有效】的环境事实、用户偏好、重要步骤,更新记忆。
|
||||
本工具是标记开启结算过程,若已在更新记忆过程或没有值得记忆的点,忽略本次调用。
|
||||
**提取行动验证成功的信息**:
|
||||
- **环境事实**(路径/凭证/配置)→ `file_patch` 更新 L2,同步 L1
|
||||
- **复杂任务经验**(关键坑点/前置条件/重要步骤)→ L3 精简 SOP(只记你被坑得多次重试的核心要点)
|
||||
**禁止**:临时变量、具体推理过程、未验证信息、通用常识、你可以轻松复现的细节。
|
||||
**操作**:严格遵循提供的L0的记忆更新SOP。先 `file_read` 看现有 → 判断类型 → 最小化更新 → 无新内容跳过,保证对记忆库最小局部修改。\n
|
||||
''' + get_global_memory()
|
||||
yield "[Info] Start distilling good memory for long-term storage.\n"
|
||||
return StepOutcome({"status": "success"}, next_prompt=prompt)
|
||||
path = './memory/memory_management_sop.md'
|
||||
if os.path.exists(path): result = file_read(path, show_linenos=False)
|
||||
else: result = "Memory Management SOP not found. Do not update memory."
|
||||
return StepOutcome(result, next_prompt=prompt)
|
||||
|
||||
def _get_anchor_prompt(self):
|
||||
h_str = "\n".join(self.history_info[-20:])
|
||||
|
||||
@@ -1,22 +1,16 @@
|
||||
## 0. 核心公理 (Core Axioms - 最高优先级)
|
||||
|
||||
1. **行动验证原则 (Action-Verified Only)**
|
||||
* **定义**:任何写入 L1/L2/L3 的信息,必须源自**成功的工具调用结果**(如 `shell` 执行成功、`file_read` 确认内容存在、代码运行通过)。
|
||||
* **禁止**:严禁将模型的“固有知识”、“推理猜测”、“未执行的计划”或“未验证的假设”作为事实写入。
|
||||
* **口号**:**No Execution, No Memory. (无行动,不记忆)**
|
||||
|
||||
2. **神圣不可删改性 (Sanctity of Verified Data)**
|
||||
* **定义**:凡是经过行动验证的有效配置、避坑指南、关键路径,在重构(Refactoring/GC)时**严禁丢弃**。
|
||||
* **操作**:可以压缩文字、可以迁移层级(从 L2 移到 L3),但绝不能丢失信息的准确性和可追溯性。
|
||||
|
||||
3. **禁止存储易变状态 (No Volatile State)**
|
||||
* **定义**:严禁存储随时间/会话高频变化的数据。
|
||||
* **示例**:当前时间戳、临时 Session ID、正在运行的 PID、某个具体绝对路径、连接的设备信息
|
||||
|
||||
---
|
||||
|
||||
## 记忆层级架构
|
||||
|
||||
```
|
||||
L1: global_mem_insight.txt (极简索引层 - 严格控制 ≤50 行)
|
||||
↓ 导航指向 (Pointer)
|
||||
@@ -24,63 +18,42 @@ L2: global_mem.txt (事实库层 - 现短但会膨胀)
|
||||
↓ 详细引用 (Reference)
|
||||
L3: ../memory/ (记录库层 - 包含 .md/.py 等各类文件)
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 各层职责与原则
|
||||
|
||||
### L1:全局内存索引 (global_mem_insight.txt)
|
||||
|
||||
**职责**:为 L2 和 L3 提供极简导航索引。
|
||||
|
||||
**特征**:
|
||||
- 体积限制:≤ 50 行(硬约束)
|
||||
体积限制:≤ 50 行(硬约束)
|
||||
- 内容:CONSTITUTION、STORES、ACCESS、TOPICS、LESSONS_LEARNED
|
||||
- 更新:L2 有新增/删除事实时同步;当发现通用且极其重要的规律时,追加 LESSONS。
|
||||
|
||||
**禁止**:严禁在此层直接写入 IP、密码、完整路径、API Key。L1 只能是索引指针,不能是数据容器。不写 "How to" 或详细解释。严禁包含特定任务的技术细节(特定任务细节应该在L3)。
|
||||
|
||||
---
|
||||
|
||||
### L2:全局事实库 (global_mem.txt)
|
||||
|
||||
**职责**:存储全局环境性事实(路径、凭证、配置、常量等)。
|
||||
|
||||
**特征**:
|
||||
- 趋势:随环境扩展而膨胀(可接受)
|
||||
- 内容:按 `## [SECTION]` 组织的事实条目
|
||||
- 同步:变化时更新 L1 的相应 TOPIC 导航行
|
||||
|
||||
**禁止**:禁止存储易变状态、禁止存储猜测、严禁存储大模型可推理的通用常识
|
||||
|
||||
---
|
||||
|
||||
### L3:任务级精简记录库 (../memory/)
|
||||
|
||||
职责:补充 L1/L2 无法容纳、但对**特定任务**未来复用至关重要的少量详细信息。内容必须在满足复用需求的前提下**尽可能短**。
|
||||
|
||||
原则:
|
||||
- 只记录:跨会话仍重要、且难以通过少量 file_read / web_scan / 简单脚本快速重建的要点。
|
||||
- 优先写:该任务特有的隐藏前置条件、典型易踩坑点,一旦遗忘会导致高成本重试的信息。
|
||||
- 不记录:普通操作步骤、可在几步探测中重新获得的路径或状态信息。
|
||||
|
||||
形式:
|
||||
- SOP(*_sop.md):为单一任务或小类任务保留极简的「关键前置 + 典型坑」清单,避免长篇教程。
|
||||
- 工具脚本(*.py):仅封装高复用、逻辑相对复杂且不希望每次都重新推理的处理流程。
|
||||
---
|
||||
|
||||
## L1 ↔ L2 同步规则
|
||||
|
||||
| L2 操作 | L1 同步 |
|
||||
|---------|--------|
|
||||
| 新增事实 | 在 TOPICS.GLOBAL_MEM 添加导航行 |
|
||||
| 删除事实 | 在 TOPICS.GLOBAL_MEM 删除导航行 |
|
||||
| 修改值 | 保持导航行不变 |
|
||||
|
||||
---
|
||||
|
||||
## 信息分类快速决策树
|
||||
|
||||
```
|
||||
"这条信息该放哪层?"
|
||||
|
||||
|
||||
Reference in New Issue
Block a user