feat: optimize web driver, update memory SOP and root welcome guide
This commit is contained in:
3
.gitignore
vendored
3
.gitignore
vendored
@@ -38,3 +38,6 @@ model_responses.txt
|
|||||||
# 存储敏感信息的记忆文件夹(除了公开的 SOP)
|
# 存储敏感信息的记忆文件夹(除了公开的 SOP)
|
||||||
memory/
|
memory/
|
||||||
!memory/memory_management_sop.md
|
!memory/memory_management_sop.md
|
||||||
|
|
||||||
|
# Allow tracking of specific SOPs
|
||||||
|
!memory/web_setup_sop.md
|
||||||
|
|||||||
61
WELCOME_NEW_USER.md
Normal file
61
WELCOME_NEW_USER.md
Normal file
@@ -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 驱动采集多个页面信息,通过逻辑整合后在您的本地文件夹生成物理文件。
|
||||||
|
|
||||||
|
---
|
||||||
|
**💡 提示**:您可以直接复制上述 `指令` 发送给我,我将立刻执行对应的物理操作。
|
||||||
@@ -1,11 +1,12 @@
|
|||||||
[CONSTITUTION]
|
[CONSTITUTION]
|
||||||
1. 修改自身源码前必请示;./ 目录内实验可自主执行。
|
1. 修改自身源码前必请示;./ 目录内实验可自主执行,允许安装py包和命令行工具。
|
||||||
2. 决策前必先枚举 STORES 索引并读取条目;未经验证不硬断言。
|
2. 做决策前必先查记忆库;未查证的事实不得断言。
|
||||||
3. 复杂任务单步执行:严禁盲目一气呵成,每步必有物理验证反馈。
|
3. 复杂任务需分步执行并每步验证:严禁盲目一气呵成。三次重试失败必须请求干预。
|
||||||
4. 严禁未经授权读取/移动密钥或密码文件;仅限引用或申请许可。
|
4. 严禁未经授权读取/移动密钥或密码文件;仅限引用或申请许可。
|
||||||
|
5. 修改/写入任何记忆前必先读取META-SOP核验。
|
||||||
|
|
||||||
[META-SOP]
|
[META-SOP (L0)]
|
||||||
- memory_management_sop.md (L0 准则;修改/写入记忆前必先 read 核验)
|
- ../memory/memory_management_sop.md
|
||||||
|
|
||||||
[DIRECTORY]
|
[DIRECTORY]
|
||||||
- L2_Facts: ../memory/global_mem.txt (Method: 按 TOPIC 检索索引 -> file_read 对应条目)
|
- L2_Facts: ../memory/global_mem.txt (Method: 按 TOPIC 检索索引 -> file_read 对应条目)
|
||||||
|
|||||||
@@ -294,14 +294,16 @@
|
|||||||
return { error: '没有可执行的代码' };
|
return { error: '没有可执行的代码' };
|
||||||
}
|
}
|
||||||
updateStatus('exec');
|
updateStatus('exec');
|
||||||
|
const _open = window.open;
|
||||||
|
window.open = (url, target, features) => {
|
||||||
|
GM_openInTab(url, { active: true });
|
||||||
|
return { success: true, url: url };
|
||||||
|
};
|
||||||
try {
|
try {
|
||||||
const jsCode = data.code.trim();
|
const jsCode = data.code.trim();
|
||||||
const lines = jsCode.split(/\r?\n/).filter(l => l.trim());
|
const lines = jsCode.split(/\r?\n/).filter(l => l.trim());
|
||||||
const lastLine = lines.length > 0 ? lines[lines.length - 1].trim() : '';
|
const lastLine = lines.length > 0 ? lines[lines.length - 1].trim() : '';
|
||||||
|
|
||||||
if (lastLine.startsWith('return')) {
|
if (lastLine.startsWith('return')) {
|
||||||
// 最后一行包含 return 语句,使用 Function 构造器
|
|
||||||
result = (new Function(jsCode))();
|
result = (new Function(jsCode))();
|
||||||
} else {
|
} else {
|
||||||
try {
|
try {
|
||||||
@@ -309,16 +311,21 @@
|
|||||||
} catch (e) {
|
} catch (e) {
|
||||||
if (isIllegalReturnError(e)) {
|
if (isIllegalReturnError(e)) {
|
||||||
result = (new Function(jsCode))();
|
result = (new Function(jsCode))();
|
||||||
} else {
|
} else throw e;
|
||||||
throw e;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
const processedResult = smartProcessResult(result);
|
const processedResult = smartProcessResult(result);
|
||||||
|
if (result instanceof Promise) {
|
||||||
|
result.finally(() => window.open = _open);
|
||||||
|
return { result: processedResult };
|
||||||
|
}
|
||||||
return { result: processedResult };
|
return { result: processedResult };
|
||||||
|
|
||||||
} catch (execError) {
|
} catch (execError) {
|
||||||
return { error: execError }; // 返回错误信息
|
return { error: execError };
|
||||||
|
} finally {
|
||||||
|
if (!(result instanceof Promise)) {
|
||||||
|
setTimeout(() => window.open = _open, 100);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
3
ga.py
3
ga.py
@@ -448,7 +448,8 @@ class GenericAgentHandler(BaseHandler):
|
|||||||
2. 若无高价值新事实,那就不更新任何内容。
|
2. 若无高价值新事实,那就不更新任何内容。
|
||||||
3. 尽量先查看现有全局记忆形式,仅作少量修改不要影响其余部分。insight也要同步更新全局记忆的短印象来提醒存在性。
|
3. 尽量先查看现有全局记忆形式,仅作少量修改不要影响其余部分。insight也要同步更新全局记忆的短印象来提醒存在性。
|
||||||
4. 优先使用file_read和file_patch来保证少量修改。
|
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"
|
yield "[Info] Start distilling good memory for long-term storage.\n"
|
||||||
return StepOutcome({"status": "success"}, next_prompt=prompt)
|
return StepOutcome({"status": "success"}, next_prompt=prompt)
|
||||||
|
|
||||||
|
|||||||
@@ -38,7 +38,7 @@ L3: ../memory/ (记录库层 - 包含 .md/.py 等各类文件)
|
|||||||
- 内容:CONSTITUTION、STORES、ACCESS、TOPICS、LESSONS_LEARNED
|
- 内容:CONSTITUTION、STORES、ACCESS、TOPICS、LESSONS_LEARNED
|
||||||
- 更新:L2 有新增/删除事实时同步;当发现通用且极其重要的规律时,追加 LESSONS。
|
- 更新:L2 有新增/删除事实时同步;当发现通用且极其重要的规律时,追加 LESSONS。
|
||||||
|
|
||||||
**禁止**:严禁在此层直接写入 IP、密码、完整路径、API Key。L1 只能是索引指针,不能是数据容器。不写 "How to" 或详细解释。
|
**禁止**:严禁在此层直接写入 IP、密码、完整路径、API Key。L1 只能是索引指针,不能是数据容器。不写 "How to" 或详细解释。严禁包含特定任务的技术细节(特定任务细节应该在L3)。
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
@@ -51,7 +51,7 @@ L3: ../memory/ (记录库层 - 包含 .md/.py 等各类文件)
|
|||||||
- 内容:按 `## [SECTION]` 组织的事实条目
|
- 内容:按 `## [SECTION]` 组织的事实条目
|
||||||
- 同步:变化时更新 L1 的相应 TOPIC 导航行
|
- 同步:变化时更新 L1 的相应 TOPIC 导航行
|
||||||
|
|
||||||
**禁止**:禁止存储易变状态、禁止存储猜测
|
**禁止**:禁止存储易变状态、禁止存储猜测、严禁存储大模型可推理的通用常识
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
@@ -84,18 +84,19 @@ L3: ../memory/ (记录库层 - 包含 .md/.py 等各类文件)
|
|||||||
```
|
```
|
||||||
"这条信息该放哪层?"
|
"这条信息该放哪层?"
|
||||||
|
|
||||||
是『全局事实』? (IP、重要路径特征、凭证、ID、API 密钥等)
|
是『环境特异性事实』? (IP、非标路径、凭证、ID、API 密钥等,大模型 Zero-shot 无法生成准确)
|
||||||
├─ YES → L2 (global_mem.txt)
|
├─ YES → L2 (global_mem.txt)
|
||||||
│ 然后 → L1 [TOPICS.GLOBAL_MEM] 添加导航行
|
│ 然后 → L1 [TOPICS.GLOBAL_MEM] 添加导航行
|
||||||
│
|
│
|
||||||
└─ NO
|
└─ NO
|
||||||
↓
|
↓
|
||||||
是『可重复使用的通用规律』? (工具用法、排查方法)
|
是『通用操作规律』? (全局性避坑指南、排查方法、不针对特定任务的通用准则)
|
||||||
├─ YES → L1 [LESSONS_LEARNED]
|
├─ YES → L1 [LESSONS_LEARNED] (仅限 1-2 句脱水准则)
|
||||||
│ 并可在 L3 写详细解释
|
|
||||||
│
|
│
|
||||||
└─ NO → L3 (../memory/)
|
└─ NO
|
||||||
- 工具文档 → *_sop.md
|
↓
|
||||||
- 可复用代码函数 → .py 文件
|
是『特定任务技术』? (艰难尝试才能成功,且未来还能用到的任务,如:微信解析参数、特定游戏坐标、临时工具配置)
|
||||||
- 临时实验 → 删除
|
├─ YES → L3 (../memory/ 专项 SOP 或脚本)
|
||||||
|
│
|
||||||
|
└─ NO → 判定为『通用常识』或『冗余信息』: 严禁存储,直接丢弃
|
||||||
```
|
```
|
||||||
Reference in New Issue
Block a user