把一个 if 判断外包给一个词
Outsourcing a Single If Statement
Roy Wiggins 写了一个叫 jevlang 的 Python 预处理器,它做的事情听起来像个笑话:把源代码里每一个 if、elif、while、match 的判断头,全部改写成对一个叫 Jev 的语言模型的运行时调用。你可以用英语写条件——"while there are bottles left:"——它会被送到后端,连同当前的行号和局部变量一起,由模型来决定这个分支走不走。仓库里配的例子包括用英语条件写的 FizzBuzz、由模型当裁判的井字棋、把模型当地下城主持人的文字冒险,还有一个按"感知到的辣度"给食物排序的"vibe sort"。
但真正让这个项目值得记一笔的,不是这个噱头,而是它的克制。默认后端是一个假的离线模拟器,根本不联网;有一个交互式的 ask 模式,让人来充当模型;有预算上限,防止真跑起来把 API 调穷;还有一个专门起名叫"卢德模式"(Luddite mode)的开关,遇到能被 Python 直接判断的合法表达式,就退回本地求值,不去问 Jev。这些细节合在一起,说明作者不是在鼓吹"把判断交给 AI 有多好",而是在搭一套装置,去逼近一个具体问题:当计算里最小、最原子的那个决策单元——一次分支跳转——变得非确定、要向外部协商的时候,程序的语义到底会松动到什么程度。
这正是 SAE 里"已构"和"余项"要分开谈的地方。"AI 编程""vibe coding""agentic coding"这些说法,这几年已经被写进了产品发布会、风投备忘录、招聘要求,它们是一次凿构循环已经完成的沉淀——已经有名字、有商业模式、有对错立场。jevlang 拒绝落在这个已经盖好的名字底下。它不是又一个"AI 辅助编程工具",它把同一个底层机制(用模型的判断代替确定性求值)推到一个不再"有用"、只剩下"诊断性"的极限位置——单挑一个 if 语句下手,把一场本该在博客和会议演讲里打的嘴仗,压缩成一个你可以真的跑起来、真的会等待、真的会花钱、真的会因为模型判断"有点犹豫"而卡住的可执行装置。这套装置目前没有名字能完整覆盖它:它不是好笑的 esolang 集锦里的一条,也不是又一个 AI 编程副驾驶,它是这场争论此刻仍在生长、还没被写定的那部分逻辑的一次具体成形。
现在看它比以后看更要紧,恰恰是因为它还没被吸收进任何一个稳定的类别。再过几个月,它大概率会被收进"好笑的 AI 编程恶搞列表",被引用、被转发,却不再有人真的去装它、跑它、读它的"卢德模式"是怎么写的。今天它挂在一个几乎没有关注度的仓库里,README 里那句"modern coding style: conditionals no longer have to be Python at all"还带着写作者自己都没完全想清楚要不要当真的语气——这种语气,正是余项还活着的证据。它一旦被简化成一句"AI 也能写 if 语句了"的段子,它作为一次严肃装置的那部分就死了。
github.com/RoyWiggins/jevlang ↗Roy Wiggins built a Python preprocessor called jevlang that sounds like a joke on first read: every if, elif, while, and match header in your source gets rewritten into a runtime call to a language model named Jev. You can write conditions in English — while there are bottles left: — and the condition text, the line number, and the current locals get shipped off so the model can decide whether to take the branch. The repo's own examples include FizzBuzz with English conditions, tic-tac-toe adjudicated by the model, text adventures where the model is dungeon master, and a "vibe sort" that orders foods by perceived spiciness.
What earns this an entry isn't the bit, though — it's the restraint built around it. The default backend is a fake, fully offline simulator that makes no network calls at all. There's an interactive ask mode where a human stands in for the model. There's a hard call budget so a real run can't quietly burn through an API bill. And there's a mode named, pointedly, "Luddite mode," which falls back to ordinary local Python evaluation whenever a condition is valid Python to begin with, rather than bothering Jev. Taken together, these aren't the choices of someone selling "AI writes your control flow now." They're the instrumentation of someone building an apparatus to find out, concretely, how far a program's semantics can be stretched once its smallest, most atomic decision — a single branch — becomes nondeterministic and externally negotiated.
This is exactly the place where SAE wants "already-construct" kept apart from "remainder." Phrases like "AI coding," "vibe coding," and "agentic coding" have, over the past couple of years, already been written into product launches, VC memos, and job postings — they are the settled sediment of a chisel-construct cycle that has already closed, complete with names, business models, and taking-sides. jevlang refuses to sit under that finished name. It isn't another AI coding assistant; it takes the same underlying move — substituting a model's judgment for deterministic evaluation — and pushes it to a limit where it stops being useful and becomes purely diagnostic, aimed at the smallest possible target: one if statement. It compresses an argument that mostly happens in blog posts and conference talks into something you can actually run — something that waits on a network call, costs money, and stalls when the model hedges. No existing name covers this fully: it isn't quite another entry in a list of funny esolangs, and it isn't another AI coding copilot. It's a specific, working shape given to the part of that argument that's still forming and hasn't been written down yet.
Seeing it now matters more than seeing it later precisely because it hasn't been absorbed into a stable category yet. In a few months this will most likely be filed under "funny AI-coding parodies," cited and reposted by people who never install it, never run it, never read what "Luddite mode" actually does. Right now it sits in a repository almost nobody has starred, and its README still carries a line — "modern coding style: conditionals no longer have to be Python at all" — whose tone hasn't fully decided whether it's serious. That undecided tone is the remainder still being alive. The day this gets flattened into "haha, AI can write if-statements now," the part of it that was a serious apparatus stops mattering.
github.com/RoyWiggins/jevlang ↗