---
title: "DSH Wenmai 文脉插件：本地 Markdown 知识库指南"
description: "说明 Wenmai 文脉如何在 DeepSeek Harness 中建立本地 Markdown 知识库，并审计安装、读写范围和卸载边界。"
canonical: https://52dsh.com/plugins/dsh-wenmai-knowledge-base/
authors: ["52DSH 编辑部"]
published_at: 2026-08-21
updated_at: 2026-08-21
verified_on: 2026-08-21
maintenance_status: community
verification_level: source_reviewed
risk_level: medium
---

# DSH Wenmai 文脉插件：本地 Markdown 知识库指南

说明 Wenmai 文脉如何在 DeepSeek Harness 中建立本地 Markdown 知识库，并审计安装、读写范围和卸载边界。

## Wenmai 适合解决什么问题

Wenmai（文脉）是一个面向文字工作者的 DeepSeek Harness 社区插件。它把本地 Markdown 原文复制进只追加的 `raw/` 区域，再由 Agent 整理为带 `[[wikilinks]]` 的概念页、实体页、索引和日志，适合查询“这个选题以前写过没有”、整理成稿以及生成本地关联图。

本文在 2026 年 8 月 22 日审阅了仓库版本 `0.1.0`、MIT 许可证、README、工具定义和文件读写代码。作者文档明确使用 DSH `0.1.0-rc.8`；52DSH 当前上游基线是 `0.1.1-rc.2`，但编辑部没有在该新版本中实际安装，所以不能宣称已兼容 `0.1.1-rc.2`。

| 项目 | 审计结果 |
| --- | --- |
| 分发方式 | GitHub 源码，本次核验时没有同名 npm 包 |
| 插件版本 | `0.1.0` |
| 作者文档使用的 DSH | `0.1.0-rc.8` |
| 许可证 | MIT |
| 默认数据目录 | `~/wenmai` |
| 主要读写 | 当前工作区、额外 `sourceRoots`、文脉目录 |
| 网络依赖 | 插件本身以本地文件为主；模型 Provider 仍可能接收上下文 |
| 编辑验证 | 已审阅源码，未执行安装与端到端验收 |

## 数据是怎样流动的

Wenmai 不是向量数据库，也不会自动抓取网页或解析 PDF。它的主要工作流是：

```text
本地 Markdown 成稿
  → wenmai_ingest 复制到 raw/
  → wenmai_write 编译 concepts/ 与 entities/
  → 更新 index.md 和 log.md
  → wenmai_search / wenmai_read 查询
  → 按需生成 graph.html
```

`raw/` 被设计为原文留档区，插件规则禁止 `wenmai_write` 修改这里。纠错和补充应写进编译页。这个约束便于保留证据链，但它不是操作系统级不可变保护：拥有文件系统权限的其他程序或用户仍然可以修改文件。

## 安装前先固定源码版本

Wenmai 当前通过 GitHub 本地路径安装。为了避免默认分支后续变化，先检出本文审阅的 commit：

```bash
git clone https://github.com/chrislee121/wenmai.git
cd wenmai
git checkout 44e84de0cc2c52a120c1e40b121a543f23f7d934
```

检查 `package.json`、`prepare` 和依赖后再安装构建。仓库的 `prepare` 会执行 TypeScript 编译：

```bash
corepack enable
pnpm install
pnpm test
pnpm build
```

然后把本地目录加入 Web Profile。作者文档使用 DSH `0.1.0-rc.8`：

```bash
npx --yes @deepseek-ai/dsh@0.1.0-rc.8 \
  plugin --profile web add "$(pwd)"

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
```

预期在配置输出中看到 `dsh-wenmai` 层和 `id: wenmai`。不要为了追新而直接把命令改成最新版；应先在独立 Profile 中验证 `0.1.1-rc.2` 的兼容性。

## 第一次初始化

启动 DSH Web UI 后，先在左上角选择一个明确的文稿目录作为工作区。不要选择整个家目录。然后对 Agent 说：

> 用 wenmai_init 初始化文脉，领域是“个人文字工作：文章、脚本、文案和文档”。

初始化后可以检查：

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

