把随手记和待办写进工作区的 Markdown 文件里:/ml 加一句话就记进当天日志;待办分三种——截止日、睡到某天自动唤醒、随时;/ml view 打几个字母就能模糊打开任意文件。全程零 token,不经过大模型;笔记就是普通的本地文件,git 和任何编辑器都能直接用。
安装
# GitHub 源码(首次需按提示配置 allowBuilds 构建授权后重试)
dsh plugin --profile web add github:warmwine/dsh-memoryleak
装任何插件都等于在你的机器上跑第三方代码,权限和你本人一样大——能读你的文件、用你的凭据、访问网络,工具审批管不到它。GitHub 来源的插件还会在安装时执行构建脚本。请只安装可信来源,并尽量锁定 commit(github:owner/repo#sha)。
README
MemoryLeak:本地知识库/笔记本插件,数据模型优先、格式可扩展。 好记性不如烂笔头,有了memoryleak你就不会memoryleak 实现大量工具对知识库和本地笔记本进行管理,本地文件优先
更新历史见 CHANGELOG.md
这是什么
MemoryLeak 是 DeepSeek Harness(DSH)的记事本插件:把「随手记一笔」和「结构化待办」放进你的工作区本身(Markdown 文件),而不是某个应用的数据库里。绝大多数操作都是斜杠命令——不经过 LLM,零 token,毫秒级。
核心场景:
- 记一笔:
/ml 修好了登录页的样式—— 写进工作区根目录的日志(2026-08-16.md)或周志(2026W33.md)的## MemoryLeak模块 - 待办管理:
/ml todo add(固定表单选类型/优先级)→/ml todo list(sleep 型到日自动唤醒)→/ml todo d 3(按序号完成)/u(撤销) - 快速查看:
/ml view <片段>模糊匹配打开任意工作区文件;手动输入时输入框上方弹实时候选卡(↑↓/Tab/Enter,VSCode Ctrl+P 手感)
命令与入口一览
| 命令 / 入口 | 作用 | token 消耗 |
|---|---|---|
/ml help(或 h) |
命令一览:全部命令与效果的汇总说明(命令菜单里的注册描述也导向这里) | 0 |
/ml <文本> |
记一笔:写入工作区根目录的日志/周志 ## MemoryLeak 模块(不存在则按模板新建文件) |
0(命令面,不过模型) |
/ml view [文件名片段](或 v) |
快速查看:无参数 = 当前日志/周志;带片段 = VSCode Ctrl+P 风格模糊匹配工作区文件(唯一强匹配直接打开,多候选列出供加长片段消歧) | 0 |
手动输入 /ml view <片段> |
实时候选卡:输入框上方弹出过滤候选(焦点留在输入框,打字即过滤),当前日志/周志默认置顶(标「· 当前」),↑↓ 切换高亮、Tab 补全文件名进草稿、Enter 直接打开高亮项、Esc 关闭 | 0 |
命令菜单选中 /ml |
快速打开面板(popupSelect):同款候选卡,弹窗内搜索、Enter 打开 | 0 |
/ml todo add <文本>(或 n) |
加结构化待办:固定格式提问类型(deadline/sleep/anytime)与重要程度(紧急/中等/低),deadline/sleep 再问日期;写入日志/周志的 ## Todo 模块(建在 ## MemoryLeak 之后) |
0(提问为固定表单,不过模型) |
/ml todo list(或 l) |
扫描当前工作区 Markdown 待办(默认过滤可在设置改),默认隐藏未唤醒的 sleep 型,按文件分组返回;到日的 sleep 自动唤醒(源文件转写为 active)并显示 ☀ 计数;每条带序号,供 d <n> 寻址 |
0(命令面,不过模型) |
/ml todo list all / open / done |
同上,指定状态;all 同时包含未唤醒的 sleep 型 |
0 |
/ml todo list <关键词> |
同上,按关键词过滤(大小写不敏感,可与状态词组合) | 0 |
/ml todo d <n>(或 done <n>) |
切换最近一次 l 结果中第 n 条的完成态(序号是 l 作用域的;未 l 先报错提示) | 0 |
/ml todo u(或 undo) |
撤销最近一次 d(可连续撤销,LIFO;d 之后该行被外部修改则拒绝撤销) |
0 |
/ml todo |
省略操作默认 l,等价 /ml todo l |
0 |
| 设置窗口「MemoryLeak」分区 | 读写扫描扩展名、排除目录、上限、默认过滤词、日志模式与模板(/api/memoryleak/* HTTP 路由) |
0 |
日志与待办的文件格式
日志/周志(按设置的「日志模式」选择):
start: 2026-08-10 ← 仅周志模板默认带(ISO 周一起止)
end: 2026-08-16
## MemoryLeak ← /ml <文本> 的记录区(无则自动创建)
- 上午重构了扫描器
- 下午修了候选卡错位
## Todo ← /ml todo add 的落点(永远在 MemoryLeak 之后)
- [ ] (ml:deadline 2026-09-01 urgent) 完成设计稿
- [ ] (ml:sleep 2026-12-01 low) 学一遍内部源码
- [ ] (ml:anytime medium) 整理收藏夹
- [x] (ml:active low) 复盘一次上线
结构化待办四种类型(## Todo 模块内,/ml todo 系列的读写契约):
| 类型 | 日期 | 行为 |
|---|---|---|
deadline |
必填 | 固定截止日,列表徽章 [截止 2026-09-01·紧急] |
sleep |
必填 | 唤醒日前 list 默认隐藏;到日(含当天)自动唤醒 |
anytime |
无 | 随时记录,徽章 [随时·中等] |
active |
无 | sleep 唤醒后的落盘形态(list 时源文件转写,三重校验防误写),徽章 [唤醒·低] |
优先级:urgent(紧急)/ medium(中等)/ low(低)。属性块损坏的行自动降级为普通待办(不丢数据)。
安装(本机 DSH)
dsh plugin --profile web add link:<本仓库路径>
# 重启 dsh web 后生效;卸载:dsh plugin --profile web remove dsh-memoryleak
安装 (Github)
dsh plugin --profile web add github:warmwine/dsh-memoryleak
# 重启 dsh web 后生效;卸载:dsh plugin --profile web remove dsh-memoryleak
架构一览
src/core/ 纯域(零依赖,vitest 直测)
errors.js Typed errors + let-it-crash invariant
todo-item.js Value Object:构造即校验、构造即冻结(含 meta)
formats/ Strategy:markdown-checkbox + memoryleak-todo(结构化)
registry.js Registry:注册期契约校验 + priority + 可逆注册
filter.js Specification:TodoQuery(status/text/today/sleep 谓词)
fuzzy.js 模糊匹配:子序列评分 DP + resolveViewTarget 四态解析
journal.js 日志/周志:ISO 周、模板渲染、模块插入、行切换/替换(纯函数)
file-source.js Port:FileSource 契约(DIP)
walk-policy.js 共享遍历策略(node/memory 同语义)
scan.js 扫描器:Registry + FileSource → 冻结的 ScanReport
render.js 渲染器:TUI 文本(命令卡片)+ JSON(AI 预留契约)
command.js /ml 文法(journal/todo/view/help 四家族)+ renderMlHelp
src/adapters/ node(真实 fs)/ memory(测试·预览)双适配器
src/settings-schema.js schemastery schema + 默认值(settings.yaml 段)
src/journal.js 宿主胶水:定位/读建/写回、唤醒转写、行切换、文件清单
src/routes.js /api/memoryleak/* 同源 JSON 桥(settings/formats/files)
src/index.js 宿主半:组装根(/ml 命令、设置命名空间、路由)
src/client.js 浏览器半:设置窗口 + 命令卡片展开视图 + 实时候选卡
设计模式与 let-it-crash 故障分级见 docs/DEVELOPMENT.md。
开发
pnpm install
pnpm test # vitest 全量(240 个)
pnpm run test:watch
- 纯域零依赖直测;适配器跑真实 tmpdir;宿主半用伪 ctx 端到端
- 回归守卫:宿主源码所有
ctx.<service>访问逐一断言在 inject 声明中(Guard 缺口桩测不出,静态锁死) - 每个 bug 一个回归测试;提交信息
<scope>: <what>
为 AI 预留的接缝(已就位、暂未启用)
- 新待办格式 = 新
TodoFormatStrategy,注册即生效,扫描器零改动; - 结构化消费 =
renderTodoJson(report, query)的稳定 JSON 契约; - 结构化过滤 =
TodoQuery(action/status/text/limit/today)数据模型。
已知行为
新会话 blank 状态(DSH 上游设计,非本插件缺陷):发出第一条 LLM 消息前会话不挂载对话时间线——此时执行 /ml,结果不会立即显示(官方 /plan、/goal 同样如此);发出第一条消息后,历史命令卡片随时间线补显。命令事件已持久化,不会丢失。
License
MIT
链接
同类插件
superdesigndev/treg★ 425
给 Agent 的工具目录:按「要做的事」检索约 2,600 个外部接口(SEO 与 SERP、外链、社交、人物与公司信息补全、广告库、抓取),查看参数与单次调用价格后直接调用,凭据由服务端注入。附带技能,MCP 行在未设置 TREG_TOKEN 前保持禁用。
Lum1104/dsh-browser★ 198
Chrome 侧边栏扩展,让 DSH 直接操控你的浏览器,无需视觉能力。
zhaoolee/notes★ 142
将 DSH 对话导出为锤子便签风格 PNG,或在配置的账号工作区中新建和更新 Markdown 便签。
liustack/modsearch★ 111
纯文本 agent 的联网搜索桥:搜索网页与 X,返回结构化 JSON 证据(search/fetch/引用)。
taxueseek/argo★ 91
专为 agent 打造的搜索工具:多语言,覆盖中文/英文/学术/代码/购物/金融/新闻/百科。
Vladimir-Human/ru-marketplace-mcp#dsh★ 63
面向俄罗斯十家电商平台的技能与可选 MCP 行:跨 Wildberries、Detsky Mir、Yandex Market 比价,以及各平台的搜索、商品卡与评论。安装后 13 个技能立即可用;两行 MCP 默认关闭,需将 RU_MARKETPLACE_MCP_DIR 指向本地克隆,该克隆需要 Python 3.12+ 与 uv。