Skills Plugins MCP Prompt Model 导航 博客 资讯 我的中心

wenmai

文脉 Wenmai —— 文字工作者的编译型知识库,DeepSeek Harness 插件

chrislee121 @chrislee121 ⬇ 1 ★ 3 main

安装

dsh plugin --profile web add github:chrislee121/wenmai
下载安装清单

需要可复现安装时,可在仓库后追加 #commit 固定提交。

文脉 Wenmai —— 文字工作者的编译型知识库,DeepSeek Harness 插件

该插件未提供要点说明,请参考仓库 README。

  1. 安装并启动 DeepSeek Harness:npx @deepseek-ai/dsh web
  2. 在终端执行上面的安装命令(CLI 会解析插件并核验来源)
  3. 用 dsh plugins list 确认已安装,必要时重启 Harness 生效

插件以当前 dsh 进程的权限运行,安装时可能执行代码。请先通读仓库源码与许可证,确认无破坏性命令与越权访问;本站只做索引,不对第三方插件安全性作担保。

代码仓库github.com/chrislee121/wenmai
许可证MIT
主要语言main
下载量1
GitHub 星标3
最近推送2026-08-24
收录日期2026-09-19
分类会话与消息

事实信息来自公开插件目录快照(2026-10-01),介绍文案由本站再加工。

以下为插件仓库 README 全文(原始内容,由公开目录抓取整理)。

# 文脉 Wenmai

当前版本:**v0.2.0**

把写过的东西织成可查的文脉。

面向文字工作者:写文章、做自媒体、写视频脚本、写文案、写课程、写工作文档的人。DeepSeek Harness 插件。不依赖 Hermes,不用向量库,也不会把每一轮闲聊写进笔记。

本地就是一套 Markdown 目录,可用 Obsidian 打开。

## 它解决什么

文字工作越做越多,真正的问题往往不是「搜不到网上资料」,而是:

- 这个选题我写过没有?
- 脚本、文案、文章是不是各写各的,互相打架?
- 聊天里刚整理过的结论,下一轮又要重新发现一遍?

文脉把**你已经写过的原文**收进 `raw/`,再编译成互相链接的概念页。Agent 开局只读 SCHEMA、目录和最近日志,而不是每轮做一遍 RAG。

适用材料包括:公众号/博客/推文、视频脚本与口播稿、广告与社媒文案、课程讲义、SOP 与会议纪要、以及其它工作文档。

## 和其他开源项目有何不同

npm 上已经有通用 wiki 插件。文脉不和它们抢「Agent 记忆」这件事:

| | 文脉 Wenmai | EveGoodEvening llmwiki | chancelu llmwiki | Hermes llm-wiki |
|---|---|---|---|---|
| 用户是谁 | 文字工作者、自媒体、脚本/文案/文档作者 | 要可追溯证据的 Agent | 要会话记忆的 Agent | Karpathy 式通用 wiki Agent |
| 核心问题 | 这个选题我写过没有? | 这条结论从哪条源来? | 上一轮聊过什么? | 怎么维护一本可链接的 wiki |
| 写入从哪来 | 主动 ingest 成稿/素材 | `add_source` + 证据链 | 可 autoCapture 对话 | Agent 编译对话与资料 |
| 目录长什么样 | `entities/` `concepts/` 等人可读页 | `sources//` | vault + chronicle | 类似三层 wiki |
| 开局怎么用 | 只注入 SCHEMA + index + log 尾 | 偏检索/证据 | 每轮检索注入 | 按会话维护 |
| 杀手功能 | `wenmai_written`:写过没有 | 源 ID 必须真实存在 | RRF 多路召回 | 完整 Agent 运行时 |
| 运行时 | 轻量 DSH 插件 | DSH 插件 | DSH 插件 | Hermes(更重) |

一句话:**文脉不是又一个 Agent 记忆插件,而是文字工作者的「选题防撞 + 成稿编译」知识库。**

## 怎么开始用

### 1. 安装插件

需要 Node.js 22.19+(或 24+)。已在 DeepSeek Harness `0.1.0-rc.8` 上测过。

本机若没有 `dsh` 命令:

