Skip to content

Releases: levodoubt/project-node-memory

v1.4.4

Choose a tag to compare

@github-actions github-actions released this 22 Oct 17:43

1.4.4

修正引用语义与写路径上暴露的几处缺陷,均为 1.4.1 之后实测发现。

引用

  • [[node="…"]] 只渲染成指向该节点的链接,不再把目标正文复制进来。之前一次引用会把整节内容打印两遍,正是本插件要消灭的重复。
  • [[tscl="…"]] 仍是值嵌入;同一个 id 全库只能定义一次。
  • 整支渲染(kb_read 不带 mode、面板的「整支」视图)中,若某定义与其引用都落在这一支里,定义块不再重复打印该值——值只出现一次,单看定义所在节点时仍可见。
  • TID 形如 doc:03 的文件节点现在可直接作为引用目标(此前只有带节号的位置型 TID 能解析)。代码块里的 [[…]] 一律当示例,不解析。

工具

  • kb_read target=<tscl id> 返回定义体、定义处(文件#行)与被引用的位置清单。
  • kb_backlinks 接受 <tscl id>,与 kb_read 同口径;定义所在节点自身不计入引用数。
  • kb_write mode=node 修复两处死锁:正文与标签写在同一行时合法;多行节点能正确定位到 </node> 并只替换正文,标签原样保留。

工作区与注册表

  • 会话工作区改为从 exec.agent.id 查会话头的 cwd,不再猜 exec.workspace(DSH 不提供该字段)。回执里写明判定来源。
  • 允许范围 = 已登记工作区 ∪ 配置里的库 ∪ 注册表;项目的 kb_registry.json 与全局注册表合并去重,同名不再静默覆盖。
  • kb_list 显示绝对路径与来源,同名库直接报错。

升级提示

无数据迁移。旧写法 [[TID]] 继续可用(diagnostics 会提示改成 [[node="TID"]]),2.0 移除。

v1.4.1

Choose a tag to compare

@github-actions github-actions released this 22 Oct 17:00

1.4.1 — 改名不再把库改裂

这一版修的是 kb_rename:它会回「已重命名」,但库在磁盘与索引之间已经断开——新名字读不到、旧名字还能读出正文、kb_diag 却说一切正常。顺带修了三处小毛病。

改名之后索引会立刻跟上(最严重)

旧的缓存签名只统计 md 的数量、总字节、最大 mtime。改名既不改内容也不改 mtime,所以下一次调用依然命中旧索引:按新 TID 找不到、按旧 TID 反而能读出正文,kb_diag 也拿着改名前的节点表报 status: ok。

两个修法一起上:

  • 缓存签名里加上相对路径集合的哈希(sha1(排序后的路径) 前 12 位)。改名、移动、增删文件都会立刻改签名,不看 mtime 的脸色。这比「改名后手动清缓存」可靠:用户 mv、git checkout、编辑器重命名一样能被发现。
  • kb_rename 成功后主动让该库的缓存失效,不必等下一次签名比对。

引用重写覆盖带引号的写法

rewriteRefsInText 以前只认 [[TID]] 与 [[TID:…]],而 README 教的写法是 [[node="TID"]]。于是它把这库的引用全判成「没有需要改写的」,改完就静默断链。

现在四种写法一次覆盖:[[TID]]、[[TID:…]]、[[node="TID"]]、[[tscl="TID"]];围栏内仍不重写。

kb_rename 接受相对路径

target 可以直接给 lessons/004-x.md(文档一直这么写,代码以前只认 TID)。解析顺序:精确 TID → 三级路径解析 → 库根 + 相对路径。

三处小毛病

  • kb_read target="." 现在等于库根(README 写的是「空字符串或 .」,代码以前只认空串)。
  • 读 tscl 定义时,「被引用 N 处」不再把定义所在节点算成引用者;引用行的行号也不再拼成 README.md#L45#L4 这种两段。
  • kb_diag 跟着上面两条一起正常:改名之后不再报已经不存在的悬空引用。

验证

  • 离线自检 304 → 313 项(新增 9 条:带引号写法重写、前缀相同不动、相对路径改名、改名后下一次调用看到新 TID、target="."、定义所在节点不算引用者、行号只拼一次)。
  • 活体实跑(临时库,8 项全过):tid="." 200、相对路径改名、[[node="…"]] 被重写、新 TID 立即可读、旧 TID 404、改名后 diag 无悬空、定义节点不自计。

已知不属于本插件的两件

  • DSH 自带的 grep/ripgrep 默认跳过隐藏目录,.nodekb 会被漏掉:全库检索请用 kb_search,或把 path 指到具体文件。
  • Windows 控制台(CP936)里显示中文路径会乱码:文件名建议 ASCII,中文写进 # 标题。

v1.4.0

Choose a tag to compare

@github-actions github-actions released this 22 Oct 16:27

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 写表与拒绝无库目录。

v1.3.3

Choose a tag to compare

@github-actions github-actions released this 22 Oct 15:28

project-node-memory 1.3.3

npm: https://www.npmjs.com/package/project-node-memory/v/1.3.3

从这一版起,版本变更只记在这里(Release 页),README 只描述当前版本。

本版变化

  • README 改为只描述当前版本,并移除两处历史内容:「从 1.0 升到 1.1」整节(搬到下面)与英文版的
    「Renamed from dsh-nodekb at 0.2.0」。
  • 工具数对齐为 9(README 标题此前误写「10 个工具」);示例里的 fact 写法从 <node> 改为 <tscl>,
    与当前语义一致。
  • 工具描述与系统提示词改为平实的契约式表述(1.3.1):去掉「比 read 好」「比 grep 省往返」这类劝告,
    只保留参数语义、使用时机与失败后的出路。工具描述总长 3,391 → 3,117 字符,提示词段落 820 → 604 字符。
  • kb_read 的 target 参数说明补回「(回定义体、定义处、被谁引用)」(1.3.2)。

从 1.0 升级

数据格式没变——md 还是 md,TID 还是那些 TID,插件卸了照样能读。变化只有两条:

  1. [[x]] 现在只出链接,不再把被引用节点的正文复制进来(要复制原文请显式写 <tscl>)。
    好处是引用不再撑大渲染结果,位置型小节 ## 3.1 也能点了。
  2. kb_init 不再建 facts/。已有的 facts/ 不会被动,kb_read / kb_search 照常;只是新库默认只有
    doc/ lessons/ todo/ index/,事实改写成 <tscl> 定义放进它所属的 doc/ 里。

老库要不要迁?不迁也能用,只是 kb_diag 会给每条裸引用一条 warning。要迁就按 kb_diag 的清单逐条改成
[[node="…"]] / [[tscl="…"]](只改写法,不动 TID 与文件)。

历史速览

版本 主要变化
1.3.0 kb_read target=<定义 id>;句内单行定义;diag 新增表格行定义告警;面板「原文/源码」里的宏可点
1.2.0 定位参数合并为一个 kb(名字或路径),去掉 lib;工具描述瘦身 4,705 → 3,355 字符
1.1.0 双语法 [[node="…"]] / [[tscl="…"]];tscl 宏层与定义表;diag 覆盖 tscl 的九条检查;kb_init 不再建 facts/
1.0.0 首个公开版本:kb_* 工具 + 侧栏知识节点面板 + 内嵌 git 快照

project-node-memory 1.3.2

Choose a tag to compare

@github-actions github-actions released this 22 Oct 15:14

project-node-memory 1.3.0

Choose a tag to compare

@github-actions github-actions released this 22 Oct 14:00

project-node-memory 1.2.1

Choose a tag to compare

@github-actions github-actions released this 22 Oct 12:58

project-node-memory 1.1.4

Choose a tag to compare

@github-actions github-actions released this 22 Oct 12:49

project-node-memory 1.1.3

Choose a tag to compare

@github-actions github-actions released this 22 Oct 12:40

project-node-memory 1.1.2

Choose a tag to compare

@github-actions github-actions released this 22 Oct 12:40