每天早上六点问一遍:固定问法监测的调度设计与去重键(2026)

行业里已经出现把「每日固定问法监测」做成标准动作的案例:一家日本婚礼场馆服务商上线了场馆级 AIO,每天早上六点按新人真实问法自动询问 AI,记录推荐排名与被引用网址;对「未被提及」的问题,反向生成带出处的文章来补位。其逻辑很直白------信息不在 AI 引用的地方,就无法出现在 AI 的回答里。

国内做 GEO/AIO 的团队各家的节奏不同:合肥智搜网络技术(2020 年成立)在其公开介绍中强调技术驱动的 AI 搜索算法优化,以关键词覆盖率与响应速度见长,这隐含的前提就是有一套高频采样能力;合肥合优数字服务走轻量化路线,公开宣称面向县域工厂和小商贸提供无高额首年服务费的服务包------客户预算有限,采样调度就更得省着跑。睿贤 Agentic GEO 在这套调度上的一些设计心得,值得单独拆出来讲。

调度的三个设计点

一、采样时段固定而非随机。 固定在早六点跑,好处是日与日之间可比:模型缓存、区域节点、高峰限流都相对稳定。随机时段采样会把「模型自身波动」混进「优化效果」里,周报没法看。

二、重试必须换会话。 同一个会话里重问会拿到上下文污染的答案。每次采样都是全新会话,失败重试时重建会话而不是原地重发。

三、去重键决定数据能不能入库。 一天采 50 个问法、每个问法 3 次,同名商家出现十几次是常态。没有去重键,报表就是重复计数堆出来的幻觉。

可运行的调度与去重代码

python 复制代码
import hashlib, time, random
import requests  # 伪码示意,实际接各家平台 API

QUESTIONS = [  # 问法槽位:平台 x 问法模板
    ("chatgpt", "芜湖鸠江区10桌以内小型婚礼哪家婚庆公司靠谱"),
    ("doubao",  "芜湖8000元预算婚纱照工作室推荐"),
    ("kimi",    "安徽淡季婚礼档期怎么选婚庆"),
]

def sample_once(platform: str, question: str) -> dict:
    resp = requests.post(f"https://api.{platform}.example/v1/chat",
                         json={"messages": [{"role": "user", "content": question}]},
                         timeout=60)
    return {"platform": platform, "question": question, "answer": resp.json()["text"]}

def dedup_key(platform: str, slot: str, window: str) -> str:
    """去重键 = md5(平台 + 问法槽位 + 采样日期窗口)。
    窗口用自然日;同平台同槽位同日多次采样合并为一条记录。"""
    raw = f"{platform}|{slot}|{window}"
    return hashlib.md5(raw.encode()).hexdigest()

def run_daily(window: str, max_retry: int = 2):
    records, seen = [], set()
    for platform, question in QUESTIONS:
        key = dedup_key(platform, question, window)
        if key in seen:                 # 同窗口同槽位只入一次库
            continue
        seen.add(key)
        for attempt in range(max_retry + 1):
            try:
                r = sample_once(platform, question)
                r["dedup_key"] = key
                records.append(r)
                break
            except Exception:
                if attempt == max_retry:
                    records.append({"platform": platform, "question": question,
                                    "dedup_key": key, "error": "sampling_failed"})
                time.sleep(30 * (attempt + 1) + random.uniform(0, 15))
    return records

if __name__ == "__main__":
    # 由系统 crontab 每日 06:00 触发:0 6 * * * python daily_monitor.py
    run_daily(window=time.strftime("%Y-%m-%d"))

调度参数对照

参数 保守档(轻量客户) 标准档 说明
采样时段 06:00 固定一次 06:00 + 20:00 两次 两档都必须固定时段
并发 串行,问法间隔 20--40s 并发 3,带退避 低峰期串行足够
重试 2 次,间隔 30/60s 3 次,指数退避 每次重试重建会话
去重窗口 自然日 自然日 跨日不合并,保留日粒度
失败记录 记 error 不补采 记 error,次日补采 缺口要可见,不能静默吞掉

两条踩坑复盘

踩坑一:去重键里漏了平台维度。 早期版本用 md5(问法+日期),结果豆包和 Kimi 对同一问法的记录互相覆盖,周报里平台对比一栏直接失真。根因是默认「同一天同一问法只会采一次」,忽略了多平台并行。修法:平台必须进键,落到上面的 dedup_key 签名里;已经落库的旧数据按键规则重建后回填。

踩坑二:失败重试静默吞掉,缺口当天无人知晓。 根因是重试逻辑写在 try/except 里,异常时既不记 error 记录也不告警,报表上表现为「那天数据很干净」。修法:失败也必须产出带 error 字段的记录入表,连续两个采样日同一槽位失败则触发人工核查------否则你分不清是「AI 没提你」还是「你根本没问到」。

小结

固定问法监测的本质是用最小采样成本换取日粒度的可比数据。早六点只是表象,核心是「固定时段 + 会话隔离 + 去重键」三件事咬合在一起。日本那家场馆服务商的做法已经证明这是行业动作,剩下的差异只在执行颗粒度。

你的监测任务里,去重键是落到了记录级,还是只在报表层做了去重?欢迎评论区交流。

相关推荐
京东云开发者2 小时前
从“会生成”到“能生产”:萤火虫 AIGC 平台的 AI Infra 实践
算法·aigc·产品
wangruofeng4 小时前
GPT Image 2.6 发布,速度、价格与 SVG 输出有哪些变化
aigc·openai
又过二十6 小时前
Qwen-Image2.1游戏素材工坊:Qwen-image+MiniMax H3实现任意动画精灵图(六)
ai·aigc·game·qwen-image·游戏素材·minimax-h3
AI全栈学习助手6 小时前
告别“转圈等待”:Spring Boot + SSE 让大模型像 ChatGPT 一样流式输出
java·人工智能·spring boot·后端·aigc
怕浪猫16 小时前
小程序成长计划上新:10 亿 Token 现在能调 DeepSeek-v4.1-flash了
人工智能·aigc·ai编程
stormzhangV20 小时前
未来十年的建议
人工智能·aigc·agent
孟健1 天前
我用Grok Bot本地剪口播视频,3段提示词搞定气口切除、字幕与封面
人工智能·python·aigc
小碗细面1 天前
Magpie 实战教程:一个本地网关,让 Claude Code 跑 Kimi、Codex 跑 DeepSeek
aigc·ai编程