正文:
D3 把电力见证资料 + 一张电子发票 PDF 塞进了本地 memory,CLI memory search 能命中,facts_only 也在 md 里。到 D4 才发现:检索层和回答层要分开验。
问题从哪来
Agent 对话大致是:
用户提问
→ memory_search(snippet 往往对)
→ 7B 写最终回答(可能改字、混文件、改搜索词)
我踩过的典型现象:
| 现象 | 实际原因 |
|---|---|
| snippet 坷垃,气泡变别的店名 | 7B 改写中文专名 |
| 2550.00 变 255 | 模型心算 / 截断 |
| 问发票混进开关柜 | maxResults 过大 + 模型合并 |
| 「叶片见证表」答成试板检验 | 模糊 query,Top1 落到检查项目 |
| 检查项目贴开关柜模板 | 没加 doc_type:checklist |

索引没坏,是第二层在发挥。
三步约束
1. 配置
json
"ollama/qwen2.5:7b": { "params": { "temperature": 0 } },
"memorySearch": { "query": { "maxResults": 1 } }
改完 docker compose restart openclaw-gateway,浏览器 New Chat。
2. workspace 规则
SOUL.md / AGENTS.md 写清:
- 只搜一次,禁止改 query
- 发票 copy-paste
facts_only四行 +来源:xxx.md - 叶片用
source_file:叶片设备见证情况表 - 检查项目用
doc_type:checklist 检查项目
3. 固定提问模板
别泛问「叶片」「检查项目」,用 D3 写进 md 头部的 key:
powershell
# 叶片 --- 稳
memory search "source_file:叶片设备见证情况表"
# 叶片 --- 容易偏到检查项目
memory search "叶片见证表"
# 检查项目 --- 稳
memory search "doc_type:checklist 检查项目"
CLI 金标准
浏览器不准时先跑(不经过 LLM,不会改字):
powershell
cd study\scripts
.\d4-answer-from-search.ps1 "invoice_no:26152000000166099696"
.\d4-answer-from-search.ps1 "source_file:叶片设备见证情况表"
.\d4-answer-from-search.ps1 "doc_type:checklist 检查项目"
CLI 对、浏览器错 → 调 prompt / 配置,不是重建索引。
浏览器三条验收
| # | 搜索词 | 通过标准 |
|---|---|---|
| 1 | invoice_no:26152000000166099696 |
seller 含坷垃;2550.00;恰好 5 行 + 来源 |
| 2 | source_file:叶片设备见证情况表 |
来源含叶片;有 YCL-01-R01;不是检查项目 |
| 3 | doc_type:checklist 检查项目 |
17 个 sheet 名;来源检查项目(1).md |
每条都展开 tool,对照 snippet 和气泡。
我最后叶片和检查项目浏览器都过了;发票在严格模板下也能 5 行过关,但 7B 仍会多写几句------Demo 以 CLI 为准绳。
踩坑速查
1. 先对后错 --- 看 tool snippet,别看流式最后一帧。
2. 改写 query --- prompt 写死搜索词,用 source_file: / invoice_no:。
3. 混文件 --- maxResults: 1 + 「只根据 Top1」。
4. 叶片变检查项目 --- 禁止「叶片见证表」模糊搜。
5. 检查项目变开关柜 --- 必须 doc_type:checklist。
6. SOUL 不生效 --- New Chat;旧会话不吃新规则。
7. 金额被改 --- 商用别让 LLM 报数字。
8. 7B 无法 100% 守规矩 --- Demo 用 snippet 即答案;交付用模板拼字段。
商用边界
7B 调 prompt 只能 减轻 改字,不能保证零失误。工程资料问答要带出处,我的分工是:
- 检索:memory + metadata(D3 已做)
- 输出 :程序读
facts_only/ frontmatter 拼模板(D4 CLI 脚本思路) - LLM:可选,只写「说明句」,不碰专名和金额
下一步 D5
文件夹监控 + 自动 ingest,不用每来一个文件手跑 d3-ingest.ps1。