问题
你的浏览器 agent(自己在网页上操作的程序)第一版只会点:Jev 选第几个元素,代码去点,一步 300 毫秒,四十步的任务半分钟跑完。
第二版要往搜索框里打字 —— 而 Jev 不写字。它只在你给的选项里挑,从不交回一串自己编的文字。最顺手的改法是整条链路换成大模型:反正它会写,就顺便让它把「点哪里」也定了。
换完你会发现三件事一起变差:每步从 300 毫秒变成 2 秒,每步从千分之一美分变成几美分,而且它交回来的又是那种代码没法校验的东西。为了一步要打字,你把另外十六步都赔了进去。
解决方案
代笔模式说:把每一步拆成「决定」和「写字」两件事,只有落到真需要写字的那条分支,才请代笔出场。
Jev 照旧回答这一步做哪种操作、对哪个元素做。只有当答案是「打字」,才把字段名和目标交给一个小的写字模型,让它写出要填的那几个字。十七步的任务里,通常只有一两步会走到这儿。
代笔交回来的东西要过一遍检查:只有一个文本字段、不为空、不超长。它写砸了或者超时了,就退回一个笨办法 —— 直接用目标里的关键词 —— 并在记录里写明这句话是哪条路产出的。代笔死了,不能把整个任务弄死。
问 · 答 · 拍
- 问把目标、页面和能填的字段放进去,一次问两件事:这一步做哪种操作;如果是打字,打在哪个字段里。
- 答操作选「打字」0.88,字段选搜索框 0.79。
- 拍既然是打字,就请代笔写出要填的字,检查一遍不为空也不超长,再填进去。
名字从哪来
代笔。主意始终是你的 —— 见谁、答应什么、拒绝什么。只有落到纸面上那几句漂亮话,请别人写。写手改不了你的决定,写砸了拿主意的人也还是你。
什么时候用
动作能列成一张清单,但其中一两个动作需要一段自由文本:字段值、提交信息、工具参数。
什么时候别用
整件事就是写东西(写文章、写邮件)—— 那是大模型的活,Jev 顶多在写完之后审一道。或者要填的文字本来就在材料里:让 Jev 把那一段挑出来,代码原样复制。
做这件事的项目
- jev-ultrafast — 由 Jev 决定每一步操作与元素的浏览器智能体。
- jev-browser — 用 Jev 逐步决策的快速、低成本浏览器自动化。
- foreman — 使用 Jev 监督编码工人的软件工厂工头。
看谁的代码
- jev-ultrafast
jev_ultrafast/model.py:160-198写手只在「打字」这一步被叫起来,它写出来的东西先过一遍格式检查,才真的填进去。
- jev-browser
src/navigate.ts:173-196写字的模型整个任务只跑一两次,每次约 48 个 token(模型计价用的字数单位);没配 key 就退化成从目标里挑个关键词。
- jev-browser
lib.ts:123-131降级走的那条路,以及日志里记下这句话究竟是哪条路产出的。
想看代码
const { answers } = await jev(state, {
op: choice("这一步做哪种操作?", ops),
"type.target": choice("如果是打字,填在哪个字段?", fields),
});
if (answers.op.choice !== "type") return act(answers); // 这一步没有字要写
let text, via = "writer";
try { text = TextSchema.parse(await smallLlm({ field, goal })).text; }
catch { text = keywordFrom(goal); via = "fallback"; } // 写手挂了,判断没挂
trace.push({ step, via });
await typeInto(answers["type.target"].choice, text);jevbooks 怎么认出它
我们怎么知道一个项目用没用这一招?拿它的 README 问 Jev 一句话,Jev 给个百分比,数字越高说明越像。你要抄这道题,记住一点:别问「这个项目好不好」,要问「有没有讲到这一件具体的事」。
{
"decide-generate-split": {
"type": "noul",
"instructions": {
"what": "Does the text describe Jev choosing the action or target while a separate text model writes any free text (a typed value, a message, a tool argument), with Jev never producing text?",
"not_for": "Projects that use only Jev, or a single LLM that both decides and writes."
},
"criteria": {
"true": "The text explicitly describes this. One sentence is enough; other content does not cancel it.",
"false": "The text does not describe this."
}
}
}