Bundle
dsh-obsidian-inbox
Obsidian knowledge-base ingest workflow as a DeepSeek Harness plugin: a bundled skill provider + an obsidian_validate_vault model tool, all declarative and composable.
- Source
- Leo3-7
- License
- MIT
- Updated
- Updated 2 days ago
Readme
# obsidian-inbox
> **English / 英文**: [README.en.md](README.en.md)
> [](https://www.npmjs.com/package/dsh-obsidian-inbox) · `dsh-obsidian-inbox` · [GitHub](https://github.com/Leo3-7/dsh-obsidian-inbox)
把 DeepSeek Harness(DSH)对话里值得长期保存的结论、解释、错题、想法,按一套确定性的流程整理进 Obsidian 知识库的 DSH **技能(skill)**。
## 这是什么
一个面向 DSH 的 `SKILL.md` 技能,规定了「整理入库」的七步标准流程,核心原则:
- **检索优先于归档**:写库前先按文件名 / aliases / 链接 / frontmatter / MOC 检索,已存在的就直接合并。
- **合并优先于新建**:只做局部编辑、只更新 `updated`,不整篇覆盖、不生成副本。
- **只提炼长期价值**:不保存完整聊天、密码令牌、临时噪音。
- **一个主归属**:每个知识只进一个主目录,跨领域用链接和标签表达。
- **两级确定性校验**:公式(`$`/`$$`、拒绝 `\(`/`\[`)+ 结构与 Wiki 链接(`.obsidian` JSON、`[[Link]]` 目标、同名歧义),**校验不通过不宣布「已入库」**。
## 目录结构
这是一个 **DSH 插件(`dsh.bundle` skill-pack)**,可安装进任意 profile:
```
dsh-obsidian-inbox/
├── package.json # dsh.bundle → cordis.patch.yml;main → lib/index.js
├── lib/
│ ├── index.js # 插件本体:注册 bundled 技能 + obsidian_validate_vault 工具
│ └── validate.js # 两级确定性校验逻辑(插件所有,工具/复用同一实现)
├── cordis.patch.yml # 激活该插件(insert 一行)
├── skills/obsidian-inbox/
│ └── SKILL.md # 技能说明(DSH 加载的入口)
├── README.md / README.en.md
├── LICENSE
└── .gitignore
```
> 一切能力都由插件提供:技能经 `ctx.skills` 注册为 `bundled` provider,校验经 `ctx.tools` 注册为模型工具 `obsidian_validate_vault`,vault 路径由插件 `Config.defaultVault` 声明式配置——没有散落的裸脚本或硬编码路径。
## 在 DSH 里使用
**方式 A:npm 安装(推荐,已发布到 npm)**
```bash
dsh plugin --profile web add dsh-obsidian-inbox
# 或按你的实际 profile 名调整:dsh plugin --profile <name> add dsh-obsidian-inbox
```
**方式 B:GitHub 源码安装(备选)**
```bash
dsh plugin --profile web add https://github.com/Leo3-7/dsh-obsidian-inbox
```
**方式 C:直接把技能目录拷进 DSH 的技能目录**
```bash
# 把 skills/obsidian-inbox/ 放到 $DSH_HOME/skills/ 下,或加到
# skill-filesystem 的 customSkillDirs
```
任一种安装后,插件都会把 `skills/obsidian-inbox/` 注册为 `bundled` 技能,模型目录里即可看到;库校验走 `obsidian_validate_vault` 工具。
在会话里说触发词即可触发,例如:**「整理入库」「保存这个结论」「记录为错题」「记录为项目」「更新已有笔记」**。
## 配置 / 个性化
本技能是作者个人的整理流程,有**环境相关**的两处需要按你自己的库修改:
- **vault 路径**:由插件 `Config.defaultVault` 决定(默认空,需设为你的库路径);用 `obsidian_validate_vault` 校验时可传 `vault` 参数覆盖。
- **主目录分类**:`00_收件箱 / 01_考研 / 02_AI与编程 / 03_智能制造 / 04_项目 / 05_想法 / 06_错题 / 07_对话精华` —— 换成你自己的目录结构。
## 校验(插件工具)
校验是插件暴露的**模型工具 `obsidian_validate_vault`**(不是 shell 脚本),在对话里调用即可:
```text
obsidian_validate_vault # 用插件配置 defaultVault(需先设为你的库路径)
obsidian_validate_vault (vault: "...") # 校验指定 vault
```
返回 `{ ok, noteCount, problems }`,`ok=false` 时逐条列出公式 / JSON / Wiki 链接 / 同名歧义问题。实现集中在 `lib/validate.js`,工具与(可选)CLI 复用同一份逻辑。
退出码:`0` = 通过;`1` = 发现问题(会逐条列出公式 / JSON / Wiki 链接 / 同名歧义问题)。
## 依赖
- Node.js `>= 18`(`node:fs`、`node:path` 为内置模块,无第三方依赖)。
- 目标为一个 Obsidian vault(含 `.obsidian` 配置目录,`walk` 会跳过 `.obsidian / .dsh / node_modules / .git`)。
## 许可证
[MIT](LICENSE) © Leo3-7
Install
dsh plugin --profile web add github:Leo3-7/dsh-obsidian-inbox
Profile: web
With the hub plugin installed, ask your agent to install it by name — it resolves the same plan shown here.
dsh plugin --profile web add github:stvlynn/dsh.fish#path:packages/dsh-plugin-hub
install dsh-obsidian-inbox from the hub
- This source has no pinned commit, so a later push upstream changes what installs. Prefer pinning a commit.