Jev 接入编码代理:Cursor 与 Claude Code 配置
编码代理擅长产出改动,却不太擅长给改动”划硬线”——“这能接受吗?“恰恰是聊天代理最容易和稀泥的问题类型。Jev 的三种原语返回带 confidence 的结构化答案,正好可以作为”外部裁判”嵌进代理工作流:代理写代码,Jev 做有界判断。这篇讲怎么把 Jev 模型接进 Cursor 和 Claude Code,集成思路几分钟就能抄走。
TL;DR: 把 Jev 调用(走 OpenRouter 的 OpenAI 兼容端点)包进一个小脚本,把这个脚本作为可运行命令/工具暴露给你的编码代理,代理遇到有界判断就调用它——规范检查、分诊、严重度打分。生成归代理,决策归 Jev。上线前到 OpenRouter 模型页确认确切的 model slug。
为什么要给代理配一个判断模型
问代理”这次改动是否违反我们的日志规范”,它会给出一段自信的散文,对不对另说。两个随之而来的问题:答案无法被机器校验,也没有 confidence 信号可以升级。Jev 调用一次解决两个——答案以结构化 JSON 返回并带 confidence,代理的工作流可以确定性地分支。核心思路一句话:代理负责生成,Jev 负责判断。
集成模式:一个脚本,一个工具
摩擦最低的集成方式,是磁盘上放一个代理可以运行的脚本。下面是一个自包含的 Python 辅助脚本:
# jev_judge.py — confirm the exact model slug on the OpenRouter model page
import json, os, sys, requests
question = sys.argv[1]
resp = requests.post(
"https://openrouter.ai/api/v1/chat/completions",
headers={
"Authorization": f"Bearer {os.environ['OPENROUTER_API_KEY']}",
"Content-Type": "application/json",
},
json={
"model": "typesafe/jev-1.13",
"messages": [{"role": "user", "content": question}],
},
timeout=30,
)
resp.raise_for_status()
result = json.loads(resp.json()["choices"][0]["message"]["content"])
print(json.dumps(result, indent=2))
脚本接收问题作为参数,调用 OpenAI 兼容端点,打印解析后的答案。解析结果是示例数据(example fixture)——响应形态为示例,正式字段名以 typesafe.ai 官方文档为准。
然后告诉代理这个脚本存在。在 Cursor 里,加一条规则描述脚本和调用时机(比如:“把 diff 标记为完成前,运行 python jev_judge.py 'Judgment question: ...',confidence < 0.8 视为需复核”)。在 Claude Code 里,同一个脚本可以暴露为自定义命令,或写进项目指令,让代理在审查环节调用它。各工具的具体机制不同;模式——脚本 + 指令 + confidence 规则——完全一致。
代理适合委托给 Jev 的任务
| 代理任务 | 题型 | 问题示例 |
|---|---|---|
| 收尾前的规范检查 | 判断题 | “Judgment question: does this diff add logging of user PII? Diff: ”…"" |
| 进线 issue 分诊 | 选择题 | “Choice question: does this issue match template bug, feature or question? Issue: ”…"" |
| 严重度估计 | 打分题 | “Scoring question (1-10): how severe is this regression for users? Description: ”…"" |
| 提交信息把关 | 判断题 | “Judgment question: does this commit message describe the change accurately?” |
每一行都会返回——示例数据(example fixture)——形如 {"answer":"no","confidence":0.91,"rationale":"..."} 的结构化答案;正式字段名以官方文档为准。
命令行调用示例:
# Confirm the exact model slug on the OpenRouter model page
python jev_judge.py "Judgment question: does this commit message accurately describe a change that adds a retry with backoff to the payment client? Message: \"fix stuff\""
脚本打印结构化判断,代理从中读取 answer 和 confidence——打印出的 JSON 是示例数据(example fixture),正式字段名以官方文档为准。
什么时候没用
- 代码生成本身。 Jev 不写代码,只回答关于代码的有界问题。
- 开放式设计讨论。 “哪个架构最好?“没有可枚举的答案空间——那是对话,不是判断题。
- 替代人工的安全签核。 confidence 分数不是审计;把 Jev 当人工闸口前的快速过滤器,不是替代品。
给代理的每个问题只保留一种题型并嵌入 diff 或 issue,confidence 规则在代理指令里写明——《Jev 问题设计与状态管理》讲了怎么把这些 prompt 写稳。
本文适用版本 Jev 1.13。