---
name: task
description: 用于在思源任务笔记管理插件中管理任务、任务提醒和分类的 MCP 工具。
---

# 任务管理技能 (task)

### 1. `search_task`
根据关键字、ID、项目、日期等条件搜索任务。
> 注意：为了节省 token 消耗，如果在搜索中指定了日期过滤（如传入了 `date`），`repeat.instances` 字段在搜索结果中将仅保留该日期范围的实例数据；如果不指定日期过滤，则会完全隐藏 `repeat.instances` 字段。要获取非查询日期的完整实例详情，请使用 `get_task` 接口。

- **keyword** (字符串, 可选): 搜索关键字，匹配任务标题或备注内容。
- **id** (字符串, 可选): 任务 ID，精确匹配。
- **projectId** (字符串, 可选): 所属项目 ID。
- **date** (字符串, 可选): 过滤日期 `YYYY-MM-DD`。可以传入 `"today"` 字符串，这将自动计算今日日期，并拉取今日任务、过期未完成任务、每日可做任务（效果和前端 Reminder 面板一致）。
- **priority** (字符串, 可选): 优先级 (`"high"`, `"medium"`, `"low"`, `"none"`)。
- **status** (字符串, 可选): 看板状态。
- **completed** (布尔值, 可选): 是否已完成。
- **limit** (数字, 可选): 返回数量上限，默认为 50。

### 2. `get_task`
根据任务 ID（或重复实例 ID）获取单个任务的详情。
- 对于重复任务，支持传入 **date** 参数（或直接传入 `taskID_YYYY-MM-DD` 格式的实例 ID）来获取该特定日期实例的具体数据（如该日期的已完成状态、完成时间等）。
- 如果不传 **date**（且 ID 无日期后缀），则返回包含完整 `repeat.instances` 重复实例详情的原始任务数据。
- **id** (字符串, 必填): 任务 ID 或实例 ID。
- **date** (字符串, 可选): 指定重复任务实例的具体日期 `YYYY-MM-DD`。

### 3. `create_task`
创建单个新任务。传入已有任务的 `parentId` 时，新任务会作为该任务的子任务创建。
- **title** (字符串, 必填): 任务标题。
- **date** (字符串, 可选): 任务日期 `YYYY-MM-DD`。省略或传入 `""`（空字符串）可创建无日期任务。
- **note** (字符串, 可选): 备注信息。
- **time** (字符串, 可选): 开始时间 `HH:MM`；设置后会在任务开始时刻提醒。
- **reminderTimes** (对象数组, 可选): 一个或多个额外提醒时间。每项包含：
  - **time** (字符串, 必填): 提醒时刻。使用 `HH:MM` 表示任务日期范围内的该时刻；使用 `YYYY-MM-DDTHH:MM` 表示绝对提醒日期和时刻，可用于提前一天等场景。
  - **endTime** (字符串, 可选): 提醒结束时刻，格式同 `time`。
  - **note** (字符串, 可选): 仅用于本次提醒的附加备注。
  - 在 `update_task` 中传入空数组 `[]` 可清除全部额外提醒。
- **endDate** (字符串, 可选): 结束日期 `YYYY-MM-DD`。
- **endTime** (字符串, 可选): 结束时间 `HH:MM`。
- **priority** (字符串, 可选): 优先级 (`"high"`, `"medium"`, `"low"`, `"none"`)。
- **projectId** (字符串, 可选): 项目 ID。
- **categoryId** (字符串, 可选): 分类 ID。
- **parentId** (字符串, 可选): 已有父任务的 ID。传入后会创建单个子任务；支持普通任务 ID 和 `任务ID_YYYY-MM-DD` 格式的重复任务实例 ID。父任务不存在或属于订阅任务时不会创建。
- **completed** (布尔值, 可选): 是否完成，默认为 `false`。
- **blockId** (字符串, 可选): 绑定的思源块 ID。设置后会自动获取并关联文档 ID，并在思源中同步块属性与书签。
- **url** (字符串, 可选): 网页链接。
- **kanbanStatus** (字符串, 可选): 看板状态。如果任务绑定了项目，所设看板状态必须是该项目已配置的看板状态（可以通过 `get_project` 或 `list_columns` 查询该项目的看板配置）。如果未绑定项目，必须是系统默认的看板状态之一。如果设置为 `"completed"` 且 `completed` 未显式传入，会自动将任务标记为已完成。
- **customProgress** (数字, 可选): 自定义进度条百分比，取值范围为 `0` 到 `100` 的整数。
- **linkedHabitId** (字符串, 可选): 绑定的习惯 ID。可以通过 `habit` 相关的工具查询习惯列表来获取此 ID。
- **linkedHabitSyncPomodoroToday** (布尔值, 可选): 是否同步今日的番茄钟数据到绑定的习惯（必须在 `linkedHabitId` 设置时才生效）。
- **linkedHabitAutoCheckInOnComplete** (布尔值, 可选): 任务完成时是否自动为关联的习惯打卡（必须在 `linkedHabitId` 设置时才生效）。
- **linkedHabitAutoCheckInOptionKey** (字符串, 可选): 自动打卡习惯时的选项 Key。
- **linkedHabitAutoCheckInEmoji** (字符串, 可选): 自动打卡习惯时的 Emoji。
- **repeat** (对象, 可选): 重复周期性任务配置。**注意：如果启用了重复配置（enabled 为 true），但是开始日期 date 传入了 ""（空字符串），系统会自动将其默认设置为今日本地日期。** 属性如下：
  - **enabled** (布尔值, 必填): 是否启用。
  - **type** (字符串, 必填): 重复类型，支持 `"daily"` (每日), `"weekly"` (每周), `"monthly"` (每月), `"yearly"` (每年), `"custom"` (自定义), `"ebbinghaus"` (艾宾浩斯), `"lunar-monthly"` (农历每月), `"lunar-yearly"` (农历每年)。
  - **interval** (数字, 可选): 重复周期间隔。
  - **weekDays** (数字数组, 可选): 每周的哪几天 (0-6, 0为周日)。
  - **monthDays** (数字数组, 可选): 每月的哪几天 (1-31)。
  - **monthlyRepeatMode** (字符串, 可选): 每月重复类型 (`"date"` 按日期 / `"week"` 按星期)。
  - **endDate** (字符串, 可选): 重复截止日期 `YYYY-MM-DD`。
  - **endType** (字符串, 必填): 结束条件，支持 `"never"` (从不结束), `"date"` (截止到特定日期), `"count"` (限次数)。
  - **endCount** (数字, 可选): 限制重复的总次数。
  - **reminderSkipWeekendMode** (字符串, 可选): 跳过周末选项 (`"none"`, `"skip"`, `"only_weekend"`)。
  - **reminderSkipHolidays** (布尔值, 可选): 是否跳过法定节假日。
