Files
yixiong-claude-marketplace/plugins/huanxi/skills/huanxi-task/SKILL.md
T
SkyJourneyandClaude Sonnet 5 600c0dd323 feat: 寰汐插件随 v1.0.0 生产切换升级到 v2 技能组,新增独立管理端插件
huanxi 插件的技能内容从 v1 全面替换为 v2(huanxi-org/huanxi-weekly 等
v1 专属技能下线,新增 huanxi-issue/huanxi-lookup/huanxi-meeting),MCP
连接与 Token 获取方式同步更新为个人中心自助生成。

新增独立的 huanxi-admin 插件(管理端 4 个技能,hxa_ Token,普通员工无需
安装),此前一直卡在"v2 未部署到生产域名前不推送"这条约束,今晚寰汐
v1.0.0 生产切换完成后条件满足。

产物由 huanxi-menagement 仓库 skills/sync_marketplace.py 生成,技能源码
单一真相在该仓库的 skills/,本仓库只接收产物、不手工编辑。

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_018xxRKMuiGR4wYT3QbwCpDc
2026-08-22 02:14:34 +08:00

3.0 KiB
Raw Blame History

name, description
name description
huanxi-task 寰汐任务管理:查任务、建任务、改状态与进度、分配执行人、认领。当用户说「我有什么任务」「建个任务」「把这个标成完成」「派给谁」时使用。

寰汐任务管理

前置:先读 huanxi-shared(尤其「状态是可配置的两层模型」一节)。


ID 传递链

任务操作几乎都是这条链,中间结果要展示给用户,不要一路闷头做到底:

module_query()                     → module_id
  ↓
task_query(module_ids=[...])       → task_id[]     ← 展示给用户看
  ↓ ⏸ 用户指明改哪些
task_update(updates=[{id, ...}])

task_query(scope="mine")                    我负责执行的(默认)
task_query(scope="all", module_ids=[...])   某几个模块的全部任务
task_query(q="关键词")                       标题模糊搜
task_get(task_ids=[...])                    详情:描述 + 层级路径

过滤维度都收列表,一次查多个模块比循环调用好。


改状态与进度

dict_get 取 task 类型的状态选项,拿到 status_option_id 再传:

dict_get(kinds=["status_options"])
  → 筛 entity_type == "task"
  → 按 category 找到目标状态(not_started/in_progress/completed/cancelled
  → 取它的 id
task_update(updates=[{id: 任务id, status_option_id: 状态id}])

状态与进度有联动,只传一个就够:进度设到 100 会自动转完成;已完成的任务把进度 调低会自动回落进行中。两个都传等于重复表达同一个意思。

非叶子任务不能直接设进度——返回里 progress_readonly 为 true 的那些,进度是子任务 聚合出来的,硬设会被拒绝。要推进它,去改它的子任务。


建任务

task_create(module_id=..., tasks=[{title, description?, priority?, end_date?,
                                    parent_id?, milestone_id?, assignee_ids?}])
  • 建子任务传 parent_id最多三级(任务 / 子任务 / 孙任务)
  • 需要是该模块的成员或负责人
  • priority 的取值以工具说明为准——不要凭直觉写,这个字段有 DB 级约束,写错直接报错

执行人

task_set_assignees(task_id=..., user_ids=[...])   整组覆盖,传空即清空
task_claim(task_ids=[...], claim=true/false)      认领 / 取消认领(只动自己)

task_set_assignees 是替换不是追加。 想加一个人,要先 task_get 拿到现有名单, 把新人拼进去再整组传回——直接传一个人会把其余执行人全部踢掉。这是最容易出错的地方, 覆盖前把「改完会变成谁」说给用户听。

被指派的人若不是模块成员,会自动加入该模块;新增执行人会收到飞书通知。


不在工具里的操作

删除任务、跨模块转移任务不在 MCP,请引导用户去网页端——这两个动作作用于整棵子树 且不可逆,需要看清楚影响范围再点。