Repository navigation
v1.4.0
1.4.0 — 工作区判定修好了
这一版几乎全部在修同一件事:插件此前对「会话工作区」的判断是错的,于是一串看似无关的症状(相对路径写进别的项目、绝对路径被拒、建完读不到、错误信息互相矛盾)都从这一个根上长出来。
会话工作区改为从会话头取
DSH 交给工具的 exec 里没有 workspace/cwd 字段,只有 exec.agent.id(会话 id)。旧代码按 exec.workspace → exec.cwd → … 猜,这三级永远为空,于是每次调用都落到插件配置或进程 cwd。
现在按下面的顺序判定,并且每次回执都写明用的是哪个工作区、来自哪一层:
- 会话头
cwd:exec.agent.id→ctx.get('sessions').get(id).header.cwd exec里显式的目录(面板请求的ws)config.workspace- 环境变量
DSH_NODEKB_WORKSPACE - 仅面板:最近一次工具调用用过的目录;最后是进程 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写表与拒绝无库目录。