在 WSL 环境下运行 OpenCode(配置了 oh-my-openagent),访问 Windows 下运行的 Obsidian 及其 CLI,需要解决两个独立问题:CLI 命令不可用和 Skills 无法加载。
问题一:WSL 中 obsidian CLI 命令不可用
原因
Obsidian CLI 是 Windows 原生程序,运行在 Windows 侧。WSL 的 PATH 中没有 obsidian 命令,直接调用会报错。
解决方案:通过 PowerShell 转发命令
WSL 可以直接调用 powershell.exe,而 Windows 的 obsidian 命令在 PowerShell 中可用。因此可以写一个 shell 函数作为透明代理。
⚠️ 必须写入
~/.zshenv,而非~/.zshrcOpenCode 启动的是 non-interactive shell,只会读取
~/.zshenv,不会读取~/.zshrc。
在 ~/.zshenv 中添加:
|
|
验证:
|
|
💡 为什么同时写入
~/.zshrc终端交互式 shell 只读
~/.zshrc,建议两个文件都加入,或在~/.zshrc中source ~/.zshenv。
问题二:obsidian-skills 无法通过 skill() 工具加载
原因
oh-my-openagent(omo)的 skill 扫描逻辑(getOpenCodeSkillDirs)实际扫描的路径是:
|
|
而 obsidian-skills 官方文档的 OpenCode 安装说明将仓库克隆到:
|
|
两者不是同一个目录,导致 skill 文件存在但无法被注册。这一结论通过直接阅读 oh-my-openagent 的打包产物(~/.cache/opencode/packages/oh-my-openagent@latest/node_modules/oh-my-openagent/dist/index.js)中的 getOpenCodeSkillDirs 函数源码确认。
解决方案:克隆到正确路径
将 obsidian-skills 克隆到 omo 实际扫描的目录:
|
|
重启 OpenCode 后生效。
ℹ️ Skill 名称会带路径前缀
由于克隆了整个仓库(结构为
obsidian-skills/skills/<name>/SKILL.md),omo 注册后的 skill 名称会是:
obsidian-skills/skills/obsidian-cliobsidian-skills/skills/obsidian-markdown- 以此类推
如需简洁名称(直接用
obsidian-cli),可将内层各 skill 目录直接复制到根下:
1 2 3cp -r ~/.config/opencode/skills/obsidian-skills/skills/* \ ~/.config/opencode/skills/ rm -rf ~/.config/opencode/skills/obsidian-skills
Skill 列表与使用方式
obsidian-skills 包含以下 skill:
| Skill | 用途 |
|---|---|
obsidian-cli |
通过 CLI 与运行中的 Obsidian 交互(需 Obsidian 开启) |
obsidian-markdown |
创建和编辑 Obsidian Flavored Markdown(wikilinks、callouts、frontmatter 等) |
obsidian-bases |
创建和编辑 .base 文件(Bases 数据库视图) |
json-canvas |
创建和编辑 .canvas 文件 |
defuddle |
从网页提取干净的 Markdown 内容 |
在 OpenCode 中调用 Skill
|
|
或在委托任务时传入:
|
|
诊断速查
|
|
更新 obsidian-skills:
|
|
重启 OpenCode 后生效。