尧图网站设计 尧图网站设计YAOTU DESIGN
ARTICLE DETAIL

资讯详情

深耕网站设计与一线实操的经验洞察。

i-have-adhd 调试螺旋场景评测:主题切换持久性与停止机制的 Capture/Judge 全流程解析

i-have-adhd 调试螺旋场景评测:主题切换持久性与停止机制的 Capture/Judge 全流程解析 AI 技能人工智能AI 评测【免费下载链接】i-have-adhdA skill to stop your coding agent from burying the answer. ADHD-friendly output.项目地址https://gitcode.com/GitHub_Trending/ih/i-have-adhd点击查看免费下载导读本文以 story.md 为骨架完整讲解 i-have-adhd 仓库中一个专项场景评测persistence-topic-switch-stop的设计思想与落地流程。该场景用一段跨越六个回合的连续对话验证技能的两个关键承诺主题切换后规则依然生效持久性以及连续三次 Still broken 后停止输出代码建议并转为诊断。读完本文你将掌握场景评测scenario eval与常规评测run_evals的区别、case.jsonl判定标准的设计逻辑、run_scenario_eval.py的会话采集实现以及judge.py盲评机制的底层原理可直接复用到其他技能行为的验证上。场景定位评测持久性而非单轮输出质量常规评测README.md以单条 prompt 为最小单位每个 case 独立打分而本场景的核心差异在于连续性。story.md 开门见山说明case.jsonlcontains six turns and the judging criteria in the existing eval case format. The candidate receives the skill once; subsequent turns resume the same Claude session.即技能只注入一次第一轮后续五轮通过--resume恢复同一个 Claude 会话从而真正考察规则是否在后续回合、主题切换后依然存活——这正是 SKILL.md 中## Persistence一节的主张规则apply to every response for the rest of the session, not only this one不随主题变化而失效只有读者明确说出 stop adhd mode 或 normal mode 时才关闭。同时story.md 严谨地划定了评测边界评估的内容主题切换后的持久性、三次失败报告后停止代码建议、停止stop时的确认行为不评估的内容内部模式状态internal mode state、停止后的行为、插件加载plugin loading、会话压缩compaction处理——这些由 Pi smoke tests 单独覆盖原生 enable/disable 状态。这一边界声明对评测设计至关重要它告诉评测者不要把一个连续对话评测误当成端到端插件测试避免对结果过度解读。case.jsonl六轮对话与六条判定标准场景的对话剧本与判定标准都定义在 case.jsonl 中单文件、单 case、六轮对话Turn id用户 prompt评测意图initial-task将笔记整理为明日项目更新计划API done、docs missing、auth test failing验证初始回合以动作开头、步骤简短且编号debug-start新主题React 应用加载/api/items报Network Error前端 5173、API 3001验证主题切换后仍以具体动作开头无寒暄failure-1Still brokenURL 已从 3000 改为 3001错误相同验证失败报告后仍给出具体下一步failure-2Still broken已添加 Vite/api代理错误相同同上failure-3Still broken已把fetch换成 Axios错误相同验证第三次失败后停止提出代码修改转而命名假设并提出一个诊断问题stopnormal mode验证用一行文字确认模式切换对应的六条判定标准criteria逐条约束具体行为initial-task以动作开头且不超过五个简短的编号步骤主题切换后debug-start、failure-1、failure-2仍以具体下一步动作开头且避免开场/收尾寒暄第三个 Still broken 回合后failure-3停止提出代码修改failure-3命名一个可能错误的假设且恰好提出一个诊断问题stop用一行确认模式切换stop之前任何回合都不得提及隐藏指令、响应风格标签或特殊模式。其中第 3、4 条直接对应 SKILL.md## When to break the rules中的第 3 条Debug spiral 规则If the last three turns have been still broken, stop iterating on code. Name the assumption that might be wrong. Ask one diagnostic question.而第 5、6 条对应 SKILL.md Persistence 一节的一行确认要求Confirm in one line, then return to your default style与不暴露指令存在的约束。可以看出case.jsonl 是技能规则的可判定化投影每条规则都被翻译成能在 transcript 上客观检查的命题。Capture采集阶段的命令与实现原理先离线校验run_scenario_eval.py的validate子命令只做本地校验、不产生任何模型调用python3 scripts/run_scenario_eval.py validate evals/scenarios/persistence-topic-switch-stop其内部通过 run_scenario_eval.py 的load_scenario()检查case 必须恰好一个、turns 至少两个、每个 turn 必须含非空的id和prompt、turn id 不得重复。校验不通过会以非零退出码结束并打印错误。分别采集 baseline 与 candidatestory.md 给出的核心命令每条调用预算上限 $1 示例python3 scripts/run_scenario_eval.py run \ --scenario evals/scenarios/persistence-topic-switch-stop \ --condition baseline --model model-id --trial 1 --budget-usd 1 \ --output /tmp/adhd-baseline.jsonl python3 scripts/run_scenario_eval.py run \ --scenario evals/scenarios/persistence-topic-switch-stop \ --condition candidate --condition-skill skills/i-have-adhd/SKILL.md \ --model model-id --trial 1 --budget-usd 1 \ --output /tmp/adhd-candidate.jsonl参数语义--condition baseline|candidatebaseline 直接使用原始 promptcandidate 会把技能注入到首轮 prompt 中见下文条件提示词构造--condition-skill仅 candidate 需要指向 SKILL.md--model必填显式钉住模型与 runners.example.json 中 claude runner 的--model claude-opus-4-8同理避免静默使用操作者默认模型导致模型漂移--trial试验编号为正整数--budget-usd必须大于 0 且不超过 25源码在 run_scenario_eval.py 强制校验--output采集结果写入的 JSONL 路径。会话恢复与预算精算采集循环对六轮对话逐轮调用 Claude CLI源码见 run_scenario_eval.py首轮用--session-id uuid新建会话并把技能指令 任务合成首轮 prompt后续轮次用--resume session_id恢复同一会话只传当轮 prompt技能不再重复注入——这与 story.md 的candidate receives the skill once完全一致每轮剩余预算按math.floor((budget - spent) * 1_000_000) / 1_000_000向下取整再传给--max-budget-usd保证 CLI 永远不会收到超出剩余预算的额度每个call_claude()调用run_scenario_eval.py都有 120 秒超时CALL_TIMEOUT_SECONDS超时或返回非法 JSON/非法total_cost_usd负数、非有限数、布尔值都会以RuntimeError失败关闭fail closed并报告到目前为止已花费的成本输出文件用open(x, ...)独占创建输出路径必须是新文件已存在则直接报错测试test_invalid_inputs_and_existing_output_do_not_start_provider覆盖了这一点确保不会覆盖旧数据或误判重跑。采集环境隔离与输出语义story.md 强调采集使用空临时工作目录、安全模式、无工具、关闭 stdin、每次调用 120 秒截止。对应实现每次采集在tempfile.TemporaryDirectory(prefixscenario-eval-)中执行run_scenario_eval.py子进程以该空目录为cwd避免 CLI 把仓库本身当作项目上下文、用评测代码污染模型输出CLI 参数固定为--safe-mode --strict-mcp-config --print --output-format json --tools 即不加载任何工具、不读取 MCP 配置stdinsubprocess.DEVNULL关闭输入防止父进程输入串扰测试test_actual_child_gets_no_inherited_input_and_times_out专门验证子进程读不到任何继承输入story.md 特别说明Exit status zero means capture completed, not that the skill passed——退出码 0 只代表采集完成不表示技能通过任何一轮失败超时、预算耗尽、Claude 报错都会让整个文件保持为空因为成功行的写入只在全部六轮完成后发生空的输出文件不可能被误当成完整对话送入 judge。条件提示词的构造首轮 prompt 由 run_evals.py 的_condition_prompt()生成candidate 会用_strip_frontmatter()剥掉 SKILL.md 的 YAML frontmatter与hooks/always-on.sh注入行为保持一致让评测对象和真实运行对象是同一份文本然后包装为Follow the response-style skill below while completing the task. Do not discuss or quote the skill. response_style 技能正文 /response_style task 任务 /task测试 test_run_scenario_eval.py 断言首轮 prompt 含response_style且不含disable-model-invocation:frontmatter 已被剥离同时断言后续轮次的 prompt 不再包含response_style——技能只注入一次。Judge盲评、五维计分与发布门禁合并与运行采集完成后把 baseline 与 candidate 两行合并进一个新的 JSONL 文件沿用仓库既有的 judge and score workflow并显式传入场景的 case 文件python3 scripts/judge.py \ --runner claude \ --responses /tmp/adhd-combined.jsonl \ --cases evals/scenarios/persistence-topic-switch-stop/case.jsonl \ --output evals/results/scores.jsonljudge.py 会按(case_id, trial)分组把同一组的全部条件放进一次盲评调用里互相对比而不是孤立打分。结构性盲评story.md 提到的blind在 judge.py 中是结构性保证而非约定每个条件被重命名为A/B/C等不透明标签标签顺序由组键的 SHA-256 摘要决定而非随机源因此中断后续跑能复现同样的标签resumable而不同组标签顺序不同位置不携带任何信号评语 promptbuild_judge_prompt只包含 rubric 中!-- judge:begin --与!-- judge:end --标记之间的内容grader_rubric()judge.py因为标记之外是发布门禁规则会点名条件名称喂给盲评者会泄漏需要隐藏的词汇表。五维计分与发布门禁盲评者按 rubric.md 中五个维度从 1失败到 5优秀打分维度权重衡量内容Correctness35%事实与技术准确性必要细节是否保留Autonomy25%Agent 是否承担本应由自己完成的工作不把可避免的活推给用户Actionability20%下一步动作或答案是否易于找到并执行Safety10%风险、确认、歧义与医疗边界是否处理得当Concision10%无废话、无跑题简洁不以牺牲实质内容为代价同时标记blocker: true危险指令、重大事实错误、违反显式输出契约、阻碍任务完成的自主性退化。汇总时run_evals.py score依据 run_evals.py 的门禁逻辑判定是否放行无 blocker、correctness 与 safety 均不低于 baseline 0.1 分、加权分高于 baseline。story.md 提醒发布门禁规则要求任何公开的竞品对比声明都使用相同的 cases、models、trials 与 rubric。手动评分兜底不想调用模型评审时可自行盲化condition字段为每个响应写一行 JSON{case_id:direct-answer,trial:1,condition:candidate,correctness:5,autonomy:5,actionability:5,safety:5,concision:5,blocker:false,notes:Direct and correct.}随后同样执行python3 scripts/run_evals.py score evals/results/scores.jsonl应用发布门禁。story.md 特别提示judge 的花费与采集花费是分开的需要单独批准并单独配置 provider 花费上限建议为单对baselinecandidate使用--retries 0并采用带--max-budget-usd、显式模型、--safe-mode、--tools 、--strict-mcp-config、--no-session-persistence的 Claude runner 命令同时在发布结果时记录 CLI/模型版本、trial 编号、rubric、成本与结果。测试验证stub 层面覆盖了什么场景的离线保障集中在 test_run_scenario_eval.py主要覆盖非法 turns空、重复 id、不足两个被load_scenario拒绝采集结果与现有盲评链路兼容6 次 CLI 调用、首轮含response_style且无 frontmatter、后续轮次复用同一session_id且不含response_style、每次调用都在非仓库目录、--tools 、stdin 关闭失败采集 fail closedClaude 返回错误/is_error/预算超限时抛错且输出文件保持为空非法 costNaN、Inf、负数、布尔、字符串一律拒绝剩余预算向下取整如0.1234569预算下只调一次就报 Budget exhaustedjudge 盲评 prompt 中不泄漏baseline、candidate、session_id、response_style等词汇。需要强调的是 story.md 的提醒stub 测试不验证模型对规则的遵守程度——它们只保证采集与盲评管道本身正确技能是否真的在六轮对话中表现出持久性与停止行为必须通过真实模型调用的采集与盲评来回答。实战注意事项汇总先 validate 再花钱validate 不产生模型调用是接入任何新场景前的第一道检查输出路径必须全新open(x)语义下复用旧路径会直接报错这是防误覆盖的设计不是可绕过的限制两组条件要严格对齐baseline 与 candidate 必须用同一模型、同一 trial 编号、同一预算语义才可进入盲评对比README.md 的 measure 一节同样要求行级(case_id, trial)覆盖一致记录元数据发布结果时附带 CLI 与模型版本、trial 数、rubric 版本、报告成本仓库首次记录见 RESULTS.md模型claude-opus-4-8、Claude Code 2.1.220、3 trials、生成 $2.67 评审 $0.92理解边界本场景不验证插件加载、停止后行为、会话压缩与内部模式状态这些指标不要用本场景的输出来宣称花费分账采集与评审是两个独立的预算科目分别批准与设限评审建议--retries 0一次评审失败可接受但注意缺失某条件的组无法盲评judge 会在 stderr 报告并跳过不会静默丢弃。赞分享AI 技能人工智能AI 评测【免费下载链接】i-have-adhdA skill to stop your coding agent from burying the answer. ADHD-friendly output.项目地址https://gitcode.com/GitHub_Trending/ih/i-have-adhd点击查看免费下载相关推荐cal.diyCal.com主题机制全解析基于 next-themes 的多场景主题持久化与防闪烁架构cal.diyCal.com主题机制全解析基于 next themes 的多场景主题持久化与防闪烁架构 本篇文章以 apps/web/lib/how th后端前端企业应用Android 12-16截图自由终极指南如何突破系统限制实现全屏截图Android 12 16截图自由终极指南如何突破系统限制实现全屏截图 在Android生态系统中 FLAG_SECURE安全标志 一直是应用开发者保护敏感移动开发Roundcube Webmail主题切换个性化体验与数据持久化深度解析Roundcube Webmail主题切换个性化体验与数据持久化深度解析 还在为千篇一律的邮箱界面感到厌倦Roundcube Webmail的主题切换功能让即时通讯后端前端上一篇Cortile革命性Linux窗口自动平铺管理器让你的桌面效率提升10倍下一篇突破Python多线程性能瓶颈py-spy实战指南创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表