Skip to content

v1.4.0

Choose a tag to compare

@github-actions github-actions released this 22 Oct 16:27
· 3 commits to main since this release

1.4.0 — 工作区判定修好了

这一版几乎全部在修同一件事:插件此前对「会话工作区」的判断是错的,于是一串看似无关的症状(相对路径写进别的项目、绝对路径被拒、建完读不到、错误信息互相矛盾)都从这一个根上长出来。

会话工作区改为从会话头取

DSH 交给工具的 exec 里没有 workspace/cwd 字段,只有 exec.agent.id(会话 id)。旧代码按 exec.workspace → exec.cwd → … 猜,这三级永远为空,于是每次调用都落到插件配置或进程 cwd。

现在按下面的顺序判定,并且每次回执都写明用的是哪个工作区、来自哪一层:

  1. 会话头 cwd:exec.agent.id → ctx.get('sessions').get(id).header.cwd
  2. exec 里显式的目录(面板请求的 ws)
  3. config.workspace
  4. 环境变量 DSH_NODEKB_WORKSPACE
  5. 仅面板:最近一次工具调用用过的目录;最后是进程 cwd

允许范围改为「已登记工作区」的并集

旧规则是「必须落在解析出来的那一个根里」,多项目并行时必然误拒。现在允许范围 = 本会话工作区 ∪ 所有已登记工作区 ∪ 已注册库,绝对路径不再被无理由拒绝。

新工具 kb_register

把已存在的库登记进项目自己的 <项目>/kb_registry.json(建议随仓库提交)。不写全局注册表、不改插件配置——权限问题可以在工具集内部自己解决,不必去改一个模型看不见的文件。

kb_init 的护栏

目标落在另一个已登记工作区里时直接拒绝,并打印双方路径与本会话工作区的来源。相对路径不会再因为判错工作区而默默写进别人的项目。

kb_list 更可诊断

回执开头写明本会话工作区与来源(session.header.cwd / config.workspace / …),每个库给出绝对路径、来源与存在性;同名库会标「⚠ 同名库,按名字调用有歧义,请用路径」。

其他

  • kb_init 回执提示:文件名建议 ASCII,中文标题写进 # 一级标题(Windows 控制台显示中文路径会乱码)。
  • 系统提示词与随包 Skill 增加一句:库找不到先 kb_list,已有库用 kb_register 登记。
  • 离线自检 292 → 304 项,新增 12 条覆盖会话头取工作区、来源回显、跨工作区守卫、kb_register 写表与拒绝无库目录。