Skip to content

feat(browser): OPENCLI_BROWSER_IDLE_TIMEOUT 环境变量覆盖自动化窗口空闲超时 - #2468

Open
huanghe wants to merge 1 commit into
jackwener:mainfrom
huanghe:upstream/idle-timeout-env
Open

huanghe wants to merge 1 commit into
jackwener:mainfrom
huanghe:upstream/idle-timeout-env

Conversation

@huanghe

@huanghe huanghe commented Sep 5, 2026

Copy link
Copy Markdown
Contributor

动机

这是 #1868 关闭时维护者建议单独拆出的那部分:只做环境变量 → 命令字段的映射,不碰 tab active 语义、窗口创建方式和 transport 路径。

extension 早已支持命令字段 idleTimeout(秒)覆盖 owned 窗口的空闲回收时间(background.tssetSessionOverride(leaseKey, { idleTimeoutMs })),但 CLI 侧没有任何入口能设置它——只能改调用方代码。轮询型流水线(每一两分钟跑一条 adapter 命令)在默认空闲超时下每次都要重新 windows.create(),在 macOS 上还伴随一次焦点闪烁;把空闲时间调到覆盖轮询间隔即可复用同一窗口。

改动

  • daemon-client.sendCommandRaw:读取 OPENCLI_BROWSER_IDLE_TIMEOUT,与 OPENCLI_BROWSER_CONNECT_TIMEOUT / OPENCLI_BROWSER_COMMAND_TIMEOUT 同单位同前缀),仅正整数生效(extension 侧本来就忽略 0);显式 params.idleTimeout 优先
  • 测试:env 生效、显式参数优先、非法值(0 / 负数 / 小数 / 非数字 / 空)忽略
  • README.md / README.zh-CN.md 配置表补一行

验证

  • npm run typecheck 通过
  • src/browser/daemon-client.test.ts 45 个用例通过(新增 7 个)

extension 早已支持命令字段 idleTimeout(秒)覆盖 owned 窗口的空闲回收时间,
但 CLI 侧没有任何入口能设置它——只能改调用方代码。轮询型流水线(每一两
分钟跑一条 adapter 命令)在默认空闲超时下每次都要重新 windows.create(),
在 macOS 上还伴随一次焦点闪烁;把空闲时间调到覆盖轮询间隔即可复用同一窗口。

这是 jackwener#1868 里被维护者建议单独拆出的那部分,只做环境变量 → 命令字段的映射,
不碰 tab active 语义、窗口创建方式和 transport 路径。

- daemon-client.sendCommandRaw:读取 OPENCLI_BROWSER_IDLE_TIMEOUT(秒,
  与 OPENCLI_BROWSER_CONNECT_TIMEOUT / COMMAND_TIMEOUT 同单位),仅正整数
  生效(extension 侧忽略 0);显式 params.idleTimeout 优先
- 测试:env 生效、显式参数优先、非法值(0 / 负数 / 小数 / 非数字 / 空)忽略
- README / README.zh-CN 配置表补一行
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant