浏览器与电脑操作

jev-voice-browser

@moritzkremb126JavaScriptMIT更新于 2026-09-17可当场跑

通过语音控制真实浏览器,Jev 在约300毫秒内识别意图和目标,Playwright 快速执行操作。

英文原文

Control a real browser by voice. Jev (TypeSafe System One) decides intent + target in ~300 ms per spoken word; Playwright acts — often before you finish the sentence.

moritzkremb/jev-voice-browser

它在哪儿调用了 Jev

import { TypeSafeClient, choice, noul, score, APIUserAbortError } from "@typesafe-ai/sdk";

src/jev.js:7

链接指向我们抓取当天的那个 commit,行号是准的。

它问 Jev 的问题

下面是从这个项目源码里原样取出来的 question 组合。

取自 src/constants.js:198

  1. intent是/否

    Which browser action does the user ask for in `transcript`?

  2. target是/否

    Which element in `elements` is the one the user refers to in `transcript` (the thing to click, type into or select)? Each line of `elements` starts with the element id (e.g. e07), then its role and visible text; the options are those ids.

  3. site是/否

    Which website or search engine does the user name in `transcript`?

  4. complete是/否

    Has the user finished saying the command in `transcript`, so it can be executed now without waiting for more words?

  5. is_command是/否

    Is `transcript` an instruction addressed to a web browser (navigate, search, click, type, scroll, tabs, confirm/cancel)?

  6. destructive是/否

    Would carrying out the action in `transcript` on this `page` submit a form, place an order, pay, delete, send a message, post publicly, log out, or otherwise do something hard to undo?

  7. scroll_amount打分

    How far does the user want to scroll according to `transcript`?

    • 0A little: a few lines (a bit, slightly, a little)
    • 1One screen / one page, or no amount specified
    • 2All the way to the end: the very top or the very bottom
  8. text_span是/否

    Which option is exactly the text the user wants typed or searched, as spoken in `transcript`? Options are verbatim candidate spans.

用你自己的内容跑一遍

代码
import { experimental_evaluate as evaluate } from 'ai';

const { answers } = await evaluate({
  model: 'typesafe-ai/jev',
  state,
  questions: {
    intent: { type: 'boolean', instructions: 'Which browser action does the user ask for in `transcript`?' },
    target: { type: 'boolean', instructions: 'Which element in `elements` is the one the user refers to in `transcript` (the thing to click, type into or select)? Each line of `elements` starts with the element id (e.g. e07), then its role and visible text; the options are those ids.' },
    site: { type: 'boolean', instructions: 'Which website or search engine does the user name in `transcript`?' },
    complete: { type: 'boolean', instructions: 'Has the user finished saying the command in `transcript`, so it can be executed now without waiting for more words?' },
    is_command: { type: 'boolean', instructions: 'Is `transcript` an instruction addressed to a web browser (navigate, search, click, type, scroll, tabs, confirm/cancel)?' },
    destructive: { type: 'boolean', instructions: 'Would carrying out the action in `transcript` on this `page` submit a form, place an order, pay, delete, send a message, post publicly, log out, or otherwise do something hard to undo?' },
    scroll_amount: { type: 'score', instructions: 'How far does the user want to scroll according to `transcript`?',
      criteria: ['A little: a few lines (a bit, slightly, a little)', 'One screen / one page, or no amount specified', 'All the way to the end: the very top or the very bottom'] },
    text_span: { type: 'boolean', instructions: 'Which option is exactly the text the user wants typed or searched, as spoken in `transcript`? Options are verbatim candidate spans.' },
  },
});

同类的其他项目