feat: web_scan iframe穿透 + plan_sop术语优化

This commit is contained in:
Jiaqing Liang
2026-03-06 00:09:52 +08:00
parent ed75d103f5
commit c6af92e612
2 changed files with 19 additions and 5 deletions

View File

@@ -20,17 +20,17 @@
查 insight 找相关 SOP 并读取——SOP 提供任务骨架,直接指导分解。无则跳过。不确定性最高的环节先探,其结果可能推翻整个计划。 查 insight 找相关 SOP 并读取——SOP 提供任务骨架,直接指导分解。无则跳过。不确定性最高的环节先探,其结果可能推翻整个计划。
### 1b. 分类 ### 1b. 分类
从依赖关系读出结构有依赖→Sequential | 无依赖→MapReduce | 条件未知→Branch。可嵌套。 从依赖关系读出结构有依赖→Sequential | 无依赖→MAP | 条件未知→Branch。可嵌套。
### 1c. 分解 ### 1c. 分解
按结构展开 checklist每步须有独立完成判据,否则继续拆。update checkpoint 并标 `[x] 规划` 按结构展开 checklist。**每个子任务必须具体列出,禁止笼统描述**(如"批量处理所有文件"必须展开为每个文件的具体条目)。每步须有独立完成判据否则继续拆。update checkpoint 并标 `[x] 规划`
- Seq: `[ ]A → [ ]B → [ ]C` - Seq: `[ ]A → [ ]B → [ ]C`
- MR: `MAP: [ ]D1 [ ]D2 … REDUCE: [ ]汇总` - MAP: `[ ]D1 [ ]D2 [ ]D3 … → [ ]汇总`(汇总为最后一步,中心化执行)
- Branch: `[ ]尝试X → 成功:[ ]Y / 失败:[ ]Z` - Branch: `[ ]尝试X → 成功:[ ]Y / 失败:[ ]Z`
## 2. 执行注意 ## 2. 执行注意
- 计划有误时回到规划修正,不硬凑;不可逆操作前多验证一步 - 计划有误时回到规划修正,不硬凑;不可逆操作前多验证一步
- MapReduce 的 MAP 可用 subagent 并行执行 - MAP 的子任务可用 subagent 并行执行
- 步骤间用尽量用文件传递中间结果和汇总,不靠上下文记忆 - 步骤间用尽量用文件传递中间结果和汇总,不靠上下文记忆
- 收尾:全部 `[x]` 后汇总结果,清理 checkpoint - 收尾:全部 `[x]` 后汇总结果,清理 checkpoint

View File

@@ -29,6 +29,20 @@ function createEnhancedDOMCopy() {
const childClone = cloneNode(child, keep || isSmallDropdown); const childClone = cloneNode(child, keep || isSmallDropdown);
if (childClone) childNodes.push(childClone); if (childClone) childNodes.push(childClone);
} }
if (sourceNode.tagName === 'IFRAME') {
try {
const iDoc = sourceNode.contentDocument || sourceNode.contentWindow?.document;
if (iDoc && iDoc.body && iDoc.body.children.length > 0) {
const wrapper = document.createElement('div');
wrapper.setAttribute('data-iframe-content', sourceNode.src || '');
for (const ch of iDoc.body.childNodes) {
const c = cloneNode(ch, keep);
if (c) wrapper.appendChild(c);
}
if (wrapper.childNodes.length) childNodes.push(wrapper);
}
} catch(e) {}
}
const rect = sourceNode.getBoundingClientRect(); const rect = sourceNode.getBoundingClientRect();
const style = window.getComputedStyle(sourceNode); const style = window.getComputedStyle(sourceNode);
@@ -841,7 +855,7 @@ def find_changed_elements(before_html, after_html):
result["top_change"] = h if len(h) <= 2000 else h[:2000] + '...[TRUNCATED]' result["top_change"] = h if len(h) <= 2000 else h[:2000] + '...[TRUNCATED]'
return result return result
def get_html(driver, cutlist=False, maxchars=28000, instruction="", extra_js=""): def get_html(driver, cutlist=False, maxchars=38000, instruction="", extra_js=""):
page = get_main_block(driver, extra_js=extra_js) page = get_main_block(driver, extra_js=extra_js)
soup = optimize_html_for_tokens(page) soup = optimize_html_for_tokens(page)
html = str(soup) html = str(soup)