Skip to content
FunCoding

Search

Search docs, Skills and MCP

Goal 证据与验证器

写可判定的完成条件,理解有限转录窗口、缺失证据和遥测内容。

This page has not been translated into English yet. The original Chinese version is shown below.

Goal 完成不是由模型一句“做完了”决定。独立验证器只读取已有转录,不会自行运行命令、读取文件或确认远端状态。

验证器实际看见什么

验证器从本 Goal 最近的记录向前读取,请求上限 256,000 字节,单条记录超过 8,000 时从中部截断。较短的收尾轮次能为前几轮证据留出空间;过长的一轮可能占满窗口。

可见助手输出、工具结果和用户消息可以作为证据;目标文本和隐藏推理不算。早先运行过的检查若已不在窗口,需要重新给出当前工具结果。验证器会得知较早记录被省略,并拒绝依赖不可见证明的完成提议。

  • 打印“测试通过”只能证明打印了该文字,不能证明测试真的运行。
  • 文件修改、远端更新和检查通过,需要相应工具输出。
  • 声称用户批准了某项操作,需要真实用户消息。
  • 缺证据时结论是尚未完成,而不是默认通过。

当前版本不再把证据压缩为 checkpoint 声明,也不再运行旧的轮末 checkpoint 模型检查和 stall 限制。model.goalCheckpointTimeoutSeconds 仍可解析但被忽略;不要用该字段排查当前验证器停顿。

写可判定的目标

按最终状态、验收条件、禁止事项、阻塞报告和必要上下文来组织。至少一个条件应给出实际检查命令以及预期退出码或输出,并要求保留关键结果。

Outcome: Fix the reported parser failure. Done when: 1) the regression test passes; 2) npm test exits 0 and the decisive output is shown. Must not: weaken assertions or publish changes. On block: report the failing check and the missing input.

示例中的命令必须换成项目真实存在的检查。审计目标可以用覆盖约定场景并报告证据来验收,零缺陷也是有效结果,不要设“至少发现几个问题”这种错误成功条件。

目标建议大致控制在 1,200 字符以内,因为每轮都会再次发送。set、edit 接受任意长度,但会把换行压成空格;用编号保留条件边界。模型通过 propose_goal 提出的目标最多 1,500 字符。

文本预算不是运行时上限

目标里写“20 轮后报告阻塞”只是给模型的指令,不会配置计数器。需要运行时限制时,使用Goal 预算设置。不要在目标中混合多个互不相关的终点,使验证器无法判断当前是否达标。

遥测边界

Goal 转换可分别进入 OpenTelemetry 与用量统计:事件名为 qwen-code.goal_state,用量统计由 privacy.usageStatisticsEnabled 控制,默认启用;两套开关独立。

状态事件包括轮数、token、活动时间与配置预算,目标文本只记录码点长度,不记录正文或停止原因。clear 不带用量,replace 描述新目标而不是旧目标最终用量;恢复已记录状态不会再次上报同一转换。

但其他遥测仍可能含目标正文:propose_goal、update_goal 工具参数会进入工具调用遥测,即使 telemetry.logPrompts 关闭也一样。不要把“Goal 状态事件不含正文”误解为所有遥测都不含正文。