### 4. `create_tasks`
批量创建任务或批量给已有任务创建同级子任务。
- **tasks** (对象数组, 必填): 要创建的任务列表，不能为空。每项都必须包含 `title`，并支持 `create_task` 的任务数据属性，例如日期、时间、额外提醒、优先级、项目、分类、重复设置、绑定块、网页链接、看板状态、自定义进度和习惯联动等；不在列表项中嵌套 `parentId` 或其他任务列表。
- **parentId** (字符串, 可选): 不传时批量创建普通任务；传入已有任务 ID 时，`tasks` 中的所有任务都会成为该任务的同级子任务。支持重复任务实例 ID；子任务省略日期时会继承该实例日期。
- **projectId** (字符串, 可选): 所有列表项的公共默认项目。任务项自己的 `projectId` 优先；两处都省略且传入了 `parentId` 时，继承父任务项目。

### 5. `update_task`
批量修改更新任务。
- **updates** (对象数组, 必填): 更新项列表。每个对象必须包含：
  - **id** (字符串, 必填): 要修改的任务 ID。
  - 其他在 `create_task` 中支持的可更新参数 (包含 `reminderTimes`, `blockId`, `url`, `kanbanStatus`, `customProgress`, `linkedHabitId` 及打卡设置, `repeat` 对象等；不包含仅用于创建的 `parentId` 和 `tasks`)。

### 6. `delete_task`
删除任务.
- **id** (字符串, 必填): 任务 ID。

### 7. `list_categories`
列出所有任务分类。
- （无参数）

## 调用示例

### 获取今日及过期任务列表
```json
{
  "action": "search_task",
  "date": "today"
}
```

### 创建一个高优先级的任务
```json
{
  "action": "create_task",
  "title": "整理 MCP 工具技能说明文档",
  "date": "2026-07-11",
  "priority": "high",
  "note": "将 task、project、habit、stats 技能翻译为中文版"
}
```

### 创建任务并设置多个提醒
```json
{
  "action": "create_task",
  "title": "提交周报",
  "date": "2026-07-11",
  "time": "17:00",
  "reminderTimes": [
    {
      "time": "2026-07-10T17:00",
      "note": "提前一天准备材料"
    },
    {
      "time": "16:30",
      "note": "提交前再次检查"
    }
  ]
}
```

### 给已有任务创建子任务
```json
{
  "action": "create_task",
  "title": "补充接口测试",
  "parentId": "reminder_已有主任务ID"
}
```

### 批量创建普通任务
```json
{
  "action": "create_tasks",
  "tasks": [
    {
      "title": "梳理接口输入",
      "priority": "high"
    },
    {
      "title": "补充接口测试",
      "date": "2026-07-12"
    },
    {
      "title": "更新使用文档"
    }
  ]
}
```

### 给已有任务批量创建同级子任务
```json
{
  "action": "create_tasks",
  "parentId": "reminder_已有主任务ID",
  "tasks": [
    {
      "title": "梳理接口输入",
      "priority": "high"
    },
    {
      "title": "补充接口测试",
      "date": "2026-07-12"
    },
    {
      "title": "更新使用文档"
    }
  ]
}
```

### 创建一个每周一、三、五重复的周期性任务
```json
{
  "action": "create_task",
  "title": "部门例会汇报准备",
  "date": "2026-07-11",
  "priority": "medium",
  "repeat": {
    "enabled": true,
    "type": "weekly",
    "weekDays": [1, 3, 5],
    "endType": "never"
  }
}
```
