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 | 系统:macOS(Apple Silicon / ARM64) |
检查环境:
1 | which node |
Node.js 最初为 Homebrew 安装的 v25.2.1,通过以下命令升级:
1 | brew update |
Node.js 26 在本次安装和运行中没有出现兼容性问题,因此没有回退版本。
使用 npx 首次启动
DeepSeek 官网提供的快速体验命令为:
1 | npx @deepseek-ai/dsh web |
首次运行时确认下载软件包。安装完成后,终端会打印类似下面的地址,并自动打开系统默认浏览器:
1 | dsh web: http://127.0.0.1:3080/?token=<认证令牌> |
其中:
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 已提供内置网页浏览器,无需安装社区插件。
操作步骤:
打开“设置”;
进入“核心插件”;
启用“网页浏览器”;
在 Obsidian 网页浏览器中打开终端打印的完整 token 地址,完成首次认证;
将网页浏览器主页设置为:
1
http://127.0.0.1:3080/
以后打开 Obsidian 网页浏览器,即可直接进入 DeepSeek Harness。
需要注意:Obsidian 网页浏览器只是 Web UI 的客户端,不负责启动 Harness 服务。如果认证状态失效,再使用终端当次打印的完整 token 地址认证一次即可。
配置 DeepSeek 模型
进入 Harness Web UI 后:
- 打开“设置 → 模型”;
- 输入 DeepSeek API Key;
- 保存配置;
- 创建会话并进行测试。
API Key 不应写入 Obsidian 笔记、Shell 历史或准备发布到博客的配置示例中。
将启动命令缩短为 dsh web
为了避免每次输入完整的 npx 命令,可以全局安装 Harness。本次安装使用固定版本,并仅授权它所需的安装脚本:
1 | npm install -g @deepseek-ai/dsh@0.1.5-rc.1 \ |
安装完成后验证:
1 | which dsh |
预期结果:
1 | /opt/homebrew/bin/dsh |
--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 添加为工作区。