--- name: obsidian-plugins description: 管理 Obsidian 环境配置:核心/社区插件的启用/禁用/安装/卸载、主题切换、CSS snippets 管理、Templates 模板管理、Obsidian 内置命令执行、快捷键查询。触发词:启用插件、社区插件、Obsidian 主题、CSS snippet、Templates、快捷键、hotkey、首次配置 vault。不用于笔记内容 CRUD(obsidian 核心技能)。检测到 .obsidian/ 时与核心技能同步激活。 --- # Obsidian Plugins · 环境配置管理 > Obsidian 的"控制面板":插件、主题、CSS、模板、命令、快捷键。一份技能管完所有环境配置。 --- ## 何时使用 - **启用/禁用/安装/卸载**核心或社区插件 - 切换 / 安装 / 卸载**主题** - 管理 **CSS snippets**(自定义样式片段) - 管理 **Templates**(Obsidian Templates 核心插件的模板文件) - 查看 / 执行 Obsidian 内置**命令**(`obsidian command id=...`) - 查询 / 管理**快捷键**(hotkeys) - 切换 **Restricted Mode**(安全模式,禁用社区插件) ## 不用于 - 笔记内容 CRUD → **obsidian** 核心技能 - Frontmatter 管理 → **obsidian-meta** - Vault 层面同步设置 → **obsidian-history** --- ## 命令速查 ### 插件(Plugins) ```bash # 列出 obsidian plugins # 列出所有已安装插件(tsv 默认) obsidian plugins filter=core # 只看核心插件 obsidian plugins filter=community # 只看社区插件 obsidian plugins versions # 含版本号 obsidian plugins format=json # JSON 输出 obsidian plugins:enabled # 只列启用的 obsidian plugins:enabled filter=community versions format=json obsidian plugin id=dataview # 某插件详情 obsidian plugin id= # 通过 ID 查询 ``` ```bash # 启用/禁用/安装/卸载 obsidian plugin:enable id=daily-notes # 启用核心插件 obsidian plugin:enable id=dataview filter=community obsidian plugin:disable id=dataview filter=community obsidian plugin:install id=obsidian-git enable # 安装并立即启用(社区) obsidian plugin:uninstall id=dataview obsidian plugin:reload id=dataview # 开发用:重载插件 ``` ### 安全模式(Restricted Mode) ```bash obsidian plugins:restrict on # 开启受限模式(禁用所有社区插件) obsidian plugins:restrict off # 关闭 obsidian plugins:restrict # 查询状态 ``` ### 主题(Themes) ```bash obsidian themes # 列出所有已安装主题 obsidian themes versions # 含版本号 obsidian theme # 当前主题 obsidian theme name="Minimal" # 某主题详情 obsidian theme:set name="Minimal" # 切换主题 obsidian theme:set name="" # 恢复默认 obsidian theme:install name="Minimal" enable # 安装并启用 obsidian theme:uninstall name="Minimal" ``` ### CSS Snippets ```bash obsidian snippets # 列出所有已安装 snippets obsidian snippets:enabled # 已启用的 obsidian snippet:enable name="compact-tables" obsidian snippet:disable name="compact-tables" ``` ### Templates(核心插件) ```bash obsidian templates # 列出所有模板 obsidian templates total # 数量 obsidian template:read name="daily" # 读取模板内容 obsidian template:read name="daily" resolve title="2026-04-09" # 解析变量后读取 obsidian template:insert name="meeting" # 插入到当前激活文件 ``` > 💡 Templates 插件需要先启用:`obsidian plugin:enable id=templates` 并在设置中指定模板文件夹。 ### Commands(Obsidian 内置命令系统) ```bash obsidian commands # 列出所有可用命令 obsidian commands filter=editor # 按前缀筛选 obsidian commands filter=daily # 每日笔记相关命令 obsidian command id="editor:toggle-bold" # 执行命令(触发 Obsidian 内部动作) obsidian command id="workspace:split-vertical" obsidian command id="app:go-back" ``` ### Hotkeys 快捷键 ```bash obsidian hotkeys # 列出所有快捷键(tsv) obsidian hotkeys format=json obsidian hotkeys all # 含未绑定快捷键的命令 obsidian hotkeys verbose # 显示是否自定义 obsidian hotkeys total # 数量 obsidian hotkey id="editor:toggle-bold" # 查询某命令的快捷键 obsidian hotkey id="editor:toggle-bold" verbose ``` --- ## AI Agent 最佳实践 ### 场景 1 · 首次配置检查清单 Agent 第一次进入某 vault,验证基础环境: ```bash #!/bin/bash # obsidian-doctor.sh:环境体检 echo "=== Vault 基础 ===" obsidian vault info=name obsidian version echo "=== 核心插件启用状态 ===" REQUIRED=("daily-notes" "templates" "file-recovery" "command-palette" "backlink" "outgoing-link") for p in "${REQUIRED[@]}"; do STATUS=$(obsidian plugin id=$p 2>/dev/null | grep -o 'enabled: true' && echo "✅" || echo "❌ $p 未启用") echo "$STATUS" done echo "=== 社区插件 ===" obsidian plugins filter=community versions echo "=== 主题 ===" obsidian theme echo "=== 受限模式 ===" obsidian plugins:restrict ``` ### 场景 2 · 为 AI 工作流推荐的最小插件集 ```bash # 启用核心插件(最小集) obsidian plugin:enable id=daily-notes obsidian plugin:enable id=templates obsidian plugin:enable id=file-recovery obsidian plugin:enable id=backlink obsidian plugin:enable id=outgoing-link obsidian plugin:enable id=tag-pane obsidian plugin:enable id=graph obsidian plugin:enable id=properties # Obsidian 1.4+ 的属性面板 # 可选:启用 Bases(1.9+) obsidian plugin:enable id=bases ``` **推荐社区插件**(AI 协作友好): | 插件 ID | 用途 | 何时需要 | |---------|------|---------| | `obsidian-git` | Git 集成 | 永远需要(vault 备份) | | `templater-obsidian` | 高级模板(JS 可执行) | 动态模板 | | `dataview` | 查询语言 | 还没迁移到 Bases | | `tasks` | 高级任务管理 | 重度 GTD 用户 | | `calendar` | 日历侧栏 | 频繁用每日笔记 | | `advanced-uri` | URI 命令增强 | 脚本化自动化 | ```bash # 批量安装 for p in obsidian-git templater-obsidian tasks calendar; do obsidian plugin:install id=$p enable done ``` ### 场景 3 · 动态调用 Obsidian 内部命令 `obsidian command id=...` 可以执行**任意** Obsidian 命令,相当于 UI 层的自动化: ```bash # 拆分工作区(左侧文件树 + 右侧编辑) obsidian command id="workspace:split-vertical" # 打开快速切换器 obsidian command id="switcher:open" # 打开命令面板(不常用,因为命令面板本身是交互式 UI) obsidian command id="command-palette:open" # 切换 Reading View obsidian command id="markdown:toggle-preview" # 折叠所有标题 obsidian command id="editor:fold-all" ``` **发现命令 ID**:`obsidian commands | less` 或 `obsidian commands filter=`。 ### 场景 4 · 模板驱动的笔记创建 ```bash # 1. 先看有哪些模板 obsidian templates # 2. 预览模板内容 obsidian template:read name="project-kickoff" resolve title="Alpha" # 3. 基于模板创建新笔记(通过 create + content) CONTENT=$(obsidian template:read name="project-kickoff" resolve title="Alpha") obsidian create path="10-Projects/alpha/README.md" content="$CONTENT" open ``` ### 场景 5 · CSS Snippet 自动切换(深色/浅色模式) ```bash # 检测系统时间切换不同的 CSS snippet HOUR=$(date +%H) if [ "$HOUR" -ge 19 ] || [ "$HOUR" -lt 7 ]; then obsidian snippet:enable name="dark-extra" obsidian snippet:disable name="light-extra" else obsidian snippet:enable name="light-extra" obsidian snippet:disable name="dark-extra" fi ``` ### 场景 6 · 快捷键审计 ```bash # 查自定义过的快捷键(避免冲突) obsidian hotkeys verbose format=json | jq '.[] | select(.custom == true)' # 查没有快捷键绑定的命令(发现可以加快捷键的命令) obsidian hotkeys all format=json | jq '.[] | select(.hotkey == null)' ``` --- ## 与其他技能的协作 | 场景 | 链路 | |-----|------| | 启用 Daily Notes 前置 | obsidian-plugins → **obsidian-daily** | | 启用 Bases 前置 | obsidian-plugins(`plugin:enable id=bases`)→ **obsidian-bases** | | 启用 Templates 前置 | obsidian-plugins → **obsidian-daily**(daily template) | | 启用 File Recovery 前置 | obsidian-plugins → **obsidian-history** | | 推荐插件清单 | obsidian-plugins + **obsidian-workflow-pkm** | --- ## 常见陷阱 | 现象 | 原因 | 对策 | |------|------|------| | `plugin:install` 失败 | 处于 Restricted Mode | `plugins:restrict off` | | 社区插件 ID 写错 | 大小写/连字符敏感 | 先 `plugins filter=community` 查正确 ID | | `command id=...` 无效 | 命令 ID 写错 | `commands filter=` 查询 | | Template 变量未解析 | 没加 `resolve` 参数 | `template:read name= resolve` | | Templates 插件找不到模板 | 模板文件夹没配 | Settings → Templates → Template folder location | | 切主题后样式错乱 | 新主题与某 snippet 冲突 | 临时 `snippet:disable` 所有 | | 社区插件升级后命令失效 | 插件 API 变更 | `plugin:reload` 或重启 Obsidian | | Restricted Mode 下 agent 脚本报错 | Community 插件全部禁用 | 脚本增加 `plugins:restrict` 检查 |