让模型读写 Obsidian 笔记,侧栏直连对话
31.5/100
综合分
2
GitHub 星标
—
npm 周下载
—/5
用户评分
数据截至 2026/10/8 · 周下载取自 npm 全网(含 CI / 镜像),非本站安装数;综合分由星标、活跃度与兼容性检查合成。
自动兼容检查有告警:未发布到 npm registry,仅可从源码安装;安装清单取自 dsh-plugin/package.json。
安装命令 · 需先装 dsh CLI 引擎
dsh plugin --profile web add kubulo/crisp-dsh该包不可直接 npm 安装,改从 GitHub 源安装(明细见下方安装检查)
状态速览
判定依据:实装验证 · 静态安装检查 · 自动扫描 · 仓库维护状态信任档位:需留意
是什么
dsh 原生插件 · other
安全吗
本站尚未对该插件做风险分级
暂未覆盖,不等同于无风险
还在维护吗
活跃:最近一次提交在 27 天前
档位由哪些信号合成
本站实装验证(真实安装 L4 覆盖全站;L5 为运行时冒烟或实机截图,覆盖范围小于 L4) · 验证所用 dsh 版本 · 静态安装检查 · 风险分级 · 仓库维护状态。 下方各区块是它的证据明细。
⚠︎ 实装验证未通过(unknown · 2026/10/30) ——可能是验证环境差异,装前建议到 GitHub 仓库确认最近更新与 issue。
社区实装还没有人打卡 · 装过的第一个就是你
安装兼容性检查⚠ 装前注意未发布到 npm registry,仅可从源码安装;安装清单取自 dsh-plugin/package.json
展开查看检查明细 ↓
以下结论由程序自动检查 npm 包、engines 声明与入口文件得出,未做人工实机验证——能装不等于用着没问题。
✗npm 包dsh-crip(未发布到 npm,仅可源码安装)
✓Node 引擎要求 ^22.19 || >=24 · 基线 Node 22.19 满足
✓dsh CLI 依赖未声明 dsh 版本约束
✓入口文件main/exports/bin 已声明
验证方式:npm registry 存在性 + package.json 静态校验 · 最后检查 2026/10/11 22:15:15
安全扫描自动 · 静态分析源码v2.7.0🔵 扫描:含敏感能力尚无人工评估展开查看扫描说明与证据 ↓
安全扫描自动 · 静态分析源码
v2.7.0静态扫描发现插件具备触达本地系统的能力:执行外部命令、读写/删除本地文件、读取剪贴板或密钥类环境变量(至少其一)。这是能力清单,不是危险判定——具体能力项与证据见下方,安装前请自行判断是否需要。
读写/删除本地文件写入剪贴板(不计风险)发起外部网络请求
查看扫描证据(共 31 处,展示前 29 条)
- 读取本地文件dsh-plugin/lib/index.js:63
entries = await readdir(dirAbs, { withFileTypes: true }) - 读取本地文件dsh-plugin/lib/index.js:125
const info = await stat(base).catch(() => undefined) - 读取本地文件dsh-plugin/lib/index.js:153
const info = await stat(abs).catch(() => undefined) - 读取本地文件dsh-plugin/lib/index.js:157
const body = await readFile(abs, 'utf8') - 读取本地文件dsh-plugin/lib/index.js:208
body = await readFile(abs, 'utf8') - 读取本地文件dsh-plugin/lib/index.js:254
const existing = await stat(abs).catch(() => undefined) - 写入本地文件dsh-plugin/lib/index.js:256
await mkdir(dirname(abs), { recursive: true }) - 写入本地文件dsh-plugin/lib/index.js:258
await writeFile(abs, body, mode === 'append' && existing ? { flag: 'a' } : 'utf8') - 读取本地文件obsidian-plugin/composer-focus.dom.cjs:19
const source = fs.readFileSync(path.join(__dirname, 'main.js'), 'utf8') - 读取本地文件obsidian-plugin/main.js:82
if (!fs.existsSync(p)) continue - 读取本地文件obsidian-plugin/main.js:83
const text = fs.readFileSync(p, 'utf8') - 发起网络请求obsidian-plugin/main.js:167
const req = http.get({ - 写入剪贴板obsidian-plugin/main.js:364
await navigator.clipboard.writeText(payload) - 写入剪贴板obsidian-plugin/main.js:675
await navigator.clipboard.writeText(link) - 读取本地文件obsidian-plugin/rail-toggle.dom.cjs:16
const source = fs.readFileSync(path.join(__dirname, 'main.js'), 'utf8') - 读取本地文件obsidian-plugin/selfcheck.cjs:144
const source = fs.readFileSync(path.join(__dirname, 'main.js'), 'utf8') - 读取本地文件obsidian-plugin/token-autodetect.test.cjs:35
if (fs.existsSync(REAL_TMP_LOG)) { - 读取本地文件obsidian-plugin/token-autodetect.test.cjs:36
tmpLogBackup = fs.readFileSync(REAL_TMP_LOG, 'utf8') - 删除本地文件obsidian-plugin/token-autodetect.test.cjs:37
fs.rmSync(REAL_TMP_LOG) - 写入本地文件obsidian-plugin/token-autodetect.test.cjs:42
if (tmpLogBackup !== null) fs.writeFileSync(REAL_TMP_LOG, tmpLogBackup) - 读取本地文件obsidian-plugin/token-autodetect.test.cjs:65
const source = fs.readFileSync(file, 'utf8') - 写入本地文件obsidian-plugin/token-autodetect.test.cjs:82
fs.mkdirSync(logDir, { recursive: true }) - 写入本地文件obsidian-plugin/token-autodetect.test.cjs:86
fs.writeFileSync(log, [ - 写入本地文件obsidian-plugin/token-autodetect.test.cjs:96
fs.appendFileSync(log, '\n[t3] 打开: http://127.0.0.1:3080/?token=THIRD_boot_token') - 写入本地文件obsidian-plugin/token-autodetect.test.cjs:100
fs.writeFileSync(log, '[t4] 服务已在运行') - 删除本地文件obsidian-plugin/token-autodetect.test.cjs:104
fs.rmSync(log) - 写入本地文件obsidian-plugin/token-autodetect.test.cjs:108
fs.writeFileSync(log, '[t5] 打开: http://127.0.0.1:3080/?token=WITH_EXTRA&foo=bar') - 删除本地文件obsidian-plugin/token-autodetect.test.cjs:118
fs.rmSync(log) - 删除本地文件obsidian-plugin/token-autodetect.test.cjs:121
fs.rmSync(home, { recursive: true, force: true })
扫描于 2026/11/3(0 天前) · 范围 全包扫描 · 来源 GitHub 仓库
静态扫描只反映源码中出现的调用,不构成安全背书;人工评估与自动扫描相互独立、互不覆盖。
给这个插件打分还没有人投票↓
用户评分
还没有人投票,来当第一个
功能亮点
- 读写Obsidian笔记
- 侧栏直连对话
- 内嵌侧栏工作台
README
由 DeepSeek 最新模型翻译生成Crisp DSH(DSH × Obsidian 双端插件)
Crisp DSH 是一套自研双端插件体系,专为 DeepSeek Harness (DSH) 与 Obsidian 打造。它让大模型直接读取、搜索、改写本地 Obsidian Vault 笔记,同时在 Obsidian 侧边栏内无缝运行 DSH Web GUI,还支持一键把当前笔记传给模型。
📸 界面效果示意 (Preview)
Crisp DSH 界面预览
图:在 Obsidian 右侧栏运行的 Crisp DSH 智灵体工作台,顶部配备「3080 · 就绪」图形化状态胶囊与一键折叠按钮。
🌟 核心特性
- 🛠 双端打通:
- DSH 侧:提供 vault_list、vault_read、vault_search、vault_write 四个安全工具,让模型原生拥有知识库操作能力。
- Obsidian 侧:原生集成在右侧栏,无缝嵌入 DSH 会话界面。
- 🟢 椭圆状态胶囊:顶栏左侧实时显示状态胶囊(如 🟢 3080 · 就绪 / 🔴 3080 · 离线),5 秒心跳静默探针,自适应暗黑模式。
- 🗂 彻底折叠左侧栏:提供专属折叠按钮,一键彻底隐藏 DSH 左侧导航栏与图标竖条(Rail),对话主体全宽展开。
展开完整文档(README 剩余 1 节)
Crisp DSH(DSH × Obsidian 双端插件) Crisp DSH 是一套自研双端插件体系,专为 DeepSeek Harness (DSH) 与 Obsidian 打造。它让大模型直接读取、搜索、改写本地 Obsidian Vault 笔记,同时在 Obsidian 侧边栏内无缝运行 DSH Web GUI,还支持一键把当前笔记传给模型。 📸 界面效果示意 (Preview) Crisp DSH 界面预览 图:在 Obsidian 右侧栏运行的 Crisp DSH 智灵体工作台,顶部配备「3080 · 就绪」图形化状态胶囊与一键折叠按钮。 🌟 核心特性 - 🛠 双端打通: - DSH 侧:提供 vault_list、vault_read、vault_search、vault_write 四个安全工具,让模型原生拥有知识库操作能力。 - Obsidian 侧:原生集成在右侧栏,无缝嵌入 DSH 会话界面。 - 🟢 椭圆状态胶囊:顶栏左侧实时显示状态胶囊(如 🟢 3080 · 就绪 / 🔴 3080 · 离线),5 秒心跳静默探针,自适应暗黑模式。 - 🗂 彻底折叠左侧栏:提供专属折叠按钮,一键彻底隐藏 DSH 左侧导航栏与图标竖条(Rail),对话主体全宽展开。 - 🔑 Token 自动捕获:免去繁琐的 Token 复制粘贴,插件自动检测当前进程凭证。 - 🔗 一键笔记联动:右键文件列表里的任意笔记选「添加文件到 DSH 对话」,或在笔记里划选一段后右键选「添加选中文字到 DSH 对话」——引用自动进剪贴板、侧栏跳到前台、光标落进输入框,按一次粘贴回车即发送。 📁 仓库结构 crisp-dsh/ ├── obsidian-plugin/ # Obsidian 侧插件(安装至 .obsidian/plugins/dsh-crip/) │ ├── manifest.json │ ├── main.js │ ├── styles.css │ ├── selfcheck.cjs # 契约自检:注册项、设置、URL 拼装、发送链路 │ └── composer-focus.dom.cjs # DOM 自检:输入框定位(需 jsdom) ├── dsh-plugin/ # DSH 侧插件(安装至 ~/.dsh/plugins/dsh-crip/) │ ├── package.json │ ├── cordis.patch.yml │ ├── lib/ │ │ └── index.js │ └── test/ ├── scripts/ # macOS 自启动守护与后台保持脚本 │ ├── start-dsh-daemon.sh │ └── com.dsh.harness.web.plist ├── LICENSE └── README.md 🚀 极速安装指南 1. 安装 DSH 侧插件 1. 将 dsh-plugin/ 目录复制到本机的 ~/.dsh/plugins/dsh-crip/: mkdir -p ~/.dsh/plugins cp -r dsh-plugin ~/.dsh/plugins/dsh-crip 2. 编辑 ~/.dsh/plugins/dsh-crip/cordis.patch.yml,将 vault 路径改为你实际的 Obsidian Vault 绝对路径: config: vault: '/Users/yourname/Documents/MyVault' 3. 在终端注册该插件到 DSH 的 web profile: dsh plugin --profile web add -w file:$HOME/.dsh/plugins/dsh-crip 4. 验证是否安装成功: dsh --profile web --dump-config | grep -n -A3 "== dsh-crip" 2. 安装 Obsidian 侧插件 1. 将 obsidian-plugin/ 目录复制到你的 Obsidian Vault 插件目录: mkdir -p /path/to/your/vault/.obsidian/plugins/dsh-crip cp -r obsidian-plugin/* /path/to/your/vault/.obsidian/plugins/dsh-crip/ 2. 打开 Obsidian: - 进入 设置 → 第三方插件。 - 点击右上角 重新加载已安装插件。 - 找到 Crisp DSH 并打开开关。 3. 点击左侧活动栏的 ✨ 图标,即可在右侧栏唤出 DSH 界面! 3. macOS 后台静默自启动(可选,推荐) 为了避免每次电脑重启都要手动去终端敲命令拉起 DSH,推荐配置 LaunchAgent: 1. 赋予启动脚本权限并复制: chmod +x scripts/start-dsh-daemon.sh cp scripts/start-dsh-daemon.sh "$HOME/Library/Application Support/" 2. 修改 scripts/com.dsh.harness.web.plist 中的用户名路径,复制并加载: cp scripts/com.dsh.harness.web.plist "$HOME/Library/LaunchAgents/" launchctl load "$HOME/Library/LaunchAgents/com.dsh.harness.web.plist" 🎮 使用说明 1. 状态监控:顶栏左侧胶囊显示 3080 · 就绪 即代表已成功连接后台服务。 2. 彻底全宽:点击顶栏「刷新」左侧的面板图标,彻底隐藏 DSH 左侧导航栏。 3. 笔记传递——三个入口,都是一次粘贴即送达: | 入口 | 操作 | 送过去的内容 | | 文件列表右键 | 在左侧文件列表里右键任意笔记 →「添加文件到 DSH 对话」 | [[双链]] + vault 路径 | | 笔记内划选右键 | 选中一段文字后右键 →「添加选中文字到 DSH 对话」 | 双链 + 行号范围 + 引用块化的选中文字 | | 命令面板 | Crisp DSH: 把当前笔记交给 DSH / 把选中文字交给 DSH | 同上;可自行绑快捷键 | 选中内容超过 4000 字会被截断并注明——此时上方的路径与行号仍在,模型可以自己读全文。 为什么同时给双链和裸路径? [[双链]] 是 Obsidian 里改名不失效的身份,但 DSH 是独立进程、解析不了它;所以旁边附上 vault 相对路径,那才是 vault_read 认的。两者都给,人看双链、模型用路径。 为什么不能全自动发送、要按一次粘贴? 侧栏加载的是 DSH 编译后的前端,其输入框是 contenteditable 富文本,且状态由 React 托管。用脚本直接写入 DOM 文本不会同步到 React 状态,回车发出去的是空消息。因此这里采取半自动:插件把双链放进剪贴板并聚焦输入框,由一次真实粘贴完成注入——语义正确、且不依赖任何会随版本变化的内部结构。 ✅ 自检 cd obsidian-plugin node selfcheck.cjs # 契约层:注册项 / 菜单 / 选中与文件投递 / 令牌不落盘 node token-autodetect.test.cjs # 令牌嗅探:取最新、降级不崩 npm i jsdom NODE_PATH=./node_modules node composer-focus.dom.cjs # 输入框定位 NODE_PATH=./node_modules node rail-toggle.dom.cjs # 左侧栏折叠 cd ../dsh-plugin && node test/selfcheck.mjs # DSH 侧:四个工具 + 越界拒绝 为什么脚本里一个类名都不写? DSH 前端用 CSS Module 生成哈希类名(形如 pI_x6G_*),每次构建都变。侧栏折叠功能最初正是硬编码了三个这样的类名——它们在当前版本里已全部消失,按钮因此静默失效,且没人发现。现在两处 DOM 脚本都按行为与几何定位:输入框看「与发送按钮同属一个容器」,左栏看「贴左边缘、通高的最宽面板」。rail-toggle.dom.cjs 会用 1px 分隔条、矮页眉、全宽容器、内缩面板四种干扰来验证这一点。 composer-focus.dom.cjs 会喂给脚本三种干扰场景——页面别处的搜索框、隐藏的输入框、被禁用的输入框——确认它选中「与发送按钮同属一个容器的编辑框」,而不是页面上第一个文本框。DSH 前端用的是 CSS Module 哈希类名,所以脚本按行为定位而非硬编码类名,版本升级不会失效。 💬 技术支持与交流 (Support & Contact) 如果在安装、配置或使用过程中遇到任何疑问或需要协助,欢迎添加作者微信咨询: - 微信号:kubulo - 微信二维码: 📄 License MIT License © 2026 kubulo
预览分享卡片长什么样 ↓
分享 · DeepSeek Harness Hub
kubulo/crisp-dsh
让模型读写 Obsidian 笔记,侧栏直连对话
相关插件 · 其他
模型破甲清洗HunYiSage/dsh-purge
⚔️ DeepSeek Harness 网络安全红队工具dsh-purge
★ 16,993已汉化DeepSeek 客户端
73
女娲蒸馏alchaincyf/nuwa-skill
输入名人名字,提炼其思维模型与决策方式供你调用
★ 37,308已汉化DSH
72
逆向分析桥接Fanqi89/dsh-rea
REA(Reverse Engineer Anything)MCP 桥接,用来把 REA 逆向工具接入 DSH 插件
★ 51已汉化DSH
72
语音女友beiyege-01/dsh-voice-ai-girlfriend
语音 AI 女友Voice AI girlfriend for DeepSeek Harness:Whisper…
★ 888已汉化DSH
71.6
红队越狱测试套件Minglink/dsh-infinite-gen-5
DeepSeek v4.1 flash 逆向工具无限五代 求 Star 收藏 ⭐欢迎大家提交项目的改进
★ 3,759已汉化DSH
71.4
协同办公空间dream-num/univer-workspace
一个让人类与 AI Agent 共同创作、协作和审阅的开源 Office 工作空间。
★ 2,266已汉化DSH
70.7
这是你的仓库?认领条目