ARTICLE DETAIL

建站实战干货

来自一线的建站与推广经验沉淀,每一条都经过真实交付验证。

如何用 qmd collection update-cmd 配置重建索引前自动执行的更新命令

2026/9/12 14:26:18 拓冰建站 浏览量
如何用 qmd collection update-cmd 配置重建索引前自动执行的更新命令 如何用 qmd collection update-cmd 配置重建索引前自动执行的更新命令【免费下载链接】qmdmini cli search engine for your docs, knowledge bases, meeting notes, whatever. Tracking current sota approaches while being all local项目地址: https://gitcode.com/GitHub_Trending/qmd1/qmd当你的 qmd collection 指向一个 git 仓库、同步脚本或其他会持续变化的上游目录时手动先git pull再qmd update容易漏步骤导致索引里一直是旧内容。qmd 为每个 collection 内置了一个刷新钩子配置后每次执行qmd update会先在该 collection 的目录里运行你指定的 bash 命令再重新索引。本文以qmd collection update-cmd为主线给出配置、验证、运行和清除的完整路径。前提条件已安装 qmdnpm install -g tobilu/qmd或bun install -g tobilu/qmd。系统要求为 Node.js 22、Bun 1.0.0macOS 上还需 Homebrew 的 SQLitebrew install sqlite。目标 collection 已经存在。update-cmd作用于已有 collection若 collection 不存在命令会报Collection not found: name并退出见 src/cli/qmd.ts。先用qmd collection list确认名字不存在则先创建qmd collection add ~/reference/wiki --name wiki --mask **/*.md用 update-cmd 设置重建索引前执行的命令命令格式为qmd collection update-cmd name [command]command 是一条 bash 命令# 设置每次 qmd update 前对该 collection 先执行 git pull qmd collection update-cmd wiki git pull --ff-only # 清除省略 command 参数即可 qmd collection update-cmd wiki设置成功后终端会回显src/cli/qmd.ts 中的实际输出格式✓ Set update command for wiki: git pull --ff-only文档中给出的示例命令包括git pull --rebase、git pull --ff-only见 README.md以及带本地改动的变体git stash git pull --rebase --ff-only git stash pop见 example-index.yml 与 CHANGELOG.md。由于这条命令会在每次qmd update时以bash -c自动执行选择命令时要注意它会真实操作该目录——例如git pull会改动工作区文件带git stash的变体则会 stash/恢复本地改动按你目录的实际状态选用。验证配置已生效配置写入的字段是 collection 配置中的updateREADME 的配置表中说明collections.name.update是 Bash command run beforeqmd updatere-indexes this collection. Set viaqmd collection update-cmd。两种确认方式用qmd collection show查看配置后会多出一行Update:qmd collection show wiki输出中对应字段src/cli/qmd.tsUpdate: git pull --ff-only直接查看配置文件。该命令读写的是单一 YAML 配置默认位置~/.config/qmd/index.yml遵循XDG_CONFIG_HOME和QMD_CONFIG_DIRqmd init创建的项目本地索引则在.qmd/index.ymlcollections: wiki: path: ~/reference/wiki update: git pull --ff-only仓库中带注释的完整模板见 example-index.yml其中wiki与codex两个条目分别演示了自动更新配置。README 建议用 CLI 设置或清除而不是手改 YAML手改同样有效配置在下一条命令时生效但 CLI 方式会顺带刷新信任记录见下文限制一节。运行 qmd update观察钩子先执行配置完成后直接运行qmd update。README Automatic update commands 一节给出的运行示例如下文档示例实际数值取决于你的 collection$ qmd update [1/3] wiki (**/*.md) Running update command: git pull --ff-only Already up to date. Collection: ~/reference/wiki (**/*.md) Indexed: 0 new, 2 updated, 340 unchanged, 0 removed判断依据出现Running update command: 你的命令及其输出如Already up to date.随后进入该 collection 的Indexed: ...统计说明钩子在重新索引之前执行完毕。README 对该机制的说明是这个update字段是 QMD 的内置刷新钩子qmd update时先跑该命令再重建索引从而让 collection 与上游来源git 远端、同步脚本保持同步而无需自己包一层脚本。行为边界与限制工作目录命令通过bash -c在 collection 自己的目录其path中运行而不是你执行qmd update时的当前目录。写相对路径或相对 git 操作时按这个前提理解。非零退出会中止整轮如果某个 collection 的 update 命令退出码非零qmd update会打印失败并中止整轮运行——排在它后面的 collection 不会被重新索引。排查时先单独在对应目录手动执行该命令确认能否成功。项目内检入的 .qmd 配置不受默认信任如果update命令来自随git clone传播的项目本地.qmd/index.yml它属于被门控的字段QMD 视为别人的 shell 脚本在终端执行qmd update时会列出这些字段并询问批准会记录到~/.config/qmd/trusted.json没有终端可询问的场景agent、CI、MCP中这些字段会被跳过。相关命令为qmd trust、qmd trust list、qmd trust revokeCI 中可用QMD_TRUST_LOCAL_CONFIG1或QMD_TRUST_UPDATE_HOOKS1放行。审批只覆盖你当时看到的字段集——修改命令内容会再次询问。你自己~/.config/qmd/*.yml中的内容包括update-cmd写入的不受门控。恢复原状不再需要钩子时用不带 command 的形式清除qmd collection update-cmd wiki输出✓ Cleared update command for wiki此后qmd update只重建索引不再执行任何前置命令。也可以用qmd collection show wiki确认Update:一行已消失。【免费下载链接】qmdmini cli search engine for your docs, knowledge bases, meeting notes, whatever. Tracking current sota approaches while being all local项目地址: https://gitcode.com/GitHub_Trending/qmd1/qmd创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考