chore: minor tweaks - fix newline replace scope, relax turn limits, wording

This commit is contained in:
Liang Jiaqing
2026-02-22 23:59:16 +08:00
parent 2b4ac28c7e
commit d7608a01f3
4 changed files with 5 additions and 5 deletions

View File

@@ -96,7 +96,7 @@ class TMWebDriver:
detect_newtab = data.get('detect_newtab', False) detect_newtab = data.get('detect_newtab', False)
try: try:
result = self.execute_js(code, timeout=timeout, session_id=session_id, detect_newtab=detect_newtab) 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) return json.dumps({'r': result}, ensure_ascii=False)
except Exception as e: except Exception as e:
return json.dumps({'error': str(e)}, ensure_ascii=False) return json.dumps({'error': str(e)}, ensure_ascii=False)

View File

@@ -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) 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"<tool_result>\n{datastr}\n</tool_result>\n\n" next_prompt += f"<tool_result>\n{datastr}\n</tool_result>\n\n"
next_prompt += outcome.next_prompt 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. 请求用户协助。" 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不允许继续重试。" next_prompt += f"\n\n### [DANGER] 已连续执行第 {turn+1} 轮。你必须总结情况进行ask_user不允许继续重试。"
messages = [{"role": "user", "content": next_prompt}] messages = [{"role": "user", "content": next_prompt}]
return {'result': 'MAX_TURNS_EXCEEDED'} return {'result': 'MAX_TURNS_EXCEEDED'}

View File

@@ -48,7 +48,7 @@
}}, }},
{"type": "function", "function": { {"type": "function", "function": {
"name": "update_working_mem", "name": "update_working_mem",
"description": "短期工作便签,内容每轮自动注入,防止长任务中关键信息丢失。要在任务前中期而非结束时调用,新任务切换时应当及时使用清除之前影响。何时调用:(1)即将切换子任务、上下文将被大量新信息冲刷前,存入当前路径/参数/进度;(2)获得后续步骤必需的关键发现后;(3)SOP多步执行时完成一步后更新为本步结果+下一步要求。原则只存N轮后可能忘记但后面还要用的信息刚发生的不用存。宁可多更新不可丢关键上下文。", "description": "短期工作便签,内容每轮自动注入,防止长任务中关键信息丢失。要在任务前中期而非结束时调用,新任务切换时应当及时使用清除之前影响。何时调用:(1)即将切换子任务、上下文将被大量新信息冲刷前,存入当前路径/参数/进度;(2)获得后续步骤必需的关键发现后;(3)分步任务完成一步后更新为本步结果+下一步要求。原则只存N轮后可能忘记但后面还要用的信息刚发生的不用存。宁可多更新不可丢关键上下文。",
"parameters": {"type": "object", "properties": { "parameters": {"type": "object", "properties": {
"key_info": {"type": "string", "description": "替换当前便签(<200 tokens。只写后续必须记住的文件路径、关键参数/发现、当前进度、下一步计划、要避的坑。刚完成的和上下文中显而易见的不写,省空间给真正容易丢的信息。"}, "key_info": {"type": "string", "description": "替换当前便签(<200 tokens。只写后续必须记住的文件路径、关键参数/发现、当前进度、下一步计划、要避的坑。刚完成的和上下文中显而易见的不写,省空间给真正容易丢的信息。"},
"related_sop": {"type": "string", "description": "相关sop名称可以多个必要时需要再读"}}} "related_sop": {"type": "string", "description": "相关sop名称可以多个必要时需要再读"}}}

View File

@@ -55,7 +55,7 @@
- **不连续选择相同方向**TODO任务除外 - **不连续选择相同方向**TODO任务除外
- **预期收益声明**:选定任务后,必须先用一句话写明「做这个任务预期带来什么收益」。允许探索失败,但必须事先想清楚为什么值得做。这句话写入报告开头。 - **预期收益声明**:选定任务后,必须先用一句话写明「做这个任务预期带来什么收益」。允许探索失败,但必须事先想清楚为什么值得做。这句话写入报告开头。
- **执行方式**:基于目标自由进行,无需预先批准,直接执行只读或实验性操作。 - **执行方式**:基于目标自由进行,无需预先批准,直接执行只读或实验性操作。
- **约束**:小步快跑,每次只做一个小任务(剩下的下次再做),控制在15个回合以内。严禁修改核心记忆/系统设置;严禁读取敏感数据(但可以检测存在性)。 - **约束**:小步快跑,每次只做一个小任务(剩下的下次再做),控制在20个回合以内。严禁修改核心记忆/系统设置;严禁读取敏感数据(但可以检测存在性)。
### 阶段 2生成报告与方案 ### 阶段 2生成报告与方案
- **位置**:目录若不存在请新建 - **位置**:目录若不存在请新建