memory distill prompt rework; bump claude-cli UA 2.1.280; subagent hub note; memory_cleanup L3 audit principles

This commit is contained in:
Liang Jiaqing committed 2026-09-30 17:52:52 +08:00
1 parent 418c28a7bb
commit f308ee7eb0
4 files changed
+18 -12

No files matched your search

+4 -10
View File
@@ -526,16 +526,10 @@ class GenericAgentHandler(BaseHandler):
def do_start_long_term_update(self, args, response):
'''Agent觉得当前任务完成后有重要信息需要记忆时调用此工具。'''
prompt = '''### [总结提炼经验] 既然你觉得当前任务有重要信息需要记忆,请提取最近一次任务中【事实验证成功且长期有效】的环境事实、用户偏好、重要步骤,更新记忆。
本工具是标记开启结算过程,若已在更新记忆过程或没有值得记忆的点,忽略本次调用。
**如果没有经过验证的,未来能用上的信息,忽略本次调用!**
**必须成功完成任务,或到达重要检查点才能进行记忆提炼,未成功完成则忽略本次调用!**
**只能提取行动验证成功的信息**:
- **环境事实**(路径/凭证/配置)→ `file_patch` 更新 L2,同步 L1
- **复杂任务经验**(关键坑点/前置条件/重要步骤)→ L3 精简 SOP(只记你被坑得多次重试的核心要点)
**禁止**:临时变量、具体推理过程、未验证信息、通用常识、你可以轻松复现的细节、只是做了但没有验证的信息
**操作**:严格遵循提供的L0的记忆更新SOP。先 `file_read` 看现有 → 判断类型 → 最小化更新 → 无新内容跳过,保证对记忆库最小局部修改。\n
''' + get_global_memory()
prompt = get_global_memory() + '''【记忆提纯】任务完成或到达重要检查点后,按L0提取最近一次任务中【事实验证成功且长期有效】的环境事实、用户偏好、重要步骤;已在整理则不重复启动。
先读后patch,将已验证、长期有用且难以重建的新知识融入旧条目,合并重复、压缩冗述,不堆叠流水账。以更少文字保留更高复用价值;不得为缩短而丢失关键事实、适用条件和踩坑信息。无提纯价值则跳过,索引按需同步。
禁止:临时状态、推理过程、未验证信息、通用常识、易重建细节;不得将模型推测或建议记作用户要求。
记忆整理仅是内部收尾;完成或跳过后,仍须向用户报告原任务结果。'''
yield "[Info] Start distilling good memory for long-term storage.\n"
path = './memory/memory_management_sop.md'
if os.path.exists(path): result = 'This is L0:\n' + file_read(path, show_linenos=False)
+2 -2
View File
@@ -674,7 +674,7 @@ class BaseSession:
self.api_mode = 'responses' if mode in ('responses', 'response') else 'chat_completions'
self.temperature = cfg.get('temperature', 1)
self.max_tokens = cfg.get('max_tokens')
self.default_ua = "claude-cli/2.1.251 (external, cli)"
self.default_ua = "claude-cli/2.1.280 (external, cli)"
self.user_agent = cfg.get("user_agent", self.default_ua)
def _apply_claude_thinking(self, payload):
if self.thinking_type:
@@ -786,7 +786,7 @@ def _fix_messages(messages):
return merged
class NativeClaudeSession(BaseSession):
native_ua = "claude-cli/2.1.251 (native, cli)"
native_ua = "claude-cli/2.1.280 (native, cli)"
def __init__(self, cfg):
super().__init__(cfg)
self.fake_cc_system_prompt = cfg.get("fake_cc_system_prompt", False)
+9
View File
@@ -53,3 +53,12 @@ ROI = (不放这几个词的犯错概率 × 代价) / 每轮词数成本
- 根因:老记录行首可能混入真实的多余 `|`(或全角/箭头字节差异),复制时看不出。
- 排查:`for i,l in enumerate(lines): print(i+1, repr(l[:20]))` 用 repr 看真实字节。
- 解法:**改用 Python 按行号切片替换**:`lines=open(p,encoding='utf-8').read().split('\n'); assert lines[a].startswith(...); newlines=lines[:a]+repl+lines[b:]; open(p,'w',encoding='utf-8').write('\n'.join(newlines))`。前后加 `assert startswith` 双锚点防错位,改完 repr 复核。此法顺带清脏字符。
## L3 内容审计(清"误导"而非"占地")
SOP 越写越让人不敢动手时,优先删这几类:
1. 无触发条件、不计成本的"必须全覆盖"要求。
2. 已被后文推翻、原句却还留着的旧结论。
3. 绑定过时人际局面而非事实的礼仪规则。
4. 散落各处的重复免责声明 → 合并为一条总则。
5. 从未证明有用的防御仪式。判据:说不出它哪次真抓到过问题,就删。
写经验只记"坑在哪、怎么现形",不添加未验证有效的防御动作;带实测数字与反直觉机制的条目不动。
+3
View File
@@ -17,6 +17,9 @@
- [[可选fork]]:将变量history(str)写入task目录下`_history.json`继承对话上下文
- [[可选监察者]]:主agent空闲时读output观察进度,必要时干预文件纠偏。加`--verbose`可审查原始数据
## Hub:向已有 agent 投递消息
通过 Hub 向已有 agent 投递消息:查 GA 代码根 `frontends/hub.py`,页面入口及投递接口均在其中。
## 共通规则
- 所有agent的cwd=temp,方便文件共享
- input:目标+约束即可,subagent同等智能。**禁写步骤/过度描述**,大量数据给路径