first commit
This commit is contained in:
@@ -0,0 +1,19 @@
|
||||
# 任务管理
|
||||
|
||||
> **SKILL.md** 中 #2 仅内联 **lite**:`create-todo`、`todo-query-ops`。其中 `todo-query-ops` 统一覆盖 list/get/complete/reopen/topic-filter。下列 recipe 已迁出速查表,命中时读本文件对应行。重型 **full** 见下表「行动指南」。命令细节见 [todo.md](./todo.md)。
|
||||
|
||||
## Recipe 速查(非 SKILL lite)
|
||||
|
||||
| Recipe | 步骤(命令均须 `--format json`,下略) |
|
||||
|--------|----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
|
||||
| `create-priority-todo` | 1. 确定执行者(同 [SKILL.md](../SKILL.md) 中 `create-todo` 步骤 1)<br>2. `todo task create --title "<标题>" --executors <userId>[,<userId2>...] --priority <10/20/30/40>`(可选 `--due "<截止ISO>"`;10低/20普通/30较高/40紧急)→ 取 `todoTaskId`<br>3. `todo task get --task-id <todoTaskId>` 回读标题、执行者、优先级和截止时间 |
|
||||
| `create-recurring-todo` | 1. 确定执行者(同 `create-todo` 步骤 1)<br>2. `todo task create --title "<标题>" --executors <userId> --due "<首次截止ISO>" --priority <10/20/30/40> --recurrence "DTSTART:<UTC时间>\nRRULE:FREQ=DAILY;INTERVAL=1"`(`--due` 必填;仅支持按天循环,见 [todo.md](./todo.md))→ 取 `todoTaskId`<br>3. `todo task get --task-id <todoTaskId>` 回读循环规则和任务字段 |
|
||||
| `reschedule-todo` | 1. `todo task list --status false` → 取 `todoTaskId`<br>2. `todo task update --task-id <todoTaskId> --due "<新截止时间>"` |
|
||||
|
||||
## Full / 组合(固定路线)
|
||||
|
||||
| Recipe | 行动指南(固定路线) |
|
||||
|--------|-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
|
||||
| generate-progress-report | 1. 按[「多源并行采集」](recipes/conventions.md#多源并行采集公共模式)执行<br>2. 交叉比对各源数据<br>3. `doc create --name "<报告名>" --content "<报告内容>"` |
|
||||
| batch-create-todo | 1. 按[「多源并行采集」](recipes/conventions.md#多源并行采集公共模式)执行 → 从结果提取任务条目<br>2. 每条:`aisearch person --query "<姓名>" --dimension name` → 取真实 `userId`;同名时先消歧<br>3. 逐条执行 `todo task create --title "<标题>" --executors <userId> --priority <10/20/30/40>`,从每次响应收集真实 `todoTaskId`;单批超 30 条须用户确认<br>4. 对全部 `todoTaskId` 并行执行 `todo task get --task-id <todoTaskId>`,逐项核对标题、执行者、优先级和截止时间;不能只以退出码或创建响应作为成功证据 |
|
||||
| assign-and-notify | 1. `aisearch person --query "<姓名>" --dimension name` → 取 `userId`<br>2. `todo task create --title "<标题>" --executors <userId> --priority <10/20/30/40>` → 取 `todoTaskId`<br>3. `todo task get --task-id <todoTaskId>` 回读任务,确认无误后再通知<br>4. `chat search --query "<群名>"` → 取 `openConversationId` → `chat message send --conversation-id <openConversationId> --content "<通知内容>"` |
|
||||
@@ -0,0 +1,11 @@
|
||||
# todo 局部意图消歧
|
||||
|
||||
本文件从单 Skill `intent-guide.md` 拆分而来,仅保留与本产品相关的跨产品消歧规则。
|
||||
|
||||
| 用户说... | 真实意图 | 应该用 | 不要用 | 理由 |
|
||||
|---|---|---|---|---|
|
||||
| "帮我记一下明天要做的事" | 创建个人待办 | `todo` | `doc` | 个人待办提醒,非文档内容 |
|
||||
| "给自己留一个明天下午的时间块/建个个人日程" | 创建个人日程 | `calendar event create` | `todo` | 个人 schedule 仍属于日历事件,不是待办 |
|
||||
| "明早 9 点提醒我提交周报" | 创建个人待办,但需先声明 reminder 边界 | `todo` | `calendar` | todo 当前只支持 dueTime 截止时间,不支持独立精确 reminder |
|
||||
| "帮我创建一个待办提醒" | 个人待办 | `todo` | `report` | 个人任务提醒,不是日志汇报 |
|
||||
| "把最近几次关于XX的会议汇总成报告" | 按主题汇总多次听记 | #5 generate-topic-report | #7 meeting-followup | #7 是单次会议听记跟进;多次会议按主题汇总属于工作汇报 |
|
||||
@@ -0,0 +1,151 @@
|
||||
# todo Lite Recipe
|
||||
|
||||
本文件从单 Skill `lite-recipes.md` 拆分而来,仅保留与本产品相关的轻量流程。
|
||||
|
||||
## #2 任务管理
|
||||
|
||||
### create-todo
|
||||
|
||||
1. 确定执行者:指定姓名 → `aisearch person --query "<姓名>" --dimension name` → `userId`;未指定 → `contact user get-self` → `userId`;多人 → 逐个搜索逗号拼接。
|
||||
2. 创建:`todo task create --title "<标题>" --executors <userId>[,<userId2>...] --priority <优先级>`(可选 `--due "<截止ISO>"`)→ `todoTaskId`
|
||||
|
||||
### todo-query-ops
|
||||
|
||||
- 查询:`todo task list [--status false|true]`(不传=全部)
|
||||
- 详情:`todo task get --task-id <id>`
|
||||
- 完成/重开:`todo task done --task-id <id> --status <true|false>`
|
||||
- 按主题筛选:list 后按标题关键词过滤
|
||||
|
||||
|
||||
## #7 听记与会后
|
||||
|
||||
> 产品命令完整参考见 [minutes.md](../../dingtalk-minutes/references/minutes.md)。full recipe 见 [07-minutes.md](../../dingtalk-minutes/references/07-minutes.md)。
|
||||
|
||||
### minutes-query(查询与获取)
|
||||
|
||||
> **scope 选择铁律(P2 真实 badcase)**:`list` 后的 scope 决定查询范围,最高频误判是把"我能访问的所有听记"错选成 `mine`:
|
||||
> - `mine` = **仅我自己创建/发起**的听记(范围最窄)
|
||||
> - `shared` = **仅他人共享给我**的听记
|
||||
> - `all` = **我可访问的全部**(= mine ∪ shared,范围最广)
|
||||
> - **判定口诀**:query 含"访问/权限/可见/能看到/所有/我的"等覆盖范围语义 → 一律走 `all`;**仅当**明确说"我创建的/我发起的/我录的" → 才走 `mine`。**不要因为句子里有"我"字就退化成 `mine`。**
|
||||
> - 错误:`我能访问的所有听记` → `list mine`(漏掉共享给我的,判定不通过)
|
||||
> - 正确:`我能访问的所有听记` → `dws minutes list all --format json`
|
||||
|
||||
> **选对象铁律(0605 P2 EDD badcase 提炼,命令对了但选错听记 = 整任务失败)**:list/搜索拿到结果后,必须按语义精准锁定目标听记,详见 [minutes.md](../../dingtalk-minutes/references/minutes.md)「选对象铁律 S1~S6」。速记:
|
||||
> - **S1 跨组织汇总**:以 list 返回的 `taskUuid + title + organizationName` 三元组为准逐条照抄,组织与听记不可张冠李戴。
|
||||
> - **S2 "最近一次某类会议"**:先 `--query "<主题词>"`(如周会)过滤出该类,再在候选里取时间最新;主题匹配优先级高于时间。
|
||||
> - **S3 比时长最长**:必须读 `durationMicros` 字段做数值比较,禁止凭印象/标题猜,口头结论与操作的 taskUuid 须自洽。
|
||||
> - **S4 内容为空**:锁定 taskUuid 后所有 get/update 复用同一 id;某字段为空就如实说,**禁止偷偷切换到另一条听记**。
|
||||
> - **S5 模糊日期匹配不到**:日期可能是"会议主题日期"而非"创建日期",按标题关键词搜,精确日期没命中就放宽 ±7 天/同主题候选请用户确认,**禁止直接报"找不到"**。搜索回退策略:① 先 `--query "<主题关键词>"` 不带日期搜 → ② 若结果过多则加 `--start/--end` 扩大到 ±7 天 → ③ 列出候选让用户确认。
|
||||
> - **S6 给标题没给 id**:必须先 `list all --query "<标题关键词>"` 定位 taskUuid 再 update/get,禁止凭记忆直接填 `--id` 跳过定位。
|
||||
|
||||
**列表查询**(`list` 后**必须**跟 scope:`mine`/`shared`/`all`,默认补 `all`):
|
||||
|
||||
```bash
|
||||
# 我可访问的所有听记(默认)
|
||||
dws minutes list all --format json
|
||||
# 按关键词服务端搜索(严禁全量拉取后本地 grep)
|
||||
dws minutes list all --query "周会" --format json
|
||||
# 按时间范围筛选(ISO-8601 格式)
|
||||
dws minutes list mine --start "2026-05-01T00:00:00+08:00" --end "2026-05-25T23:59:59+08:00" --format json
|
||||
# 关键词 + 时间组合
|
||||
dws minutes list all --query "需求评审" --start "2026-05-25T00:00:00+08:00" --end "2026-05-25T23:59:59+08:00" --format json
|
||||
# 限制条数
|
||||
dws minutes list mine --limit 5 --format json
|
||||
# 共享给我的听记
|
||||
dws minutes list shared --query "ROI" --format json
|
||||
```
|
||||
|
||||
| 参数 | 说明 |
|
||||
|------|------|
|
||||
| `--query "<关键词>"` | 服务端关键词搜索 |
|
||||
| `--start "<ISO-8601>"` | 开始时间 |
|
||||
| `--end "<ISO-8601>"` | 结束时间 |
|
||||
| `--limit <N>` | 每页条数,默认 10(`--max` 为兼容别名) |
|
||||
| `--cursor "<token>"` | 分页 token,首页留空(`--next-token` 为兼容别名) |
|
||||
|
||||
**获取详情**:
|
||||
|
||||
- 批量基础信息:`minutes get batch --ids <uuid1,uuid2,...>`
|
||||
- 单篇摘要:`minutes get summary --id <taskUuid>`
|
||||
- 转写原文(自动翻页):`minutes get transcription --id <taskUuid>`(返回 `nextToken` 时用 `--next-token <token>` 继续)
|
||||
- 关键词:`minutes get keywords --id <taskUuid>`
|
||||
- 待办事项:`minutes get todos --id <taskUuid>`
|
||||
- 基础信息:`minutes get info --id <taskUuid>`
|
||||
- 音频地址:`minutes get audio --id <taskUuid>`
|
||||
|
||||
> `--id`/`--uuid`/`--task-uuid` 三者等价。推荐 `--id`。
|
||||
|
||||
### minutes-edit(编辑与替换)
|
||||
|
||||
- **替换转写文字**:`minutes replace-text --id <taskUuid> --search "旧文字" --replace "新文字"`
|
||||
- 执行前检查特殊字符(引号/书名号/括号等),若包含先提示用户确认去除
|
||||
- 替换成功后追问是否加热词:`minutes hot-word add --words "新文字"`
|
||||
- **替换发言人**:先统一搜人取得 dingUid → `minutes speaker replace --id <taskUuid> --from "发言人X" --to "姓名" --target-uid <userId>`
|
||||
- 查询 dingUid:`aisearch person --query "姓名" --dimension name --format json` → 取 `userId`
|
||||
- 多个匹配 → 列出候选让用户选;无匹配 → 不带 `--target-uid` 执行
|
||||
- **修改标题**:`minutes update title --id <taskUuid> --title "新标题"`
|
||||
- **修改摘要**:`minutes update summary --id <taskUuid> --content "新内容"`
|
||||
- **热词管理**:`minutes hot-word add --words "词1,词2"` / `minutes hot-word list`
|
||||
- **思维导图**:`minutes mind-graph create --id <taskUuid>` → `mind-graph status --id <taskUuid>` 轮询至完成
|
||||
|
||||
### minutes-tag(标签/分组查询)
|
||||
|
||||
- 查询标签列表:`minutes tag list` → 返回用户在听记页面创建的所有标签/分组(含 tagId 和名称)
|
||||
- 按标签查听记:`minutes tag query --tag-id <tagId> [--limit 20] [--cursor <token>]`
|
||||
- tagId 来自 `tag list` 返回值,不可编造
|
||||
- 支持分页,`--cursor` 传入上一次返回的 nextToken
|
||||
|
||||
**典型链路**:用户说"帮我看看'周会'标签下的听记" →
|
||||
1. `dws minutes tag list --format json` → 按名称匹配找到 tagId
|
||||
2. `dws minutes tag query --tag-id <tagId> --format json`
|
||||
|
||||
### minutes-permission(权限管理)
|
||||
|
||||
- 添加成员:`minutes permission add --ids <uuid1,uuid2> --member-uids <uid1,uid2> --policy 4`
|
||||
- 需先通过 `aisearch person --query "<姓名>" --dimension name` 获取目标 userId
|
||||
- policy:0=不可见 / 1=仅查看 / 2=查看+下载 / 3=查看+下载+编辑 / 4=全部权限
|
||||
- 移除成员:`minutes permission remove --ids <uuid1,uuid2> --member-uids <uid1,uid2>`
|
||||
|
||||
### minutes-upload(音频上传)
|
||||
|
||||
```bash
|
||||
# 创建上传会话
|
||||
dws minutes upload create --file-name "meeting.mp3" --file-size 61565431 --format json
|
||||
# 上传完成后确认
|
||||
dws minutes upload complete --session-id <sid> --format json
|
||||
# 取消上传
|
||||
dws minutes upload cancel --session-id <sid> --format json
|
||||
```
|
||||
|
||||
### 最佳实践案例速查(详见 [minutes.md](../../dingtalk-minutes/references/minutes.md))
|
||||
|
||||
| 案例 | 场景 | 正确链路 |
|
||||
|------|------|----------|
|
||||
| 案例 1 | 听记 URL + 创建思维导图 | 提取 taskUuid → `mind-graph create` → `mind-graph status` 轮询;**禁止**走 app-development 或前端库 |
|
||||
| 案例 2 | 替换文字后未引导热词 | 检查特殊字符 → `replace-text` → 追问加热词 `hot-word add` |
|
||||
| 案例 3 | 查听记拉了不必要的转写 | 用户只要列表 → `list` 即可,**不要**自动拉 `get transcription` |
|
||||
| 案例 4 | 拉完转写只输出时间线原文 | 拉完后追问按发言人聚类 → 引导匹配 → 调用 `speaker replace` 写回 |
|
||||
| 案例 5 | 查某人说了什么不引导替换 | 推断发言人 → **用户确认** → 结构化总结 → 引导 `speaker replace` |
|
||||
| 案例 6 | 通讯录+部门+转写三路印证 | Step 3 画像 + Step 4 `aisearch person` 并发 → 置信度 ≥70% → 确认 → 替换 |
|
||||
| 案例 7 | grep 花名误判未参会 | **禁止**在转写文本里 grep 人名判参会;**必须**调 `aisearch person` |
|
||||
| 案例 8 | 听记类 query 不走 dws | **禁止**用 session_search/browser_use/activity:search 替代 dws;模糊请求先 `list mine` |
|
||||
| 案例 9 | 按标签筛选听记 | `tag list` → 按名称匹配 tagId → `tag query --tag-id <tagId>`;**禁止**编造 tagId |
|
||||
|
||||
### 听记取数深度约束(0609 点踩 case 提炼)
|
||||
|
||||
> 详细说明见 [minutes.md](../../dingtalk-minutes/references/minutes.md)。
|
||||
|
||||
- **转写原文硬约束**:用户诉求含「聚焦原话/逐字/沟通细节/具体讨论了什么」等词时,**必须先调 `get transcription` 翻页拉全**,禁止仅凭 summary 出稿
|
||||
- **数据源下钻**:听记维度**必须 `get summary`(或 `get transcription`)读正文**,严禁只取标题列表;scope 用 `all`;空时换窗重试或标注
|
||||
- **听记链接解析**:聊天消息中遇到听记链接(`flash_minutes_detail`/`SHANJI`)→ 解析 `minutesId` → 调 `minutes get summary/transcription`,禁止把链接降级为关键词
|
||||
- **忠实性约束**:源数据无某要素(行动项/责任人/数字)时禁止生成;统计字段基于实际取数计数,不得编造
|
||||
- **多源全覆盖**:用户枚举多数据源时每个来源都必须调对应工具;瞬时错误重试;如实声明缺失来源,禁编无来源数字
|
||||
|
||||
### 间接意图识别铁律
|
||||
|
||||
query 未提"听记"但任务产出依赖会议讨论内容时(报告/总结/日报/复盘/商业分析/市场感知),听记采集是**必跑前置步骤**:
|
||||
|
||||
1. **铁律 A**:任务含"会议/讨论/沟通"信息需求 → `dws minutes list` 必跑
|
||||
2. **铁律 B**:用户说"文档啥也没有" → 听记优先级更高(唯一结构化数据源)
|
||||
3. **铁律 C**:多源聚合场景 → 每个被提及的数据源都必须有采集动作,听记侧 0 调用 = 严重失败
|
||||
@@ -0,0 +1,44 @@
|
||||
# 业务域通用规范
|
||||
|
||||
> 仅服务本 skill 已迁入的行动指南。安全门控、危险操作确认、`--format json` 等已在本 skill 的 `SKILL.md` 中定义,此处不重复。
|
||||
|
||||
## 批量查询规范
|
||||
|
||||
| # | 规范 |
|
||||
|---|------|
|
||||
| 1 | **并行查详情**:拿到多个 ID 后,用 `&` 合并到同一条 Shell 命令并行执行 + `wait`,**严禁逐条串行** |
|
||||
| 2 | **翻页**:分页接口须拉全直至无更多 |
|
||||
| 3 | **优先批量 API**:有批量接口则用批量;无则按 #1 并行 |
|
||||
| 4 | **群消息**:必须先 `chat search --query` 得 `openConversationId`,再 `chat message list --group <openConversationId> --time "<yyyy-MM-dd HH:mm:ss>" --direction older`;多群同条命令并行 |
|
||||
| 5 | **列表少轮次**:带条件搜索/列表 → 一次采全详情;**禁止**无新参数时重复同一 `list` / `search` |
|
||||
|
||||
## 多源并行采集(公共模式)
|
||||
|
||||
> recipe 引用方式:`按「多源并行采集」执行(关键词=<X>,时间=<Y>至<Z>)`。
|
||||
|
||||
- 同条 Shell:`&` 并行 + `wait`;分页须采全。
|
||||
- 只保留与主题相关的数据,无关丢弃。
|
||||
- 有批量详情接口优先;否则并行拉详情(见上表 #1)。
|
||||
- 具体采哪些产品列表由对应 **行动指南 recipe** 与当前产品参考决定;不要引入本文档未覆盖的产品路线。
|
||||
|
||||
## 字段术语与 ID 传递
|
||||
|
||||
> list 返回 JSON 后,必须提取下表字段传给后续命令。**禁止用其他字段替代。**
|
||||
|
||||
| 字段 | 来源 | 传递给 |
|
||||
|------|------|--------|
|
||||
| `taskUuid` | `minutes list` | `minutes get summary/info/batch --id(s)` |
|
||||
| `userId` | `aisearch person` / `contact user search` / `contact dept list-members` | `contact user get --ids`、`todo --executors`、`calendar --users` |
|
||||
| `deptId` | `contact dept search` | `contact dept list-members --ids <deptId1,deptId2...>`;多子部门时对每个子部门分别 `dept search` 取 id |
|
||||
| `nodeId` | `drive search` / `wiki node search` | `doc read/update --node`、`drive copy/move/rename/delete --node` |
|
||||
| `nodeId` | `wiki node list` 中的 folder 类型节点 / `wiki node create --type folder` | `wiki node list --folder`、`wiki node create --folder`、`drive upload --folder`、`drive copy/move --folder` |
|
||||
| `eventId` | `calendar event list` | `calendar event get/update --id` |
|
||||
| `processInstanceId` | `oa approval list-*` | `oa approval detail/approve --instance-id` |
|
||||
| `openConversationId` | `chat search` | `chat message list/send --group` |
|
||||
| `todoTaskId` | `todo task list` | `todo task update/done --task-id` |
|
||||
| `reportId` | `report inbox list` / `report outbox list` | `report entry get/stats --report-id` |
|
||||
| `baseId` / `tableId` | `aitable base search` | `aitable record query --base-id --table-id` |
|
||||
| `dentryUuid` | `drive list` / `drive mkdir` | `drive info/download/copy/move/rename/delete --node`、`drive list/mkdir/upload/copy/move --folder` |
|
||||
| `dentryId` | `drive info` 的数字字段 | 仅用于 `chat message send --dentry-id` |
|
||||
|
||||
**ID 边界硬约束**:`dentryId` 通常是纯数字,只表示聊天文件消息需要的钉盘条目数字 ID;它不是父目录 ID。遇到 `drive --node/--folder`、`doc --node`、`wiki node --folder` 时,只能使用 `dentryUuid` / `nodeId` / 文档 URL。若当前上下文只有数字型 `dentryId`,必须先重新 `drive list` / `drive search` / `wiki node list` 获取正确 ID,不能把该数字直接代入后续命令。
|
||||
@@ -0,0 +1,514 @@
|
||||
# 待办 (todo) 命令参考
|
||||
|
||||
## 命令总览
|
||||
|
||||
### 创建待办
|
||||
```
|
||||
Usage:
|
||||
dws todo task create [flags]
|
||||
Example:
|
||||
dws todo task create --title "修复线上Bug" --executors <USER_ID_1>,<USER_ID_2> --priority 40
|
||||
dws todo task create --title "每日站会" --executors <USER_ID> --due "2026-03-20T10:00:00+08:00" --recurrence "DTSTART:20260320T020000Z\nRRULE:FREQ=DAILY;INTERVAL=1"
|
||||
Flags:
|
||||
--due string 截止时间 ISO-8601 (如 2026-03-10T18:00:00+08:00;这是 deadline,不是 reminder)
|
||||
--executors string 执行者 userId 列表 (必填)
|
||||
--priority string 优先级: 10低/20普通/30较高/40紧急
|
||||
--recurrence string 循环待办 (需先设置 --due); 仅支持按天循环,格式见下方说明
|
||||
--title string 待办标题 (必填)
|
||||
```
|
||||
|
||||
### 创建子待办
|
||||
```
|
||||
Usage:
|
||||
dws todo task create-sub [flags]
|
||||
Example:
|
||||
dws todo task create-sub --parent-id <PARENT_TASK_ID> --title "子任务标题" --executors <USER_ID_1>,<USER_ID_2> --priority 40
|
||||
dws todo task create-sub --parent-id <PARENT_TASK_ID> --title "子任务标题" --executors <USER_ID> --due "2026-03-20T10:00:00+08:00"
|
||||
Flags:
|
||||
--due string 截止时间 ISO-8601 (如 2026-03-10T18:00:00+08:00;这是 deadline,不是 reminder)
|
||||
--executors string 执行者 userId 列表 (必填)
|
||||
--parent-id string 父待办任务 ID (必填,该信息可以通过创建待办接口或者查询待办列表接口返回)
|
||||
--priority string 优先级: 10低/20普通/30较高/40紧急
|
||||
--recurrence string 循环待办 (需先设置 --due); 仅支持按天循环,格式见下方说明
|
||||
--title string 子待办标题 (必填)
|
||||
```
|
||||
|
||||
### 查询待办列表
|
||||
```
|
||||
Usage:
|
||||
dws todo task list [flags]
|
||||
Example:
|
||||
dws todo task list --page 1 --size 20
|
||||
dws todo task list --page 1 --size 20 --status false
|
||||
dws todo task list --page 1 --size 20 --status false --priority 40,30,10 --role-types creator,executor,participant --plan-finish-date-start "2026-03-01T00:00:00+08:00" --plan-finish-date-end "2026-03-10T18:00:00+08:00"
|
||||
Flags:
|
||||
--page string 页码 (默认 1)
|
||||
--plan-finish-date-end string 截止时间范围查询结束 ISO-8601 (如 2026-03-10T18:00:00+08:00)
|
||||
--plan-finish-date-start string 截止时间范围查询开始 ISO-8601 (如 2026-03-01T00:00:00+08:00)
|
||||
--priority string 优先级: 10低/20普通/30较高/40紧急,支持逗号分隔多个值 (如 40,30,10)
|
||||
--role-types string 角色类型: creator/executor/participant,可同时传入多个值用逗号分隔(如 creator,executor),默认 executor
|
||||
--size string 每页数量 (默认 20)
|
||||
--status string true=已完成, false=未完成
|
||||
--query-all true=查询全部待办,false=查询当前组织待办
|
||||
```
|
||||
|
||||
参数说明:
|
||||
|
||||
| 参数 | 类型 | 说明 |
|
||||
|------|------|------|
|
||||
| `--priority` | string | 优先级筛选,支持逗号分隔多个值,如 `40,30,10` 表示同时筛选紧急、较高、低优先级 |
|
||||
| `--role-types` | string | 按角色筛选,支持 `creator`(创建者)、`executor`(执行者)、`participant`(参与人);可同时传入多个角色用逗号分隔(如 `creator,executor`),一次查询即可覆盖多个角色,无需分多次调用;默认为 `executor` |
|
||||
| `--plan-finish-date-start` | string | 截止时间范围查询开始,ISO-8601 格式,需与 `--plan-finish-date-end` 成对使用 |
|
||||
| `--plan-finish-date-end` | string | 截止时间范围查询结束,ISO-8601 格式,需与 `--plan-finish-date-start` 成对使用 |
|
||||
|
||||
### 修改待办任务
|
||||
```
|
||||
Usage:
|
||||
dws todo task update [flags]
|
||||
Example:
|
||||
dws todo task update --task-id <taskId> --title "新标题"
|
||||
dws todo task update --task-id <taskId> --priority 40 --due "2026-03-10T18:00:00+08:00"
|
||||
dws todo task update --task-id <taskId> --done true
|
||||
Flags:
|
||||
--done string 完成状态: true/false
|
||||
--due string 截止时间 ISO-8601 (如 2026-03-10T18:00:00+08:00;这是 deadline,不是 reminder)
|
||||
--priority string 优先级: 10低/20普通/30较高/40紧急
|
||||
--task-id string 待办任务 ID (必填)
|
||||
--title string 新标题
|
||||
```
|
||||
|
||||
### 修改执行者的待办完成状态
|
||||
```
|
||||
Usage:
|
||||
dws todo task done [flags]
|
||||
Example:
|
||||
dws todo task done --task-id <taskId> --status true
|
||||
dws todo task done --task-id <taskId> --status false
|
||||
Flags:
|
||||
--status string 完成状态: true=已完成, false=未完成 (必填)
|
||||
--task-id string 待办任务 ID (必填)
|
||||
```
|
||||
|
||||
### 待办详情
|
||||
```
|
||||
Usage:
|
||||
dws todo task get [flags]
|
||||
Example:
|
||||
dws todo task get --task-id <taskId>
|
||||
Flags:
|
||||
--task-id string 待办任务 ID (必填)
|
||||
```
|
||||
|
||||
### 删除待办
|
||||
|
||||
> **CAUTION:** 不可逆操作 — 执行前必须向用户确认。
|
||||
|
||||
```
|
||||
Usage:
|
||||
dws todo task delete [flags]
|
||||
Example:
|
||||
dws todo task delete --task-id <taskId>
|
||||
dws todo task delete --task-id <taskId> --yes
|
||||
Flags:
|
||||
--task-id string 待办任务 ID (必填)
|
||||
```
|
||||
|
||||
### 新增待办评论
|
||||
```
|
||||
Usage:
|
||||
dws todo comment add [flags]
|
||||
Example:
|
||||
dws todo comment add --task-id <taskId> --content "评论内容"
|
||||
Flags:
|
||||
--task-id string 待办任务 ID (必填)
|
||||
--content string 评论内容 (必填)
|
||||
```
|
||||
|
||||
### 查询待办评论列表
|
||||
```
|
||||
Usage:
|
||||
dws todo comment list [flags]
|
||||
Example:
|
||||
dws todo comment list --task-id <taskId>
|
||||
dws todo comment list --task-id <taskId> --page 1 --size 20
|
||||
Flags:
|
||||
--task-id string 待办任务 ID (必填)
|
||||
--page string 页码 (默认 1)
|
||||
--size string 每页数量 (默认 20)
|
||||
```
|
||||
|
||||
### 删除待办评论
|
||||
|
||||
> **CAUTION:** 不可逆操作 — 执行前必须向用户确认。
|
||||
|
||||
```
|
||||
Usage:
|
||||
dws todo comment delete [flags]
|
||||
Example:
|
||||
dws todo comment delete --task-id <taskId> --comment-id <commentId>
|
||||
dws todo comment delete --task-id <taskId> --comment-id <commentId> --yes
|
||||
Flags:
|
||||
--task-id string 待办任务 ID (必填)
|
||||
--comment-id string 评论 ID (必填)
|
||||
--yes 跳过二次确认 (慎用)
|
||||
```
|
||||
|
||||
### 添加待办执行人
|
||||
```
|
||||
Usage:
|
||||
dws todo task add-executor [flags]
|
||||
Example:
|
||||
dws todo task add-executor --task-id <taskId> --executors <USER_ID_1>,<USER_ID_2>
|
||||
Flags:
|
||||
--executors string 执行者 userId 列表 (必填)
|
||||
--task-id string 待办任务 ID (必填)
|
||||
```
|
||||
### 移除待办执行人
|
||||
```
|
||||
Usage:
|
||||
dws todo task remove-executor [flags]
|
||||
Example:
|
||||
dws todo task remove-executor --task-id <taskId> --executors <USER_ID_1>,<USER_ID_2>
|
||||
Flags:
|
||||
--executors string 执行者 userId 列表 (必填)
|
||||
--task-id string 待办任务 ID (必填)
|
||||
```
|
||||
### 添加待办参与人
|
||||
```
|
||||
Usage:
|
||||
dws todo task add-participant [flags]
|
||||
Example:
|
||||
dws todo task add-participant --task-id <taskId> --participants <USER_ID_1>,<USER_ID_2>
|
||||
Flags:
|
||||
--participants string 参与人 userId 列表 (必填)
|
||||
--task-id string 待办任务 ID (必填)
|
||||
```
|
||||
### 移除待办参与人
|
||||
```
|
||||
Usage:
|
||||
dws todo task remove-participant [flags]
|
||||
Example:
|
||||
dws todo task remove-participant --task-id <taskId> --participants <USER_ID_1>,<USER_ID_2>
|
||||
Flags:
|
||||
--participants string 参与人 userId 列表 (必填)
|
||||
--task-id string 待办任务 ID (必填)
|
||||
```
|
||||
|
||||
### 查询子待办列表
|
||||
```
|
||||
Usage:
|
||||
dws todo task list-sub [flags]
|
||||
Example:
|
||||
dws todo task list-sub --task-id <taskId>
|
||||
Flags:
|
||||
--task-id string 待办任务 ID (必填)
|
||||
```
|
||||
|
||||
### 上传待办附件
|
||||
|
||||
> ⚠️ 重要:该接口会上传文件到附件,不可用于测试或试探性调用。调用前必须确认待办存在。
|
||||
|
||||
```
|
||||
Usage:
|
||||
dws todo task add-attachment [flags]
|
||||
Example:
|
||||
dws todo task add-attachment --task-id <taskId> --file /path/to/file.pdf
|
||||
Flags:
|
||||
--file string 本地文件路径 (必填)
|
||||
--task-id string 待办任务 ID (必填)
|
||||
```
|
||||
|
||||
### 查询待办附件列表
|
||||
```
|
||||
Usage:
|
||||
dws todo task list-attachment [flags]
|
||||
Example:
|
||||
dws todo task list-attachment --task-id <taskId>
|
||||
Flags:
|
||||
--task-id string 待办任务 ID (必填)
|
||||
```
|
||||
|
||||
### 删除待办附件
|
||||
|
||||
> **CAUTION:** 不可逆操作 — 执行前必须向用户确认。
|
||||
|
||||
```
|
||||
Usage:
|
||||
dws todo task remove-attachment [flags]
|
||||
Example:
|
||||
dws todo task remove-attachment --task-id <taskId> --attachment-id <attachmentId>
|
||||
dws todo task remove-attachment --task-id <taskId> --attachment-id <attachmentId> --yes
|
||||
Flags:
|
||||
--attachment-id string 待办附件 ID (必填)
|
||||
--task-id string 待办任务 ID (必填)
|
||||
```
|
||||
附件 attachmentId 使用 `dws todo task list-attachment` 命令获取。
|
||||
|
||||
### 添加待办提醒
|
||||
```
|
||||
Usage:
|
||||
dws todo task add-reminder [flags]
|
||||
Example:
|
||||
dws todo task add-reminder --task-id <taskId> --base-time dueTime --due-date-offset -30
|
||||
dws todo task add-reminder --task-id <taskId> --base-time customTime --reminder-time-stamp "2026-03-10T18:00:00+08:00"
|
||||
Flags:
|
||||
--base-time string 提醒基准时间: dueTime/customTime (必填)
|
||||
--due-date-offset string 截止时间偏移量 (baseTime=dueTime 时必填)
|
||||
--reminder-time-stamp string 自定义提醒时间 ISO-8601 (如 2026-03-10T18:00:00+08:00;baseTime=customTime 时必填)
|
||||
--task-id string 待办任务 ID (必填)
|
||||
```
|
||||
|
||||
参数说明:
|
||||
|
||||
| 参数 | 类型 | 说明 |
|
||||
|------|------|------|
|
||||
| `--base-time` | string | 提醒基准时间,必填。`dueTime` = 基于截止时间偏移;`customTime` = 自定义时间戳 |
|
||||
| `--due-date-offset` | number | 截止时间偏移量(分钟),`baseTime=dueTime` 时必填。负数表示提前,如 `-30` 表示截止前 30 分钟 |
|
||||
| `--reminder-time-stamp` | string | 自定义提醒时间,ISO-8601 格式(如 `2026-03-10T18:00:00+08:00`),`baseTime=customTime` 时必填 |
|
||||
|
||||
### 重置待办提醒
|
||||
```
|
||||
Usage:
|
||||
dws todo task reset-reminder [flags]
|
||||
Example:
|
||||
dws todo task reset-reminder --task-id <taskId>
|
||||
dws todo task reset-reminder --task-id <taskId> --reminder-rules '[{"dueDateOffset":-30,"baseTime":"dueTime"},{"reminderTimeStamp":"2026-03-10T18:00:00+08:00","baseTime":"customTime"}]'
|
||||
Flags:
|
||||
--reminder-rules string 提醒规则 JSON 数组 (可选,为空则清除提醒)
|
||||
--task-id string 待办任务 ID (必填)
|
||||
```
|
||||
|
||||
`--reminder-rules` 数据结构说明:
|
||||
|
||||
JSON 数组,每个元素为一条提醒规则,支持两种 `baseTime` 模式混合使用:
|
||||
|
||||
| 字段 | 类型 | 说明 |
|
||||
|------|------|------|
|
||||
| `baseTime` | string | 提醒基准时间,必填。`dueTime` = 基于截止时间偏移;`customTime` = 自定义时间戳 |
|
||||
| `dueDateOffset` | number | 截止时间偏移量(分钟),`baseTime=dueTime` 时必填。负数表示提前,如 `-30` 表示截止前 30 分钟 |
|
||||
| `reminderTimeStamp` | string | 自定义提醒时间,ISO-8601 格式(如 `2026-03-10T18:00:00+08:00`),`baseTime=customTime` 时必填 |
|
||||
|
||||
示例:
|
||||
```json
|
||||
[
|
||||
{"dueDateOffset": -30, "baseTime": "dueTime"},
|
||||
{"reminderTimeStamp": "2026-03-10T18:00:00+08:00", "baseTime": "customTime"}
|
||||
]
|
||||
```
|
||||
以上表示两条提醒规则:第一条在截止时间前 30 分钟提醒,第二条在指定时间(ISO-8601)提醒。
|
||||
|
||||
### 给待办打标签
|
||||
```
|
||||
Usage:
|
||||
dws todo tag add [flags]
|
||||
Example:
|
||||
dws todo tag add --task-id <taskId> --tag-codes code1,code2
|
||||
Flags:
|
||||
--tag-codes string 标签编码列表,最多支持2个,逗号分隔 (必填)
|
||||
--task-id string 待办任务 ID (必填)
|
||||
```
|
||||
|
||||
### 删除待办标签
|
||||
```
|
||||
Usage:
|
||||
dws todo tag delete [flags]
|
||||
Example:
|
||||
dws todo tag delete --tag-codes code1,code2
|
||||
dws todo tag delete --tag-codes code1,code2 --yes
|
||||
Flags:
|
||||
--tag-codes string 要删除的标签编码列表,逗号分隔 (必填)
|
||||
--yes 跳过交互确认,直接执行删除
|
||||
注意: ⚠️ 不可逆操作,执行前需用户确认;传 --yes 可跳过交互提示
|
||||
```
|
||||
|
||||
### 更新待办标签
|
||||
```
|
||||
Usage:
|
||||
dws todo tag update [flags]
|
||||
Example:
|
||||
dws todo tag update --user-tags '[{"code":"code1","name":"新名称"}]'
|
||||
Flags:
|
||||
--user-tags string 标签列表 JSON 数组 (必填)
|
||||
```
|
||||
|
||||
### 查询待办标签列表
|
||||
```
|
||||
Usage:
|
||||
dws todo tag list
|
||||
Example:
|
||||
dws todo tag list
|
||||
```
|
||||
|
||||
### 创建待办标签
|
||||
```
|
||||
Usage:
|
||||
dws todo tag create [flags]
|
||||
Example:
|
||||
dws todo tag create --name "标签名"
|
||||
Flags:
|
||||
--name string 标签名称 (必填)
|
||||
```
|
||||
|
||||
## 意图判断
|
||||
|
||||
用户说"加个待办/记一下/TODO" → `task create`
|
||||
用户说"每天重复/循环待办/按天重复" → `task create`(需 `--due` + `--recurrence`)
|
||||
用户说"加个子任务/创建子待办" → `task create-sub`
|
||||
用户说"看看待办/我有啥要做" → `task list`
|
||||
用户说"改个待办/修改待办标题/改优先级" → `task update`
|
||||
用户说"做完了/完成待办/标记完成" → `task done`
|
||||
用户说"看看待办详情" → `task get`
|
||||
用户说"删除待办/取消待办" → `task delete`
|
||||
用户说"给待办加条评论/留个备注" → `comment add`
|
||||
用户说"看看这个待办的评论" → `comment list`
|
||||
用户说"删除这条评论" → `comment delete`
|
||||
用户说"加个执行人/添加执行者" → `task add-executor`
|
||||
用户说"移除执行人/删除执行者" → `task remove-executor`
|
||||
用户说"加个参与人/添加参与者" → `task add-participant`
|
||||
用户说"移除参与人/删除参与者" → `task remove-participant`
|
||||
用户说"给待办加个提醒/设置提醒" → `task add-reminder`
|
||||
用户说"重置提醒/清除提醒/修改提醒规则" → `task reset-reminder`
|
||||
用户说"查看子待办/子任务列表" → `task list-sub`
|
||||
用户说"给待办加个附件/上传附件" → `task add-attachment`
|
||||
用户说"查看待办附件/附件列表" → `task list-attachment`
|
||||
用户说"删除附件/移除附件" → `task remove-attachment`
|
||||
用户说"给待办打标签/加个标签" → `tag add`
|
||||
用户说"删除待办标签/移除标签" → `tag delete`
|
||||
用户说"修改标签/更新标签信息" → `tag update`
|
||||
用户说"看看标签/查看标签列表" → `tag list`
|
||||
用户说"创建标签/新建标签" → `tag create`
|
||||
|
||||
|
||||
关键区分: todo(个人待办)
|
||||
|
||||
## 核心工作流
|
||||
|
||||
```bash
|
||||
# 1. 创建待办 — 提取 todoTaskId
|
||||
dws todo task create --title "修复线上Bug" --executors userId1,userId2 \
|
||||
--priority 40 --due "2026-03-10T18:00:00+08:00" --format json
|
||||
|
||||
# 1b. 创建按天循环的待办(必须先有 --due;recurrence 与 MCP create_personal_todo 一致)
|
||||
dws todo task create --title "每日站会" --executors userId1 \
|
||||
--due "2026-03-20T10:00:00+08:00" \
|
||||
--recurrence "DTSTART:20260320T020000Z\nRRULE:FREQ=DAILY;INTERVAL=1" --format json
|
||||
|
||||
# 1c. 创建子待办(需先获取父待办 ID)
|
||||
dws todo task create-sub --parent-id <PARENT_TASK_ID> --title "子任务标题" --executors userId1 \
|
||||
--priority 40 --due "2026-03-10T18:00:00+08:00" --format json
|
||||
|
||||
# 2. 查看未完成待办
|
||||
dws todo task list --page 1 --size 20 --status false --format json
|
||||
|
||||
# 3. 查看待办详情
|
||||
dws todo task get --task-id <taskId> --format json
|
||||
|
||||
# 4. 修改待办信息
|
||||
dws todo task update --task-id <taskId> --title "新标题" --priority 40 --format json
|
||||
|
||||
# 5. 标记待办完成
|
||||
dws todo task done --task-id <taskId> --status true --format json
|
||||
|
||||
# 6. 删除待办
|
||||
dws todo task delete --task-id <taskId> --yes --format json
|
||||
|
||||
# 7. 给待办新增评论
|
||||
dws todo comment add --task-id <taskId> --content "已开始处理" --format json
|
||||
|
||||
# 8. 查看待办评论列表
|
||||
dws todo comment list --task-id <taskId> --page 1 --size 20 --format json
|
||||
|
||||
# 9. 删除待办评论
|
||||
dws todo comment delete --task-id <taskId> --comment-id <commentId> --yes --format json
|
||||
|
||||
# 10. 添加待办执行人
|
||||
dws todo task add-executor --task-id <taskId> --executors userId1,userId2 --format json
|
||||
# 11. 移除待办执行人
|
||||
dws todo task remove-executor --task-id <taskId> --executors userId1 --format json
|
||||
# 12. 添加待办参与人
|
||||
dws todo task add-participant --task-id <taskId> --participants userId1,userId2 --format json
|
||||
# 13. 移除待办参与人
|
||||
dws todo task remove-participant --task-id <taskId> --participants userId1 --format json
|
||||
|
||||
# 14. 添加待办提醒(基于截止时间偏移,待办必须有截止时间)
|
||||
dws todo task add-reminder --task-id <taskId> --base-time dueTime --due-date-offset <dueDateOffset> --format json
|
||||
# 15. 添加待办提醒(自定义时间戳)
|
||||
dws todo task add-reminder --task-id <taskId> --base-time customTime --reminder-time-stamp "2026-03-10T18:00:00+08:00" --format json
|
||||
# 16. 重置待办提醒
|
||||
dws todo task reset-reminder --task-id <taskId> --format json
|
||||
# 17. 重置待办提醒(指定新规则)
|
||||
dws todo task reset-reminder --task-id <taskId> --reminder-rules '<reminderRules>' --format json
|
||||
|
||||
# 18. 查询子待办列表
|
||||
dws todo task list-sub --task-id <taskId> --format json
|
||||
# 19. 上传待办附件
|
||||
dws todo task add-attachment --task-id <taskId> --file /path/to/file.pdf --format json
|
||||
# 20. 查询待办附件列表
|
||||
dws todo task list-attachment --task-id <taskId> --format json
|
||||
# 21. 删除待办附件
|
||||
dws todo task remove-attachment --task-id <taskId> --attachment-id <attachmentId> --yes --format json
|
||||
|
||||
# 22. 查询待办标签列表
|
||||
dws todo tag list --format json
|
||||
# 23. 创建待办标签
|
||||
dws todo tag create --name "标签名" --format json
|
||||
# 24. 给待办打标签
|
||||
dws todo tag add --task-id <taskId> --tag-codes code1,code2 --format json
|
||||
# 25. 更新待办标签
|
||||
dws todo tag update --user-tags '[{"tagCode":"code1","name":"新名称"}]' --format json
|
||||
# 26. 删除待办标签
|
||||
dws todo tag delete --tag-codes code1,code2 --yes --format json
|
||||
```
|
||||
|
||||
## 上下文传递表
|
||||
|
||||
| 操作 | 从返回中提取 | 用于 |
|
||||
|------|-------------|---------------------------------------------|
|
||||
| `task create` | `todoTaskId` | update/done/get/delete 的 --task-id |
|
||||
| `task list` | `result[].id` | update/done/get/delete 的 --task-id |
|
||||
| `task create` | `todoTaskId` | update/done/get/delete/comment 的 --task-id |
|
||||
| `task list` | `result[].id` | update/done/get/delete/comment/add-executor/remove-executor/add-participant/remove-participant 的 --task-id |
|
||||
| `task get` | `result.todoDetailModel.subTodos[]` | 获取子待办列表,提取子待办的 `taskId` 用于后续操作 |
|
||||
| `comment list` | `result[].commentId` | `comment delete` 的 --comment-id |
|
||||
| `task list-attachment` | `result[].attachmentId` | `task remove-attachment` 的 --attachment-id |
|
||||
|
||||
## 注意事项
|
||||
|
||||
- 优先级值: 10=低, 20=普通, 30=较高, 40=紧急
|
||||
- `--due` 是截止时间 dueTime,不是提醒时间;使用 ISO-8601 格式(如 2026-03-10T18:00:00+08:00)
|
||||
- 当前不支持单独的 `reminder` / `remind-at` 精确提醒能力;不要把 `--due` 解释成“几点提醒”
|
||||
- `--recurrence`:仅在与 `--due` 同时设置时有效;当前仅支持按天循环。字符串内需含换行,示例:`DTSTART:20260320T020000Z\nRRULE:FREQ=DAILY;INTERVAL=1`(DTSTART 表示首次截止时间,需与业务约定一致)
|
||||
- 若用户的真实诉求是“到点提醒我”,需要先说明能力边界;当前 CLI 只能表达 deadline / recurrence,不能表达独立 reminder schedule
|
||||
- `task list` 的 `--status` 对应 MCP `get_user_todos_in_current_org` 的 `todoStatus` 参数
|
||||
- `task list` 的 `--priority` 支持逗号分隔多个优先级值(如 `40,30,10`),用于同时筛选多个优先级
|
||||
- `task list` 的 `--role-types` 支持 `creator`/`executor`/`participant`,可在一次调用中同时传入多个角色用逗号分隔(如 `--role-types creator,executor`),无需分多次查询;不传时默认按 `executor` 查询
|
||||
- `task list` 的 `--plan-finish-date-start` 与 `--plan-finish-date-end` 用于按截止时间范围筛选,需成对使用,格式为 ISO-8601
|
||||
- todo 是个人待办管理产品
|
||||
- `task update` 可同时修改标题/优先级/截止时间/完成状态
|
||||
- `task done` 专用于修改执行者的完成状态,与 `task update --done` 作用不同
|
||||
- `task delete` 为不可逆操作,建议加 `--yes` 并与用户确认
|
||||
- `comment delete` 同样为不可逆操作,执行前需用户确认;`--comment-id` 可通过 `comment list` 获取
|
||||
- `task add-executor` / `task remove-executor` 用于管理待办的执行人,`--executors` 支持逗号分隔的多个 userId
|
||||
- `task add-participant` / `task remove-participant` 用于管理待办的参与人,`--participants` 支持逗号分隔的多个 userId
|
||||
- 执行人 (executor) 与参与人 (participant) 的区别:执行人负责完成待办,参与人仅关注待办进度
|
||||
- `task add-reminder` 用于为待办添加提醒,`--base-time` 支持 `dueTime`(基于截止时间偏移,待办必须有截止时间)和 `customTime`(自定义时间戳)两种模式
|
||||
- `task reset-reminder` 用于重置待办提醒规则,不传 `--reminder-rules` 则清除所有提醒
|
||||
- `task list-sub` 用于查询指定待办的子待办列表,需通过 `task list` 或 `task create` 获取父待办 ID
|
||||
- `task add-attachment` 用于上传本地文件作为待办附件,`--file` 为本地文件绝对路径;该操作不可逆,调用前必须确认待办存在
|
||||
- `task list-attachment` 用于查询指定待办的附件列表
|
||||
- `task remove-attachment` 用于删除待办附件,为不可逆操作,执行前需用户确认;`--attachment-id` 可通过 `task list-attachment` 获取
|
||||
- `tag list` 用于查询当前用户已有的标签列表,返回的 `tagCode` 可用于 `tag add` / `tag update` / `tag delete`
|
||||
- `tag add` 用于给指定待办打标签,`--task-id` 可通过 `task list` 或 `task create` 获取;`--tag-codes` 可通过 `tag list` 获取
|
||||
- `tag create` 用于创建新标签,`--name` 为标签名称 (必填)
|
||||
- `tag update` 用于更新已有标签信息,`--user-tags` 格式同 `tag create`
|
||||
- `tag delete` 用于删除标签定义,为不可逆操作,执行前需用户确认;传 `--yes` 可跳过交互提示,建议加 `--yes` 并与用户确认
|
||||
- `tag add`(给待办打标签)与 `tag delete`(删除标签定义)作用不同:前者是关联关系,后者是删除标签本身
|
||||
|
||||
|
||||
## 自动化脚本
|
||||
|
||||
| 脚本 | 场景 | 用法 |
|
||||
|------|------|------|
|
||||
| [todo_daily_summary.py](../scripts/todo_daily_summary.py) | 查看今天/明天/本周未完成待办汇总 | `python todo_daily_summary.py today` |
|
||||
| [todo_batch_create.py](../scripts/todo_batch_create.py) | 从 JSON 文件批量创建待办 | `python todo_batch_create.py todos.json` |
|
||||
| [todo_overdue_check.py](../scripts/todo_overdue_check.py) | 扫描逾期待办输出逾期清单 | `python todo_overdue_check.py` |
|
||||
Reference in New Issue
Block a user