k-skill 浏览器运行时详解:BrowserOS、Aside、Chrome CDP 降级顺序
【免费下载链接】k-skill한국인을 위한 스킬 모음집 - 에이전트를 한국인으로项目地址: https://gitcode.com/GitHub_Trending/ks/k-skill
k-skill 是"为韩国人打造的 AI 技能合集",其中许多技能(法院拍卖公告查询、电子诉讼支付令、预备军训练信息等)需要真正的浏览器会话才能工作。负责这件事的核心组件就是k-skill 浏览器运行时(k-skill-browser-runtime):它按BrowserOS → Aside → Chrome CDP的降级顺序自动挑选可用的浏览器通道,并内置 CAPTCHA、支付、电子签名等"停止规则",让 AI 代理在需要人工接管时安全停下,而不是硬闯。
什么是 k-skill 浏览器运行时?
在 k-skill 中,浏览器自动化被集中收敛到一个 Node.js 适配器包里:packages/k-skill-browser-runtime/。
它的设计原则很清晰:
- 只做连接与生命周期管理:探测端点、连接 CDP 会话、断开时只关闭自动化创建的标签页,绝不关闭用户已有的页面;
- 不做站点逻辑:具体的导航、选择器、解析规则留在各个技能自己的 SKILL.md 和代码里;
- HTTP 优先:如果数据能通过公开 HTTP/RSS/sitemap 直接拿到,就不动用浏览器——浏览器只留给"需要登录会话"或"依赖 JS 渲染"的场景。
官方文档入口在 docs/browser-runtime.md,API 与停止规则详情见 packages/k-skill-browser-runtime/README.md。
降级顺序:auto 模式如何挑选浏览器?
默认 provider 是auto,运行时会按平台顺序逐个探测,直到成功为止。源码在 packages/k-skill-browser-runtime/src/provider.js:
| 平台 | 降级顺序 |
|---|---|
| macOS(darwin) | Aside Browser → BrowserOS CDP → Chrome/Chromium CDP |
| 其他平台(Linux/Windows 等) | BrowserOS CDP → Aside Browser → Chrome/Chromium CDP |
探测逻辑是"健康检查 + 连接"两段式(见 provider.js):
- 对 CDP 端点发起
<cdpUrl>/json/version探测,确认服务存活; - 对 Aside 执行一次安全的
aside repl探测,只列出标签页、不打开任何页面; - 第一个探测通过的 provider 被选中;全部失败则抛出类型化错误
UNAVAILABLE,并在cause中附带最后一个失败原因,方便排障。
💡 如果你在 macOS 上装好了 Aside,它就会比 BrowserOS 更优先被使用;而其他平台则以 BrowserOS 为首选。
三大 Provider 分别怎么工作?
1. BrowserOS:只附着,不启动
browserosprovider 连接的是用户自己手动启动的 BrowserOS GUI 会话,默认端点为http://127.0.0.1:9100。运行时明确承诺两件事:绝不替用户启动 BrowserOS,绝不传递 headless 参数。它也不是 CAPTCHA 破解器、登录求解器或隐身爬取浏览器——这是一个"可被人看见、可随时接管"的会话浏览器。
2. Aside:只用官方 CLI REPL 表面
asideprovider 通过文档化的aside repl命令行表面工作(实现见 packages/k-skill-browser-runtime/src/aside-repl.js 与 aside.js)。它不依赖非公开的 localhost 端口、守护进程鉴权或未经文档化的 CDP 端点,因此升级 Aside 时更不容易被打断。会话结束只会关闭适配器自己创建的标签页。
3. Chrome CDP:通用兜底
chrome-cdpprovider 连接标准 Chrome/Chromium 远程调试端口,默认http://127.0.0.1:9222,即你需要自行以--remote-debugging-port=9222启动 Chrome 后由运行时附着。
三者对比一览(摘自 README.md):
| Provider | 默认入口 | 是否替用户启动浏览器 | 适用场景 |
|---|---|---|---|
auto(默认) | 按平台顺序探测 | 否 | 什么都不用配置 |
browseros | 127.0.0.1:9100 | 否 | 强制使用自己启动的 BrowserOS |
aside | aside replCLI | 否 | 强制走 Aside 的文档化 REPL |
chrome-cdp | 127.0.0.1:9222 | 否 | 强制走 Chrome/Chromium CDP |
⚠️ 注意"失败关闭"(fail-closed)设计:未知的 provider 名称会抛出UNKNOWN_PROVIDER类型化错误,而不会悄悄回退到 BrowserOS,避免你以为在跑 Chrome 其实跑在了别的浏览器上。
停止规则:什么时候 AI 必须停下来?
浏览器自动化最大的风险是"不小心点了付款/提交"。运行时在 packages/k-skill-browser-runtime/src/stop-rules.js 中导出一组类型化停止码,各技能据此决定"继续"还是"交还给用户":
| 停止码 | 含义 | 典型处理 |
|---|---|---|
AUTH_REQUIRED | 需要用户认证/本人登录 | 交给用户手动登录 |
CAPTCHA_DETECTED | 遇到验证码/反爬检测 | 交还人工,绝不绕过 |
PAYMENT_REQUIRED | 遇到支付步骤 | 经用户确认后走官方流程 |
ELECTRONIC_SIGNATURE | 需要电子签名 | 交还人工 |
IRREVERSIBLE_BOUNDARY | 不可逆操作(提交/取消等) | 先向用户确认再执行 |
BLOCKED | 上游被拦截/登录墙 | 停止并说明 |
UNAVAILABLE | 所有 CDP provider 连不上 | 提示配置浏览器 |
这套规则配合 docs/dolshoi-runtime.md 中的行动模型:可回退的步骤(加购、草稿、选座、临时占位)继续做,不可逆的外部效果(付款、发消息、最终提交)之前必须先取得用户确认。
环境配置:4 个环境变量搞定
全部配置项见 docs/browser-runtime.md:
| 变量 | 默认值 | 说明 |
|---|---|---|
KSKILL_BROWSER_PROVIDER | auto | 选auto/browseros/aside/chrome-cdp |
KSKILL_BROWSEROS_CDP_URL | http://127.0.0.1:9100 | BrowserOS 的 CDP 端点 |
KSKILL_CHROME_CDP_URL | http://127.0.0.1:9222 | Chrome/Chromium 的 CDP 端点 |
KSKILL_ASIDE_COMMAND | aside | Aside CLI 的命令名或路径 |
大多数情况下保持auto即可:先装好你喜欢的浏览器(Aside 或 BrowserOS),运行时会自动探测并接入。
哪些技能在用这套运行时?
目前直接复用该运行时的典型技能(详见 docs/browser-runtime.md):
- court-auction-notice-search — 法院拍卖信息优先走直接 HTTP,失败后回退到运行时浏览器;
- court-payment-order-assistant — 电子诉讼支付令,登录后通过 BrowserOS CDP 交还给用户接管;
- yebigun-training — 在用户已登录的预备军首页会话中查询训练日程。
而d2b-notice-search、s2b-notice-search这类技能则采取"生成浏览器自动化指示语句"的路线,foresttrip-vacancy、iros-registry-automation等 Python 技能则自带 Playwright/Chromium 会话——它们不在 Node 运行时的管辖范围内,各自管理自己的浏览器。
给技能作者的三条军规
如果你打算基于 k-skill 写新的浏览器技能,docs/browser-runtime.md 给出了明确规范:
- 不要重复造轮子——复用运行时的
connect()/runJob()/ 停止规则,而不是内联一套 CDP 或 Playwright 逻辑; - 用 semver 声明依赖——如
"k-skill-browser-runtime": "^0.1.0",避免workspace:协议破坏 npm 发布; - 把站点逻辑留在技能里——导航路径、选择器、解析与 fallback 顺序都记录在该技能的 SKILL.md 中,并暴露类型化的 stop/continue 规则。
小结
k-skill 的浏览器运行时把"用哪个浏览器"这件烦心事变成了平台感知的降级链:macOS 优先 Aside,其他平台优先 BrowserOS,Chrome CDP 兜底;把"什么时候该停"变成了 7 个类型化停止码,把"绝不做的事"(启动 BrowserOS、绕验证码、关用户页面)写成了硬性边界。对使用者来说,零配置开箱即用;对开发者来说,一个auto+ 停止规则,就能把 AI 代理的浏览器行为约束在安全范围内。
【免费下载链接】k-skill한국인을 위한 스킬 모음집 - 에이전트를 한국인으로项目地址: https://gitcode.com/GitHub_Trending/ks/k-skill
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考