Repository navigation
DSHEssentialTools v2.11.0 — ADU is sticky · adu_rememory
v2.11.0 — ADU 改成「只装不卸」:粘性装载 + adu_rememory 重新注入工具记忆
一句需求:「ADU 不主动卸载工具(agent 仍可卸,虽然那多少是'何意味'),但要提供 rememory tool list 重新增强局部记忆。」
上一版把 ADU 当预算工具(用完就卸载,让下一轮 schema 变轻)。这一版按用户口径改成记忆工具:
装载是持久的,真正稀缺的不是 schema 预算,而是模型对"我手里有什么"的局部记忆 —— 尤其是长对话被压缩之后。
1) 粘性装载:ADU 不再主动卸载
- 装载落盘到
det.adu.mounted;宿主启动时_aduRestoreMounts()自动装回。重启后工具还在,这是"不主动卸载"的一半。 - 另一半:ADU 自身没有任何"空闲/切会话/到点"的自动卸载路径。只有三种情况会让模块消失:
agent 显式adu_unload、总开关关闭、插件被卸载。 adu_unload保留(能力还在),但描述改成「大多数时候不需要」:卸载只会让后续轮次少工具,并不会帮你记住什么。
2) adu_rememory:重新注入工具索引(新增第 6 个元工具)
- 新增静态索引
ADU_TOOL_INDEX(45 条:39 个模块工具 + 6 个元工具),每条 = 关键参数摘要 + 一句话用途。 adu_rememory(可带id只看某模块,full附带代价/风险)把索引压成一张表返回:工具记忆(ADU 按需模式 · 2 组 · 14 个工具) ## alv · ALV 辅助线视觉 alv_grid(path, cell?, majorEvery?, guides?, out?) — 加栅格+标尺+辅助线,建立像素坐标系- 它不重新装载(本来就没卸),也不占工具 schema 的预算 —— 这正是压缩之后需要的东西。
aduToolIndex()是索引的唯一装配点,rememory 与测试共用,避免"文档写一套、实现另一套"。
3) 顺手修掉两个真问题
- 模式切换此前要重启才生效:
_loadExtension()有_extLoaded守卫,而它不区分"按需 / 全装"。于是在设置里开关 ADU,
重启前完全无效,且_aduGroups会与全装模式重复注册同一批工具。新增_applyLoadMode():模式变化时整体
_unloadExtension()→_loadExtension(),并重跑运行时特性同步。 - ALV 的系统提示段一直缺席:
lib/alv.js用了不存在的sp.register({id,role,content}),静默失败(返回 null 不报错)。
改成宿主真正的systemPrompt.section({name, order, text})(与 DLT 集成同一个 API)。按需模式另加一段
tool:det-adu提示:按需 + 粘性 + 忘了就 rememory。
4) 管理器面板
- ADU 面板文案改为「6 个元工具 / 装载是粘性的 / 重启后自动装回」,并提示
adu_rememory的用途。 - 「全部卸下」标注为「(不常用)」——不再鼓励用户把已装模块卸掉。
测试
tests/alv-adu.test.mjs96 → 118 条:索引覆盖率(模块表里每个工具都必须有索引条目,且索引里不得有已不存在的工具)、
参数/说明非空、按模块筛选、rememory 端到端(无损 JSON)、以及粘性装载的源码守卫(持久化键、恢复路径、模式重装)。- 全量:128 + 60 + 23 + 47 + 17 + 37 + 22 + 40 + 71 + 10 + 118 = 573 断言全绿。
Install
powershell dsh plugin --profile web add github:LLYlab/DSHEssentialTools