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