「执行壳+决策脑」会不会成为 AI 编程新标配:Codex 套 Jev 的组合拳实战横评
【免费下载链接】jev-chat-jarvisThe chat decision assistant: before you reply, Jev reads the chat, judges intent and risk, and drafts replies you fill in with one tap. You press send. Android · Windows · macOS · iOS | 聊天辅助决策工具:先看懂对方再回复,发不发由你。项目地址: https://gitcode.com/gh_mirrors/je/jev-chat-jarvis
2026 年 9 月 15 日,前 OpenAI InstructGPT 核心作者 Diogo Almeida 创立的 TypeSafe AI 带着 4000 万美元种子轮融资结束两年隐身,发布了首个「System One」模型 Jev。它不写文本、不写代码,只输出「选择 + 打分 + 是非」三类类型化判断,却在发布 3 天内登顶 Hacker News(1863 分、491 条评论),一周内催生 2170 个关联项目,GitHub 上基于它的浏览器 Agent 插件狂揽 21k star,甚至有社区文章称「上线 24 小时,13% 的付费团队连夜换到 Jev」。
一个「哑巴模型」为什么让整个 Agent 生态沸腾?答案指向一种正在成形的组合范式:用 Codex 这类执行壳负责跑任务、改文件、跑测试,用 Jev 这类决策脑负责在关键节点上做毫秒级判断。本文不聊概念,直接从一个开源落地项目(聊天辅助决策工具 jev-chat-jarvis)的源码出发,拆解「执行壳 + 决策脑」的分工逻辑,对照社区横评中的批量重构、Bug 修复、测试生成场景,最后老实算一笔组合拳的代价账。
决策脑到底是什么:为什么「不生成一个字」反而是卖点
社区里关于 Jev 的讨论有一个高频比喻:「不是聊天机器人,而是一个智能 if 语句」。理解这个比喻,就理解了决策脑的全部意义。
传统 LLM 的工作方式是「生成」:给定上下文,吐出一段文本、一行代码、一个解释。Jev 的工作方式是「判定」:给定上下文和一个封闭选项集,返回带概率与置信度的类型化结果——noul(是非题,返回 0~1 的概率)、choice(单选题,返回选项及其概率分布)、score(分档打分,返回加权分数与各档概率)。它从架构上就不生产自由文本,因此没有幻觉式发挥的余地,换来了两个硬指标:单次判断 70–500ms,输入 token 单价 $0.042/百万,输出 token 免费。
这个定位在 jev-chat-jarvis 的题目集里看得最清楚。项目把「判断层」固化成 7 道判断题 + 1 道排序题,一次请求全发:
literal_question(noul):对方最新消息是字面意思,还是话里有话true_intent(choice):对方真实意图,6 个互斥选项danger_level(score):对话离吵架/伤感情有多近,10 档情景化打分should_reply_now(noul):现在该不该给出实质回复best_action(choice):下一步最佳动作类型she_needs(choice):对方现在要什么tension_resolved(noul):紧张是否已解除best_reply(choice):给定 3 条候选回复,选最合适的一条
这 8 道题的完整定义在 cn/app/src/main/java/com/jev/probe/jev/JevQuestions.kt,Python 侧的原型在 cn/tools/jev/questions.py。注意一个细节:所有题目的 instructions 和 criteria 用英文写,而 state 里的聊天内容保留中文原文——因为 Jev 的主训练语言是英文,措辞直接决定判断质量。这是「决策脑」工程化的第一课:你喂给判断模型的不是提示词,而是一份精心校准的问卷。
另一个细节更能体现决策脑的思路:should_reply_now被刻意限定为「该不该给出实质内容」,而不是「该不该回复」;best_action的选项里不允许再出现「要不要现在回」这个维度;she_needs必须保留明确的「nothing / 事情已经过去了」档。项目在 cn/tools/jev/TASK.md 里记录了这样做的原因:用真实截图测题时,should_answer_now给出 0.77、best_action却给出「先翻聊天记录」0.60,两题互相打架——决策脑内部各题结论矛盾,是比单个题目答错更致命的问题,因为下游流程会无所适从。于是项目建立 25+ 条标注集、以danger_level平均绝对误差 < 1.0 档、true_intent和she_needs命中率 ≥ 60% 为验收线,最多迭代 3 轮调措辞。判断模型的精度不是模型给的,是题目集校准出来的——这是决策脑工程的核心方法论。
执行壳 + 决策脑:一次典型协作的分工边界
「Codex 为执行壳、Jev 为决策脑」的组合方式,社区文章给出的架构很清晰:Codex 负责与环境交互(读文件、改代码、跑测试、提交),在需要做判断的节点上通过 OpenAI 兼容 API 调 Jev 的 decisions 接口,拿回结构化结论后继续执行。Jev 不碰代码,Codex 不拍板。
这个分工在 jev-chat-jarvis 里有一个完整的、可运行的实现:三路客户端拆分。看 cn/app/src/main/java/com/jev/probe/jev/JevClient.kt:
JudgeClient(cn/app/src/main/java/com/jev/probe/jev/JudgeClient.kt):只走 Jev 判断路由,发 7 道判断题 + 排序题,解析choice/score/noul,全程无生成能力;ReplyClient(cn/app/src/main/java/com/jev/probe/jev/ReplyClient.kt):只走生成路由,任何 OpenAI 兼容的/chat/completions端点都能接,负责起草 3 条候选回复;JevClient是薄外观层,draftAndRank()把两个阶段串起来:先起草,再让 Jev 排序。
一次完整协作是这样的:程序通过无障碍服务读到屏幕上最近 10 条消息,buildState()把它们连同关系描述打包成 Jev 的state(JevQuestions.kt 中buildState的实现,from只取me/other两个值,英文描述统一称对方为 "the other person");判断路由一次返回 7 个结构化结论;生成路由按结论起草 3 条候选;判断路由再对 3 条候选做best_reply排序,给出占比;人点一下填入输入框,发送键永远在自己手里。
注意这里最值得称道的分工纪律:判断与生成在代码层就是隔离的两个路由。判断路由永远不产生文本,生成路由永远不参与决策。你在 cn/CLAUDE.md 能看到实测数字:7 道判断题一次请求约 900ms、约 1000 输入 token、0.00004 美元。社区横评中「Agent 决策比 LLM 快 40–200 倍、便宜 40–400 倍」的说法,对应到本仓库就是:把「该不该现在回」「对方意图是什么」这类高频小判断从 DeepSeek/OpenAI 这类生成模型上卸载到 Jev,每次省下的不只是 token 费,还有几百毫秒到几秒的等待时间。
海外版核心引擎(global/core)把「先定目标、再起草、后检查打分」的管线做得更完整,是理解执行壳内部分工的好样本。流程是:
- 定 Goal(Goal.kt):起草前先把「这条回复要达成什么」固化——
must_include、must_avoid、authorized_commitments(只允许承诺列表内的事),甚至「用户自己输入的内容作为用户事实」也进 Goal。目标不先定死,后续所有判断都失去参照系; - 起草(Drafting.kt):生成模型在 Goal 的约束内写回复,温度 0.7、单条最多 420 token,系统提示词 19 条硬规则,输出 JSON;解析时过滤套话(
STOCK_PHRASES里列了 "I hope this message finds you well" 这类模板句)、剔除与首条近似重复的候选; - 检查 + 打分(CandidateCheck.kt):每一条候选回复单独过一组 Jev 是非题硬检查(编造事实、未经授权承诺、替他人承诺、越界、越权认错等),再打 G(目标契合度)与 E(语气契合度)两档分,总分 S = 0.7G + 0.3E。概率阈值在 Analysis.kt 里集中定义:违规 ≥ 0.7 直接拦、≤ 0.45 放行、中间地带要求人「看一眼再发」。
这一套「生成模型负责发挥,判断模型负责把关」的结构,和 Codex 套 Jev 在逻辑上完全同构:生成端负责「把话/代码写出来」,决策端负责「这个方案行不行、哪个最好、该不该继续」。用判断模型做质控闸门而不是用生成模型自检自纠,是这套组合拳最反直觉也最有效的地方——生成模型自检自己的输出,等于让运动员兼任裁判。
组合 vs 纯 LLM:三类典型场景的横评逻辑
社区横评把 Codex 套 Jev 与纯 LLM 编码的对比集中在三个场景:批量重构、Bug 修复、测试生成。这三个场景有一个共同点:动作多、判断密、每一步的成败都取决于一个明确的二值或多选结论。这正是决策脑的主场。结合本仓库的管线设计,可以还原出每类场景下「执行壳 + 决策脑」比纯 LLM 强在哪、又付出了什么。
批量重构:纯 LLM 的典型翻车方式是「改到一半忘了约束」,或在不同文件间传播不一致的假设。决策脑方案把约束变成显式的判断题:重构前先问「这个改动是否保持公开 API 不变」「是否引入了未授权的依赖变更」,每次批量操作前用 noul 判断题闸一下,违规即拦。这与仓库里CandidateChecks的hardChecks设计同源:unsupported_fact(是否陈述了对话里没有的事实)、new_commitment(是否承诺了未授权的事)、commits_others(是否替他人承诺)——每个硬检查都是一道 noul 题,概率过 0.7 就判NEEDS_REWRITE,候选回复直接不可复制。把「合规性」从提示词里的软约束变成判断题里的硬闸门,是批量场景可复现性的来源。
Bug 修复:难点在于定位,而不在于写补丁。决策脑方案让 Jev 在修复前先做类型化判断:「这个报错更可能是类型问题还是状态问题」「修改范围是否超出该函数」。仓库里没有直接的 debug 场景,但有同构的「下一步动作判定」:best_action的选项里有check_history(先翻聊天记录确认事实,不要凭空道歉或编计划)——当信息不足时,决策脑会输出「先查证」而不是「硬编一个答案」,这正是 Bug 修复场景最需要的纪律。should_reply_now的题面里甚至写明了边界:需要背诵/证明的事实不在当前片段里时,答案必须是 FALSE,因为「you would be guessing」。让判断模型主动承认「现在不该动」,是纯 LLM 最难教会的技能。
测试生成:测试的价值在于断言准确,生成模型容易写出「通过率好看但断言空洞」的测试。决策脑方案把每个候选测试当作候选回复处理:起草多条 → 判断题检查是否覆盖必需断言、是否越权 → 排序选最优。仓库里draftAndRank的流程就是这条链路的最小实现:3 条候选,Jev 排序并给出概率占比,parseRanked按概率降序返回(JudgeClient.kt)。
海外版线上评估(global/docs/TESTING.md)给出了一组值得正视的实测数据:37 个 pilot case 上,违规候选拦截 6/6,干净候选误拦 11/12;打分阶梯 4 组无倒序;端到端起草 + 检查一轮 21 次请求、花费 $0.0038。同时文档诚实列了已知弱点:隐含表达("It'll be ready on Monday, sorry for the delay" 这类没明说「要迟交」的句子)有时落在 unsure 带;两个同名联系人共享身份哈希;15 分钟缓存看不到被编辑或删除的旧消息。这些「弱点清单」本身就是横评里最该抄走的部分——决策脑不是万能判断器,它只对「题目集覆盖到的封闭集」负责,题目没设计到的场景,它只会诚实地输出 unsure,然后把决定权交还给人。
组合拳的代价:上下文、权限与排错的三本账
任何架构选择都有代价,Codex 套 Jev 的代价集中在三处,本仓库的源码恰好把每一处都暴露得很清楚。
第一本账:上下文管理。判断模型不吃大上下文,这是它的优势也是约束。仓库的处理方式值得借鉴:buildState只带最近 10 条消息(takeLast(10)),知识库背景和更早历史作为可选字段单独传,空时整个字段省略,保证请求体与 v1.2 完全一致(JevQuestions.kt)。但多字段带来新问题:背景字段可能不被生产端点识别——JudgeClient.postDecisions专门写了一段防御性逻辑:带background/history的请求如果收到 4xx,就去掉这两个字段原样重发一次,让「未经验证的字段最多降级分析、绝不搞挂请求」(JudgeClient.kt)。这个「可降级的新字段」模式,是双模型组合里最实用的工程技巧之一。此外,排序题还有个隐藏坑:3 条候选如果两条太像,排序就没意义。Drafting.parse用词重叠率做nearDuplicate去重(短句过半词相同、长句四分之三词相同即视为同一条),并在解析时丢弃套话候选——上下文管理的另一半是输出管理。
第二本账:权限控制。决策脑给了判断,但执行权必须留在人手里。这是本仓库的红线,体现在两层。采集层:NewMessageGate.kt 用「side + text」做消息去重,只在上方出现过已读消息、下方出现新消息时才判定为「新消息」,翻历史不算新、不触发分析,避免误读。写入层:GuardedInputWriter.kt 是整套权限控制的精华——fill()先把文本设进输入框,150ms 后重新解析输入框校验是否写入成功,失败则聚焦重试,再失败退到剪贴板粘贴,任何分支都不碰发送按钮。而且每一步resolve()都要重新校验当前会话是否还活着,防止填入时界面已切走造成串台。海外版引擎则用RunBudget(Assistant.kt)做预算控制:单次分析默认最多 17 次模型请求、最多 90 秒模型等待,达到任一上限就停止发请求而不是悄悄继续——执行壳的自由度必须被显式预算约束,这是组合拳安全性的底线。
第三本账:排错成本。双模型意味着双倍的错误面。决策接口的错误码要单独学:401 key 错、422 body 不合法、429 限流、529 过载,429/529 需要指数退避重试(cn/tools/jev/TASK.md)。生成路由的坑则在超时:ModelGateway的实现里专门写了一段注释——OpenRouter 会用空字节保活慢请求,纯读超时永远不会触发(实测起草调用曾耗 38 秒),所以必须加看门狗定时器在整请求超时点强制disconnect()(ModelGateway.kt,默认 20 秒)。还有一类排错成本最隐蔽:判断模型内部各题结论矛盾。前文提到的should_reply_now与best_action打架就是典型案例,仓库用标注集 + 验收线 + 三轮迭代来解决——这意味着每个接入决策脑的团队,都要建立自己的「判断题校准」基础设施,这是纯 LLM 方案完全不需要的投入。
会不会成为标配:判断是便宜的,生成才是贵的
回到标题的问题:「执行壳 + 决策脑」会不会成为 AI 编程新标配?从本仓库的实践和社区横评的数据看,结论更接近「会,但以你意想不到的方式」。
Jev 这类 System One 模型的出现,把 Agent 架构里一个长期被忽视的事实摆到了台面上:在 Agent 循环里,真正高频执行的是判断而不是生成。每一步「继续/停止」「这个/那个」「通过/违规」都是一次判断,如果用生成模型来做,每次都要付全量推理的延迟和 token 费;而 Jev 把这类判断压缩到 70–500ms、$0.042/百万输入 token,输出还免费。当判断变得几乎免费,「多问几次 Jev」就成了比「让 LLM 一次想清楚」更优的工程选择——这会让 Agent 的架构从「大模型一次生成到底」迁移到「生成端保持最少调用、决策端高频廉价把关」。
但「标配」不会以「人人都把 Codex 和 Jev 接起来」的形式出现,而会以更底层的方式沉淀:判断模型成为 Agent 框架的中间件,像数据库索引一样藏在执行壳内部。社区文章里已经能看到这个趋势的雏形:模型路由(该用哪个模型)、工具风险门控(这个工具调用危不危险)、上下文压缩(哪些历史该丢)、输出护栏(这段输出能不能过)——这些全是封闭集判断题,全是 Jev 的主场。jev-chat-jarvis 的价值在于提供了一个完全开源、可端到端运行的参考实现:三路客户端拆分、7 题判断集、起草—排序管线、预算与权限控制,以及最重要的——一套「题目校准 + 标注集 + 验收线」的方法论。
至于 Codex 套 Jev 是否会成为每个开发者桌上的标配,社区横评里那句更实在的总结值得记住:判断是便宜的,生成才是贵的。当判断成本趋近于零,任何拒绝把判断从生成模型里拆出来的架构,都会在延迟、成本和可控性三笔账上同时失分。而判断模型答不上来的场景,它诚实输出的 unsure 带和「请人看一眼」的降级策略,恰恰是比 LLM 自信的幻觉更稀缺的品质——这也是为什么一个「哑巴模型」能在发布三天内登顶 HN:它把 AI 从「什么都能编」的表演者,变成了「只对自己答得上的事负责」的裁判。
如果你也想在自己的工具链里试这套组合,仓库给出了最直接的起点:读一遍 cn/tools/jev/TASK.md 的题目校准方法论,再看 cn/app/src/main/java/com/jev/probe/jev/JudgeClient.kt 里那 100 行不到的判断路由实现——你会发现,把「决策脑」接入现有执行壳,难度远低于想象,而收益曲线,陡峭得超乎预期。
【免费下载链接】jev-chat-jarvisThe chat decision assistant: before you reply, Jev reads the chat, judges intent and risk, and drafts replies you fill in with one tap. You press send. Android · Windows · macOS · iOS | 聊天辅助决策工具:先看懂对方再回复,发不发由你。项目地址: https://gitcode.com/gh_mirrors/je/jev-chat-jarvis
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考