refine: working_checkpoint desc优化(增量更新/坑排首/全新任务清旧) + CLI最小启动 + web_execute_js兼容tab_id + mem_scanner坑点更新
This commit is contained in:
@@ -4,15 +4,20 @@
|
|||||||
|
|
||||||
## 第一阶段:环境启动 (Initial Ignition)
|
## 第一阶段:环境启动 (Initial Ignition)
|
||||||
|
|
||||||
1. **Python 环境检查与核心库安装**
|
1. **Python 环境检查**
|
||||||
- 确保安装了 Python 3.10+。
|
- 确保安装了 Python 3.10+。几乎零额外依赖。
|
||||||
- **必须手动执行**:`pip install streamlit pywebview`
|
- `requests` 是唯一的第三方硬依赖,但多数 Python 发行版已预装。若缺失:`pip install requests`
|
||||||
|
|
||||||
2. **配置身份密钥 (Credentials)**
|
2. **配置身份密钥 (Credentials)**
|
||||||
- 复制 `mykey_template.py` 为 `mykey.py` 并填入 API Key。
|
- 复制 `mykey_template.py` 为 `mykey.py` 并填入 API Key。
|
||||||
|
|
||||||
3. **唤醒 Agent**
|
3. **唤醒 Agent(CLI 最小启动)**
|
||||||
- 运行 `launch.pyw`。看到悬浮窗后,我即刻上线。
|
- 运行 `python agentmain.py`,进入 CLI 交互模式。此时 Agent 已可工作。
|
||||||
|
- 后续所有依赖(包括 GUI 模式所需的包)都可以叫 Agent 帮你安装。
|
||||||
|
|
||||||
|
4. **(可选)升级为 GUI 模式**
|
||||||
|
- **指令**:`pip install streamlit pywebview`
|
||||||
|
- 安装后运行 `launch.pyw`,即可使用悬浮窗 GUI 界面。
|
||||||
|
|
||||||
## 第二阶段:能力激活 (Ability Activation)
|
## 第二阶段:能力激活 (Ability Activation)
|
||||||
|
|
||||||
|
|||||||
@@ -48,9 +48,9 @@
|
|||||||
}},
|
}},
|
||||||
{"type": "function", "function": {
|
{"type": "function", "function": {
|
||||||
"name": "update_working_checkpoint",
|
"name": "update_working_checkpoint",
|
||||||
"description": "短期工作便签,内容每轮自动注入,防止长任务中关键信息丢失。要在任务前中期而非结束时调用,新任务切换时应当及时使用清除之前影响。何时调用:(1)即将切换子任务、上下文将被大量新信息冲刷前,存入当前路径/参数/进度;(2)获得后续步骤必需的关键发现后;(3)分步任务完成一步后更新为本步结果+下一步要求。原则:只存N轮后可能忘记但后面还要用的信息,刚发生的不用存。宁可多更新不可丢关键上下文。",
|
"description": "短期工作便签,每轮自动注入上下文,防长任务信息丢失。调用时机:(1)任务开始、读取相关SOP后,存用户原始需求和关键约束/参数;(2)子任务切换或上下文即将被冲刷前,存进度/路径;(3)关键发现或完成一步后更新。切换新任务时更新内容,清旧进度但保留仍有效的约束。前中期调用,非结束时。",
|
||||||
"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名称,可以多个,必要时需要再读"}}}
|
||||||
}},
|
}},
|
||||||
{"type": "function", "function": {
|
{"type": "function", "function": {
|
||||||
|
|||||||
2
ga.py
2
ga.py
@@ -304,7 +304,7 @@ class GenericAgentHandler(BaseHandler):
|
|||||||
script = args.get("script", "")
|
script = args.get("script", "")
|
||||||
if not script: return StepOutcome(None, next_prompt="[Error] Empty script param. Check your tool call arguments.")
|
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", "")
|
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)
|
result = web_execute_js(script, switch_tab_id=switch_tab_id)
|
||||||
if save_to_file and "js_return" in result:
|
if save_to_file and "js_return" in result:
|
||||||
content = str(result["js_return"] or '')
|
content = str(result["js_return"] or '')
|
||||||
|
|||||||
@@ -73,7 +73,10 @@ def read_addrs(pid, addrs):
|
|||||||
**坑点:**
|
**坑点:**
|
||||||
- 进程名Weixin.exe(非WeChat.exe);地址字符串先`int(addr,16)`
|
- 进程名Weixin.exe(非WeChat.exe);地址字符串先`int(addr,16)`
|
||||||
- 步骤3筛≠A(排除空/乱码),步骤4筛==A(正向确认),交替最快
|
- 步骤3筛≠A(排除空/乱码),步骤4筛==A(正向确认),交替最快
|
||||||
- **优先侧栏点击切换会话**,避免使用搜索框(搜索结果首条常是广告,极易误点)。直接点左侧已有会话列表中的不同聊天即可完成差集切换
|
- **搜索切换会话完全可用**,大部分差集步骤直接搜索即可。注意:搜索结果首条可能是广告,粘贴后≥1.5s再点,确认是联系人再点(或点第2条)
|
||||||
- 若必须搜索:粘贴后≥1.5s再点结果,用不常见的联系人名,或点第2条结果避开广告
|
- **仅最终消歧步骤需侧栏点击**:候选>1时,在侧栏点一个不同的人(不经搜索框),read_addrs看哪个地址跟随变化→那个就是标题栏
|
||||||
- 切换后用read_addrs验证确实切成功了再继续
|
- 切换后用read_addrs验证确实切成功了再继续
|
||||||
- 最终候选>1时的消歧:不要用搜索切换,直接在联系人列表中点一个靠后的人(不经过搜索框),然后read_addrs看哪个地址变了——变的才是标题栏,没变的是搜索框残留
|
- **步骤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→精确坐标→点击)
|
||||||
Reference in New Issue
Block a user