预期 `~/wenmai` 中出现 `SCHEMA.md`、`index.md`、`log.md`、`raw/` 以及编译页目录。若机器上没有 `~/wenmai`、但存在旧的 `~/tongjian`，仓库文档说明插件可能沿用旧目录，升级前要先确认实际数据根。

## 三个日常使用场景

### 检查选题是否写过

对 Agent 说：

> 用 wenmai_written 查一下“DSH Telegram 插件”以前写过没有。

`wenmai_written` 会搜索编译页，也会查看当前工作区及额外 `sourceRoots` 中的 Markdown 文件名和标题。它解决的是本地内容防撞，不等于互联网检索。

### 收录一篇成稿

给出明确的本地路径和材料类型：

> 把 `/path/to/article.md` 以 articles 类型 ingest 进文脉，再编译为概念页并更新索引。

推荐顺序是 `ingest`、搜索已有实体或概念、`write`、更新索引并写日志。不要让 Agent 直接修改 `raw/`。

### 生成关联图

```text
/wenmai graph
```

插件会在数据根写出自包含的 `graph.html`。关联图读取编译页的 Wiki 链接，也可以纳入工作区和 `sourceRoots` 中的 Markdown。大型目录应按需生成，不要每轮会话都运行。

## 文件权限与隐私边界

Wenmai 的核心风险不是远程账号，而是本地文件访问范围：

- 默认读取当前 DSH 工作区；
- 可读取配置中的额外 `sourceRoots`；
- 默认写入 `~/wenmai`；
- `wenmai_ingest` 会复制原文；
- `wenmai_write` 会创建或修改编译页、索引和日志；
- `wenmai_graph` 会写出 HTML 并可能调用系统浏览器打开。

不要把 `/Users/你的名字`、整个文档目录或包含客户资料的上级目录加入 `sourceRoots`。插件代码主要在本地处理 Markdown，但 Agent 为了总结、分类或回答问题，可能把读取到的正文发送给当前模型 Provider。本地存储不自动等于数据不会离开电脑。

如果工作区包含隐私、商业秘密或未公开稿件，应先选择本地模型或确认远程 Provider 的数据政策，并使用独立测试副本。更完整的边界说明见[安全工作区指南](/tutorials/safe-agent-workspace/)。

## 如何验收

安装后至少完成以下检查：

1. `--dump-config` 只新增预期的 Wenmai 配置层。
2. `/wenmai status` 显示的数据根和扫描路径正确。
3. 用测试 Markdown 验证 ingest 后原文复制到 `raw/`。
4. `wenmai_write` 拒绝把目标路径写到 `raw/`。
5. `wenmai_lint` 能报告断链、孤儿页和原文哈希漂移，但不自动修改。
6. 未配置的目录不能被 `wenmai_written` 或 `wenmai_search` 扫描。
7. 生成的 `graph.html` 不包含测试范围之外的文件名和内容。

52DSH 尚未完成这些运行测试，因此本文不能作为生产兼容保证。

## 卸载为什么不会删除知识库

使用作者文档对应的 Profile 卸载：

```bash
npx --yes @deepseek-ai/dsh@0.1.0-rc.8 \
  plugin --profile web remove dsh-wenmai
```

卸载后重新运行 `--dump-config`，确认配置层消失。仓库明确说明卸载插件不会删除 `~/wenmai` 数据，这有利于回滚，也意味着敏感原文和编译页仍然留在磁盘。需要清理时应先备份、确认真实数据根，再单独处理，不能把“插件已卸载”当作“数据已删除”。

如果你的需求更偏向会话记忆而不是成稿编译，应先比较其他 LLM Wiki 实现，不要只根据名称相似就重复安装多个能扫描同一目录的插件。

## 原始来源

- https://x.com/ChrisLee207/status/2090851372061319632
- https://github.com/chrislee121/wenmai/tree/44e84de0cc2c52a120c1e40b121a543f23f7d934
- https://github.com/chrislee121/wenmai/blob/44e84de0cc2c52a120c1e40b121a543f23f7d934/README.md
- https://github.com/deepseek-ai/deepseek-harness/blob/dsh-v0.1.0-rc.8/apps/cli/README.zh.md