```sh
npx --yes @deepseek-ai/dsh@0.1.0-rc.8 plugin --profile web add dsh-wenmai
npx --yes @deepseek-ai/dsh@0.1.0-rc.8 --profile web --dump-config
npx --yes @deepseek-ai/dsh@0.1.0-rc.8 web
```

已安装 CLI 时:

```sh
dsh plugin --profile web add dsh-wenmai
dsh --profile web --dump-config
dsh web
```

`dump-config` 里应出现 `dsh-wenmai` 层和 `id: wenmai`。浏览器打开 。

从源码开发时,仍可用本地路径:`dsh plugin --profile web add /path/to/wenmai`。

默认数据目录是 `~/wenmai`。若该目录还不存在、但本机已有 `~/tongjian`,会自动沿用旧目录。卸载插件不会删除文脉数据:

```sh
dsh plugin --profile web remove dsh-wenmai
```

### 2. 选工作区

在 Web UI 左上角选一个本地文件夹作为工作区。未选中时输入框是灰色的,这是 DeepSeek Harness 本身的限制,与文脉无关。

工作区就是你的文稿目录:选中后,`wenmai_written` 默认扫描这个工作区。不必再手写 `sourceRoots`。

### 3. 额外原文目录(可选)

默认已经够用。只有工作区之外还有别的文稿仓时,才需要加路径。

**让 Agent 配:**

> 用 wenmai_config 把 `~/Documents/scripts` 加成额外原文目录

会写入文脉库里的 `source-roots.json`。也可以让 Agent `remove` 或 `set`(逗号分隔,空字符串清空额外目录)。当前会话工作区始终在扫描列表里。

**或写在插件配置里**(profile 的 `cordis.patch.yml`,按 `id` 整行替换,不会深合并):

```yaml
- id: wenmai
  config:
    root: '~/wenmai'
    sourceRoots:
      - '~/Documents/writing/scripts'
    orientBudgetChars: 8000
```

- `root`:文脉数据根,默认 `~/wenmai`
- `sourceRoots`:额外扫描根,叠加在会话工作区之上
- 不要把家目录整盘配进去

改 TypeScript 后执行 `pnpm build` 并重启 `dsh web`。

### 4. 初始化

对新库说一句:

> 用 wenmai_init 初始化文脉,领域是「个人文字工作:文章、脚本、文案、文档」。

或在输入框用斜杠命令看状态:先输入 `/wenmai` 选中命令,再补参数发送。

```text
/wenmai status
/wenmai lint
/wenmai orient
```

### 5. 日常三件事

对 Agent 直接说人话即可,不必自己拼工具参数。

**查有没有写过**

> 用 wenmai_written 查一下「某某选题」我写过没有

**收录一篇成稿**

> 把这篇 ingest 进文脉,再编译成概念页:
> `/path/to/your/draft.md`

**收录整个文稿目录(先 dry-run)**

> 用 wenmai_ingest 扫一下 `~/Documents/writing`,先 dry-run 看会收哪些文件

确认清单后再说「dryRun 设成 false」。只落 `raw/`,不会自动写概念页。一次最多 600 篇;更多就拆目录再收。

流程:`ingest` 只复制到 `raw/`(之后不可改)→ `write` 写 `concepts/` 或 `entities/` → 更新 `index.md` 和 `log.md`。

按材料类型指定 `kind`(对应 `raw/` 子目录):

| kind | 放什么 |
|---|---|
| `articles` | 文章、博客、推文长文 |
| `scripts` | 视频脚本、口播稿、分镜 |
| `docs` | 工作文档、SOP、会议纪要、讲义 |
| `transcripts` | 录音/成片转写 |
| `papers` | 论文、白皮书、长研究 |
| `workspace` | 草稿、素材、未分类 |
| `assets` | 附件说明 |

**查阅**

> 在文脉里搜关键词,读一下 `concepts/某个概念.md`

## 和 AI Agent 怎么用

文脉是 DeepSeek Harness 插件:你在 Web UI 里跟 Agent 说话,Agent 调下面的工具读写 `~/wenmai`。开局会注入 SCHEMA、目录和最近日志,**不必每轮做一遍 RAG**。

### Agent 开局会看到什么

