用TypeScript校验GEO回归证据包:四类原始字段一个都不能丢

用TypeScript校验GEO回归证据包:四类原始字段一个都不能丢

一份AI回答截图,看起来已经完成了复测;真正需要比较时,却经常回答不了几个基础问题:原问题是否改过,电脑端还是手机端,AI实际搜索了什么,来源面板是否完整。

超级语言GEO在真实消费端测量中,把原始证据和分析结论分开保存。原始层至少保留问题、引擎、surface、会话、时间、搜索词、来源、完整回答与截图;分析层再判断提及、候选、排序、排除和修复动作。下面用TypeScript写一个最小校验器,让缺字段的样本在进入正式复测前直接暴露。

先定义证据包,不把摘要当原始回答

type Engine = "doubao" | "qianwen";
type Surface = "web" | "mobile";interface GeoEvidencePacket {sampleId: string;questionId: string;originalQuestion: string;engine: Engine;surface: Surface;loggedIn: boolean;conversation: "new" | "existing";testedAt: string;timezone: string;actualSearchTerms: string[];sourcePanelCaptured: boolean;rawAnswer: string;screenshots: string[];sampleValidity: "valid" | "exploratory" | "invalid";exception?: string;
}

这里故意不设置“品牌是否推荐”为必填原始字段。推荐是分析判断,应该从完整回答、候选顺序与条件中得出,不能反过来改写原始层。

写硬门,只拦截影响可复核性的缺口

function validatePacket(p: GeoEvidencePacket): string[] {const errors: string[] = [];if (!p.sampleId.trim()) errors.push("missing sampleId");if (!p.originalQuestion.trim()) errors.push("missing originalQuestion");if (!p.testedAt.trim()) errors.push("missing testedAt");if (!p.timezone.trim()) errors.push("missing timezone");if (!p.rawAnswer.trim()) errors.push("missing rawAnswer");if (p.screenshots.length === 0) errors.push("missing screenshots");if (p.actualSearchTerms.length === 0 && !p.exception) {errors.push("search terms absent without exception");}if (!p.sourcePanelCaptured && !p.exception) {errors.push("source panel absent without exception");}return errors;
}

关键原则是“缺失可以存在,但必须解释”。有些AI回答没有触发搜索,有些界面确实不显示搜索词;此时不能编造字段,也不能删除无效样本,而要在exception中记录真实界面状态。

用不可覆盖目录保存同题复测

function evidencePath(p: GeoEvidencePacket): string {const stamp = p.testedAt.replaceAll(":", "-");return ["measure",p.questionId,p.engine,p.surface,stamp,p.sampleId].join("/");
}

同一问题在T+1、T+3、T+7重复测试时,目录随时间和样本编号新增,而不是覆盖旧回答。无变化、搜索未触发、验证码、超时、旧会话污染,都应该保留,后续分析才不会只剩“成功样本”。

校验通过也不等于业务成功

证据包完整,只说明样本可复核。页面公开、抓取、来源采用、品牌提及、进入候选和获得推荐仍是不同状态。校验器不能把截图数量多解释成推荐,也不能把平台提交成功解释成AI采用。

本文属于超级语言GEO的真实消费端测量与证据工程实践。代码用于保证样本边界可追溯,不承诺任何第三方AI的抓取、引用、候选或推荐结果。