Repository navigation
v1.6.0
v1.6.0
默认行为变更:会话隔离成为默认。 一个 bcdp_* 调用省略 space 时,不再落到跨会话共享的 default,而是落到本会话自己的任务空间 dsh-agent-<会话id前8位>;只有显式写 space: 'default'(或 op=open name='default')才使用共享具名槽。
变更:默认任务空间改为按会话派生
resolveConfig中defaultSpace的空值折叠目标由'default'改为':auto':不配置即为会话隔离,无需额外开关。deriveSlotDefaultName取消isolateSpaces门::auto在持久模式与沙箱模式下都派生dsh-agent-<sid8>。空间命名与isolateSpaces(只管 Profile 落盘 vs 内存沙箱)是两条独立的轴,此前把两者绑死,导致「持久模式下配:auto也永远得到default」。- 显式
space: 'default'/op=open name='default'仍完全可用:该会话随后固定用这个共享槽。把defaultSpace设成具名值(如default)可全局退回旧行为。 - 无 session 的调用(
__global__槽)仍回落default,向后兼容。
修复:真实 DSH 会话 id 会塌缩成同一个空间
- 旧派生用
sessionKey.slice(0, 8)。真实 DSH id 形如session-52adc205-3251-…,前 8 位恒为字面量session-,于是所有会话撞进同一个dsh-agent-session-空间,隔离在无声中完全失效(不报错,只是共用上下文)。 - 新增
sessionSpaceToken():先剥掉session-前缀、去掉非[A-Za-z0-9-]字符,再取 8 位;短 id 原样使用(仍唯一);退化/空 id 用 FNV-1a 哈希兜底保证非空。 - 补 5 条回归测试:真实 id 正确分离(
session-52adc205-…→52adc205)、两会话 token 不同、永不返回裸前缀session-、短 id 原样、token 合法且 ≤8 位。
文档与描述
bcdp_space描述改为教新默认语义:省略space= 本会话空间;要共享才显式传default。Config.defaultSpace的 schema 描述同步;README的「任务空间命名与并发隔离」小节重写为 1.6.0 口径,附「你怎么写 → 落到哪个空间」对照表,并记录session-塌缩这个坑。
迁移指引
- 无需任何操作:默认即隔离。
- 想维持「所有会话共用一个空间」的旧行为:把
defaultSpace设为default,或在调用里显式space: 'default'。 - 注意:会话空间是按会话命名的命名空间,不是「每个会话独立 Cookie」。是否把登录态落盘仍由
isolateSpaces决定;Profile 持久模式下登录态依然跨重启保留。
验证
npm run typecheckEXIT 0;npm run test866 passed / 12 skipped(878)(较 1.5.0 的 861 增 5 项 token 回归);npm run build三 bundle complete。- 确认 profile / 设置存储中无持久化的
defaultSpace残留,新默认会生效(~/.dsh全量扫过,命中均在记忆库与会话缓存,非插件配置)。
Release backfilled on 2026-10-22 from git tag + CHANGELOG history.