feat: 任务书 08,jev 模块与账本记 Jev 判断

src/jev 3 个文件 515 行:判重、查冻结条款、查代码改动三个函数,九问问法和阈值照参考项目,只改说法和字段名,阈值注明未在新项目材料上校准,等真实数据。
新增 npm run test:jev(真实 Jev 三处各问一次)。vocab 加 JevJudgment。
ledger 表结构版本 3:callEnded 四种结局对上 agents,墙钟时间用 Measured(恢复时补写出错、原因"进程中断"、测不到);退回、提交记录都带 jev。
config 加必填的 models.jev。

用户原话:"这次就给提交记录加一个和退回记录同样的 Jev 判断字段";"墙钟时间改用 Measured,恢复时写出错加测不到(原因'进程中断')"。

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
2026-10-03 02:10:55 -04:00
parent 68e49fd01a
commit 0ac1e01613
18 changed files with 1228 additions and 57 deletions
+1
View File
@@ -27,4 +27,5 @@ export {
type MissingPolicy,
type Verdict,
} from "./runs.ts";
export { JevJudgment } from "./jev.ts";
export { Range, SUBMISSION_SCHEMAS, type Submission } from "./submissions.ts";
+22
View File
@@ -0,0 +1,22 @@
import { Type, type Static } from "typebox";
/**
* Jev 对一个问题的一次判断(docs/方法.md 4.3 ③⑥⑨)。jev 交出它,ledger 在退回、判重合并等记录里原样存它,
* 两个模块互不引用,所以类型放在这里。
* - question:问题名,如 same_change;
* - questionHash:问题全文(措辞、判"是"判"否"的说明与示例、阈值)的哈希,改了一个字就能从记录里看出来;
* - probability:Jev 返回的原始概率;yes:probability 是否超过 threshold(概率高 = 有问题,或"是同一个");
* - requestId:Jev 返回的请求编号,用来到服务那边核对。
*/
export const JevJudgment = Type.Object(
{
question: Type.String({ pattern: "^[a-z][a-z_]*$" }),
questionHash: Type.String({ pattern: "^[0-9a-f]{64}$" }),
threshold: Type.Number({ minimum: 0, maximum: 1 }),
probability: Type.Number({ minimum: 0, maximum: 1 }),
yes: Type.Boolean(),
requestId: Type.String({ minLength: 1 }),
},
{ additionalProperties: false },
);
export type JevJudgment = Static<typeof JevJudgment>;