会话开始时插件会注入一段「文脉定向」:

- `SCHEMA.md`:领域、frontmatter、标签、何时建页
- `index.md`:现有实体 / 概念 / 对比 / 查询
- `log.md` 尾部:最近写入

所以 Agent 先读这份定向,再决定要不要 `wenmai_status` / `wenmai_search`。你也可以 `/wenmai orient` 再看一遍。

### 你怎么下指令

用自然语言点名工具,或只说目标。例如:

| 你想做的事 | 可以这样说 |
|---|---|
| 看库在不在、有多少页 | 「看一下文脉状态」 |
| 第一次建库 | 「用 wenmai_init 初始化,领域是……」 |
| 选题防撞 | 「这个选题我写过没有?」 |
| 收录成稿 | 「把这篇 ingest 再编译成概念页:`/绝对路径/draft.md`」 |
| 收录整个目录 | 「先 dry-run 扫一下这个文稿目录会 ingest 哪些文件」 |
| 查概念 | 「在文脉里搜 xxx,读一下对应概念页」 |
| 体检 | 「对文脉跑一遍 lint」 |
| 看关联 | 「生成关联图并打开」 |
| 加原文目录 | 「用 wenmai_config 把 `~/Documents/scripts` 加成额外原文目录」 |

斜杠命令适合你自己点:`/wenmai` 再补 `status` / `lint` / `orient` / `graph`。复杂读写仍走对话里的工具。

### Agent 必须遵守的规则

把这些当作给 Agent 的站规(插件 system prompt 里也有):

1. **「写过没有」必须走 `wenmai_written`**,不要凭训练记忆或闲聊印象回答。
2. **`raw/` 只进不出**:`wenmai_ingest` 之后原文不可改;纠错写在 `concepts/` / `entities/` 等编译页。
3. **`wenmai_write` 禁止写 `raw/`**。新编译页要有 YAML frontmatter,至少 2 个 `[[wikilinks]]`,并视情况 `updateIndex` + 写 log。
4. **lint 只报告不自动修**。要修再用 `wenmai_write`。
5. **不扫描家目录**。默认只扫当前会话工作区;额外路径由你确认,或 `wenmai_config` / 插件 `sourceRoots`。
6. **不编造 sources 路径**,不负责抓网页或解析 PDF。有正文之后再 ingest。
7. **关联图按需生成**,不要每轮都跑 `wenmai_graph`。

### 推荐工作流

**查询 / 选题防撞**

1. 看开局定向里的 index
2. `wenmai_written`(编译页 + 工作区文件名/标题)
3. 需要细节再 `wenmai_search` → `wenmai_read`
4. 基于编译页作答,引用 `[[页面]]`

**收录一篇**

1. `wenmai_ingest`(文件路径或粘贴正文 + `kind`)
2. 在 index / 已有页里查有没有对应实体或概念
3. `wenmai_write` 创建或更新编译页
4. `updateIndex: true`,并写一条 log

**收录一批**

1. `wenmai_ingest` 带 `dir`,默认 dry-run
2. 看清单,用户确认后 `dryRun: false`
3. 需要编译的页再逐篇 `wenmai_write`,不要整批自动编译

**体检**

1. `wenmai_lint`:缺 frontmatter、断链、孤儿页、raw 哈希漂移
2. 只改编译页,不改 `raw/`

更短的操作说明在包内 `skills/wenmai/SKILL.md`,可复制或软链到 DSH 的 skills 扫描目录。

也可用 Obsidian 直接打开 `~/wenmai`。

## 目录

```text
~/wenmai/
├── SCHEMA.md
├── index.md
├── log.md
├── raw/                 # 不可变
│   ├── articles/
│   ├── scripts/
│   ├── docs/
│   ├── papers/
│   ├── workspace/
│   ├── transcripts/
│   └── assets/
├── entities/
├── concepts/
├── comparisons/
├── queries/
└── graph.html            # 关联图,用浏览器打开
```

## 关联图

类似 Obsidian 的知识图谱:文脉编译页的 `[[wikilinks]]`,加上当前工作区 / sourceRoots 里的 Markdown 文章(按目录成簇,并识别 wiki 链接和相对 `.md` 链接)。

