把本地 md 文件夹变成可搜索可反查的知识图谱
26/100
综合分
1
GitHub 星标
—
npm 周下载
—/5
用户评分
数据截至 2026/10/7 · 周下载取自 npm 全网(含 CI / 镜像),非本站安装数;综合分由星标、活跃度与兼容性检查合成。
安装命令 · 需先装 dsh CLI 引擎
dsh plugin --profile web add z2hYtwo/dsh-mindanchor该包不可直接 npm 安装,改从 GitHub 源安装(明细见下方安装检查)
状态速览
判定依据:实装验证 · 静态安装检查 · 自动扫描 · 仓库维护状态信任档位:需留意
是什么
dsh 原生插件 · other
安全吗
本站尚未对该插件做风险分级
暂未覆盖,不等同于无风险
还在维护吗
更新放缓:最近一次提交在 77 天前
档位由哪些信号合成
本站实装验证(真实安装 L4 覆盖全站;L5 为运行时冒烟或实机截图,覆盖范围小于 L4) · 验证所用 dsh 版本 · 静态安装检查 · 风险分级 · 仓库维护状态。 下方各区块是它的证据明细。
⚠︎ 实装验证未通过(dependency_conflict · 2026/10/8) ——可能是验证环境差异,装前建议到 GitHub 仓库确认最近更新与 issue。
社区实装还没有人打卡 · 装过的第一个就是你
安全扫描自动 · 静态分析源码v2.7.0🔵 扫描:含敏感能力尚无人工评估展开查看扫描说明与证据 ↓
安全扫描自动 · 静态分析源码
v2.7.0静态扫描发现插件具备触达本地系统的能力:执行外部命令、读写/删除本地文件、读取剪贴板或密钥类环境变量(至少其一)。这是能力清单,不是危险判定——具体能力项与证据见下方,安装前请自行判断是否需要。
读写/删除本地文件
查看扫描证据(共 26 处,展示前 26 条)
- 读取本地文件src/commands/append.ts:59
const mtimeMs = statSync(filePath).mtimeMs - 读取本地文件src/commands/capture.ts:41
const isFresh = !existsSync(filePath) - 读取本地文件src/commands/capture.ts:70
const mtimeMs = statSync(filePath).mtimeMs - 读取本地文件src/commands/doctor.ts:30
const missingDirs = SCAN_DIRS.filter(d => !existsSync(path.join(store.vault, d))) - 读取本地文件src/commands/doctor.ts:82
entries = readdirSync(dir) - 读取本地文件src/commands/doctor.ts:108
entries = readdirSync(dir) - 读取本地文件src/commands/doctor.ts:116
const s = statSync(filePath) - 读取本地文件src/commands/note.ts:69
const mtimeMs = statSync(filePath).mtimeMs - 读取本地文件src/store/edge-io.ts:136
const mtimeMs = statSync(filePath).mtimeMs - 读取本地文件src/store/md-io.ts:54
const raw = readFileSync(filePath, 'utf8') - 读取本地文件src/store/md-io.ts:67
const s = statSync(filePath) - 读取本地文件src/store/md-io.ts:68
const raw = readFileSync(filePath, 'utf8') - 读取本地文件src/store/md-io.ts:131
if (options?.expectedMtimeMs !== undefined && existsSync(filePath)) { - 读取本地文件src/store/md-io.ts:132
const s = statSync(filePath) - 写入本地文件src/store/md-io.ts:141
mkdirSync(dir, { recursive: true }) - 写入本地文件src/store/md-io.ts:144
writeFileSync(tmp, raw, 'utf8') - 写入本地文件src/store/md-io.ts:145
renameSync(tmp, filePath) - 读取本地文件src/store/md-io.ts:155
const s = statSync(filePath, { bigint: true }) - 读取本地文件src/store/sync.ts:167
entries = readdirSync(dir) - 读取本地文件src/store/sync.ts:179
s = statSync(filePath, { bigint: true }) - 读取本地文件src/store/vault.ts:24
if (existsSync(candidate)) { - 读取本地文件src/store/vault.ts:26
if (statSync(candidate).isDirectory()) return candidate - 写入本地文件src/store/vault.ts:43
mkdirSync(vaultPath, { recursive: true }) - 写入本地文件src/store/vault.ts:45
mkdirSync(path.join(vaultPath, d), { recursive: true }) - 读取本地文件src/store/vault.ts:48
if (!existsSync(configPath)) { - 写入本地文件src/store/vault.ts:49
writeFileSync(configPath, DEFAULT_CONFIG_YML, 'utf8')
扫描于 2026/11/4(0 天前) · 范围 入口闭包 + 发布文件清单 · 来源 GitHub 仓库
静态扫描只反映源码中出现的调用,不构成安全背书;人工评估与自动扫描相互独立、互不覆盖。
依赖的 DSH / Cordis 模块
@deepseek-ai/schemastery@deepseek-ai/cordis@deepseek-ai/dsh-agent@deepseek-ai/dsh-session给这个插件打分还没有人投票↓
用户评分
还没有人投票,来当第一个
功能亮点
- md文件夹转知识图谱
- 斜杠命令操作
- 知识可搜索可反查
MindAnchor 是一个 dsh Cordis 插件。它给 dsh 加一组 /mind … 斜杠命令,把用户手动经营的 md 文件夹变成可搜索、可关联、可反查的知识图谱。
README
由 DeepSeek 最新模型翻译生成MindAnchor
装上 dsh 就能用的本地个人知识库插件。Markdown 是唯一事实源,SQLite 只做索引,Obsidian 兼容。
MindAnchor 是 dsh Cordis 插件。它给 dsh 加一组 /mind … 斜杠命令,把你手动经营的 md 文件夹变成可搜索、可关联、可反查的知识图谱。
- 本地优先:所有内容都在你项目下的 .mindanchor/;卸掉插件,md 文件依然是干净的 Obsidian vault
- Human-first:MindAnchor 不推理、不自动召回、不做 embedding;agent 只是 slash 命令背后的确定性执行器
- SQLite 可重建:index.db 只是索引;删掉它跑一次 /mind reindex 就能从 md 完整重建
- 实时索引:文件系统 watcher 监听 vault,md 一变立即刷索引(跨命令、跨编辑器)
1. 是什么 / 不是什么
是:
- dsh 插件,通过 agent/pre-step 拦截 /mind 命令
- Obsidian 风格的本地 markdown 知识库(.mindanchor/{people,projects,concepts,events,daily}/.md)
- SQLite 索引层(全文 + 关系图 + 反向链)
不是:
展开完整文档(README 剩余 1 节)
MindAnchor
装上 dsh 就能用的本地个人知识库插件。Markdown 是唯一事实源,SQLite 只做索引,Obsidian 兼容。
MindAnchor 是 dsh Cordis 插件。它给 dsh 加一组 /mind … 斜杠命令,把你手动经营的 md 文件夹变成可搜索、可关联、可反查的知识图谱。
- 本地优先:所有内容都在你项目下的 .mindanchor/;卸掉插件,md 文件依然是干净的 Obsidian vault
- Human-first:MindAnchor 不推理、不自动召回、不做 embedding;agent 只是 slash 命令背后的确定性执行器
- SQLite 可重建:index.db 只是索引;删掉它跑一次 /mind reindex 就能从 md 完整重建
- 实时索引:文件系统 watcher 监听 vault,md 一变立即刷索引(跨命令、跨编辑器)
1. 是什么 / 不是什么
是:
- dsh 插件,通过 agent/pre-step 拦截 /mind 命令
- Obsidian 风格的本地 markdown 知识库(.mindanchor/{people,projects,concepts,events,daily}/.md)
- SQLite 索引层(全文 + 关系图 + 反向链)
不是:
- 云端知识库(无同步;用你自己的 git / iCloud / Dropbox)
- 语义搜索 / embedding 库(v0.2 有意不做;设计脉络见本地 docs/SPIKE-REPORT.md,未随仓库发布)
- Agent 自主「记住你」的系统(MindAnchor 不在 agent/request 里注入上下文,agent 只在你显式命令时介入)
2. 3 分钟上手
1. 装 dsh CLI(首次约 4 分钟)
npm install @deepseek-ai/dsh@latest
2. 装 MindAnchor(从 npm 或本地 file link)
npm install mindanchor
或本地开发时:npm install file:/path/to/MindAnchor
3. 把 MindAnchor 挂到 dsh profile 详细步骤(含 patch yml + 挂载 + credential 配置)见本地 docs/RUN-VERIFY.md(未随仓库发布)
启动 dsh,进入对话,发送:
/mind init
MindAnchor 在当前目录下建立骨架:
.mindanchor/
├── people/ 人 ├── projects/ 项目 ├── concepts/ 概念 ├── events/ 事件 ├── daily/ 日记 ├── config.yml └── index.db SQLite 索引(可删除,reindex 重建)
接下来试试:
/mind note --type=项目 --name=MindAnchor /mind note --type=人 --name=张三 /mind capture --text="今天开了 MindAnchor 的 kickoff 会" /mind search --q=kickoff /mind backlinks --name=张三
3. 命令表
| 命令 | 说明 |
| /mind init | 初始化 vault(若不存在则创建骨架) |
| /mind note --type=<类型> --name=<名字> [--aliases=<json 数组>] | 新建具名实体,落 <类型>/名字.md |
| /mind capture --text=<文本> [--date=today] | 追写到当日 daily note |
| /mind append --name=<实体名> --text=<文本> | 往已有实体正文追加一段 |
| /mind search --q=<关键词> [--type=<类型>] [--rel=<predicate>:[[<target>]]] [--limit=10] | 三层过滤:全文 + 类型 + 关系 |
| /mind backlinks --name=<名字> | 反查所有指向 <名字> 的入链,按关系分组 |
| /mind reindex | 抹掉索引并从 md 重建;用于外部编辑器改坏 frontmatter 或 watcher 漏事件之后 |
| /mind doctor | 5 项健康检查:骨架完整性、SQLite integrity、悬空边、孤儿 md、索引对齐 |
| /mind extract --text=<文本> [--from=<实体名>] [--apply] | 起 subagent 从文本抽取实体+关系;默认预览,--apply 落新实体 + 写入 source frontmatter 的命名关系边 |
参数风格:命名 flag,支持 --k=v / --k v / --flag(布尔)。值含空格用单双引号包裹(--text="hello world")。
4. 数据边界 —— md 是唯一事实源
- 人读:所有 md 都是标准 Obsidian 风格,可以直接用 Obsidian / VSCode / Typora 打开编辑
- 机读:SQLite index.db 承载 entities / edges / FTS 三张表 + 一个 meta 表
- 一致性:外部编辑器改 md → watcher 触发 → 索引增量更新;watcher 漏事件时下次命令前的惰性 mtime 扫描兜底
- 可携带:把 .mindanchor/.md 拷到另一台机器直接可用;index.db 首次打开时自动重建
4.1 frontmatter 规范
MindAnchor 保留四个键:type / created / updated / aliases。其余键由你自由使用;值形如 "[[X]]" 或 ["[[X]]", ...] 会被解析为命名关系边。
type: 项目 created: 2026-08-17T10:32:00+08:00 updated: 2026-08-17T10:32:00+08:00
aliases: ["MA"]
owner: "[[张三]]" # 命名关系边 owner → 张三
depends: ["[[项目A]]", "[[项目B]]"] # 数组也识别
MindAnchor
正文...
4.2 关系边的三种来源
| 来源 | 语法 | 示例 |
| frontmatter 命名边 | key: "[[X]]" | owner: "[[张三]]" |
| 行内命名边(Logseq 风格) | predicate:: [[X]] | owner:: [[张三]] |
| 正文匿名双链(Obsidian 风格) | [[X]] / [[X\|alias]] / [[X#heading]] | 参见 [[张三]] |
前两种是「结构化关系」,智能体在 backlinks/search 里能按 predicate 反查;正文里的裸 [[X]] 一律记为 refs 边,用于「谁提到了我」的宽松反查。
冲突去重:同一 md 里 owner:: [[X]] 已经记了命名边,正文匿名的 [[X]] 不会再记 refs 边(避免重复)。
5. Obsidian 兼容
MindAnchor 的 vault 就是一个合法 Obsidian vault:
- ✅ Obsidian 可以直接把 .mindanchor/ 或它任一子目录当作 vault 打开
- ✅ 所有 wikilinks(裸、别名、标题)都被 Obsidian 完全支持
- ✅ MindAnchor 生成的 frontmatter 是 Obsidian dataview 兼容的 YAML mapping
- ⚠️ 行内 predicate:: [[X]] 是 Logseq 语法;Obsidian 会当作纯文本显示,不影响读;MindAnchor 会索引它作为命名边
新建条目时,MindAnchor 一律把命名关系写到 frontmatter(不写行内)——避免 Obsidian 用户看到「奇怪的 :: 语法」。
6. 生命周期与安全
Cordis 生命周期:MindAnchor 用 ctx.effect(...) 注册 runtime,fiber unload 时按序:
1. 停 fs watcher
2. 排空所有 vault 的写队列
3. 关闭所有 SQLite handle
写入安全:
- 原子写:tmp 文件 + rename,进程崩溃不会留下半截 md
- 沙箱:拒绝任何解析到 vault 外的 filePath(防路径穿越)
- 乐观并发:capture / append 读 md 时抓 mtime 快照,写盘前比对;外部编辑器同时改了 md → 命令返回「请重试」而不是覆盖
Agent 边界:
- MindAnchor 不注册 agent/request、prompt assembly、session-start
- 不做 embedding、向量检索、自动上下文注入
- 只在 agent/pre-step 拦 /mind …;未命中直接 next()
7. 已知限制
- /mind extract 需要 dsh 运行时 + LLM credential 配好;不能在裸 store 层单独跑(装 + 跑的完整清单见本地 docs/RUN-VERIFY.md,未入库)
- 不支持 - 短 flag、位置参数(一开始就明确选了命名 flag 风格)
- CJK 全文搜索用 trigram + LIKE fallback:3+ 字命中走 FTS5 trigram,< 3 字回退 LIKE 全表扫;大 vault 下短查询会变慢
- Node 20 Linux 上 fs.watch recursive 不支持 —— watcher 静默停止,惰性 mtime 兜底
- extract --from=<name> 只读实体正文(不读 frontmatter);frontmatter 里的边不会被子代理重新抽取
8. 开发
npm install # 装依赖(含 dsh-agent、dsh-session 类型)
npm run typecheck # tsc --noEmit
npm test # vitest run
npm run build # tsc -p tsconfig.build.json → lib/
真跑清单(本地 docs/RUN-VERIFY.md,未随仓库发布)—— 一步步把 dsh + MindAnchor 装起来跑通 9 命令,含 Windows 中文用户名下的 junction 绕行 + credential 配置 + observation checklist。
模块结构见 src/:
- store/ — markdown + SQLite + watcher + write-queue(脱离 dsh 可独立使用)
- parse/ — argv 分词 + slash 命令识别
- commands/ — 8 个命令 handler + schemastery schema
- render/ — 命令结果 → assistant markdown
- runtime.ts — 生命周期绑定的 vault 资源池
- plugin.ts — Cordis apply(ctx)
设计决策的完整脉络:见本地 docs/SPIKE-REPORT.md(含分片 1-6 的摸底 + dsh 契约事实 + 每次决策的理由;此文件未随仓库发布)。
License
MIT预览分享卡片长什么样 ↓
分享 · DeepSeek Harness Hub
z2hYtwo/dsh-mindanchor
把本地 md 文件夹变成可搜索可反查的知识图谱
相关插件 · 其他
模型破甲清洗HunYiSage/dsh-purge
⚔️ DeepSeek Harness 网络安全红队工具dsh-purge
★ 16,993已汉化DeepSeek 客户端
73
女娲蒸馏alchaincyf/nuwa-skill
输入名人名字,提炼其思维模型与决策方式供你调用
★ 37,308已汉化DSH
72
逆向分析桥接Fanqi89/dsh-rea
REA(Reverse Engineer Anything)MCP 桥接,用来把 REA 逆向工具接入 DSH 插件
★ 51已汉化DSH
72
语音女友beiyege-01/dsh-voice-ai-girlfriend
语音 AI 女友Voice AI girlfriend for DeepSeek Harness:Whisper…
★ 888已汉化DSH
71.6
红队越狱测试套件Minglink/dsh-infinite-gen-5
DeepSeek v4.1 flash 逆向工具无限五代 求 Star 收藏 ⭐欢迎大家提交项目的改进
★ 3,759已汉化DSH
71.4
协同办公空间dream-num/univer-workspace
一个让人类与 AI Agent 共同创作、协作和审阅的开源 Office 工作空间。
★ 2,269已汉化DSH
70.8
这是你的仓库?认领条目