mcpField
W
wiki-switch

wiki-switch

github.com/ar9av生产力3.6k2.1k 次安装1 天前更新
代码仓库

关于 wiki-switch

用于管理多个 Obsidian Wiki vault 配置的技能,可列出、查看、新建并切换配置。它通过调整全局配置目录中的符号链接设置持久默认 vault。

主要功能

  1. 01切换持久默认 vault
  2. 02列出并标记当前配置
  3. 03查看配置并隐藏密钥
  4. 04从现有配置新建配置

适用场景

  1. 01在个人与工作 vault 间切换
  2. 02检查当前 vault 配置
  3. 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 配置。

  1. 确认 $CONFIG_DIR/config.<name> 存在。如果不存在,告知用户该 Vault 不存在,并列出可用项(运行列表)。
  2. 运行:
    ln -sf "$CONFIG_DIR/config.<name>" "$CONFIG_DIR/config"
    
  3. 从新激活的配置中读取 OBSIDIAN_VAULT_PATH。
  4. 向用户确认:
    Switched to vault: <name>
    Vault path: <value of OBSIDIAN_VAULT_PATH from the config>
    

列表

显示所有已注册的 Vault 配置,并标明当前激活项。

  1. 查找所有匹配 $CONFIG_DIR/config.* 的文件(排除 config 本身——它是符号链接)。
  2. 解析当前符号链接的目标:readlink "$CONFIG_DIR/config"
  3. 对每个配置文件,读取第一个非空注释行(以 # 开头的行),将其作为 Vault 的说明。如果没有注释,则使用文件后缀作为标签。
  4. 显示:
    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 配置。

  1. 检查 $CONFIG_DIR/config.<name> 是否已存在。如果已存在,则中止。
  2. 复制当前激活的配置:
    cp "$CONFIG_DIR/config" "$CONFIG_DIR/config.<name>"
    
  3. 读取复制后的配置。配置文件使用 # --- Section name --- 注释标题将字段分组到各个区段中(例如,# --- Vault-specific ---、# --- Vault-independent ---、# --- Secrets ---)。根据这些区段确定要询问的内容:
    • 标记为“vault-specific”、“paths”或类似名称的区段中的字段 → 询问用户新的值
    • 标记为“vault-independent”、“global”、“shared”的区段中的字段 → 保持原样(直接复制,不做更改)
    • 标记为“secrets”的区段中的字段 → 询问新 vault 使用相同还是不同的凭据
    • 如果没有区段标题,则展示所有字段,并让用户决定要更改哪些字段
  4. 询问用户 vault 专属字段的新值。将当前值显示为默认值,用户只需提供需要更改的内容。
  5. 将更新后的值写入 $CONFIG_DIR/config.<name>。
  6. 更新顶部注释行,用于描述新 vault(例如,# Obsidian Wiki — <name> vault)。
  7. 确认:
    Created: $CONFIG_DIR/config.<name>
    Run `/wiki-switch <name>` to activate it, then run `wiki-setup` to initialise the new vault.
    
    不要自动切换配置;让用户决定何时激活。

评论

支持 Markdown