关于 wiki-switch
用于管理多个 Obsidian Wiki vault 配置的技能,可列出、查看、新建并切换配置。它通过调整全局配置目录中的符号链接设置持久默认 vault。
主要功能
- 01切换持久默认 vault
- 02列出并标记当前配置
- 03查看配置并隐藏密钥
- 04从现有配置新建配置
适用场景
- 01在个人与工作 vault 间切换
- 02检查当前 vault 配置
- 03为新 vault 复制并调整配置
安装
复制下面的命令,在终端中运行。
npx skills add https:/ / github.com/ ar9av/ obsidian-wiki --skill wiki-switch安装后在 Claude Code 中输入/wiki-switch确认已加载。
详细介绍
Wiki Switch — 管理多个 Vault 配置
全局配置目录。 以下所有路径均相对于全局配置目录,按照 llm-wiki/SKILL.md 中的 Config Resolution Protocol 解析:$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" )"
每个 Vault 都是 $CONFIG_DIR/config.<name> 中的完整配置文件。当前激活的 Vault 是 $CONFIG_DIR/config 符号链接指向的文件。切换 Vault 即重新指向该符号链接。
切换与内联指定。 /wiki-switch <name> 会更改你的持久默认配置(重新指向符号链接,影响所有未来请求)。如果只想在单次请求中操作另一个 Vault,而不更改默认配置,请在任何请求中使用内联 @name 覆盖(例如 @work save this、wiki-query @personal about X)。@name 覆盖由 llm-wiki/SKILL.md 中的 Config Resolution Protocol 处理,而不是由此技能处理——它会为本次调用解析 $CONFIG_DIR/config.<name>,且不会重新指向符号链接。
分发
解析调用并路由到相应部分:
| 调用 | 操作 |
|---|---|
/wiki-switch <name> | → 切换 |
/wiki-switch list | → 列表 |
/wiki-switch show [name] | → 显示 |
/wiki-switch new <name> | → 新建 |
/wiki-switch(无参数) | → 列表(按列表处理) |
@<name> …(在任何请求中内联使用) | → 不属于此技能——Config Resolution Protocol 会为单次调用解析该 Vault,而不会重新指向符号链接 |
切换(默认操作)
激活指定的 Vault 配置。
- 确认
$CONFIG_DIR/config.<name>存在。如果不存在,告知用户该 Vault 不存在,并列出可用项(运行列表)。 - 运行:
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 run `wiki-setup` to initialise the new vault.