From f0ce7215ff51b4ed1928b39d1a0dff4c8e423e6d Mon Sep 17 00:00:00 2001 From: Liang Jiaqing Date: Thu, 26 Feb 2026 12:11:31 +0800 Subject: [PATCH] =?UTF-8?q?refine:=20working=5Fcheckpoint=20desc=E4=BC=98?= =?UTF-8?q?=E5=8C=96(=E5=A2=9E=E9=87=8F=E6=9B=B4=E6=96=B0/=E5=9D=91?= =?UTF-8?q?=E6=8E=92=E9=A6=96/=E5=85=A8=E6=96=B0=E4=BB=BB=E5=8A=A1?= =?UTF-8?q?=E6=B8=85=E6=97=A7)=20+=20CLI=E6=9C=80=E5=B0=8F=E5=90=AF?= =?UTF-8?q?=E5=8A=A8=20+=20web=5Fexecute=5Fjs=E5=85=BC=E5=AE=B9tab=5Fid=20?= =?UTF-8?q?+=20mem=5Fscanner=E5=9D=91=E7=82=B9=E6=9B=B4=E6=96=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- WELCOME_NEW_USER.md | 15 ++++++++++----- assets/tools_schema.json | 4 ++-- ga.py | 2 +- memory/mem_scanner_sop.md | 9 ++++++--- 4 files changed, 19 insertions(+), 11 deletions(-) diff --git a/WELCOME_NEW_USER.md b/WELCOME_NEW_USER.md index 1840352..322b171 100644 --- a/WELCOME_NEW_USER.md +++ b/WELCOME_NEW_USER.md @@ -4,15 +4,20 @@ ## 第一阶段:环境启动 (Initial Ignition) -1. **Python 环境检查与核心库安装** - - 确保安装了 Python 3.10+。 - - **必须手动执行**:`pip install streamlit pywebview` +1. **Python 环境检查** + - 确保安装了 Python 3.10+。几乎零额外依赖。 + - `requests` 是唯一的第三方硬依赖,但多数 Python 发行版已预装。若缺失:`pip install requests` 2. **配置身份密钥 (Credentials)** - 复制 `mykey_template.py` 为 `mykey.py` 并填入 API Key。 -3. **唤醒 Agent** - - 运行 `launch.pyw`。看到悬浮窗后,我即刻上线。 +3. **唤醒 Agent(CLI 最小启动)** + - 运行 `python agentmain.py`,进入 CLI 交互模式。此时 Agent 已可工作。 + - 后续所有依赖(包括 GUI 模式所需的包)都可以叫 Agent 帮你安装。 + +4. **(可选)升级为 GUI 模式** + - **指令**:`pip install streamlit pywebview` + - 安装后运行 `launch.pyw`,即可使用悬浮窗 GUI 界面。 ## 第二阶段:能力激活 (Ability Activation) diff --git a/assets/tools_schema.json b/assets/tools_schema.json index f121ec2..fdf8224 100644 --- a/assets/tools_schema.json +++ b/assets/tools_schema.json @@ -48,9 +48,9 @@ }}, {"type": "function", "function": { "name": "update_working_checkpoint", - "description": "短期工作便签,内容每轮自动注入,防止长任务中关键信息丢失。要在任务前中期而非结束时调用,新任务切换时应当及时使用清除之前影响。何时调用:(1)即将切换子任务、上下文将被大量新信息冲刷前,存入当前路径/参数/进度;(2)获得后续步骤必需的关键发现后;(3)分步任务完成一步后更新为本步结果+下一步要求。原则:只存N轮后可能忘记但后面还要用的信息,刚发生的不用存。宁可多更新不可丢关键上下文。", + "description": "短期工作便签,每轮自动注入上下文,防长任务信息丢失。调用时机:(1)任务开始、读取相关SOP后,存用户原始需求和关键约束/参数;(2)子任务切换或上下文即将被冲刷前,存进度/路径;(3)关键发现或完成一步后更新。切换新任务时更新内容,清旧进度但保留仍有效的约束。前中期调用,非结束时。", "parameters": {"type": "object", "properties": { - "key_info": {"type": "string", "description": "替换当前便签(<200 tokens)。只写后续必须记住的:文件路径、关键参数/发现、当前进度、下一步计划、要避的坑。刚完成的和上下文中显而易见的不写,省空间给真正容易丢的信息。"}, + "key_info": {"type": "string", "description": "替换当前便签(<200 tokens)。增量更新:先回顾现有内容,保留仍有效的,再增删改。存:要避的坑、用户原始需求、关键参数/发现、文件路径、当前进度、下一步计划。不存:马上要用用完即丢的、上下文中显而易见的、用户已换全新任务时的旧任务信息。宁多更新不丢关键。"}, "related_sop": {"type": "string", "description": "相关sop名称,可以多个,必要时需要再读"}}} }}, {"type": "function", "function": { diff --git a/ga.py b/ga.py index eaac8ba..3501c4a 100644 --- a/ga.py +++ b/ga.py @@ -304,7 +304,7 @@ class GenericAgentHandler(BaseHandler): script = args.get("script", "") if not script: return StepOutcome(None, next_prompt="[Error] Empty script param. Check your tool call arguments.") save_to_file = args.get("save_to_file", "") - switch_tab_id = args.get("switch_tab_id") + switch_tab_id = args.get("switch_tab_id") or args.get("tab_id") result = web_execute_js(script, switch_tab_id=switch_tab_id) if save_to_file and "js_return" in result: content = str(result["js_return"] or '') diff --git a/memory/mem_scanner_sop.md b/memory/mem_scanner_sop.md index 469c394..ac88231 100644 --- a/memory/mem_scanner_sop.md +++ b/memory/mem_scanner_sop.md @@ -73,7 +73,10 @@ def read_addrs(pid, addrs): **坑点:** - 进程名Weixin.exe(非WeChat.exe);地址字符串先`int(addr,16)` - 步骤3筛≠A(排除空/乱码),步骤4筛==A(正向确认),交替最快 -- **优先侧栏点击切换会话**,避免使用搜索框(搜索结果首条常是广告,极易误点)。直接点左侧已有会话列表中的不同聊天即可完成差集切换 -- 若必须搜索:粘贴后≥1.5s再点结果,用不常见的联系人名,或点第2条结果避开广告 +- **搜索切换会话完全可用**,大部分差集步骤直接搜索即可。注意:搜索结果首条可能是广告,粘贴后≥1.5s再点,确认是联系人再点(或点第2条) +- **仅最终消歧步骤需侧栏点击**:候选>1时,在侧栏点一个不同的人(不经搜索框),read_addrs看哪个地址跟随变化→那个就是标题栏 - 切换后用read_addrs验证确实切成功了再继续 -- 最终候选>1时的消歧:不要用搜索切换,直接在联系人列表中点一个靠后的人(不经过搜索框),然后read_addrs看哪个地址变了——变的才是标题栏,没变的是搜索框残留 \ No newline at end of file +- **步骤3/4必须用read_addrs读原始地址集,严禁重新scan**:重新scan只能找到静态残留(聊天记录等),动态地址已变不在结果中,会导致0候选 +- **选A/B联系人用wechat_db_utils.quick_connect查真人**,避免搜索触发广告弹窗(公众号/小程序名会弹广告) +- **scan_memory返回格式**:默认返回str列表(每项"Addr:0x...\nHex:..."),非dict。提取地址用`[int(r.split('\n')[0].split(':')[1],16) for r in results]` +- **侧栏点击禁止估算坐标**:会话列表顺序随消息变化。参考 vision_sop + wechat_send_sop 流程(截图→ask_vision→精确坐标→点击) \ No newline at end of file