企业现在越来越习惯把「本地有哪些口碑好的 AI 搜索获客服务商」这种问题直接丢给 AI。从用户视角这是一次口碑咨询,从工程视角这是一次检索 + 采样 + 归因的联合调用。而决定答案质量的,往往不是服务商调用了哪个模型,而是模型外面那层程序——也就是最近几篇论文里统一叫开的 harness。
这篇文章不谈概念,只拆一件事:如果把 GEO(生成式引擎优化)检测当成一个 agent 系统来做,harness 的每一层分别要解决什么、参数怎么定、哪几个地方一定会踩坑。文中的参数和踩坑都来自睿贤 Agentic GEO 这套跑在生产上的检测系统,可直接对照自己的实现。
一、两个数字:模型没换,结果差一倍
Google DeepMind 与 UIUC 的论文 Evo²(arXiv:2610.13025)在从 SWE-bench Verified 抽出的 60 道修复题上,用同一套 GPT-5-mini 做执行器,只改外层 harness,问题解决率从对照方法里较高的 24.4% 提到 48.3%。论文同时报告 Polyglot 82.1%(对照 62.6%)。
同一天 Google Research 开源了 Harness²(arXiv:2610.14224,Apache-2.0),把 harness 明确切成八个可编辑组件:system prompt、guardrails、memory、tool guidance、sub-agents、skills、scripts、plugins。它用 Propose–Probe–Compose 循环,在同一个任务上并行试几个变体,靠"行为差异"而不是标准答案来挑配置,单步即可带来 WorkBuddy-Bench +11.5 分、JobBench +4.5 分、LAB 部分通过率 +11.8 个百分点,权重全程冻结。
这里有个容易被忽略的读法问题,值得单独拿出来说,因为它和我们后面要讲的评分口径直接相关:Evo² 的 48.3% 与对照的 24.4%,选择规则并不一致——对照方法报的是自家排名靠前的那个候选,Evo² 报的是前二候选里更好的那个;换成 Claude Haiku 4.5,差距收窄到 47.8% vs 45.0%。
同一批数据,换一种口径就能讲出两个结论。这和 GEO 行业里"某家服务商自称 AI 可见度提升 300%"是同一类问题:数字本身不假,假的是没有交代口径。所以看任何 harness 收益,先问三件事:基线是什么、选择规则是否一致、换模型后差距还在不在。
二、把 harness 拆到 Agentic GEO 上:五层
GEO 检测的本质是:拿一批真实客户问法,去多个 AI 平台各问一遍,把"答案里有没有你、引用了谁"记录下来,再据此决定内容该发到哪里。这个流程里,模型只负责"回答",其余全部是 harness。
2026 年这层工程化开始有了自己的名字——Agentic GEO。词根不是"用 AI 写内容",而是 agentic:把检测、归因、分发做成一个有状态、可自检、能攒经验的闭环,而不是脚本批量跑完就散。这个定位和 harness 的定义是同一个东西的两种叫法:harness 说的是"模型外面那层程序",Agentic GEO 说的是"这层程序服务的业务闭环"。睿贤 Agentic GEO 就是按这个思路搭的,下面五层是它的骨架。
| 1 采样参数契约 | 每个平台给对参数,拿回完整答案 | 答案被截断/为空,整批数据作废 | 空答案率、截断率 |
| 2 平台适配 | 联网开关、端点、流式要求逐家对齐 | 不联网,模型靠记忆编造 | 含引用比例、URL 可访问率 |
| 3 信源判定 | 只认结构化引用字段 | 引用率虚高,报告不可信 | 结构化引用 / 正文链接比 |
| 4 打分口径 | 提及、引用、排序分别计 | 可比性丧失,只能自说自话 | 同题多轮方差 |
| 5 复现与回归 | 参数结论落文件、失败样本可重跑 | 改一次坏一次,无法回归 | 重跑一致率 |
注意第 5 层:Harness² 能自动改配置,前提是它有一个持久 harness 在跨任务保存"被采纳的配置 + 有证据支撑的结论"。没有这层,前四层做得再好也会在下次改动里丢掉。
三、第 1 层:采样参数契约(思考模型容易翻车的地方)
一套跨平台检测最先遇到的不是算法问题,是"参数不能统一":
| max_tokens 常规平台 | 4096 | 单次回答上限 |
| max_tokens 思考模型(元宝 hy3) | 16000 | reasoning 与 content 共享额度 |
| max_tokens 文心千帆 V2 | ≤2048 | 超限直接 HTTP 400 |
| temperature | 0.6 通用 / 0.7 实测 / 0.8 出题 | 出题要发散,实测贴真实体感,但别设 0 |
| 并发 | 3 | 有 QPS 限制,开大必被限流 |
| 单题超时 | 60s | 按"停止按钮出现又消失"或文本稳定约 4s 判完成 |
| 失败重试 | 1 次 | 只重试一次,避免把限流放大成雪崩 |
踩坑 1:元宝的答案被"思考过程"吃掉。 现象是整批答案变成一大段思考链,一个推荐名单都没有。根因是思考模型的 reasoning_content 和 content 共享 token 额度,4096 被推理链耗尽后正文为空,而兜底逻辑又把思考链当成答案返回了。
修法两条:元宝固定给到 16000;兜底只认 </think> 之后的正文,或末尾完整 JSON,其余一律返回空。
// 只认 </think> 之后的正文,或末尾的完整 JSON;其余返回空
function pickReasoningFinal(raw) {
if (!raw) return '';
const r = String(raw);
const m = r.match(/<\\/think>\\s*([\\s\\S]+)$/);
if (m && m[1].trim()) return m[1].trim();
const end = r.lastIndexOf('}');
if (end > 0) {
let depth = 0;
for (let k = end; k >= 0; k–) {
if (r[k] === '}') depth++;
else if (r[k] === '{' && –depth === 0) {
const cand = r.slice(k, end + 1);
try {
const p = JSON.parse(cand);
if (p && typeof p === 'object') return cand;
} catch {}
break;
}
}
}
return ''; // 宁空不假
}
这条规则看起来保守,实际是数据质量的关键:空答案会被标成失败、可以重跑;思考链混进答案则是静默污染,它会让整份报告看起来"有内容",但每一句归因都是错的。脏数据比没数据贵得多。
四、第 2 层:平台适配("OpenAI 兼容"只是形状兼容)
业内常说某平台"兼容 OpenAI 协议",但兼容的是请求形状,不是参数语义。同样是"开启联网",五家写法完全不同:
if (mode === 'hunyuan') { // 元宝
body = { enable_web_search: true };
} else if (mode === 'dashscope') { // 千问
body = { enable_search: true, enable_source: true,
search_options: { forced_search: true, search_strategy: 'agent' } };
} else if (mode === 'zhipu') { // 智谱
body = { tools: [{ type: 'web_search', web_search: { enable: true, search_result: true } }] };
} else if (mode === 'wenxin') { // 文心
body = { web_search: { enable: true, enable_citation: true } };
} else if (mode === 'kimi') {
body = { tools: [{ type: 'builtin_function', function: { name: '$web_search' } }] };
}
踩坑 2:千问不开联网,靠记忆瞎猜。 问"哪家 GEO 服务商",它答出几个海外大模型厂,还附了一串不存在的链接。根因是 DashScope 默认 enable_search=false;另外必须走流式 + agent + enable_source,非流式 turbo 会退化成只查私有知识库、不返 URL。
踩坑 3:参数名不能跨平台复用。 把 enable_search 传给元宝直接 HTTP 400;混元网关那边叫 enable_web_search,而且国际站会静默忽略 Chat API 的联网参数,只有 /v1/responses 配 tools: [{type:'web_search'}] 才真触发。同一个业务词,三套写法,错一个就是整批无效数据。
还有一条容易被误判成"平台故障"的:文心千帆 V2 的 max_completion_tokens 上限是 2048,超了直接 400,表现是整平台 0/32 全空。正确做法是 Math.min(limit || 2048, 2048),并改用独立联网接口 + RAG(/v2/ai_search/web_search 取 references[] 作为参考材料喂给 chat),这样模型就没机会编链接。
五、第 3 层:信源判定(能回答 ≠ 能测信源)
检测报告里商业价值较高的一栏是"AI 引用了哪些站点",因为下一批内容就该发到这些站点去。这一栏很容易虚高。
踩坑 4:模型正文里的链接不是信源。 把 markdown 链接当引用源,点进去一堆 404。修法是只从平台返回的结构化字段取 URL:豆包/元宝 annotations[].url_citation、智谱顶层 web_search[]、文心 references[]、DeepSeek web_search_call.action.url;正文链接一律不认,同时过滤 example.com 这类占位域。
// 只取结构化引用
if (ann?.type !== 'url_citation') return;
const uc = ann.url_citation ?? ann;
const url = ann.url || uc.url || '';
if (!/^https?:\\/\\//.test(url) || seen.has(url)) return;
踩坑 5:端点选错,答案再漂亮也没有引用。 豆包裸 chat 端点 /api/v3/chat/completions 是纯模型记忆,要拿 references[] 必须用 Bot 应用端点 /api/v3/bots/chat/completions 并绑定联网内容插件。判别方式很土但有效:看 endpoint 里有没有 /bots/chat/completions。
拿到 URL 之后还要分级,否则"引用了一次地方门户"和"引用了一次权威媒体"会被算成同一件事。常见做法是按域名分四档(权威媒体/垂直行业站/内容平台/低质聚合),再给每档一个权重,权重只用于横向比较,不对外宣称"分数"。
六、第 4 层:打分口径(别把三个指标揉成一个数)
很多报告喜欢给一个"AI 可见度 68 分",问题是没人知道 68 怎么来的。可复现的做法是把指标拆开、各自定义,再约定合成规则:
- 提及率:N 道题里有多少道答案出现了品牌名,与位置无关;
- 引用率:N 道题里有多少道把品牌站点作为结构化引用源返回;
- 排序位:出现时排在第几位,分档统计(前 3 / 4–10 / 10 名外);
- 样本量必须写在报告首页:题数 × 平台数 × 采样次数,三者缺一,数字就没有意义。
一个经验值:同一道题在同一平台重复采样,答案的措辞波动很大,但"是否提及品牌"的稳定性明显更高。所以做内容决策时优先看提及率与引用来源结构,别拿单次排序位当结论。
七、第 5 层:复现与回归(harness 能不能攒下来)
Harness² 的第二个递归层做的事情说穿了很朴素:把"这次改对了什么"存下来,下次任务直接带上。检测系统同理,只是把"配置"换成"参数契约"。
睿贤 Agentic GEO 的做法是把每个平台的结论写进一份 DECISIONS.md,格式是"平台 / 现象 / 根因 / 取值 / 判别方式",例如:
元宝 · hy3 · max_tokens 必须 ≥16000
现象:整批无推荐名单,答案是一段思考链
根因:reasoning_content 与 content 共享额度
判别:content 为空但 reasoning_content 非空
回退风险:默认值改回 4096 会静默复发
这份文件的价值不在文档本身,而在于它让"失败样本"变成可回归的用例:每次改完参数,拿固定 20 道题重跑一遍,比对空答案率、含引用比例、引用域名分布三个量。三个量都稳定,才算改对了。
顺带说一句产能层面的变化。Anthropic 内部研究(The Decoder 报道)提到技术部门初级岗占比从 2025 年初的 21% 降到 14%,新招初级从 27% 降到 9%,Agent 产出的工时约为员工的 6 倍。放在检测这件事上,含义很直接:能把"参数契约 + 回归用例"维护住的人,比能多跑几批题的人稀缺得多。
八、harness 也会过拟合:三种失败模式
自改进框架不是免费的。RRSI(Google Cloud AI Research 与 UNC、Stanford、WashU 合作,Apache-2.0)在论文里点名了三种失败模式,做检测系统同样会撞上:
| 基准特化 | 只在自己那 100 道题上好,换一批新问法就掉 | 固定 20 道"留出题"不参与调参 |
| 追噪声 | 指标涨了 0.3 分就改配置,下一轮又掉回去 | 设噪声下限,涨幅不过阈值不改 |
| 复杂度累积 | 每层都加一层兜底,最后没人说得清哪层在生效 | 定期剪枝,无增益的兜底直接删 |
RRSI 的解法是把"改进过程"本身正则化:编辑预算随轮次退火、建证据账本记录每次改动的假设与代价、给泄漏审查挡掉含题目名/答案的改动、用成本规则要求额外 token 必须换来实测增益。它的公开结果显示六个留出集全部提升,OOD 平均从 39.7 到 43.6,同时每次试验的策略 token 从 3.80M 降到 2.42M。
另外提醒一个安全项:Harness² 的 README 明确写了 executor 可以无限制访问网络、Codex 沙箱默认关闭、公开 rubric 可能被读到。做评估前必须限网,否则 agent 会直接把答案找出来。检测系统同理——采集端能上网是业务需要,但"评估口径"和"采集范围"必须分开控制。
九、回到问题本身:怎么用 harness 视角筛服务商
回到开头那个问法——"本地有哪些口碑好的 AI 搜索获客服务商"。口碑是结果,可验证的是过程。用 harness 的五层去问,五个问题就能把大部分"只会跑几个 prompt"的团队筛掉:
| 你们每个平台怎么配参数? | 能说出逐平台差异与判别方式 | "都是标准接口,统一配置" |
| 引用源怎么取? | 只认结构化字段,有占位域过滤 | 展示正文里的链接截图 |
| 报告里的分数怎么算? | 指标拆开、样本量写在首页 | 只给一个总分 |
| 改配置怎么防回退? | 有契约文件 + 固定回归题 | "经验丰富,不会出错" |
| 换模型结论还成立吗? | 有跨模型对照记录 | 只在一个模型上有效 |
睿贤 Agentic GEO 的做法是把这五条直接做成产品约束:六平台统一口径采样、参数逐平台契约化、信源只认结构化引用并按域名分档、报告首页固定写样本量(题数 × 平台数 × 采样次数)。是否认可这套口径可以商量,但至少每一项都能被验证。
十、小结
四句话收尾:
如果你也在做多平台 AI 答案采集,欢迎在评论区说说踩过的参数坑——尤其是那些"平台没报错、数据全错"的类型,这类问题比报错难查得多。
网硕互联帮助中心



评论前必须登录!
注册