@qiqiangvae/dsh-obsidian 0.1.0 → 0.1.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.en.md +127 -0
- package/README.md +74 -53
- package/package.json +2 -1
package/README.en.md
ADDED
|
@@ -0,0 +1,127 @@
|
|
|
1
|
+
# dsh-obsidian
|
|
2
|
+
|
|
3
|
+
[](https://www.npmjs.com/package/@qiqiangvae/dsh-obsidian)
|
|
4
|
+
[](LICENSE)
|
|
5
|
+
|
|
6
|
+
Self-organizing AI second brain for Obsidian, as a single [DeepSeek Harness](https://github.com/deepseek-ai/deepseek-harness) plugin.
|
|
7
|
+
|
|
8
|
+
Published on npm as [`@qiqiangvae/dsh-obsidian`](https://www.npmjs.com/package/@qiqiangvae/dsh-obsidian).
|
|
9
|
+
|
|
10
|
+
[中文](./README.md) | English
|
|
11
|
+
|
|
12
|
+
Targets parity with [AgriciDaniel/claude-obsidian](https://github.com/AgriciDaniel/claude-obsidian) (MIT).
|
|
13
|
+
Built on the LLM Wiki pattern (Andrej Karpathy).
|
|
14
|
+
Merged fork of `dsh-plugin-wiki-skills` + `dsh-plugin-wiki-tools` — see [`ATTRIBUTION.md`](./ATTRIBUTION.md).
|
|
15
|
+
|
|
16
|
+
## Why this exists
|
|
17
|
+
|
|
18
|
+
The two upstream DSH plugins were great but:
|
|
19
|
+
|
|
20
|
+
1. **DSH is in active development and breaks the public cordis API often.**
|
|
21
|
+
When that happens, the two plugins stop loading. The original maintainer
|
|
22
|
+
updates at a slower cadence than the framework.
|
|
23
|
+
2. **Splitting skills and tools is good architecture but bad UX for one person.**
|
|
24
|
+
You almost always want both.
|
|
25
|
+
|
|
26
|
+
So: one plugin, versioned together, with a clear upgrade path to v2.x features
|
|
27
|
+
(see [`PORTING_PLAN.md`](./PORTING_PLAN.md)).
|
|
28
|
+
|
|
29
|
+
## Install
|
|
30
|
+
|
|
31
|
+
Prerequisites:
|
|
32
|
+
|
|
33
|
+
- DSH 0.x or newer (with `dsh plugin` CLI), Node ≥ 22.19
|
|
34
|
+
- An Obsidian vault somewhere on disk
|
|
35
|
+
|
|
36
|
+
### From npm (recommended)
|
|
37
|
+
|
|
38
|
+
```bash
|
|
39
|
+
# 1. Add the plugin
|
|
40
|
+
dsh plugin --profile web add @qiqiangvae/dsh-obsidian
|
|
41
|
+
|
|
42
|
+
# 2. Set your vault path in your profile's cordis.patch.yml
|
|
43
|
+
# (~/.dsh/profiles/web/cordis.patch.yml)
|
|
44
|
+
#
|
|
45
|
+
# - id: dsh-obsidian
|
|
46
|
+
# config:
|
|
47
|
+
# vaultPath: /absolute/path/to/your/obsidian/vault
|
|
48
|
+
# # optional:
|
|
49
|
+
# # typeFolders: { domain: "wiki/areas" }
|
|
50
|
+
# # maxQueryResults: 10
|
|
51
|
+
#
|
|
52
|
+
# 3. Restart DSH
|
|
53
|
+
dsh web
|
|
54
|
+
|
|
55
|
+
# 4. (optional) Scaffold a fresh vault
|
|
56
|
+
# In DSH: run the wiki_scaffold tool with { template: "default", apply: true }
|
|
57
|
+
```
|
|
58
|
+
|
|
59
|
+
To pin a specific version:
|
|
60
|
+
|
|
61
|
+
```bash
|
|
62
|
+
dsh plugin --profile web add @qiqiangvae/dsh-obsidian@0.1.0
|
|
63
|
+
```
|
|
64
|
+
|
|
65
|
+
### From GitHub
|
|
66
|
+
|
|
67
|
+
```bash
|
|
68
|
+
dsh plugin --profile web add github:qiqiangvae/dsh-obsidian
|
|
69
|
+
```
|
|
70
|
+
|
|
71
|
+
> **Why the scoped name?** The unscoped `dsh-obsidian` is already taken on npm
|
|
72
|
+
> by an unrelated vault-filesystem plugin ([mingzeng21/dsh-obsidian](https://github.com/mingzeng21/dsh-obsidian)).
|
|
73
|
+
> This package is published as `@qiqiangvae/dsh-obsidian` to avoid the collision.
|
|
74
|
+
|
|
75
|
+
### From a local checkout (while developing)
|
|
76
|
+
|
|
77
|
+
```bash
|
|
78
|
+
git clone git@github.com:qiqiangvae/dsh-obsidian.git
|
|
79
|
+
cd dsh-obsidian
|
|
80
|
+
pnpm install # for dev dependencies (typescript, @types)
|
|
81
|
+
pnpm run build # compiles src/ → lib/
|
|
82
|
+
dsh plugin --profile web add link:$(pwd)
|
|
83
|
+
```
|
|
84
|
+
|
|
85
|
+
## What you get
|
|
86
|
+
|
|
87
|
+
### Tools (registered on `ctx.tools`)
|
|
88
|
+
|
|
89
|
+
| Tool | What it does |
|
|
90
|
+
| ---- | ------------ |
|
|
91
|
+
| `wiki_query` | BM25 search with snippet + link graph; quick mode returns hot + index verbatim |
|
|
92
|
+
| `wiki_write` | One-page write with type-routing, frontmatter completion, index/log bookkeeping, source-hash delta skip |
|
|
93
|
+
| `wiki_lint` | Health check: duplicates, dead links, orphans, frontmatter gaps, empty sections, stale index/hot |
|
|
94
|
+
| `wiki_scaffold` | Initialize the LLM Wiki layout (dry-run by default) |
|
|
95
|
+
| `wiki_rename` | Rename a page with machinery protection |
|
|
96
|
+
| `wiki_list` | List all page titles |
|
|
97
|
+
|
|
98
|
+
### Skills (registered on `ctx.skills`)
|
|
99
|
+
|
|
100
|
+
From the Lion-1209 v1 suite:
|
|
101
|
+
|
|
102
|
+
- `wiki` — vault scaffolding and routing
|
|
103
|
+
- `wiki-ingest` — capture sources into the vault
|
|
104
|
+
- `wiki-query` — answer from the vault with citations
|
|
105
|
+
- `wiki-lint` — health-check workflow
|
|
106
|
+
- `save` — file conversation insights
|
|
107
|
+
- `think` — 10-principle reasoning loop
|
|
108
|
+
|
|
109
|
+
Plus reference skills from kepano (Obsidian Flavored Markdown, Bases) and
|
|
110
|
+
DSH-flavoured extensions:
|
|
111
|
+
|
|
112
|
+
- `obsidian-markdown`, `obsidian-bases`, `json-canvas`, `defuddle`, `obsidian-cli`
|
|
113
|
+
|
|
114
|
+
## Develop
|
|
115
|
+
|
|
116
|
+
```bash
|
|
117
|
+
pnpm install
|
|
118
|
+
pnpm run build # tsc → lib/
|
|
119
|
+
pnpm test # node --test test/
|
|
120
|
+
```
|
|
121
|
+
|
|
122
|
+
Edit code under `src/`, build to `lib/`, restart DSH. To hot-reload during
|
|
123
|
+
development, also run `pnpm run dev:web` from the DSH checkout.
|
|
124
|
+
|
|
125
|
+
## License
|
|
126
|
+
|
|
127
|
+
MIT. See [`LICENSE`](./LICENSE) and [`ATTRIBUTION.md`](./ATTRIBUTION.md).
|
package/README.md
CHANGED
|
@@ -1,92 +1,113 @@
|
|
|
1
1
|
# dsh-obsidian
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
[](https://www.npmjs.com/package/@qiqiangvae/dsh-obsidian)
|
|
4
|
+
[](LICENSE)
|
|
4
5
|
|
|
5
|
-
|
|
6
|
-
Built on the LLM Wiki pattern (Andrej Karpathy).
|
|
7
|
-
Merged fork of `dsh-plugin-wiki-skills` + `dsh-plugin-wiki-tools` — see [`ATTRIBUTION.md`](./ATTRIBUTION.md).
|
|
6
|
+
把 Obsidian 变成「自组织 AI 第二大脑」的 [DeepSeek Harness](https://github.com/deepseek-ai/deepseek-harness) 单插件。
|
|
8
7
|
|
|
9
|
-
|
|
8
|
+
在 npm 上发布为 [`@qiqiangvae/dsh-obsidian`](https://www.npmjs.com/package/@qiqiangvae/dsh-obsidian)。
|
|
10
9
|
|
|
11
|
-
|
|
10
|
+
中文 | [English](./README.en.md)
|
|
12
11
|
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
2. **Splitting skills and tools is good architecture but bad UX for one person.**
|
|
17
|
-
You almost always want both.
|
|
12
|
+
对标 [AgriciDaniel/claude-obsidian](https://github.com/AgriciDaniel/claude-obsidian)(MIT),
|
|
13
|
+
基于 LLM Wiki 模式(Andrej Karpathy)。
|
|
14
|
+
合并了 `dsh-plugin-wiki-skills` + `dsh-plugin-wiki-tools` 两个上游插件——详见 [`ATTRIBUTION.md`](./ATTRIBUTION.md)。
|
|
18
15
|
|
|
19
|
-
|
|
20
|
-
(see [`PORTING_PLAN.md`](./PORTING_PLAN.md)).
|
|
16
|
+
## 为什么做这个
|
|
21
17
|
|
|
22
|
-
|
|
18
|
+
两个上游 DSH 插件都很棒,但有几个问题:
|
|
23
19
|
|
|
24
|
-
|
|
20
|
+
1. **DSH 正在快速迭代,经常破坏公开的 cordis API。** 一旦破坏,两个插件就停止加载,而原维护者的更新节奏跟不上框架。
|
|
21
|
+
2. **把 skills 和 tools 拆成两个插件,架构上没错,但对个人使用不友好。** 你几乎总是两个都要。
|
|
25
22
|
|
|
26
|
-
|
|
27
|
-
|
|
23
|
+
所以:合成一个插件、统一版本,并提供清晰的 v2.x 升级路线
|
|
24
|
+
(见 [`PORTING_PLAN.md`](./PORTING_PLAN.md))。
|
|
25
|
+
|
|
26
|
+
## 安装
|
|
27
|
+
|
|
28
|
+
前置条件:
|
|
29
|
+
|
|
30
|
+
- DSH 0.x 或更新(带 `dsh plugin` CLI),Node ≥ 22.19
|
|
31
|
+
- 磁盘上有一个 Obsidian vault
|
|
32
|
+
|
|
33
|
+
### 从 npm 安装(推荐)
|
|
28
34
|
|
|
29
35
|
```bash
|
|
30
|
-
# 1.
|
|
31
|
-
dsh plugin --profile web add
|
|
36
|
+
# 1. 添加插件
|
|
37
|
+
dsh plugin --profile web add @qiqiangvae/dsh-obsidian
|
|
32
38
|
|
|
33
|
-
# 2.
|
|
39
|
+
# 2. 在你 profile 的 cordis.patch.yml 里配置 vault 路径
|
|
34
40
|
# (~/.dsh/profiles/web/cordis.patch.yml)
|
|
35
41
|
#
|
|
36
42
|
# - id: dsh-obsidian
|
|
37
43
|
# config:
|
|
38
44
|
# vaultPath: /absolute/path/to/your/obsidian/vault
|
|
39
|
-
# #
|
|
45
|
+
# # 可选:
|
|
40
46
|
# # typeFolders: { domain: "wiki/areas" }
|
|
41
47
|
# # maxQueryResults: 10
|
|
42
48
|
#
|
|
43
|
-
# 3.
|
|
49
|
+
# 3. 重启 DSH
|
|
44
50
|
dsh web
|
|
45
51
|
|
|
46
|
-
# 4.
|
|
47
|
-
#
|
|
52
|
+
# 4. (可选)初始化一个全新 vault
|
|
53
|
+
# 在 DSH 里运行 wiki_scaffold 工具,参数 { template: "default", apply: true }
|
|
48
54
|
```
|
|
49
55
|
|
|
50
|
-
|
|
56
|
+
锁定某个具体版本:
|
|
57
|
+
|
|
58
|
+
```bash
|
|
59
|
+
dsh plugin --profile web add @qiqiangvae/dsh-obsidian@0.1.0
|
|
60
|
+
```
|
|
61
|
+
|
|
62
|
+
### 从 GitHub 安装
|
|
63
|
+
|
|
64
|
+
```bash
|
|
65
|
+
dsh plugin --profile web add github:qiqiangvae/dsh-obsidian
|
|
66
|
+
```
|
|
67
|
+
|
|
68
|
+
> **为什么是 scoped 包名?** 非 scoped 的 `dsh-obsidian` 已被另一个无关的
|
|
69
|
+
> vault 文件系统插件([mingzeng21/dsh-obsidian](https://github.com/mingzeng21/dsh-obsidian))
|
|
70
|
+
> 占用。本包以 `@qiqiangvae/dsh-obsidian` 发布以避免撞名。
|
|
71
|
+
|
|
72
|
+
### 从本地代码安装(开发时)
|
|
51
73
|
|
|
52
74
|
```bash
|
|
53
75
|
git clone git@github.com:qiqiangvae/dsh-obsidian.git
|
|
54
76
|
cd dsh-obsidian
|
|
55
|
-
pnpm install #
|
|
56
|
-
pnpm run build #
|
|
77
|
+
pnpm install # 开发依赖(typescript、@types)
|
|
78
|
+
pnpm run build # 编译 src/ → lib/
|
|
57
79
|
dsh plugin --profile web add link:$(pwd)
|
|
58
80
|
```
|
|
59
81
|
|
|
60
|
-
##
|
|
82
|
+
## 你能得到什么
|
|
61
83
|
|
|
62
|
-
###
|
|
84
|
+
### 工具(注册在 `ctx.tools`)
|
|
63
85
|
|
|
64
|
-
|
|
|
65
|
-
| ---- |
|
|
66
|
-
| `wiki_query` | BM25
|
|
67
|
-
| `wiki_write` |
|
|
68
|
-
| `wiki_lint` |
|
|
69
|
-
| `wiki_scaffold` |
|
|
70
|
-
| `wiki_rename` |
|
|
71
|
-
| `wiki_list` |
|
|
86
|
+
| 工具 | 作用 |
|
|
87
|
+
| ---- | ---- |
|
|
88
|
+
| `wiki_query` | BM25 检索,返回片段 + 链接图;quick 模式直接返回 hot + index |
|
|
89
|
+
| `wiki_write` | 单页写入,含 type 路由、frontmatter 补全、index/log 记账、source-hash 去重跳过 |
|
|
90
|
+
| `wiki_lint` | 健康检查:重复、死链、孤儿页、frontmatter 缺失、空章节、失效 index/hot |
|
|
91
|
+
| `wiki_scaffold` | 初始化 LLM Wiki 目录结构(默认 dry-run) |
|
|
92
|
+
| `wiki_rename` | 重命名页面(含机器页保护) |
|
|
93
|
+
| `wiki_list` | 列出所有页面标题 |
|
|
72
94
|
|
|
73
|
-
###
|
|
95
|
+
### 技能(注册在 `ctx.skills`)
|
|
74
96
|
|
|
75
|
-
|
|
97
|
+
来自 Lion-1209 v1 套件:
|
|
76
98
|
|
|
77
|
-
- `wiki` — vault
|
|
78
|
-
- `wiki-ingest` —
|
|
79
|
-
- `wiki-query` —
|
|
80
|
-
- `wiki-lint` —
|
|
81
|
-
- `save` —
|
|
82
|
-
- `think` — 10
|
|
99
|
+
- `wiki` — vault 脚手架与路由
|
|
100
|
+
- `wiki-ingest` — 把来源捕获进 vault
|
|
101
|
+
- `wiki-query` — 带引用地从 vault 回答问题
|
|
102
|
+
- `wiki-lint` — 健康检查工作流
|
|
103
|
+
- `save` — 归档对话洞察
|
|
104
|
+
- `think` — 10 原则推理循环
|
|
83
105
|
|
|
84
|
-
|
|
85
|
-
DSH-flavoured extensions:
|
|
106
|
+
外加 kepano 的参考技能(Obsidian Flavored Markdown、Bases)与 DSH 风格扩展:
|
|
86
107
|
|
|
87
|
-
- `obsidian-markdown
|
|
108
|
+
- `obsidian-markdown`、`obsidian-bases`、`json-canvas`、`defuddle`、`obsidian-cli`
|
|
88
109
|
|
|
89
|
-
##
|
|
110
|
+
## 开发
|
|
90
111
|
|
|
91
112
|
```bash
|
|
92
113
|
pnpm install
|
|
@@ -94,9 +115,9 @@ pnpm run build # tsc → lib/
|
|
|
94
115
|
pnpm test # node --test test/
|
|
95
116
|
```
|
|
96
117
|
|
|
97
|
-
|
|
98
|
-
|
|
118
|
+
在 `src/` 下改代码,构建到 `lib/`,重启 DSH。开发期间想热更新,再在 DSH
|
|
119
|
+
checkout 里跑 `pnpm run dev:web`。
|
|
99
120
|
|
|
100
|
-
##
|
|
121
|
+
## 许可证
|
|
101
122
|
|
|
102
|
-
MIT
|
|
123
|
+
MIT。见 [`LICENSE`](./LICENSE) 与 [`ATTRIBUTION.md`](./ATTRIBUTION.md)。
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@qiqiangvae/dsh-obsidian",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.1",
|
|
4
4
|
"description": "Self-organizing AI second brain for Obsidian, as a single DeepSeek Harness plugin. Merged fork of dsh-plugin-wiki-skills + dsh-plugin-wiki-tools, targeting parity with claude-obsidian.",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "index.js",
|
|
@@ -22,6 +22,7 @@
|
|
|
22
22
|
"cordis.patch.yml",
|
|
23
23
|
"skills/",
|
|
24
24
|
"README.md",
|
|
25
|
+
"README.en.md",
|
|
25
26
|
"LICENSE",
|
|
26
27
|
"ATTRIBUTION.md"
|
|
27
28
|
],
|