Prism
English | 简体中文
Prism 是一个 TypeScript 浏览器智能体 CLI。给它一个网址和一句目标,它会把页面读成一张带编号的可见控件表,让决策模型选择「对哪个元素执行哪个操作」,通过 Chrome DevTools Protocol 执行,直到决策模型判定目标达成。
环境要求
- Node.js >= 22.19
- 可通过 CDP 连接的 Chrome
TYPESAFE_API_KEY- 一个 OpenAI 兼容的 key(仅 CLI 模式需要;MCP 宿主支持 sampling 时由宿主自己的模型回答字段文本)
安装
npm install -g @tulipe1735/prism
包含两个可执行入口:prism(CLI)和 prism-mcp(MCP server)
连接 Chrome
请以远程调试模式启动 Chrome。Chrome 136+ 默认 profile 不允许开启远程调试,因此使用独立 profile 并在其中登录一次:
# macOS
"/Applications/Google Chrome.app/Contents/MacOS/Google Chrome" \
--remote-debugging-port=9222 --user-data-dir="$HOME/.prism-chrome"
# Linux
google-chrome --remote-debugging-port=9222 --user-data-dir="$HOME/.prism-chrome"
# Windows
"%PROGRAMFILES%\Google\Chrome\Application\chrome.exe" ^
--remote-debugging-port=9222 --user-data-dir="%USERPROFILE%\.prism-chrome"
作为 MCP server 使用
prism-mcp 是一个 stdio MCP server,只暴露一个任务级工具:
| 工具 | 输入 | 返回 |
|---|---|---|
browser_task | url、goal、max_steps?、record_dir? | status、reason、final_url、final_title、final_text、steps、elapsed_ms |
宿主把整个浏览子任务委托出去;observe/decide/act 循环、新鲜度校验、预算和判定都由 Prism 自己负责。每步进度会以 MCP progress notification 上报;取消请求会中止运行并关闭标签页。
宿主声明了 sampling 能力时(opencode 支持),需要填写的字段文本由宿主自己的模型通过
sampling/createMessage 回答,此时不需要 TEXT_MODEL_API_KEY;否则回退到
TEXT_MODEL_*。决策(选哪个控件/目标)始终只走 TypeSafe,不会交给宿主模型。
opencode(opencode.json):
{
"$schema": "https://opencode.ai/config.json",
"mcp": {
"prism": {
"type": "local",
"command": ["prism-mcp"]
}
}
}
prism-mcp 需要在 PATH 上(在仓库根目录执行 pnpm link --global),或把 command 指向
["node", "/absolute/path/to/prism/dist/mcp.js"]。其他 MCP 客户端同理。key 和
PRISM_BROWSER_URL 从 server 进程的环境变量及其工作目录下的 .env 读取。
注意:不要在配置里用 "environment": { "TYPESAFE_API_KEY": "{env:TYPESAFE_API_KEY}" }
传未设置的变量——空值会覆盖 .env 里的同名 key,导致加载失败。
Respect
src/browser/snapshot.js 来自
browser-use/jev-ultrafast,以 MIT
License 使用。详见 THIRD_PARTY_NOTICES.md。