workflow_recall_first_locate
道-方法 · 道层 skill 全文
本页是 <code>rules/skills/drafts/workflow_recall_first_locate.md</code> 的逐字投影(仅隐私清洗,零改写)。
时点提示:本页是仓内文件 rules/skills/drafts/workflow_recall_first_locate.md 的逐字投影(仅做隐私清洗:仓库根绝对路径→相对路径、家目录→~/;除此零改写)。若源文件后续有修订,以仓内真源为准。
Workflow:召回优先的信息定位(recall-first locate)
元数据
- 类型:Workflow / Draft,道(判断纪律)层
- 适用场景:任务要求覆盖式收集某类信息、召回是硬约束,尤其在 prompt 模糊或引导不足、语料超出单 context 装载时
- 创建日期:2026-05-30
- 状态:Draft。证据等级 bounded(git+weclaude 两个 Sonnet 任务方向+机制复制);"通用杠杆"已被证伪——纪律对天生彻底枚举的强模型(Codex gpt-5.5)反而有害(见"模型条件性")。可推广性 observational,未达 solid,未晋升
- 相关 skill:
workflow_long_context_scale_up(读/覆盖阶段,本 skill 的下游)、workflow_solid_decision_review(判"收集够没够")、workflow_unit_decomposition_and_context_injection、chat-history-retrieval(定位聊天记录入口) - 术实现参考:
adhoc_jobs/git_baseline_completeness_20260424/(全机械召回流程的可运行实例) - 2026-05-31 重新定位:本 skill 已被
contexts/survey_sessions/requirement_anchored_context_sufficiency_architecture_20260531_manual.md收编为"召回引擎"组件(model-conditional 的 ρ/相关性选择增强,对天生欠枚举的弱模型有用)。信息收集的普适核心是该架构的"harness 制造可机械验证的充分性误差信号 + 独立窄问题审查(非投票)+ surprise 探针",不是本 skill 的召回纪律。用本 skill 前先看那份架构定位。
目标
一句话:当任务要覆盖式收集信息时,整个任务的召回率由枚举/定位步骤决定,所以先把这一步当成召回工程来做(先证"没漏"),再去深读和精判。
这个 skill 解决的真问题
信息收集失效最常见的形态不是"读得不够深",而是"压根没找到"。一个 agent 在模糊 prompt 下做收集,会凭印象扫几个显著位置就收手,系统性漏掉关键词不可见的相关内容。下游读得再准也补不回定位阶段漏掉的东西(召回界定上界)。本 skill 的判断纪律就是把召回从"撞运气"变成"可证明没漏"。
经对照实验证伪的一个直觉:把"定位"和"阅读"拆成两个阶段,本身不解决问题(拆分臂的召回 ≈ 甚至低于不拆的单 agent)。真正的杠杆是定位步骤有没有召回工程纪律,不是阶段边界。所以本 skill 是一套纪律,可以由单个 agent 执行,也可以拆成 locate/read 两个 agent 执行,但拆与不拆都必须带这套纪律。
何时使用 / 不使用
使用:任务要求穷尽式或覆盖式收集("找出所有 X"、"这方面的信息都收集来");召回比精确更重要;语料大到单 context 装不下;prompt 模糊、来源边界不清、引导不足。
不使用:快速查一条已知事实(用 rg 或 chat-history-retrieval);prompt 已经清晰且语料小到单 agent 能装下并自查;任务要的是对已定位内容的精确判断或裁决(那归读阶段或 workflow_solid_decision_review);trivial 单文件任务;执行模型本身就会彻底机械枚举的强 agent(见下"模型条件性")。
模型条件性(2026-05-31 跨厂商实验的关键修正)
本纪律不是通用杠杆,是一个 forcing function,价值取决于执行模型在 naive 下会不会欠收集:
- 会欠枚举的模型(Sonnet 档及以下):naive 只凭印象扫几处(git naive 召回 0.56),纪律强制机械枚举 → 召回回升到 0.79。纪律是拐杖。
- 天生就彻底枚举的强模型(实测 Codex gpt-5.5):naive 召回已 0.92(近天花板)、精度也高;套全套纪律后召回精度双降到 0.71/0.69——纪律的精度刹车(去噪、先证后判)让强模型变保守、过滤掉本该命中的内容。纪律是负担。
进入前先判断:执行 agent 在 naive 下会不会欠收集?会(弱模型 / vague prompt / 大语料 / 关键词不可见或噪声混淆)→ 上全套五步。不会(强模型已天生彻底)→ 只保留步骤 1「机械枚举建 Universe」(廉价、无害),去掉会让强模型过度保守的精度刹车(步 4-5)。证据边界:Codex 反转是单任务(git)N=2,但分布不重叠,足以证伪"通用";"对所有强模型/所有任务都有害"未确立,精确条件待更多数据。
核心判断(进入前先答)
召回是不是这个任务的硬约束?判据:用户要的是"覆盖/穷尽/所有",还是"一个够用的答案"。前者进本纪律;后者别浪费这套机械枚举的成本。其次:漏一个相关位置的代价,是否大于多带几个无关候选的代价?如果是,召回优先成立。
召回工程纪律(顺序有依赖,不是可选清单)
下面五步有真实的前后依赖(每步的输出是下一步的输入),不是可重排的建议。但每步具体怎么实现(用什么命令、什么关键词)由 agent 按语料自行决定。
- 机械枚举建 Universe:用确定性命令(bash/sql)把语料的处理单元全部枚举出来,得到一个有计数的全集,不靠印象、不靠"扫了几个"。Universe 计数必须是命令的输出。
- 机械剔除噪声类:用确定性特征(消息数、结构标记、固定前缀模式等)识别并剔除非目标的自动化/wrapper/重复类,每剔除一类记录其计数和判据。剔除噪声不等于降低召回,它是把召回预算花在真候选上。
- 宽召回网:用尽量宽的多词信号召回候选——同义词、相关工具名、中英文都要。召回优先、宁滥勿缺。这一步的产物是候选集,不是最终答案。
- NO_KEYWORD 兜底:对关键词零命中的单元随机抽样核验(够大的样本),确认没有"关键词不可见但实际相关"的命中被系统性漏掉。抽到漏网的,回到第 3 步扩网再召回。这一步是召回工程区别于普通 grep 的关键,也是实验里多召回那批的唯一来源。
- 先证没漏,再判断:只有候选集通过上述召回核验后,才在候选集上深读和精判。精确率在这一步回收(撒宽网必然带假阳,靠判断剔除),交给
workflow_long_context_scale_up做 budget 分片深读和覆盖证明。
验收标准(一个无上下文的 agent 也能据此自判做完没有)
- Universe 计数是机械命令的输出,落盘可复现(不是"大约""扫了一遍")。
- 每个被剔除的噪声类有计数和确定性判据,落盘。
- 候选集有记录,且第 4 步的 NO_KEYWORD 抽样 receipt 存在(抽了几个、是否发现漏网、是否回去扩网)。
- 深读/精判只发生在召回核验过的候选集上,不是边扫边判。
- 交接给读阶段时,候选集 + 召回 receipt 一起交出。
- 镜像条款:若候选集为空、要下"无相关信息"结论,必须先用确定性命令(
find/grep/枚举)独立反向核验,单一负面信号不构成"无"。 - 任一项缺失,只能说"做了局部扫描",不能说"覆盖式收集完成"。
与读阶段的交接
本 skill 只负责把召回做实,产物是召回核验过的候选位置集 + receipt。深读、精判、覆盖证明、residual ledger 归 workflow_long_context_scale_up。"收集够没够"的最终判级归 workflow_solid_decision_review。本 skill 不替它们做判断。
诚实的取舍与 claim ceiling
对照实验(2026-05-30,单任务、全 vague prompt、全 Sonnet 单 agent,GT=42/语料 4956)的实测,必须随结论一起讲,避免过度承诺:
- 注入本纪律把召回均值从 0.555 抬到 0.786,且每次都高于不带纪律的最好一次(分布不重叠)。多召回的那批恰是关键词不可见的探针,正是第 4 步针对的失效。这是 bounded 证据。
- 召回提升不是免费的:宽网换来更多假阳,判定子池精确率从 0.80-0.93 降到 0.46-0.76。这对"高召回定位"是对的取舍,但精确率必须靠读阶段判断回收,不能把宽候选集当最终答案(撒网过度宣称冒充召回是已知陷阱,见下)。
- 本纪律抬高召回下限,但对方差没有一致影响:git 上 skill 方差比 naive 大、weclaude 上反而小,两任务方向相反,不能声称纪律让结果更稳。要同时拿到高召回 + 低方差 + 接近完整召回,需要升级到全机械流程:多模型独立投票 + dropped-unit receipt(
git_baseline_completeness实例达到 ~1.0 召回靠的是这个,不是单 agent 加纪律)。 - 单 pass 单 agent 加纪律仍有残余召回天花板(实验里有 GT 被所有臂漏掉)。召回是硬需求且 ≥0.9 不可妥协时,直接走多模型投票流程。
- 可推广性 observational(两任务佐证、未达 solid):git(exp2)+ weclaude(exp3)两个独立任务、全 Sonnet 单 agent、全 vague 下,纪律都把召回均值抬高(git +0.23 / weclaude +0.27),方向与机制一致(增益都集中在关键词不可见、需判断的 session)。但 weclaude 两臂分布重叠(naive 一次 0.91 追平 skill)、Δ 落在 naive 极差内、置换检验 p≈0.057、GT 仅 11、两任务同 workspace 同族,所以是被两同向任务往 solid 推进的 observational,不是 solid。升 solid 还需:真异质任务(不同领域/用户)、更大 GT(≥30)+ reps≥5、全宣称集真精确率、五步成分消融、成本轴。
- 通用性被一个干净反例证伪(2026-05-31):同样的 git 任务换 Codex gpt-5.5 当执行模型,naive 0.92 > skill 0.71(分布不重叠)——纪律对强模型有害。所以"召回纪律是通用召回杠杆"不成立;正确表述是"对会欠枚举的模型/任务有效的条件性 forcing function"(见"模型条件性")。成分消融(git)进一步显示纪律 = 召回引擎(步1-3)+ 精度刹车(步4-5),且召回单指标做消融会被过宣称污染,full(全5步)是唯一召回×精度双佳。
已知陷阱(全部来自真实对照实验失败,非预测)
| 陷阱 | 表现 | 应对 |
|---|---|---|
| 把"拆阶段"当杠杆 | 期待"拆出独立 locate 阶段"本身提召回 | 实测拆分臂 ≈ 甚至低于单 pass 且方差更大;杠杆是召回纪律不是阶段边界。拆与不拆都要带纪律 |
| 廉价/naive 定位欠召回 | 用便宜模型 grep 撒网,召回只 0.29-0.74 且不稳 | 定位靠机械枚举 + 去噪 + NO_KEYWORD,不靠 LLM 猜关键词;枚举/去噪用确定性命令而非模型判断 |
| 关键词不可见命中被系统性漏掉 | 相关性不体现在关键词/预览里的单元被整类漏掉 | 第 4 步 NO_KEYWORD 抽样是唯一兜底,跳过它等于留一个系统性召回洞 |
| 撒网过度宣称冒充召回 | 把几百个候选直接当答案,召回数字好看但精确率崩 | 宽网只用于候选阶段;最终答案必须经判断回收精确率;"更多=更好"是 bad behavior(IB-08) |
| self-report 当枚举 | agent 说"我枚举了全集"但给不出可复现计数 | 要求机械命令 + 计数落盘;真枚举的计数能从冻结语料复现,嘴上说的不能 |
| 空结果直接声称"无相关" | 候选为空就下"没有相关信息" | 镜像条款:先用确定性命令反向核验再下结论 |
| 以为五步均匀承重 | 不看噪声结构机械套五步 | 哪一步承重取决于噪声结构:看起来像 topic 的噪声类多(如 git 的 merge-wrapper)→机械去重(步2)承重;关键词不可见 + 注入噪声(如 weclaude 的 MEMORY.md 注入 546/608)→宽网 + NO_KEYWORD(步3/4)承重。先看噪声长什么样再定重心 |
| 以为效应跨任务稳定 | 以为 git 的干净分离到处都有 | 实测 git 两臂分布不重叠、weclaude 重叠(naive 一次追平 skill);效应方向稳、大小随任务变。召回是硬需求时配多模型投票兜底,别只靠单 agent 加纪律 |
| 给强模型套全套纪律 | 对天生彻底枚举的强 agent(gpt-5.5)也上全套五步 | 实测 naive 0.92 > skill 0.71(召回精度双降);精度刹车让强模型过滤掉真命中。强模型只留机械枚举(步1),去掉步 4-5。见"模型条件性" |
| 子 agent 读大文件死循环 | arm 读 2.9MB 原始 jsonl 卡住,transcript 涨到 7MB+ 仍不返回,parallel barrier 永久卡死整个 workflow | arm prompt 硬限制读取量(用 jq/grep 取片段不整文件 Read);workflow 对 arm 设超时;用 TaskStop 杀 runaway,数据若已落盘则直接读文件打分 |
输出契约
落盘(任务目录或 tmp/ 下的 run 目录):Universe 计数与枚举命令、噪声类剔除表(类/计数/判据)、候选集、NO_KEYWORD 抽样 receipt、交给读阶段的候选位置集。命名与归档遵循目标项目约定;调研类落 contexts/survey_sessions/。
证据来源
诊断与设计:methodology/locate_read_two_phase_info_collection_20260530_manual.md。对照实验:adhoc_jobs/locate_read_recall_experiment_20260530/(RESULTS_exp1.md 证伪 naive 拆分;RESULTS_exp2.md 验证召回纪律 git;task2_weclaude/RESULTS_task2.md 跨任务复制 weclaude;RESULTS_ablation.md 成分消融;RESULTS_round2_synthesis.md Codex 跨厂商反转证伪通用性 + T-REQ 打分法失效记录)。术实现:adhoc_jobs/git_baseline_completeness_20260424/。