在 DSH 里:

```text
/wenmai graph
```

或对 Agent 说:

> 用 wenmai_graph 生成关联图并打开

会在文脉根目录写出 `graph.html`(例如 `file:///Users/你/wenmai/graph.html`)。浏览器里可拖拽、缩放、搜索;左上角可切换 **力导向** / **目录簇**。局部图可以带 `focus`(页面 slug)和 `depth`。

## 斜杠命令

在 DSH 输入框输入 `/wenmai`,再补子命令:

| 命令 | 作用 |
|---|---|
| `/wenmai` 或 `/wenmai status` | 是否已初始化、编译页/原文数量、sourceRoots 是否可读 |
| `/wenmai lint` | 只读体检,输出错误和警告数 |
| `/wenmai orient` | 重新读取并展示开局定向(SCHEMA + index + 近期 log) |
| `/wenmai graph` | 生成 `graph.html` 并用系统浏览器打开 |
| `/wenmai graph ` | 以某页为中心生成局部图 |

## 工具

Agent 在对话里调用的工具如下。参数未写的表示可省略。

| 工具 | 做什么 | 主要参数 |
|---|---|---|
| `wenmai_status` | 库是否已初始化、编译页/原文数量、当前会扫哪些 sourceRoots | 无 |
| `wenmai_init` | 按领域创建目录树,以及 `SCHEMA.md` / `index.md` / `log.md` | **`domain`**(必填):这个库覆盖什么 |
| `wenmai_ingest` | 把文件、粘贴文本或整个目录复制进 `raw/`,之后不可改。编译是下一步 `write`。目录模式默认 dry-run | 单篇:`filePath` 和/或 `content`;`title`。目录:`dir`(必须在工作区或 sourceRoots 内);`dryRun`(默认 true)。`kind`(`articles` / `scripts` / `docs` / `papers` / `workspace` / `transcripts` / `assets`) |
| `wenmai_written` | 选题防撞:搜编译页标题/正文,以及工作区、额外 sourceRoots 里的文件名和标题 | **`query`**(必填);`limit`(默认 20) |
| `wenmai_search` | 在文脉库内做词法搜索(编译页 + `raw/`) | **`query`**(必填);`limit`(默认 20) |
| `wenmai_read` | 按相对路径读文脉根下的文件,例如 `concepts/foo.md` | **`path`**(必填);`offset`(从第几行);`limit`(读多少行) |
| `wenmai_write` | 写编译页(YAML + Markdown)。**拒绝写入 `raw/`** | **`path`**、**`content`**(必填);`log`(追加到 `log.md`);`updateIndex`(是否把 `[[slug]]` 写入 index) |
| `wenmai_lint` | 只读体检:孤儿页、断掉的 `[[wikilinks]]`、缺 frontmatter、raw sha256 漂移。不自动修复 | 无 |
| `wenmai_config` | 查看或改额外原文目录。当前会话工作区始终在扫描列表里,改的是「额外」项,写入库内 `source-roots.json` | `add` 增加一条;`remove` 删一条;`set` 整表替换(逗号分隔,空字符串清空额外目录) |
| `wenmai_graph` | 根据编译页 `[[wikilinks]]`、工作区/sourceRoots 里的 Markdown、标签和 sources 生成关联图,写出 `graph.html` | `focus`、`depth`(默认 2);`includeTags` / `includeSources` / `includeMissing` / `includeArticles`(默认都为 true);`open`(macOS 下用系统浏览器打开) |

## 开发

```sh
pnpm install
pnpm test
pnpm build
```

端到端验收(使用仓库内示例文稿,不读取你的私人目录):

```sh
pnpm accept
```

## 许可

MIT

数据来源:公开的 DeepSeek Harness 插件目录与各插件 GitHub 仓库。本站为独立第三方目录,与 DeepSeek、幻方(High-Flyer)及插件作者均无隶属或背书关系。

每日精选 Skill 推荐,免费送到你邮箱

输入邮箱,每天接收一个精选 AI Agent 技能推荐。完全免费,持续更新。

提交后我们会发送一封确认邮件,点击邮件里的链接才会开始收信。

完全免费,取消任意时间。我们不会发送垃圾邮件。