SuperAPI AI 工具集

lark-task

办公与效率

查看项目

更新于 10-13 21:31

技能介绍

lark-task 是飞书任务(Task v2)面向 AI Agent 的技能包,发布在 open.feishu.cn,通过 lark-cli 命令行工具操作飞书任务与任务清单。

【使用前提】 开始前 MUST 先用 Read 工具读取 ../lark-shared/SKILL.md,其中包含认证、权限处理。

【命令选择与渐进式发现】 执行任何 Task 命令前,必须先确认能力真实存在,禁止根据用户意图自行拼接或猜测 +<verb>:

  1. 先将用户意图与 Shortcut 表精确匹配;只有表中明确列出的 shortcut 才可直接选择,参数不确定时读取对应 reference 或运行该 shortcut 的 --help。
  2. 没有精确匹配、或无法确认当前版本是否支持时,先运行 lark-cli task --help,以当前 CLI 输出的命令列表为准。
  3. help 中存在匹配 shortcut 时,使用 help 列出的完整 shortcut token(例如 +create)运行 lark-cli task <shortcut> --help,再按真实 flag 执行。
  4. help 中没有匹配 shortcut 时,不得尝试相似的 +<verb>;从 help 中选择原生 resource,运行 lark-cli task <resource> --help 确认 method,再运行 lark-cli schema task.<resource>.<method> 获取参数结构,最后调用 lark-cli task <resource> <method> ...。
  5. 遇到 unknown_subcommand 时必须停止猜测或尝试变体,回到第 2 步重新发现能力。

【核心能力(Shortcut)】 +create(创建任务)、+update(更新任务属性)、+set-ancestor(设置或清除父任务)、+comment(添加任务评论)、+complete(标记完成)、+reopen(重新打开已完成任务)、+assign(分配或移除任务成员)、+followers(管理关注者)、+reminder(管理提醒)、+get-my-tasks(列出分配给我的任务)、+get-related-tasks(列出与我相关的任务)、+search(搜索任务)、+upload-attachment(上传本地文件为任务附件)、+tasklist-create(创建清单并可选添加任务)、+tasklist-search(搜索清单)、+tasklist-task-add(向清单添加任务)、+tasklist-members(管理清单成员)。

【原生 API 资源】 tasks:create、delete、get、list、patch tasklists:add_members、create、delete、get、list、patch、remove_members、tasks subtasks:create、list members:add、remove sections:create、delete、get、list、patch、tasks custom_fields:create、get、patch、list、add、remove custom_field_options:create、patch agent:update_agent_profile、register_agent agent_task_step_info:append_task_steps 使用原生 API 前必须先运行 lark-cli schema task.<resource>.<method> 查看 --data / --params 参数结构,不要猜测字段格式。

【任务分组定位】 用户说“分组 / groups”时优先对应 sections,任务清单对应 tasklists。明确属于“我的任务”时,用 sections.list 的 my_tasks 归属和 --as user 查询,无需 --resource-id;明确属于某个清单时用 tasklist 归属,并将该清单 GUID 传给 --resource-id。归属不明时先结合上下文判断,仍不明确再询问。已知 section_guid 时直接用 sections.tasks 查询组内任务。

【任务搜索技巧】 先区分用户是否特地指定使用搜索 skill、是否真的提供了查询关键字。若指定搜索或有明确关键字,则优先 +search;若只有范围条件(如“今年以来”“已完成”“由我创建”“我关注的”)而无关键字,则优先使用列表型能力:“与我相关 / 我关注的 / 由我创建”优先 +get-related-tasks,“我负责的 / 分配给我”优先 +get-my-tasks。注意不要把时间范围词本身当成 query 走搜索。+search 当前不会自动判断与搜索发起人的相关性,若要求“与我相关”,必须先获取当前用户 open_id 并显式传入 --assignee、--creator 或 --follower 过滤条件。任务清单搜索同理,无清单关键字时优先原生 tasklists.list 再本地筛选。

【术语理解 — 待办(todo)归属】 用户提到「待办 / todo / 任务」时先判断归属,不要默认走本 skill。上下文含妙记 / 会议纪要 / minute_token / 妙记 URL(/minutes/),或“在某某妙记里新建/修改待办”“妙记 AI 待办”“会议录制里的待办”时,走 lark-meeting 的 minutes +todo,禁止本 skill。任务清单、分配给我、项目待办、截止日期/提醒、子任务、任务清单成员,或 applink 含 client/todo/task?guid=,或明确说“飞书任务”“任务中心”“我的任务清单”时,走本 skill。

【创建/更新注意】 只有在设置了 due(截止时间)的情况下,才能设置 repeat_rule(重复规则)和 reminder(提醒时间)。若同时设置 start 和 due,开始时间必须小于或等于截止时间。使用 tenant_access_token(应用身份)时,无法跨租户添加任务成员。

【查询与输出】 输出任务或清单详情时,渲染负责人、创建人等人员字段除展示 id 外,还必须通过其他方式(例如调用通讯录技能)尝试获取并展示真实名字;渲染创建时间、截止时间等字段需使用本地时区(格式 2006-01-02 15:04:05)。输出执行结果时建议同时提取并输出返回结果中的 url 字段,便于用户点击跳转。

【GUID 定义与最短路径】 Task OpenAPI 中用于更新/操作任务的 guid 是全局唯一标识(GUID),不是客户端展示的任务编号(如 t104121 / suite_entity_num)。对于 applink(.../client/todo/task?guid=...),必须使用 URL query 里的 guid 参数。从任务清单定位并修改任务:已知清单 GUID 直接使用;只有清单名称/关键词时调用一次 +tasklist-search 解析;按原生 API 先执行 lark-cli schema task.tasklists.tasks,再执行 lark-cli task tasklists tasks --params '{"tasklist_guid":"<tasklist_guid>"}' --as user;从结果取任务 guid 传给 +update 或 +complete,禁止传客户端展示编号。+update 返回 updated_fields 和 confirmed 字段,+complete 返回 status、completed_at、already_completed,已确认目标状态时不要例行追加 tasks get。

【权限表】 tasks.create / delete / patch 需 task:task:write;tasks.get / list 需 task:task:read;tasklists.add_members / create / delete / patch / remove_members 需 task:tasklist:write;tasklists.get / list / tasks 需 task:tasklist:read;subtasks.create 需 task:task:write;subtasks.list 需 task:task:read;members.add / remove 需 task:task:write;sections.create / delete / patch 需 task:section:write;sections.get / list / tasks 需 task:section:read;custom_fields.create / patch / add / remove 需 task:custom_field:write;custom_fields.get / list 需 task:custom_field:read;custom_field_options.create / patch 需 task:custom_field:write;agent.update_agent_profile / register_agent 需 task:task:write;agent_task_step_info.append_task_steps 需 task:task:write。