From d7608a01f35a2e533a04095e090c0d43d945c6ec Mon Sep 17 00:00:00 2001 From: Liang Jiaqing Date: Sun, 22 Feb 2026 23:59:16 +0800 Subject: [PATCH] chore: minor tweaks - fix newline replace scope, relax turn limits, wording --- TMWebDriver.py | 2 +- agent_loop.py | 4 ++-- assets/tools_schema.json | 2 +- memory/autonomous_operation_sop.md | 2 +- 4 files changed, 5 insertions(+), 5 deletions(-) diff --git a/TMWebDriver.py b/TMWebDriver.py index f80ccea..7957e06 100644 --- a/TMWebDriver.py +++ b/TMWebDriver.py @@ -96,7 +96,7 @@ class TMWebDriver: detect_newtab = data.get('detect_newtab', False) try: result = self.execute_js(code, timeout=timeout, session_id=session_id, detect_newtab=detect_newtab) - print('[remote result]', str(code)[:50] + ' RESULT:' +str(result)[:50].replace('\n', ' ')) + print('[remote result]', (str(code)[:50] + ' RESULT:' +str(result)[:50]).replace('\n', ' ')) return json.dumps({'r': result}, ensure_ascii=False) except Exception as e: return json.dumps({'error': str(e)}, ensure_ascii=False) diff --git a/agent_loop.py b/agent_loop.py index 7e9944f..25200e9 100644 --- a/agent_loop.py +++ b/agent_loop.py @@ -85,9 +85,9 @@ def agent_runner_loop(client, system_prompt, user_input, handler, tools_schema, datastr = json.dumps(outcome.data, ensure_ascii=False, default=json_default) if type(outcome.data) in [dict, list] else str(outcome.data) next_prompt += f"\n{datastr}\n\n\n" next_prompt += outcome.next_prompt - if (turn+1) % 5 == 0: + if (turn+1) % 7 == 0: next_prompt += f"\n\n[DANGER] 已连续执行第 {turn+1} 轮。禁止无效重试。若无有效进展,必须切换策略:1. 探测物理边界 2. 请求用户协助。" - if (turn+1) % 25 == 0: + if (turn+1) % 30 == 0: next_prompt += f"\n\n### [DANGER] 已连续执行第 {turn+1} 轮。你必须总结情况进行ask_user,不允许继续重试。" messages = [{"role": "user", "content": next_prompt}] return {'result': 'MAX_TURNS_EXCEEDED'} \ No newline at end of file diff --git a/assets/tools_schema.json b/assets/tools_schema.json index 8ee00df..c6a0ecb 100644 --- a/assets/tools_schema.json +++ b/assets/tools_schema.json @@ -48,7 +48,7 @@ }}, {"type": "function", "function": { "name": "update_working_mem", - "description": "短期工作便签,内容每轮自动注入,防止长任务中关键信息丢失。要在任务前中期而非结束时调用,新任务切换时应当及时使用清除之前影响。何时调用:(1)即将切换子任务、上下文将被大量新信息冲刷前,存入当前路径/参数/进度;(2)获得后续步骤必需的关键发现后;(3)SOP多步执行时,完成一步后更新为本步结果+下一步要求。原则:只存N轮后可能忘记但后面还要用的信息,刚发生的不用存。宁可多更新不可丢关键上下文。", + "description": "短期工作便签,内容每轮自动注入,防止长任务中关键信息丢失。要在任务前中期而非结束时调用,新任务切换时应当及时使用清除之前影响。何时调用:(1)即将切换子任务、上下文将被大量新信息冲刷前,存入当前路径/参数/进度;(2)获得后续步骤必需的关键发现后;(3)分步任务完成一步后更新为本步结果+下一步要求。原则:只存N轮后可能忘记但后面还要用的信息,刚发生的不用存。宁可多更新不可丢关键上下文。", "parameters": {"type": "object", "properties": { "key_info": {"type": "string", "description": "替换当前便签(<200 tokens)。只写后续必须记住的:文件路径、关键参数/发现、当前进度、下一步计划、要避的坑。刚完成的和上下文中显而易见的不写,省空间给真正容易丢的信息。"}, "related_sop": {"type": "string", "description": "相关sop名称,可以多个,必要时需要再读"}}} diff --git a/memory/autonomous_operation_sop.md b/memory/autonomous_operation_sop.md index d974452..7425eac 100644 --- a/memory/autonomous_operation_sop.md +++ b/memory/autonomous_operation_sop.md @@ -55,7 +55,7 @@ - **不连续选择相同方向**(TODO任务除外)。 - **预期收益声明**:选定任务后,必须先用一句话写明「做这个任务预期带来什么收益」。允许探索失败,但必须事先想清楚为什么值得做。这句话写入报告开头。 - **执行方式**:基于目标自由进行,无需预先批准,直接执行只读或实验性操作。 -- **约束**:小步快跑,每次只做一个小任务(剩下的下次再做),控制在15个回合以内。严禁修改核心记忆/系统设置;严禁读取敏感数据(但可以检测存在性)。 +- **约束**:小步快跑,每次只做一个小任务(剩下的下次再做),控制在20个回合以内。严禁修改核心记忆/系统设置;严禁读取敏感数据(但可以检测存在性)。 ### 阶段 2:生成报告与方案 - **位置**:目录若不存在请新建