BuddyBridge Deep

approved

by BuddyBridge

An unofficial bridge for DeepSeek Harness via the Agent Client Protocol (ACP): multi-turn chat, streaming responses, thinking blocks and tool calls. - This plugin has not been manually reviewed by Obsidian staff.

36 downloadsUpdated 21d agoMIT

BuddyBridge Deep

第三方 Obsidian 插件 · 通过 ACP 桥接 DeepSeek Harness (DSH) Unofficial Obsidian plugin · Bridges DeepSeek Harness via ACP

在 Obsidian 里直接和 DeepSeek Harness 对话:流式回复、思考过程、工具调用、多轮会话,并自动复用 DSH Web 的 API Key 与地址,开箱即用。

Chat with DeepSeek Harness inside Obsidian — streaming replies, thinking blocks, tool calls, multi-turn sessions, and zero-config reuse of your DSH Web API key & base URL.


功能 Features

功能Features
流式聊天面板(停止 / 重试)Streaming chat with stop / retry
可折叠思考块与工具调用卡Collapsible thinking blocks & tool-call cards
每对话一个 DSH 会话,多轮上下文连贯One DSH session per conversation, multi-turn context
上下文注入:笔记路径 / 全文 / Vault 根路径(可开关)Context injection: note path / full content / vault root (toggles)
工具调用权限弹窗Permission modal for tool calls
断链自动重连(指数退避)Auto-reconnect with exponential backoff
双语界面(简体中文 / English,跟随 Obsidian)Bilingual UI (zh / en, follows Obsidian)
自动读取 DSH Web 凭据与地址,零配置Auto-reads DSH Web API key & base URL — no manual setup
会话分叉 / 附加笔记 / 上下文占用指示Fork conversations / attach notes / context usage meter
设置与聊天记录导出 / 导入Export / import settings & chat history
一键后端配置脚本One-click backend setup script

安装 Installation

1. 前置:DeepSeek Harness + ACP profile

本插件通过标准 ACP (Agent Client Protocol) stdio JSON-RPC 与 DSH 通信,需要本机已安装 DeepSeek Harnessdsh)并装配 ACP profile。

已装 dsh 的用户可一键装配(推荐):

powershell -ExecutionPolicy Bypass -File scripts/setup-acp.ps1

脚本会自动安装配套的 @deepseek-ai/dsh-acp-demo~/.dsh/profiles/acp、编译 koffi 原生库并生成 cordis.yml,最后打印实际启动命令,形如:

node C:\Users\<you>\.dsh\profiles\acp\node_modules\@deepseek-ai\dsh-acp-demo\lib\bin.js -c C:\Users\<you>\.dsh\profiles\acp\cordis.yml

注意:dsh --profile acp 不会加载 ACP 服务器——demo 包不是 profile bundle,必须用上面的独立 bin 命令。

2. 安装插件本体

  1. 复制 main.js / manifest.json / styles.css<你的Vault>/.obsidian/plugins/buddybridge-deep/
  2. Obsidian 设置 → 第三方插件 → 开启「BuddyBridge Deep」
  3. 设置页 →「DSH ACP 命令」填好启动命令 → 点「诊断连接」验证

配置 Configuration

设置 → BuddyBridge Deep:

说明Setting
DSH ACP 命令启动 ACP stdio 服务器的命令ACP start command
DeepSeek API Key留空自动读取 DSH Web(~/.dsh/.credentials.yaml)Auto-read from DSH Web when empty
DeepSeek Base URL留空自动读取 DSH Web(~/.dsh/settings.yaml),如火山方舟Auto-read from DSH Web when empty
请求超时单次请求超时秒数Request timeout
上下文注入笔记路径 / 全文 / Vault 根路径开关Context injection toggles
外观主色调 / 字体大小Primary color / font size
界面语言简体中文 / English / 跟随 ObsidianLanguage
管理最大对话数 / 导出 / 导入 / 重置Max conversations / export / import / reset

零配置凭据:DSH Web 已能对话的话,插件会直接复用它的 API Key 与 Base URL(读 ~/.dsh/.credentials.yaml~/.dsh/settings.yaml),无需在插件里重复填写。

开发 Development

npm install          # 安装依赖
npm run build        # tsc 类型检查 + esbuild 打包 → main.js
npm test             # jest:239 个用例(含 ACP 客户端端到端集成测试),80% 覆盖率门禁
npm run dev          # 监听模式(esbuild --watch)

独立冒烟脚本(不依赖 Obsidian):

node scripts/acp-smoke.mjs --command "dsh --profile acp" --cwd "C:\your\vault"

架构 Architecture

src/
├── core/                # 共享抽象层:bridge-adapter / stream-chunk / vault-tools
│   ├── dsh-env.ts       # DSH 全局 .env 读写(~/.dsh/.env)
│   └── dsh-shared.ts    # 自动读取 DSH Web 凭据与地址(credentials.yaml / settings.yaml)
├── bridges/deep/        # DeepSeek 适配层:ACP JSON-RPC stdio 客户端 + 命令解析
├── chat/manager.ts      # 会话管理
├── settings/            # 设置页、确认/权限弹窗、诊断、一键后端配置
├── views/chat.ts        # 聊天视图(流式、思考/工具块、错误卡重试)
├── context.ts / io.ts   # 上下文注入 / 导出导入
└── main.ts              # 插件入口

已知限制 Known Limitations

  • 官方 @deepseek-ai/dsh-acp 自动化仅支持 fresh sessions:无 session/load / session/list / session/fork(插件重载后每对话新建会话)。
  • 权限「始终允许」依赖服务器是否提供 allow_always 选项(官方默认仅 allow-once / reject-once)。
  • 思考过程是否可见取决于 ACP 服务器是否发送 agent_thought_chunk

License

MIT

For plugin developers

Search results and similarity scores are powered by semantic analysis of your plugin's README. If your plugin isn't appearing for searches you'd expect, try updating your README to clearly describe your plugin's purpose, features, and use cases.