yongshuai0314/dsh-readcache
yongshuai0314★ 2JavaScriptLast synced: 2026-08-23
为 DSH read 工具提供版本令牌校验的进程内结果缓存 | Version-token-validated in-process result cache for the DSH read tool
README excerpt
dsh-readcache ⚡ 给 DSH read 工具的版本令牌校验结果缓存。 长会话会反复重读未变更的文件——上下文压缩后的恢复、并行子代理、编辑前后的对比,每一次重复都要重新做文件 I/O 和行号渲染,读到的却是字节完全相同的内容。 dsh-readcache 包装了 tools/execute 事件瀑布,让这些重复读取直接命中进程内缓存, 且每一次命中都对照文件系统自己的版本令牌重新校验 。 为什么它是安全的 朴素的缓存会吐旧内容,这个插件不会: 性质 机制 绝不吐旧内容 每次命中都重新 stat 文件,要求版本令牌精确匹配(本地后端为 dev:ino:size:mtimeNs:ctimeNs )。任何写路径—— edit / write 工具、 bash 、外部编辑器——都会改变令牌并立即失效对应条目。 无写入竞态 未命中时,执行结果只有在二次 stat 仍报告执行前令牌的情况下才会入缓存(双 stat 防护)。 保留"先读后改"约束 缓存键包含代理 id。文件系统的观察门(fs-observation-policy)要求每个代理编辑前必须自己读过该文件;按代理隔离键值保证每次命中都以该代理自己的先前观察为凭据。 内存有界 LRU 上限:300 条 / 总量 16 MiB / 单条 4 MiB。 只有 read 工具的成功、非中止、可无损 JSON 序列化的结果才会入缓存;失败结果原样透传。 readcache 工具 插件注册一个模型可见的工具: - readcache (action: "stats" "clear" )— 汇报命中/未命中等计数与已节省字符数、条目数;或清空缓存。 stats 输出示例: 安装 或从本地检出安装: 安装后重启 DeepSeek Harness 生效。 设计说明 - 拦截点 : tools/execute 的 around 分发瀑布——官方超时策略用的同一条缝。调用身份保持不变,只有结果被复用。 - 声明 inject ,不和加载器赛跑 :插件导出 inject = ["fs", "tools"] ,Cordis 会把它保持在等待态,直到基础 bundle 提供这两个服务。若用软性 ctx.get("fs") 提前返回,可能在启动竞态中抢跑并让整个缓存静默失效——这正是 1.0.1 修复的 bug。 - 为什么用 stat 而不是 fs 观察事件 : fs.stat 是无副作用的纯探测;观察事件依赖触发顺序,且命中时无法复核。 - 仅宿主侧 :缓存完全活在宿主进程里。客户端仪表盘(经 Remote service)在 v1.1 路线图上。 - 入缓存的对象是冻结的 ToolExecutionResult ;一次无损 JSON 往返( JSON.parse(JSON.stringify(...)) )保证存下的副本…
View full README on GitHub →Category
DeepSeek Harness: Everything is a Plugin.
★ 201,972
amruthpillai/reactive-resumeA one-of-a-kind resume builder that keeps your privacy in mind. Completely secure, customizable, portable, open-source and free forever. Try it out today!
★ 41,885
freestylefly/awesome-gpt-image-2Prompt as Code | GPT-Image2 工业级提示词引擎与模板库,530+ 个案例逆向工程,20+ 套工业级模板,并提炼出Skills,持续更新中
★ 24,197