SkillClaw的PRM评分机制详解:如何用多数投票为Agent每一轮对话打出0-1质量分
SkillClaw的PRM评分机制详解如何用多数投票为Agent每一轮对话打出0-1质量分【免费下载链接】SkillClawLet Skills Evolve Collectively with Agentic Evolver项目地址: https://gitcode.com/gh_mirrors/sk/SkillClaw如果你正在研究SkillClaw的技能进化系统一定注意到它会给 Agent 的每一轮对话打一个0-1 的质量分。这个分数来自 SkillClaw 的PRMProcess Reward Model过程奖励模型评分机制每轮回复生成后系统会让评审模型并行投出多票通过多数投票判定本轮是有帮助1、没帮助-1还是存疑0再映射成 0-1 分数最终驱动技能反馈、技能验证和会话判断三条流水线。本文带你用最少代码把这套机制彻底讲清楚。一、什么是PRM评分过程奖励模型的核心思想PRMProcess Reward Model与只给整段任务打结果分的 ORMOutcome Reward Model不同它把长任务拆解到每一步/每一轮对中间过程给出即时质量反馈。SkillClaw 的落地位置在 skillclaw/prm_scorer.py核心类是PRMScorer。它的设计目标非常克制逐轮评分对用户指令 Agent 回复这一对内容单独评判不与后续轮次比较提示词中明确写了Do NOT compare against any follow-up turn三档判断1明确遵循并实质完成指令、-1跑题、错误或未完成核心要求、0证据不足或模棱两可协议无关只要提供 OpenAI 兼容的/v1/chat/completions端点就能用外部 APIOpenAI、Anthropic 等或自托管 vLLM 都支持。评分前还有一步容易被忽略的文本清洗_sanitize_text会把tool_call等 XML 风格标签替换成中性占位符避免触发 API 的内容过滤。二、多数投票如何工作3个评审并行打分单次 LLM 评审有随机性SkillClaw 的答案是并行多票 多数决实现见 _majority_vote发起并行投票evaluate()用asyncio.gather同时发出prm_m次独立请求默认3 票每次以固定温度默认 0.6采样保证票与票之间存在合理差异容错解析每票输出先匹配Score: 1 / Score: -1 / Score: 0失败再回退到\boxed{N}旧格式解析失败或请求异常的票记为None日志中显示为fail直接从统计中剔除不影响其余票多数决用Counter统计有效票——3 票为[1, 1, 0]→ 最终13 票为[1, -1, 0]三票各不一样平局→ 最终03 票全部失败 → 最终0。平局归零的设计很聪明分歧本身就代表不确定性与其硬判不如标记为存疑下游系统会把 0 分解释为中性而不是惩罚 Agent。三、关键一步-1 / 0 / 1 如何变成 0-1 质量分你标题里看到0-1 分但多数投票的输出其实是 -1/0/1。归一化发生在 skillclaw/validation_worker.py 的_normalize_replay_score规则是一句线性映射加两个边界多数投票结果含义归一化后质量分-1没帮助0.00存疑 / 平局0.51有帮助1.0也就是(value 1) / 2越界值会被钳制在[0, 1]区间。这个 0-1 分数随后写回会话记录turns[idx][prm_score]成为整个 SkillClaw 生态里唯一的质量基准。四、PRM 分数的三大用途反馈、验证、判断分数打完不是终点。SkillClaw 中有三个模块消费 PRM 分数1️⃣ 技能反馈在线skillclaw/api_server.py 中每轮对话一旦出现下一条消息到达的信号_fire_prm_scoring就会异步发起评分不阻塞对话主流程。分数就绪后写回轮次记录并调用skill_manager.record_feedback()——本轮注入过的技能、读过的技能都会收到这笔反馈。好技能攒高分坏技能沉下去技能库因此越用越精。2️⃣ 技能重放验证离线skillclaw/validation_worker.py 中的空闲验证 Worker 会取历史案例做A/B 重放同一指令分别用当前技能baseline和候选技能candidate生成回复各自打 PRM 分并归一化。只有当候选平均分≥ 阈值默认 0.75且 ≥ baseline 平均分时才接受否则拒绝——这是防止劣化技能被发布的关键闸门。3️⃣ 会话判断的上下文进化服务端的 evolve_server/pipeline/session_judge.py 会把会话中积累的_prm_scores、avg_prm_before_judge作为先验证据交给会话评审让该会话是否值得提炼技能的判断有据可依。五、快速上手PRM 评分的关键配置项PRM 由use_prm开关控制全部配置集中在 skillclaw/config.py。最小配置只需三行use_prm true prm_url https://api.openai.com/v1 prm_model gpt-5.2常用调优项一览配置项默认值作用prm_m3并行投票数奇数最利于多数决prm_temperature0.6投票采样温度影响票间差异prm_max_new_tokens1024单票最大生成长度prm_api_key空留空则复用llm_api_key新手提示若未配置prm_url/prm_model启动器skillclaw/launcher.py会自动回退到主模型的 API 地址和模型名再回退失败则静默禁用 PRM服务本身不受影响。总结为什么是多数投票 三档归零SkillClaw 的 PRM 评分机制用三个设计换取了工程上的稳健性多数投票消除单次评审的随机性3 票是成本与稳定性的平衡点失败票剔除 平局归零保证任何单点故障都不会污染分数-1/0/1 → 0-1 线性归一化让分数既能表达有害/中性/有益的方向又能直接参与阈值比较如 0.75 接受线和均值聚合。正是这条每一轮都有分、每个技能有账本的机制让 SkillClaw 的技能库可以集体进化分数流向反馈反馈驱动验证验证决定发布——体验复利技能生长。【免费下载链接】SkillClawLet Skills Evolve Collectively with Agentic Evolver项目地址: https://gitcode.com/gh_mirrors/sk/SkillClaw创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考