Wiki Switch 用于管理多个 Obsidian wiki vault 配置文件。
用途 在全局配置目录下维护多个命名的 vault 配置,并切换当前激活的 vault。每个 vault 是一个完整配置文件,路径为 $CONFIG_DIR/config.<name>;当前激活的 vault 是 $CONFIG_DIR/config 符号链接所指向的文件。切换 vault 就是重新指向该符号链接。
全局配置目录 所有路径都相对于全局配置目录,按 llm-wiki/SKILL.md 中的配置解析协议解析:$XDG_CONFIG_HOME/obsidian-wiki(默认 ~/.config/obsidian-wiki),若磁盘上已存在旧版 ~/.obsidian-wiki 则使用旧版。每次调用解析一次:
CONFIG_DIR="$( [[ -d "$HOME/.obsidian-wiki" && ! -e "${XDG_CONFIG_HOME:-$HOME/.config}/obsidian-wiki" ]] && echo "$HOME/.obsidian-wiki" || echo "${XDG_CONFIG_HOME:-$HOME/.config}/obsidian-wiki" )"
切换与内联指定 /wiki-switch <name> 改变持久默认值(重新指向符号链接,影响之后所有请求)。若只想在某一次请求中使用其他 vault 而不改变默认值,可在任意请求中使用内联 @name 覆盖(例如 @work save this、wiki-query @personal about X)。@name 覆盖由 llm-wiki/SKILL.md 的配置解析协议处理,不属于本技能;它只为该次调用解析 $CONFIG_DIR/config.<name>,不会重新指向符号链接。
命令分发 /wiki-switch <name> → 切换 /wiki-switch list → 列出 /wiki-switch show [name] → 显示 /wiki-switch new <name> → 新建 /wiki-switch(无参数)→ 列出(按 list 处理) @<name> …(内联,任意请求中)→ 不属于本技能,由配置解析协议为该次调用解析 vault,不重新指向符号链接
切换(默认动作) 激活指定名称的 vault 配置。
- 确认 $CONFIG_DIR/config.<name> 存在。若不存在,告知用户该 vault 不存在并列出可用项(执行 List)。
- 运行: ln -sf "$CONFIG_DIR/config.<name>" "$CONFIG_DIR/config"
- 从新激活的配置中读取 OBSIDIAN_VAULT_PATH。
- 向用户确认: Switched to vault: <name> Vault path: <value of OBSIDIAN_VAULT_PATH from the config>
列出 显示所有已注册的 vault 配置以及当前激活项。
- 查找所有匹配 $CONFIG_DIR/config.* 的文件(排除 config 本身,它是符号链接)。
- 解析当前符号链接目标:readlink "$CONFIG_DIR/config"
- 对每个配置文件,读取第一条非空注释行(以 # 开头的行)作为该 vault 的人类可读描述。若无注释,则回退使用文件后缀作为标签。
- 显示: Vaults: personal My personal research wiki ← active work Work projects wiki 用 ← active 标记当前激活项。若符号链接损坏或 config 不存在,显示 (none active)。
显示 打印某个 vault 的完整配置。
- 若给出名称,读取 $CONFIG_DIR/config.<name>。
- 若未给出名称,读取 $CONFIG_DIR/config(当前激活的 vault)。
- 若文件不存在,告知用户并列出可用项。
- 原样打印文件内容(对包含 API_KEY 或 SECRET 的行做脱敏——用 *** 代替其值)。
新建 以当前激活配置为模板搭建新的 vault 配置。
- 检查 $CONFIG_DIR/config.<name> 是否已存在。若存在则中止。
- 复制当前激活配置: cp "$CONFIG_DIR/config" "$CONFIG_DIR/config.<name>"
- 读取复制后的配置。配置文件使用 # --- Section name --- 注释头将字段分组(例如 # --- Vault-specific ---、# --- Vault-independent ---、# --- Secrets ---)。根据这些分组决定询问内容:
- 标记为 vault-specific、paths 或类似名称的分组中的字段 → 询问用户新值
- 标记为 vault-independent、global、shared 的分组中的字段 → 保持不变(原样复制)
- 标记为 secrets 的分组中的字段 → 询问新 vault 使用相同凭据还是不同凭据
- 若没有分组头,则展示所有字段,由用户决定修改哪些
- 就 vault 专属字段向用户询问更新后的值。以当前值作为可见默认值——用户只需提供不同的部分。
- 将更新后的值写入 $CONFIG_DIR/config.<name>。
- 更新顶部注释行以描述新 vault(例如 # Obsidian Wiki — <name> vault)。
- 确认:
Created: $CONFIG_DIR/config.<name>
Run
/wiki-switch <name>to activate it, then runwiki-setupto initialise the new vault. 不要自动切换——由用户决定何时激活。
适用场景
- 在个人、工作等多个 Obsidian wiki vault 之间切换默认配置。
- 查看当前激活的是哪个 vault 及其路径。
- 查看某个 vault 的完整配置(敏感字段脱敏)。
- 基于现有配置快速创建新的 vault 配置。
限制
- 仅管理全局配置目录下的 vault 配置文件,不负责 vault 内容的初始化(新建后需运行 wiki-setup)。
- 内联 @name 覆盖不属于本技能,由 llm-wiki/SKILL.md 的配置解析协议处理。
- 新建时不会自动切换激活的 vault。
- 关于收费、价格、平台支持等信息,资料中暂未提供。