终于知道怎么让AI稳定使用obsidian-cli了!

lxiol
📝
大家好,这期内容是对《普通人如何驾驭AI——维护人脉关系》视频中AI的执行问题复盘...

原文链接:https://mp.weixin.qq.com/s/wubACV2AP0vk14c8drtgOA

大家好,这期内容是对《普通人如何驾驭AI——维护人脉关系》视频中AI的执行问题复盘…

关于《普通人如何驾驭AI》的问题复盘

大家好,这期内容是对《普通人如何驾驭AI——维护人脉关系》视频中AI的执行问题复盘。

对视频演示感兴趣的小伙伴请移步B站或小红书观看原视频。

原视频封面

前情提要

下面的这些是在视频里让AI执行的三个指令:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
`# 指令1 创建人物档案
我有一个贵人朋友名叫张三,每次在我有困难的时候他都会出手帮助度过危机,请帮我建立一个人物档案。另外后天我准备去杭州拜访他,也帮我建立一个代办任务。

# 指令2 更新任务档案
原本打算后台去拜访张三的,没想到他今天出差顺便就来看我了,还给我带了西湖醋鱼。帮我取消后天的拜访。

# 指令3 批量创建物品
请帮我分类保管以下物品信息:
公众号AppID、Office 激活码、仓耳今楷字体下载地址、Windows激活码、Syncthing下载地址

# 执行难点
✅任务拆解,AI需判断指令涉及哪些业务模块
✅领域判断,AI需判断代办任务属于哪个领域
✅多任务执行,AI需往备忘录及行动管理特定文件夹和笔记位置写入数据
✅使用特定笔记模板新增的人物档案
✅遵循html注释规则更新人物档案
✅使用emoji语法规则创建代办任务
❌使用emoji语法规则取消代办任务`

问题1 AI不会用obsidian-cli

问题描述:虽然知识库根目录的CLAUDE文档里要求AI看obsidian-cli文档,但总被忽略执行,AI靠自己试错猜测走了不少弯路。

问题排查:CLAUDE文件性质依旧是提示词,约束力不强,AI有可能不遵守。

解决办法:考虑到现阶段AI对obsidian-cli命令语法训练不够,且该命令在知识库里使用频率较高,决定用hook机制,强制AI在对话开始时(SessionStart)读取obsidian-cli文档(1157字,token消耗尚可接受)。等未来AI模型熟悉obsidian-cli命令之后再删除该hook,以节约token。

下图是hook的生命周期,让AI在SessionStart时触发读取文档,整个会话读一遍文档就够了。

hook生命周期

这里我踩了一个坑。

我写代码比较保守,在没确认AI提供的代码有效之前会用//注释源代码而不是直接删除。

当我在settings.json文件里使用//之后,这个举动会让整个json文件失效,导致我在settings.json里添加的hook无法正常被触发。

问题2 取消任务语法错误

问题描述:取消任务AI做对了一半,我在演示视频里也只说对了一半。视频里我介绍的方式可以将任务标记为删除,而AI的做法则是标记任务取消的时间。正确的做法是将两者结合。

1
2
3
4
5
6
7
8
`# 我在视频里的做法 → 没有取消日期
- [-] [#实践]() 准备拜访张三的礼物 📅2026-04-13
  
# AI在视频里的做法 → 任务没有标记为取消
- [ ] [#实践]() 准备拜访张三的礼物 📅2026-04-13 ❌ 2026-04-12 张三已来访,原拜访计划取消

# 正确做法
- [-] [#实践]() 准备拜访张三的礼物 📅2026-04-13 ❌ 2026-04-12`

解决办法:在行动管理(CLAUDE.md)规则里介绍教任务规则的时候,附上一个取消任务的示例。

问题3 滥用任务标签

