diff --git a/.gitignore b/.gitignore index b75c9d0..8f0d4f7 100644 --- a/.gitignore +++ b/.gitignore @@ -37,4 +37,7 @@ model_responses.txt # 存储敏感信息的记忆文件夹(除了公开的 SOP) memory/ -!memory/memory_management_sop.md \ No newline at end of file +!memory/memory_management_sop.md + +# Allow tracking of specific SOPs +!memory/web_setup_sop.md diff --git a/WELCOME_NEW_USER.md b/WELCOME_NEW_USER.md new file mode 100644 index 0000000..1840352 --- /dev/null +++ b/WELCOME_NEW_USER.md @@ -0,0 +1,61 @@ +# 🚀 欢迎使用物理级全能执行者 + +这是您的 Agent 初始化指引。请按以下阶段操作: + +## 第一阶段:环境启动 (Initial Ignition) + +1. **Python 环境检查与核心库安装** + - 确保安装了 Python 3.10+。 + - **必须手动执行**:`pip install streamlit pywebview` + +2. **配置身份密钥 (Credentials)** + - 复制 `mykey_template.py` 为 `mykey.py` 并填入 API Key。 + +3. **唤醒 Agent** + - 运行 `launch.pyw`。看到悬浮窗后,我即刻上线。 + +## 第二阶段:能力激活 (Ability Activation) + +在此阶段,您只需对我发送指令,所有物理操作由我完成: + +1. **解锁 PowerShell 脚本执行权限** + - **指令**:`请帮我当前用户解锁 powershell 的 ps1 执行权限。` + +2. **配置全局文件搜索 (Everything CLI)** + - **指令**:`安装并配置 everything 命令行工具进PATH。` + +3. **Web 自动化环境配置 (Web Setup SOP)** + - **指令**:`执行 web setup sop 解锁 web 工具` + - **物理影响**:我将引导您完成浏览器插件安装,并注入核心脚本,使我能够直接操控您的浏览器页面。 + +4. **补全常用工具库** + - **指令**:`安装常用 Python 自动化包(如 requests, pandas, pyperclip)。` + +5. **配置网络代理 (Proxy Setup)** + - **指令**:`告诉我能用的系统代理` + +6. **激活视觉理解能力 (OCR & Vision)** + - **指令**:`配置截图与 OCR 工具,解锁你的屏幕视觉。` + +7. **移动端自动化准备 (Android/ADB)** + - **指令**:`配置 ADB 环境,准备连接安卓设备。` + +## 第三阶段:记忆与知识体系建造 (Knowledge Architecture) + +当环境就绪后,您可以让我构建您的“数字大脑”: + +1. **自动化 SOP 沉淀** + - **指令**:`记录刚才的操作流程,生成一套自动化 SOP。` + +2. **现有技能挂载 (SOP Retrieval)** + - **指令**:`读取现有 SOP 目录,告诉我你现在掌握的所有技能。` + +3. **物理资产审计 (Asset Audit)** + - **指令**:`帮我建立物理资产清单,扫描并记录我常用的工具路径。` + +4. **Web 调研实战 (Research & Report)** + - **指令**:`搜索 [关键词],并根据网页内容整理一份简易 Markdown 报告保存到当前目录。` + - **物理影响**:我将自动打开浏览器,利用 Web 驱动采集多个页面信息,通过逻辑整合后在您的本地文件夹生成物理文件。 + +--- +**💡 提示**:您可以直接复制上述 `指令` 发送给我,我将立刻执行对应的物理操作。 diff --git a/assets/global_mem_insight_template.txt b/assets/global_mem_insight_template.txt index a18e99e..3a2cf96 100644 --- a/assets/global_mem_insight_template.txt +++ b/assets/global_mem_insight_template.txt @@ -1,11 +1,12 @@ [CONSTITUTION] -1. 修改自身源码前必请示;./ 目录内实验可自主执行。 -2. 决策前必先枚举 STORES 索引并读取条目;未经验证不硬断言。 -3. 复杂任务单步执行:严禁盲目一气呵成,每步必有物理验证反馈。 +1. 修改自身源码前必请示;./ 目录内实验可自主执行,允许安装py包和命令行工具。 +2. 做决策前必先查记忆库;未查证的事实不得断言。 +3. 复杂任务需分步执行并每步验证:严禁盲目一气呵成。三次重试失败必须请求干预。 4. 严禁未经授权读取/移动密钥或密码文件;仅限引用或申请许可。 +5. 修改/写入任何记忆前必先读取META-SOP核验。 -[META-SOP] -- memory_management_sop.md (L0 准则;修改/写入记忆前必先 read 核验) +[META-SOP (L0)] +- ../memory/memory_management_sop.md [DIRECTORY] - L2_Facts: ../memory/global_mem.txt (Method: 按 TOPIC 检索索引 -> file_read 对应条目) diff --git a/assets/ljq_web_driver.user.js b/assets/ljq_web_driver.user.js index 01eb42b..75f4cfb 100644 --- a/assets/ljq_web_driver.user.js +++ b/assets/ljq_web_driver.user.js @@ -294,14 +294,16 @@ return { error: '没有可执行的代码' }; } updateStatus('exec'); - + const _open = window.open; + window.open = (url, target, features) => { + GM_openInTab(url, { active: true }); + return { success: true, url: url }; + }; try { const jsCode = data.code.trim(); const lines = jsCode.split(/\r?\n/).filter(l => l.trim()); const lastLine = lines.length > 0 ? lines[lines.length - 1].trim() : ''; - if (lastLine.startsWith('return')) { - // 最后一行包含 return 语句,使用 Function 构造器 result = (new Function(jsCode))(); } else { try { @@ -309,16 +311,21 @@ } catch (e) { if (isIllegalReturnError(e)) { result = (new Function(jsCode))(); - } else { - throw e; - } + } else throw e; } } const processedResult = smartProcessResult(result); + if (result instanceof Promise) { + result.finally(() => window.open = _open); + return { result: processedResult }; + } return { result: processedResult }; - } catch (execError) { - return { error: execError }; // 返回错误信息 + return { error: execError }; + } finally { + if (!(result instanceof Promise)) { + setTimeout(() => window.open = _open, 100); + } } } diff --git a/ga.py b/ga.py index cae4a84..7af2fe4 100644 --- a/ga.py +++ b/ga.py @@ -448,7 +448,8 @@ class GenericAgentHandler(BaseHandler): 2. 若无高价值新事实,那就不更新任何内容。 3. 尽量先查看现有全局记忆形式,仅作少量修改不要影响其余部分。insight也要同步更新全局记忆的短印象来提醒存在性。 4. 优先使用file_read和file_patch来保证少量修改。 -5. 请先阅读L0的记忆更新SOP来确保了解修改规则。''' + get_global_memory() +5. 必须先阅读L0的记忆更新SOP来确保了解修改规则。 +6. 必须先阅读L0的记忆更新SOP来确保了解修改规则,这是重复强调。''' + get_global_memory() yield "[Info] Start distilling good memory for long-term storage.\n" return StepOutcome({"status": "success"}, next_prompt=prompt) diff --git a/memory/memory_management_sop.md b/memory/memory_management_sop.md index 84ca911..5fb635e 100644 --- a/memory/memory_management_sop.md +++ b/memory/memory_management_sop.md @@ -38,7 +38,7 @@ L3: ../memory/ (记录库层 - 包含 .md/.py 等各类文件) - 内容:CONSTITUTION、STORES、ACCESS、TOPICS、LESSONS_LEARNED - 更新:L2 有新增/删除事实时同步;当发现通用且极其重要的规律时,追加 LESSONS。 -**禁止**:严禁在此层直接写入 IP、密码、完整路径、API Key。L1 只能是索引指针,不能是数据容器。不写 "How to" 或详细解释。 +**禁止**:严禁在此层直接写入 IP、密码、完整路径、API Key。L1 只能是索引指针,不能是数据容器。不写 "How to" 或详细解释。严禁包含特定任务的技术细节(特定任务细节应该在L3)。 --- @@ -51,7 +51,7 @@ L3: ../memory/ (记录库层 - 包含 .md/.py 等各类文件) - 内容:按 `## [SECTION]` 组织的事实条目 - 同步:变化时更新 L1 的相应 TOPIC 导航行 -**禁止**:禁止存储易变状态、禁止存储猜测 +**禁止**:禁止存储易变状态、禁止存储猜测、严禁存储大模型可推理的通用常识 --- @@ -84,18 +84,19 @@ L3: ../memory/ (记录库层 - 包含 .md/.py 等各类文件) ``` "这条信息该放哪层?" -是『全局事实』? (IP、重要路径特征、凭证、ID、API 密钥等) +是『环境特异性事实』? (IP、非标路径、凭证、ID、API 密钥等,大模型 Zero-shot 无法生成准确) ├─ YES → L2 (global_mem.txt) │ 然后 → L1 [TOPICS.GLOBAL_MEM] 添加导航行 │ └─ NO ↓ - 是『可重复使用的通用规律』? (工具用法、排查方法) - ├─ YES → L1 [LESSONS_LEARNED] - │ 并可在 L3 写详细解释 + 是『通用操作规律』? (全局性避坑指南、排查方法、不针对特定任务的通用准则) + ├─ YES → L1 [LESSONS_LEARNED] (仅限 1-2 句脱水准则) │ - └─ NO → L3 (../memory/) - - 工具文档 → *_sop.md - - 可复用代码函数 → .py 文件 - - 临时实验 → 删除 + └─ NO + ↓ + 是『特定任务技术』? (艰难尝试才能成功,且未来还能用到的任务,如:微信解析参数、特定游戏坐标、临时工具配置) + ├─ YES → L3 (../memory/ 专项 SOP 或脚本) + │ + └─ NO → 判定为『通用常识』或『冗余信息』: 严禁存储,直接丢弃 ``` \ No newline at end of file