Obsidian集成DSH

将 DeepSeek Harness 集成到 Obsidian

本文记录 DeepSeek Harness 的安装、认证、工作区配置及 Obsidian 内嵌过程。最终效果是在 Obsidian 中直接打开 Harness Web UI,让 Agent 读取和修改选定工作区中的 Markdown 文件。

本文实测 DeepSeek Harness 版本为 0.1.5-rc.1。它仍处于开发者预览阶段,后续版本可能调整命令和配置格式。

DeepSeek Harness 是什么

DeepSeek Harness,简称 DSH,不是大模型本身,而是一套 Agent 运行框架。它把模型与文件系统、Shell、工具、技能、会话记录、存储和 Web UI 连接起来,使模型能够在真实项目目录中持续工作。

它采用“一切皆插件”的架构。模型、工具、会话、沙箱、存储和界面等能力均可由插件组合,因此 DeepSeek 模型只是其中一种可配置的模型来源。

对 Obsidian 用户而言,它最直接的用途是:将 Obsidian Vault 作为工作区,让 Agent 直接整理、创建和修改其中的 Markdown 笔记。

环境信息

本次实测环境:

1
2
3
4
系统:macOS(Apple Silicon / ARM64)
Node.js:v26.8.2
npm:11.19.1
DeepSeek Harness:0.1.5-rc.1

检查环境:

1
2
3
which node
node -v
npm -v

Node.js 最初为 Homebrew 安装的 v25.2.1,通过以下命令升级:

1
2
brew update
brew upgrade node

Node.js 26 在本次安装和运行中没有出现兼容性问题,因此没有回退版本。

使用 npx 首次启动

DeepSeek 官网提供的快速体验命令为:

1
npx @deepseek-ai/dsh web

首次运行时确认下载软件包。安装完成后,终端会打印类似下面的地址,并自动打开系统默认浏览器:

1
2
dsh web: http://127.0.0.1:3080/?token=<认证令牌>
dsh web: opening the default browser; pass --no-open to disable

其中:

  • 127.0.0.1 表示服务运行在本机;
  • 3080 是默认端口;
  • token 是本次 Web UI 的认证凭证;
  • 终端进程必须保持运行,关闭终端或按 Control + C 后服务会停止。

npx 首次下载后会使用本地缓存,后续启动通常不会完整重复下载。不过它仍需输入较长的完整命令,因此后面改用全局安装。

Web UI 的 token 认证

第一次启动时,浏览器需要通过带 token 的完整地址完成认证:

1
http://127.0.0.1:3080/?token=<认证令牌>

如果在另一个浏览器中直接访问:

1
http://127.0.0.1:3080/

可能看到:

1
dsh web authentication required; reopen the URL printed by dsh web.

这是因为不同浏览器不会共享认证状态。只需从终端复制当次启动打印的完整 URL,在新浏览器中完成一次认证。认证成功后,该浏览器通常就能继续通过基础地址访问。

token 相当于本地 Web UI 的访问凭证,不应公开分享。

工作区的含义

在 Web UI 中可以添加并选择工作区。本次先创建了一个名为 dsh-web 的测试目录,避免测试过程影响其他文件。

工作区可以理解为 Agent 当前处理的项目目录:

  • Agent 可以读取、创建和修改其中的文件;
  • Shell 命令通常以该目录作为工作环境;
  • 不同目录产生的会话会按工作区归类;
  • 选择 Obsidian Vault 后,Agent 可以直接操作其中的 Markdown 文件。

工作区不等于聊天记录目录。提问、回答、工具调用和运行轨迹由 Harness 的会话系统单独持久化,默认保存在 ~/.dsh/sessions/ 下,并按照工作区路径分类。只有 Agent 明确创建或修改的项目文件才会出现在工作区中。

因此,Harness 不会自动把每次对话转换成 Obsidian 笔记。需要在提示词中明确要求它创建或更新某个 Markdown 文件。

Web UI 支持启动后添加和选择工作区,所以从哪个目录启动并不是核心问题。真正需要确认的是当前选中的工作区,避免 Agent 误操作其他文件。

在 Obsidian 中嵌入 Harness

Obsidian 已提供内置网页浏览器,无需安装社区插件。

操作步骤:

  1. 打开“设置”;

  2. 进入“核心插件”;

  3. 启用“网页浏览器”;

  4. 在 Obsidian 网页浏览器中打开终端打印的完整 token 地址,完成首次认证;

  5. 将网页浏览器主页设置为:

    1
    http://127.0.0.1:3080/

以后打开 Obsidian 网页浏览器,即可直接进入 DeepSeek Harness。

需要注意:Obsidian 网页浏览器只是 Web UI 的客户端,不负责启动 Harness 服务。如果认证状态失效,再使用终端当次打印的完整 token 地址认证一次即可。

配置 DeepSeek 模型

进入 Harness Web UI 后:

  1. 打开“设置 → 模型”;
  2. 输入 DeepSeek API Key;
  3. 保存配置;
  4. 创建会话并进行测试。

API Key 不应写入 Obsidian 笔记、Shell 历史或准备发布到博客的配置示例中。

将启动命令缩短为 dsh web

为了避免每次输入完整的 npx 命令,可以全局安装 Harness。本次安装使用固定版本,并仅授权它所需的安装脚本:

1
2
npm install -g @deepseek-ai/dsh@0.1.5-rc.1 \
--allow-scripts="@deepseek-ai/dsh-subprocess-local,koffi,node-pty,@google/genai,protobufjs"

安装完成后验证:

1
2
which dsh
dsh --version

预期结果:

1
2
/opt/homebrew/bin/dsh
0.1.5-rc.1

--allow-scripts 允许列出的依赖执行安装脚本,其中包含终端和本地子进程所需的原生组件。安装脚本能够以当前用户权限执行代码,因此本文采用“固定版本 + 单次授权”,不设置永久白名单,也不使用 sudo

安装过程中出现下面的提示不影响使用:

1
npm warn deprecated node-domexception@1.0.0

它来自 Harness 的间接依赖,只能等待上游更新,无需手动处理。

启动时不自动打开系统浏览器

全局安装完成后,使用:

1
dsh web --no-open

--no-open 会启动本地 Web 服务,但不会自动打开系统默认浏览器。随后直接在 Obsidian 网页浏览器中访问:

1
http://127.0.0.1:3080/

停止服务:

1
Control + C

会话归档

Harness 中的“归档对话”主要用于整理会话列表:

  • 对话内容和运行记录仍然保留;
  • 不会删除工作区文件;
  • 不会撤销 Agent 已执行的文件修改或命令;
  • 归档会话不会自动成为新会话的上下文;
  • 需要时可以从归档区域重新查看或恢复。

归档不是删除,也不会把对话自动导出为 Markdown 文件。

最终使用流程

每次使用前,在终端运行:

1
dsh web --no-open

然后在 Obsidian 中打开网页浏览器即可。

正式接入个人知识库前,建议继续使用 dsh-web 测试工作区,重点确认:

  • Agent 的文件读取范围是否符合预期;
  • 创建和修改 Markdown 是否需要审批;
  • 文件命名与目录规则是否适合现有 Vault;
  • 修改错误时能否通过文件恢复或 Git 回滚;
  • API Key、会话日志和私人笔记之间的边界是否清晰。

验证完成后,再把实际 Obsidian Vault 添加为工作区。

参考资料