背景信息:为了跟踪我的知识来源,我允许AI在创建任务的时候使用任务标签,默认有以下两种:

  • • [#学习]():侧重理论学习,例如看书、看教程
  • • [#实践]():侧重实践学习,例如科学实验、上机实操

问题描述:我发现AI将[#实践]()标签滥用在张三拜访这件事上。拜访任务根本不需要用到实践标签。

解决办法:在行动管理(CLAUDE.md)规则里提供两种标签的具体示例。

问题4 报错日志漏报

问题描述:报错日志里看不到obsidian-cli命令的报错记录。

问题排查:一开始我尝试用 hook 去捕获非 0 退出码,想用这个办法记录错误日志,但这里有个坑。因为退出码为0并不代表任务执行成功,这会漏掉很多错误日志。

背景信息:在计算机程序里,退出码(Exit Code)是程序在执行命令之后告知主程序执行结果用的。在 bash 脚本里,0 代表成功,而除了 0 之外的其他退出码则代表失败,例如:

  • • 126 → 无法执行(权限不够)
  • • 127 → 命令未找到
  • • 130 → 程序被中断。

以下图为例,虽然我们看到 Bashobsidian.com note create 命令的返回结果是 Error: Command "note" not found...,但右侧的 status 却显示 completed

使用obsidian-cli创建笔记

这说明,在 AI 的眼里,这个任务是已经执行完了,至于结果怎么样,那是另一个问题。

我举一个例子大家就明白了。

假如你的老板让你去楼下买蜜雪冰城给大家当下午茶,你下楼之后发现奶茶店倒闭了,只好无功而返。那么:

  • • 下楼再回来这个动作,你确实执行完了 → 对应的statuscompleted
  • • 但由于店铺倒闭,你没买到奶茶 → 对应的ERRORThe shop has closed

这就是退出码和报错信息的区别

  • • 退出码只告诉你:程序有没有正常跑完(0 = 跑完了,非0 = 中途崩了)

  • • 报错信息才告诉你:事情到底办没办成

所以0 退出码 ≠ 结果正确。这就是为什么不能只靠检查退出码来捕获所有报错,因为程序可能返回 0(事情没办成,但程序觉得自己跑完了),真正的错误信息只写在屏幕日志里。

解决办法:用hook捕获错误不是很完美,在执行结束之后让AI自己总结又费token。现阶段还是人工看操作记录分析问题吧,这个问题留给以后处理。

一个注意事项

obsidian-cli在创建笔记的时候支持传入template=<template name>参数,在创建笔记后自动应用特定模板。

实现这个效果的前提是需要在obsidian核心插件里启用模板功能,启用社区插件市场的Templater是行不通的。

附录:Claude hook事件触发时机

下表是Claude Code官网上的hook事件及触发时机,已经帮大家翻译校对过了,给想用hook的朋友提供一些参考。

事件

触发时机
SessionStart
当会话开始或恢复时
UserPromptSubmit
当提交提示词后,Claude处理之前
PreToolUse
在工具调用执行之前。可以阻止它
PermissionRequest
当权限对话框出现时
PermissionDenied
当工具调用被拒绝时。返回 {retry: true} 用于告诉模型允许重试调用工具
PostToolUse
在工具调用成功之后
PostToolUseFailure
在工具调用失败后
Notification
当 Claude Code 发送通知时
SubagentStart
当子代理被生成时
SubagentStop
当子代理完成时务后
TaskCreated
当通过 TaskCreate 创建任务时
TaskCompleted
当某项任务被标记为已完成时
Stop
当Claude回复完毕时
StopFailure
当由于 API 错误导致轮次结束时。输出的内容和退出码将被忽略
TeammateIdle
当代理团队中的队友即将处于闲置状态时
InstructionsLoaded
当 CLAUDE.md 或 .claude/rules/*.md 文件被加载到上下文中时。在会话开始时还有在会话期间文件被延迟加载时触发。
ConfigChange
当会话进行过程中配置文件发生更改时
CwdChanged
当工作目录发生变化时,例如当 Claude 执行 cd 命令时。这对于使用 direnv 等工具进行动态环境管理非常有用。
FileChanged
当磁盘上被监控的文件发生更改时。 matcher 字段用于指定需要监控的文件名。
WorktreeCreate
当通过 --worktree 或 isolation: "worktree" 创建工作树时。会替代 Git 的默认行为。
WorktreeRemove
当工作树被移除时,可能发生在会话退出时,或者当某个子代理完成任务后。
PreCompact
在上下文压缩之前
PostCompact
在上下文压缩完成后
Elicitation
当 MCP 服务器在调用工具期间请求用户输入信息时
ElicitationResult
用户在响应 MCP 的请求后、但在响应被发送回服务器之前
SessionEnd
当会话终止时

#obsidian #claudian #claude #skill #hook #harness #析径任务管理系统 #笔记软件 #个人知识库


💬 本文评论区已开启,但暂无读者留言。

本文转载自微信公众号,如有侵权请联系删除。

  • 标题: 终于知道怎么让AI稳定使用obsidian-cli了!
  • 作者: lxiol
  • 创建于 : 2026-04-29 20:24:01
  • 更新于 : 2026-05-12 16:32:44
  • 链接: https://blog.lxiol.cn/2026/04/29/终于知道怎么让AI稳定使用obsidian-cli了/
  • 版权声明: 本文章采用 CC BY-NC-SA 4.0 进行许可。