按 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。
23 lines
1.7 KiB
Go
23 lines
1.7 KiB
Go
// 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
|