Skip to content

v5.0.0 · 自动评分协议重做(关键词前置识别 + 对话中同轮在现值上小幅改分)

Latest

Choose a tag to compare

@FoolishWiser FoolishWiser released this 19 Sep 04:59

本次更新

口径变更版本:自动评分协议重做(改分幅度交还给对话中的模型),触发改为模型之前的关键词识别。

修复

  • 修复「每次改分都顶到闸门上限」:v4.x 的目标值是"证据档位的加权平均(绝对值)"——一条「杰出」证据就让目标=95,
    于是 目标 − 现值 永远大于闸门,每次都被削到上限(实测:未评维度一条证据直接 95;已评维度 3 条即到 95)。
    现在改为:模型拿到该人完整现值,直接给出该维新值,插件不再做"档位 → 目标值"的翻译;
  • 修复「每次都另起一次失去上下文的模型调用」:auto_review_engine=tool 此前拦不住兜底调用;
    现在 inline(新默认)彻底只在对话内判定,不再有"回复之后再叫一次模型"的路径;
  • 修复「模型把上一次改分记成上上一次」:默认通知模式下工具只回 {"ok":true}、插件提示又不进模型上下文、
    兜底路径的改动对模型完全不可见。现在:工具返回值永远带 现值 → 新值(±Δ,含被闸门削过的实际值),
    并在每轮注入最近改分回顾(带 #序号/时间/来源);
  • 退役「弱证据权重 / 同档死区 / 未评维度直接落到档位代表值 / 账本加权算分」:这几处正是虚高与"顶格"的来源。

变更(自动评分协议)

  • 关键词识别前置:在模型之前扫用户本条消息——命中库内人员姓名/别名才注入「本次可能需要改分」块
    (含该人六维现值+档位、现有理由、已禁止自动改的维度、改分口径、最近改分回顾);未命中则不注入、不评审;
  • 命中后保持 3 轮:多轮叙述里用「他/她」指代时仍能继续改分;
  • 意图词分支(auto_review_trigger=names+intent):命中「改分/评分/分数…」时追加完整名单,
    并说明"用户明确要求的改动请用 set_radar_scores 权威写入";
  • 工具参数改为 new_value:submit_radar_evidence(person, dim, new_value, behavior, quote, actor, reason)
    ——在现值上小幅修订(一般 ±1~5 分,最多 15 分),不再是 target_band;
  • 幅度纪律写入三处单一真源(rubric.calibration_block()):工具描述、注入块、兜底提示词口径一致;
  • 两道安全网保留并降级:单次最多 1 档(15 分)、7 天窗口 ±20 分——正常小幅修订不会触发,因此改分提示里
    不再频繁出现"受单次跨档限制/受窗口累计限制";
  • 指纹去重窗口 30 → 90 天:同一条依据不再反复改分;
  • 未评维度首次给值不受闸门限制(与 WebUI 首次评分一致);
  • 配置语义:auto_review_engine 默认 inline(仅对话内);要保留「模型未调用工具时的兜底评审」请显式选
    inline+hook(会多一次模型调用)。旧值 auto/tool 一律按 inline 处理——否则升级后仍会走那条
    「回复之后再叫一次模型」的旧路径。auto_review_trigger 改为 names(默认)/names+intent/always;
    退役 auto_review_weak_counts。

变更(WebUI / 命令)

  • 详情页「证据账本」改为「依据记录」:显示 现值 → 新值(±Δ)、档位、理由与依据原文,
    未采纳(禁止自动改)的记录带「未采纳」标记;
  • 「移除并重算」改为「移除记录」:v5.0.0 起分数由模型在对话中给出,账本只是审计层,
    删记录不改分数(要回退某次改分请用更新记录里的「撤销」);
  • 更新记录来源芯片区分「对话内 / 兜底评审 / 系统 / WebUI」;
  • /radar 评审 <名字> 增加"最近一次改分来源",并输出"模型提议值 → 闸门后实际落盘值"。

新增

  • 仓库内回归测试(纯 stdlib,无需安装 AstrBot):
    tests/test_review_pipeline.py(解析/守卫/两道闸/端到端改分/关键词门控/引擎语义/冻结/观察模式)、
    tests/test_schema_and_tools.py(设置规格一致性/AI 工具可加载性/撤销回滚)。

说明

  • 数据结构不变(scores.json 无需迁移;旧账本条目仍可正常展示);
  • 确定性取舍:分值不再"同批事实必然同分",改分幅度由模型判断 + 守卫/闸门约束——
    换来的是"模型知道现值、只做小幅修订";要完全固定某一维仍用「🔒 禁止自动改」。

安装:AstrBot 插件市场更新,或下载源码覆盖后重启。数据结构不变(scores.json 无需迁移);建议保持默认 auto_review_engine=inline(旧值 auto/tool 一律按 inline 处理,需要兜底请显式选 inline+hook)。

自检:python3 tests/test_review_pipeline.py 与 python3 tests/test_schema_and_tools.py(纯 stdlib,无需安装 AstrBot)。