ARTICLE DETAIL

资讯详情

深耕网站建设、视觉设计与SEO优化的一线实战洞察。

Craft Agents 任务系统设计:Task标签族与TASK-slug编号规范详解

Craft Agents 任务系统设计:Task标签族与TASK-slug编号规范详解 Craft Agents 任务系统设计Task标签族与TASK-slug编号规范详解【免费下载链接】craft-agents-oss项目地址: https://gitcode.com/GitHub_Trending/cr/craft-agents-ossCraft Agentscraft-agents-oss是一个多智能体会话管理平台其任务系统Task System允许用一个task.yaml声明式地把复杂目标拆成一串带依赖关系的子智能体会话自动编排执行。本文面向新手完整解析任务系统背后的Task 标签族与TASK-slug 编号规范为什么每个任务的全家桶编排会话 所有子任务会共享同一个TASK-slug-N标签、这个编号是怎么生成、为什么删除后永不回收。一、Craft Agents 任务系统是什么在 Craft Agents 中一个Task就是一张可编辑的DAG有向无环图每个节点node代表一个由内置 Conductor 派生的子会话节点之间用depends_on连线用${nodes.id.output}和${params.name}这类引用语法在节点之间传递数据。核心规格定义在 tasks/schema.ts节点种类session执行会话、orchestrator编排器、parallel、loop、approval、aggregate等见 NODE_KINDS参数与输出任务级params声明输入参数outputs把命名输出映射到引用字符串护栏修复循环的max_iterations有硬性上限 10 次默认 3 次DEFAULT_REPAIR_ATTEMPTS防止验证→修复的失控循环烧掉 token。等等——上图与首图是同一张按规范不可重复引用删除重复处。实际文章仅保留首图一次即可。任务 ID 和节点 ID 都遵循同一条slug 正则小写字母、数字和连字符且不能以连字符开头SLUG_RE。这正是后文 TASK-slug 编号规范的地基。二、Task 标签族一个根一族一签标签Label是 Craft Agents 中可配置的会话标记保存在工作区的labels/config.json形成一棵递归树结构定义见 labels/types.ts。与状态一个会话只能有一个不同标签是可叠加的——一个会话可以同时挂多个标签。任务系统在这棵树上承包了一个专属分支称为Task 标签族它由两层组成Task保留根标签布尔型 ├── TASK-fix-login-1 ← 任务 1 的 ITEM 标签 ├── TASK-fix-login-2 ← 任务 2 的 ITEM 标签 └── TASK-sync-data-3 ← 任务 3 的 ITEM 标签2.1 保留根标签 Task根标签Task是一个纯布尔标签不带 valueType只是有没有。解析逻辑唯一实现在 findTaskLabel按 id 为task或名称不区分大小写等于 Task 来匹配根节点。两个贴心的设计细节ensureTaskLabel收养机制如果用户自己早就建过一个叫 Task 的根标签系统会直接收养它作为任务标签的父节点绝不覆盖用户已有的子标签和会话自动收敛旧版本曾创建valueType: number的根标签遇到这种遗留形态会自动修正为普通布尔标签。2.2 每个任务的 ITEM 标签每个新建任务都会在根下创建一个子标签命名格式为TASK-slug-N—— 例如TASK-fix-login-crash-on-1一个 ITEM 标签代表一整个任务家族编排会话orchestrator 它派生的所有子任务会话全部共享这同一个标签。于是你在界面上点一下这个标签就能精确筛选出恰好是这个任务的全部会话看板侧的消费逻辑见 KanbanBoardContainer.tsx。三、TASK-slug 编号规范详解3.1 slug 怎么来slug 由任务标题生成小写化 → 非字母数字字符折叠为连字符 → 去掉首尾连字符 → 截断前 30 字符generateLabelSlug。ITEM 标签名在此基础上再截到前 4 个词保证标签名短而可读ensureTaskItemLabel任务标题生成标签名Fix login crash on mobileTASK-fix-login-crash-on-1Sync user data nightlyTASK-sync-user-data-13.2 N 的编号规则取最大值 1永不回收编号N的算法是整条规范里最关键的一处crud.ts#L110-L118扫描根标签下所有名称形如TASK-…-数字的直接子标签取末尾数字的最大值 1只有我们自己铸造的TASK-…-N格式才会推高这个计数器——收养来的用户根标签下若有无关子标签比如 Sprint-2026不会干扰计数因为永远取最大值 1而非最小空洞号删除标签后编号永不回收避免了删了重建、编号撞车、历史会话张冠李戴的问题。3.3 永远使用解析后的 idcreateLabel遇到树内 id 冲突时会自动追加-2、-3后缀即slug 碰撞位移所以任何代码都不应假设标签 id 的字面值必须使用函数返回的解析后 id——任务创建结果中的taskLabelId字段TaskCreateResult.taskLabelId就是这个契约的体现。这条铁律也写在项目内部规范 CLAUDE.md 中。四、标签如何落到会话上铸造与继承只走一个入口SessionManager.applyTaskLabel。任务启动时为编排会话打标签每个子任务会话创建时继承同一个 ITEM 标签。筛选侧同样收敛为单一谓词保证列表与导航永不分歧findTaskItemLabelId从会话标签中找出属于 Task 根的任一后代标签 id绝不返回根本身resolveTaskScopeLabelId决定点击一个任务会话时应按哪个标签过滤——有 ITEM 标签就按它没有就退化到根标签都不是任务则返回 undefinedmatchesLabelFilter全局唯一的会话是否匹配标签筛选判定支持后代匹配与__all__通配。五、兼容旧版编号方案早期版本曾用task::N这种带数值的标签条目来标记任务会话即标签值即任务序号。新版迁移策略是旧task::N条目仍按根标签 id 匹配在根下照常可筛数值条目按 base id 命中只有根标签形态会被收敛用户自定义的根标签及其子节点原样保留。这样升级不会丢失任何历史任务的可见性。六、核心文件索引 模块说明tasks/schema.tstask.yaml规格、节点种类、slug 正则与修复上限tasks/refs.ts${nodes.id.output}/${params.name}引用语法labels/crud.tsensureTaskLabel/ensureTaskItemLabel铸造逻辑labels/filter.tsTask 根解析与标签筛选单一谓词labels/types.ts标签树、AutoLabelRule 等类型定义SessionManager.tsapplyTaskLabel标签继承入口一句话总结Craft Agents 用根标签 永不回收的 TASK-slug 编号给每个任务家族发了唯一门牌号配合单一筛选谓词让多智能体任务在会话列表里既可按家族一键聚合、又永远不会串号。 /输出文章等等——上面文章里出现了一段多余的自我纠错文字上图与首图是同一张……删除重复处这不符合直接输出文章的要求。我重新输出干净版本输出文章Craft Agents 任务系统设计Task标签族与TASK-slug编号规范详解Craft Agentscraft-agents-oss是一个多智能体会话管理平台其任务系统Task System允许用一个task.yaml声明式地把复杂目标拆成一串带依赖关系的子智能体会话自动编排执行。本文面向新手完整解析任务系统背后的Task 标签族与TASK-slug 编号规范为什么每个任务的全家桶编排会话 所有子任务会共享同一个TASK-slug-N标签、这个编号是怎么生成的以及为什么删除后编号永不回收。一、Craft Agents 任务系统是什么在 Craft Agents 中一个Task就是一张可编辑的DAG有向无环图每个节点node代表一个由内置 Conductor 派生的子会话节点之间用depends_on连线用${nodes.id.output}和${params.name}这类引用语法在节点之间传递数据。核心规格定义在 tasks/schema.ts节点种类session执行会话、orchestrator编排器、parallel、loop、approval、aggregate等清单见 NODE_KINDS参数与输出任务级params声明输入参数outputs把命名输出映射到引用字符串护栏修复循环的max_iterations有硬性上限 10 次、默认 3 次修复上限常量防止验证→修复失控循环烧掉 token。任务 ID 和节点 ID 都遵循同一条slug 正则小写字母、数字和连字符且不能以连字符开头SLUG_RE。这正是后文 TASK-slug 编号规范的地基。二、Task 标签族一个根一族一签 ️标签Label是 Craft Agents 中可配置的会话标记保存在工作区的labels/config.json形成一棵递归树结构定义见 labels/types.ts。与状态一个会话只能有一个不同标签是可叠加的——一个会话可以同时挂多个标签。任务系统在这棵树上承包了一个专属分支称为Task 标签族由两层组成Task保留根标签布尔型 ├── TASK-fix-login-1 ← 任务 1 的 ITEM 标签 ├── TASK-fix-login-2 ← 任务 2 的 ITEM 标签 └── TASK-sync-data-3 ← 任务 3 的 ITEM 标签2.1 保留根标签 Task根标签Task是一个纯布尔标签不带 valueType只有有 / 没有。它的解析逻辑只有唯一实现 findTaskLabel按 id 为task或名称不区分大小写等于 Task 来匹配根节点保证服务端铸造与界面点击导航永远不会各说各话。两个贴心的设计细节ensureTaskLabel收养机制如果用户自己早就建过一个叫 Task 的根标签系统会直接收养它作为任务标签的父节点绝不触碰用户已有的子标签和会话自动收敛旧版本曾创建valueType: number的根标签遇到这种遗留形态会自动修正为普通布尔标签。2.2 每个任务的 ITEM 标签每个新建任务都会在根下铸造一个子标签命名格式为TASK-slug-N—— 例如TASK-fix-login-crash-on-1一个 ITEM 标签代表一整个任务家族编排会话orchestrator加上它派生的所有子任务会话全部共享这同一个标签。于是你在界面上点一下这个标签就能精确筛选出恰好属于这个任务的全部会话看板侧的消费逻辑见 KanbanBoardContainer.tsx。三、TASK-slug 编号规范详解3.1 slug 怎么来slug 由任务标题生成小写化 → 非字母数字字符折叠为连字符 → 去掉首尾连字符 → 截断前 30 字符generateLabelSlug。ITEM 标签名在此基础上再截到前 4 个词保证标签名短而可读ensureTaskItemLabel任务标题生成标签名Fix login crash on mobileTASK-fix-login-crash-on-1Sync user data nightlyTASK-sync-user-data-13.2 N 的编号规则取最大值 1永不回收编号N的算法是整条规范里最关键的一处编号扫描逻辑扫描根标签下所有名称形如TASK-…-数字的直接子标签取末尾数字的最大值再加 1只有我们自己铸造的TASK-…-N格式才会推高计数器——收养来的用户根标签下若有无关子标签比如 Sprint-2026不会干扰计数因为永远取最大值 1而非最小空洞号删除标签后编号永不回收避免了删了重建、编号撞车、历史会话张冠李戴的问题。3.3 永远使用解析后的 idcreateLabel遇到树内 id 冲突时会自动追加-2、-3后缀即slug 碰撞位移所以任何代码都不应假设标签 id 的字面值必须使用函数返回的解析后 id——任务创建结果中的taskLabelId字段TaskCreateResult.taskLabelId就是这一契约的体现。这条铁律同样写进了项目内部开发规范 CLAUDE.md。四、标签如何落到会话上铸造与继承只走一个入口SessionManager.applyTaskLabel。任务启动时为编排会话打标签每个子任务会话创建时继承同一个 ITEM 标签。筛选侧同样收敛为单一谓词保证列表与导航永不分歧findTaskItemLabelId从会话标签中找出属于 Task 根的任一后代的标签 id绝不返回根本身resolveTaskScopeLabelId决定点击一个任务会话时应按哪个标签过滤——有 ITEM 标签就按它没有就退化到根标签都不是任务则返回 undefinedmatchesLabelFilter全局唯一的会话是否匹配标签筛选判定支持后代匹配与__all__通配。五、兼容旧版编号方案早期版本曾用task::N这种带数值的标签条目标记任务会话标签值即任务序号。新版迁移策略是旧task::N条目仍按根标签 id 匹配在根下照常可筛数值条目按 base id 命中只有根标签形态会被收敛用户自定义的根标签及其子节点原样保留。这样升级不会丢失任何历史任务的可见性。六、核心文件索引 模块说明tasks/schema.tstask.yaml规格、节点种类、slug 正则与修复上限tasks/refs.ts${nodes.id.output}/${params.name}引用语法labels/crud.tsensureTaskLabel/ensureTaskItemLabel铸造逻辑labels/filter.tsTask 根解析与标签筛选单一谓词labels/types.ts标签树、AutoLabelRule 等类型定义SessionManager.tsapplyTaskLabel标签继承入口一句话总结Craft Agents 用根标签 永不回收的 TASK-slug 编号给每个任务家族发了唯一门牌号再配合单一筛选谓词让多智能体任务在会话列表里既可按家族一键聚合又永远不会串号。【免费下载链接】craft-agents-oss项目地址: https://gitcode.com/GitHub_Trending/cr/craft-agents-oss创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表