跳转到主要内容

您的仓库,尽在终端

taskforge 是一个小巧的命令行工具,用于读写您 Obsidian 仓库中的任务。它使用与应用相同的解析器,因此循环任务会正常推进,归档文件会落到正确的位置,任务行也会保持您原有的格式。把它交给一个 shell 脚本或智能体,它编辑的是真实的 markdown 文件,没有任何内容托管在别处。

即将随 TaskForge 3.0 推出

TaskForge 命令行工具和 MCP 服务器将随 TaskForge 3.0 版本一起发布。本页内容描述的是它们上线后的使用方式。TaskForge 应用本身现在就可以下载使用。

CLI 还是 MCP 服务器?

在没有 MCP 连接的 shell 环境中使用 CLI:脚本、cron、CI,或是在仓库检出目录里工作的编码智能体。如果您的智能体已经与 TaskForge 建立了 MCP 连接,则优先使用 MCP 工具;它们是类型化的,返回结构化错误,方便智能体据此自我纠正,而且不需要在您的 PATH 里安装任何东西。两者驱动的是同一个引擎,语义完全一致,选择您运行环境里已经接好的那一个就行。手动编辑仓库文件是最后的办法。

安装

macOS 和 Linux 用户可通过 Homebrew 安装:

上线后即可使用
brew install azhard/tap/taskforge

更喜欢 npm?同一个二进制文件也以包的形式发布:

上线后即可使用
npm install -g taskforge

应用内置的自动安装功能即将推出,届时打开仓库就会自动完成安装。在此之前,请使用上面的 Homebrew tap 安装。

快速上手

使用 --vault 让 taskforge 指向某个仓库,或者一次性设置 TASKFORGE_VAULT。每个读取类命令都支持 --json 参数,输出机器可读的结果,方便智能体解析。

taskforge schema

打印仓库的任务方言:状态符号、日期格式、自定义字段、新任务的去向。这是智能体首先要读取的信息。

taskforge add "call the plumber" --due 2026-07-10 --priority high

把一条任务追加到仓库的默认新任务位置,格式与您仓库自己的任务书写方式一致。

taskforge query 'prop:priority_label=urgent' --sort priority --count

统计带有自定义字段 priority_label:: urgent 的任务数量,优先级最高的排在最前。去掉 --count 即可列出这些任务。

taskforge query 'desc:"invoice" text:acme' --json

查找描述中提到 invoice、标题中提到 acme 的任务,以 JSON 形式输出。匹配时忽略重音符号和大小写,因此 cafe 也能匹配 café。

taskforge done <task-id>

完成一个任务。如果它会循环,下一次发生会被写回文件,和应用的处理方式完全一致。

taskforge show <task-id> --json

读取一个任务及其内容哈希,这样后续编辑可以传入 --if-hash,拒绝覆盖过期的副本。

查询语法

查询参数是一组以空格分隔的标记,必须全部匹配。常用的标记有:

text:word 标题包含该词(忽略重音符号和大小写)。 text:groceries
desc:"phrase" 任务描述包含该短语。 desc:"send invoice"
tag:name 任务带有 #name 标签。 tag:work
prop:key=value 自定义字段 key 的值等于 value。 prop:area=home
prop:key 自定义字段 key 存在,值不限。 prop:estimate
--sort due|priority|created 对结果排序。默认按截止日期,最近的排最前。 --sort priority
--count 返回匹配数量,而不是任务列表本身。 --count

自定义字段的 key 可以包含字母、数字和下划线,因此 priority_label 和 area_2 都是合法写法。

唯一的前提条件:仓库契约文件

taskforge 会读取一个由 TaskForge 写入您仓库的小型契约文件 taskforge/schema.json,它精确描述您的任务格式,让 CLI 按您的方式编辑任务,而不是靠猜测。请至少用 TaskForge 3.0 或更高版本打开一次仓库,进入 Settings, AI & Agents,并保持 'Generate agent files' 开关为开启状态。这样就会写入这份契约文件。

如果 taskforge 找不到仓库,它会告诉您三种指定仓库的方法:

  1. 在命令中传入 --vault /path/to/vault。
  2. 设置 TASKFORGE_VAULT 环境变量。
  3. 用 TaskForge 3.0 及以上版本打开一次仓库,使 taskforge/schema.json 文件存在,然后在该仓库文件夹内运行命令。

仅在本地运行

taskforge 在您自己的电脑上运行,只会接触您指定仓库中的 markdown 文件。不需要账号,不需要 API 密钥,也不会发起任何网络请求。无论您用什么方式同步仓库,iCloud、Dropbox 还是 Obsidian Sync,改动都会随之送达您的其他设备。

想让智能体来操作它?

CLI 面向终端和脚本。如果您想让 Claude Desktop 或其他 MCP 客户端通过工具接口添加和完成任务,请改用 MCP 服务器。同一个仓库,同一套规则。两种方式用的都是同一个 taskforge 二进制文件,运行 taskforge mcp --stdio 就能把它切换成 MCP 服务器。

设置 MCP 服务器 →

CLI 编辑任务,应用让它们持续可用。

taskforge 可以从任意终端写入您的仓库;TaskForge 把同一批文件变成您手机和电脑上的列表、小组件和提醒。可在 iPhone、iPad、Mac 和 Android 上免费下载。