Skip to content

bsk 在 Windows 上的两个会话可靠性问题:命令刚返回就报 unfinished command,以及 session stop 无法强制终止卡死命令、只能重启 daemon #185

Description

@lbdmxhs

归属说明

通过 DeepSeek Harness 插件 @wxg-prc-cpg/browser-skill-dsh-plugin@0.2.0 触发,但问题疑似位于
crates/bsk-cli / bsk daemon会话命令调度(单命令轨道竞态 + stop 不能强制中断 + 无命令超时),
并非插件层(插件仅透传 bsk <cmd> --json)。请转交 bsk CLI/daemon 负责人。

运行环境

  • 操作系统:Windows 11 家庭中文版(build 10.0.26200),x64
  • 浏览器:Google Chrome 152.0.0.0(Chromium)
  • BrowserSkill 扩展:0.2.0
  • bsk CLI / daemon:0.2.0(协议 1.1)
  • 使用方式:DeepSeek Harness 插件 @wxg-prc-cpg/browser-skill-dsh-plugin@0.2.0

问题概述

围绕「每个会话同一时间只允许一条未完成命令」这一规则,出现两个可靠性问题:

1)命令刚返回成功就偶发「未完成命令」(时序竞态)
即使严格串行、一次只发一条、每次都等上一条返回,紧跟在一个【已成功返回】的命令之后的下一条
命令,仍会被拒绝:
Error: bsk <command> failed: session already has an unfinished command
对同一条命令原样重试 1~2 次即可成功。已在 fillscreenshotsession stop 上复现。

2)死锁:一条永不结束的命令会令 stop 完全失效
登录进一个登录后仍在持续后台请求的 SPA(图表/通知/轮询)后,会话会一直挂着一条未完成命令。
此后所有后续命令——包括 session stop——均被拒绝:
Error: bsk session stop failed: session already has an unfinished command
提示“请等待当前命令完成、用 Ctrl+C 取消、或停止/重启会话”。唯一逃逸方式是 bsk daemon restart
它会把 daemon 连同其会话一起杀掉。

复现步骤

  1. bsk session start(或插件的 browser_session start)。
  2. navigate 到一个加载完成后仍在轮询的 Vue SPA,使用 waitUntil: domcontentloaded
  3. 在上一步【成功返回】后紧跟一条新命令 → 间歇性出现 session already has an unfinished command
  4. 页面后台请求较忙时执行 session stop → 被拒 previous session command is still running
    反复重试无效 → 只能 daemon restart

期望行为

  • 命令返回成功后应立即释放会话命令槽,下一条命令应能立即执行,而不应被拒绝。
  • 卡住 / 长时间运行的命令应可被中断(包括通过 session stop)。

建议

  • 命令一旦返回,立即将会话命令槽标记为“完成”,修复此竞态。
  • 为单条命令增加超时(如默认 30s),避免挂死命令永久阻塞会话。
  • session stop 能强制终止当前正在执行的命令,而不是在命令运行期间自身也被拒绝。
  • 或在 CLI 中显式提供 cancel / interrupt 命令。

诊断数据

bsk status

bsk-daemon.log.2026-09-05.txt

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions