Repository navigation
Releases: jojoman2024/dsh-memj
Release list
v0.1.5
本版重点
正文图片终于能显示了 🖼️
之前 100% 裂图:marked 只生成 <img src="x.png"> 不做地址解析,浏览器按页面地址解析相对路径 ⇒ 必然 404。
现在服务端按「条目 ref 所在目录」读图(白名单 + 不许越界),前端把相对 src 改写成 /asset?entry=…&path=…。
「就此提问」在每一段都能用
块引用 / 多行表格这类块以前永远匹配不到 DOM(实测 5816 块里 17.5%),
现在服务端把每块拆成「叶子行」逐行匹配;且块匹配不到时降级而不是把整个功能关掉。
按钮也移到了选区下方(上方会与浏览器自带的选择框重叠)。
外链改在右侧栏内置浏览器打开
点外链 → 右侧栏内置浏览器;开不了(如 Web 版没有 browser tab 类型)自动降级新标签页并说明原因。
面板内升级
头部基础信息右边出现「检测到有新版本」胶囊 → 弹窗 → 一键升级。
走国内镜像(npmmirror),支持桌面版(Electron 需 ELECTRON_RUN_AS_NODE=1 + dsh-desktop-host/lib/cli.js)。
入库自动刷新
新增 entry / 项目 / 主题后,面板列表自动更新(≤10 秒)。
用目录指纹判断变没变(81ms,而全量扫描 450–755ms);只在页面可见时轮询、正在编辑时不刷新、保住滚动位置。
窄屏断点 900 → 700
主流手机 CSS 视口宽度都在 360–430,平板竖屏 744–834。
旧断点把平板竖屏也判成窄屏;700 之后手机仍走窄屏、平板放开成两栏、右侧栏 iframe 不受影响。
安装 / 升级
dsh plugin --profile web add dsh-memj@0.1.50.1.4 —— DSH 0.2.1 兼容
DSH 0.2.1 兼容
修:context() 必须标 required: true
DSH 0.2.1 给 systemPrompt.context() 的注册项新增了 required?: boolean,
并引入 suppressRuntimeContext() / includeRuntimeContext:false ——
它们会把所有没标 required 的 context 一律摘掉(官方 README 原话:
"Contributions marked required remain visible")。
memj 有两条 context,两条都是操作型上下文:
| context | 内容 | 被摘掉的后果 |
|---|---|---|
memj:usage-guidance |
全部使用指导(何时调哪个工具 / 挂靠判据 / 归档流程) | 模型仍有 8 个工具,但不知道该在什么时候用、该填什么 |
memj:reading-doc |
「文档内提问」注入的正文本身 | 模型手里没有正文,答非所问 |
记:headless 的能力边界(有意,附理由)
dsh-headless 明确不挂 HTTP server(其 patch 原话:"It mounts no Host,
HTTP server, Web Runtime, or browser plugin")⇒ 在 --profile headless 下
memj 的 inject 永不满足、整个回调不执行。
这是有意的边界:知识写入面与人侧界面是同一交付物,拆开没有意义。
代码里已写明不要把它改成可选及其理由(那样会加载出一个"工具能用、设置页全 404"的半插件)。
核查结论:零断裂
对照 0.2.0-rc.2 → 0.2.1-rc.2 逐包核查:
- memj 真实 import 的 11 个符号:0 个断裂(同一位置);
- 用到的 20 个 ctx 服务:除与本插件用法无关的三个外全部相同;
credentials的四个方法(resolve/describe/set/unset):全在,形状未变;- 消息
source.kind = plugin:dsh-memj:两版都合法。
新增套件
scripts/test-dsh021-compat.mjs(14 项,含反向自证)—— 已进套件链,56 → 57。
required 字段 0.2.1 才有,
而本仓 devDep 是 0.1.5 的类型 ⇒ tsc 看不见它(删掉也不报错)。
0.1.3
自 v0.1.2 以来的内容(12 个提交,33 文件 / +8021 −100)。
🔴 修一个会造成数据损坏的严重缺陷:封面 tags 序列化
如果你在用 0.1.2 或更早的版本,建议尽快升级。
事故:一个项目的交接文档被撑到 128 MB / 单行 1.34 亿字符,把 DSH 拖崩;重启后每次读那份文档都奇慢。
根因是封面 tags 的读写不对称(两个缺陷叠加):
renderCover把 tags 写成裸的逗号分隔串(tags: a,b)—— 在 YAML 里那是一个普通标量字符串,不是数组(theme那行和条目 frontmatter 本来就是数组,只有封面这行漏了);- 于是读回时按逗号 split,切出来的片段不还原转义。
合起来是放大器:某标签需要加引号(以 @ - : # [ ] 等开头,或含 : )⇒ 写成 "@通知" ⇒ 读回时那对引号留在标签内容里 ⇒ 下一轮再写又判定不安全 ⇒ 再转义一层 ⇒ 反斜杠 1→3→7→15…(2ⁿ−1)。
mutateCover 每次只改一条封面、却会重写整份文档的全部封面 ⇒ 改任意一条都在加轮数 ⇒ 攒够约 27 轮就炸。这解释了「之前一直没事、突然就炸」——前 26 轮都看不出来。
修复:tags 改用 renderYamlArray(写成 [a, b],由解析器反转义);并补上「逗号在任何位置都不能裸写」(修上面那条时暴露的另一个独立缺陷:在流式数组里 , 就是分隔符,标签 x,y 会被静默劈成两半)。
新增功能
文档内提问(reading) —— 一条知识/一份交接文档读起来太长时,可以直接就着某一段向它提问,问答会落成一条 kind: chat 条目并与那一段绑定;支持段落标记、选中工具条、「去会话」跳转、轮末自动同步、以及从 chat 条目「返回源知识」。
面板界面状态跨会话共享 —— 右边栏是每个会话一份,此前切会话回来面板就「回到默认页」。现在界面状态跨会话共享(零内核改动)。
验证
pnpm run typecheck✅- 全套件 56/56 通过(v0.1.2 时 53 个,本次新增 3 个 reading 相关套件)
check-pack实测 tarball 31 文件 / 2402 KB,README 引用的 14 张截图都在包里check-peer-range通过(6 个真实 DSH 版本装得上,上界有效)- ⭐ 实测产物:
npm pack出dsh-memj-0.1.3.tgz,解包后包内 version = 0.1.3、31 文件 - ⭐ 修复专项:
renderCover → coverFromYaml往返 ×10,9 类标签全部长度恒定、往返还原(修复前:@开头那条 23 → 8211 膨胀;含:那条直接抛 YAML 错)
安装 / 升级
dsh plugin --profile web add dsh-memj@0.1.30.1.2
0.1.1
修复
- 桌面版点 memj 入口没反应:桌面壳的 window-open 策略只对
https:外链调
shell.openExternal,而本插件页面是http://127.0.0.1:<port>/plugins/dsh-memj/
(http + 同源)⇒ 改为走 DSH 官方的右侧栏页类型:点入口直接在右侧栏里打开
memj 面板。浏览器版行为不变(仍开新标签),老 DSH 上整段不执行、零影响。
新增
- 「发布 GitHub Release → 自动发 npm」的 CI(OIDC trusted publishing,无需 token)。