Files
AskaEth 29181245ce feat(browser): 浏览器配置与探测库(internal/capability/browsercfg,纯库零接线)
按 design/28 §2/§3 的「配置不进 .env」口径:读 $DATA_DIR/config/plugins/browser.json
(0600 + temp+rename 范式,**不读 env、不加新键**);有头/无头、CDP 端点、profile 目录、
视口/超时/并发(1)/截图上限全部类型化 + 常量默认值;**探测优先级**(本机 Chrome/Chromium
可执行文件 → 已在跑的容器)并返回可分类的「为什么不可用」(供上层如实降级,不假装可用);
profile 目录含凭据 ⇒ 0600 + 不进 git/不进上下文的注释与校验。

本片零既有文件改动(不注册工具、不碰 cmd/),接线留 B2。
2026-10-06 09:03:34 +08:00

23 lines
1.7 KiB
Go
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
// Package browsercfg 只做两件事:**浏览器能力的配置**与**可用性判定**。它是
// design/28(浏览器与页面截图)B1 的产物,配置源是
// `$DATA_DIR/config/plugins/browser.json`(design/28 §1 M2、§8 B1、design/13 §2.1
// 的插件配置落点),并按「本机 Chrome/Chromium 可执行文件 → 已在跑的容器(CDP 端点)」
// 的优先级探测,给出**可证伪的可用性结论**和「为什么不可用」的**分类原因**。
//
// 它是**纯库**:不注册任何工具、不建长连接、不接线(工具面在 B2,闭环在 B3)。
// 除 CheckCDP 会发一次出站 HTTP GET 外,本包不启动进程、不开监听端口。
//
// 红线(design/28 §3/§4,AGENTS §9/§10):
//
// - **不进 `.env`**:一切可调项只从 `browser.json` 读。本包不读任何**配置来源**的
// 环境变量,也不新增任何 env 键;唯一的 getenv 用途是从 `%ProgramFiles%` /
// `%LOCALAPPDATA%` 定位本机 Chrome 安装目录(与配置无关的系统环境)。
// - **不新开监听端口**:我们是 CDP 的**出站客户端**,探测只连调用方给的地址
// (默认 `127.0.0.1:9222`)。
// - **不假装可用**:探测不到就返回 `Usable=false` + 分类原因,由上层**如实降级**
// (照 web-search `off` 的口径:不注册工具,而不是注册一把抡起来必报错的锤子)。
// - **profile 目录含凭据**(cookie / 登录态)⇒ 目录 0700、文件 0600、**不得位于
// git 工作树内**(见 CheckProfileLocation)、内容**绝不进上下文/长期记忆**
// (design/28 §2 三件套之 2、§4)。截图落盘同属敏感面,默认不进长期记忆。
package browsercfg