跳到主要内容

项之间的依赖关系

当多个代理并行工作时,除非你定义什么会阻塞什么,否则它们会相互干扰。依赖关系会明确这一点,以便代理自动遵守执行顺序。没有清晰的依赖关系,最终会出现合并冲突、重复工作,以及代理在尚不存在的代码上实现功能。

依赖关系用于定义工作项之间的阻塞关系。当一个项依赖另一个项时,Almirant 会使这一关系可见,以便团队和 AI 都能针对工作执行顺序作出明智决策。

依赖关系类型

Almirant 使用基于 blocker/blocked 关系的双向依赖模型:

关系含义示例
blocks项 A 阻塞项 B“实现用户 API”阻塞“创建个人资料页面”
blocked by项 B 被项 A 阻塞“创建个人资料页面”“实现用户 API”阻塞

两个关系是同一个依赖关系的两个方面。从任一项创建依赖关系时,反向关系会自动建立。

创建依赖关系

通过界面

  1. 打开一个工作项的详情视图。
  2. 前往 依赖关系 部分。
  3. 选择 添加依赖关系
  4. 按标题或 taskId(例如 A-T-15)搜索相关工作项。
  5. 选择关系类型:“此项阻塞...”或“此项被...阻塞”。
  6. 确认。

该依赖关系会显示在两个相关项的详情视图中。

通过 MCP

使用 add_work_item_dependency 工具,提供两个项的 ID 和关系类型。

查看依赖关系

工作项的依赖关系显示在:

  • 详情视图 -- 专用部分会显示阻塞项和被阻塞项。
  • 看板卡片 -- 当某项有活跃依赖关系时显示视觉标识。

每项依赖关系显示:

  • 相关项的 taskId 和标题。
  • 关系类型(blocks / blocked by)。
  • 相关项的当前状态(从其推导)。

批量查询

当需要同时检查多个项的依赖关系时(例如规划冲刺时),你可以使用批量查询,在一次操作中获取一组工作项的所有关系。

对工作流的影响

依赖关系为工作管理提供关键信息:

  • 阻塞可见性 -- 快速识别因依赖于尚未完成的其他项而无法推进的项。
  • 明智的优先级排序 -- 应优先处理阻塞其他项的项,以解锁待处理工作。
  • AI 上下文 -- 当 AI 查询某项的上下文时,依赖关系会帮助它判断是否应开始处理该项,还是应先关注阻塞项。
最佳实践

在其阻塞项尚未完成时,被阻塞项不应移至 “In Progress”。尽管 Almirant 不会阻止该移动,但依赖关系可以作为视觉和上下文指示器,以避免过早开展工作。

删除依赖关系

  1. 打开工作项详情视图。
  2. 依赖关系 部分中,找到要删除的关系。
  3. 单击依赖关系旁的删除按钮。
  4. 确认删除。

该关系会同时从两个项中删除。

开发者指南

开发者指南

MCP 工具

工具描述主要参数
get_work_item_dependencies获取工作项的依赖关系workItemId
add_work_item_dependency在两个项之间创建依赖关系workItemId, dependsOnWorkItemId, type
remove_work_item_dependency删除依赖关系workItemId, dependsOnWorkItemId
get_dependencies_batch一次获取多个项的依赖关系workItemIds

示例:添加依赖关系

Tool: add_work_item_dependency
Parametros:
workItemId: "uuid-item-bloqueado"
dependsOnWorkItemId: "uuid-item-bloqueante"
type: "blocked_by"

这表示第一个项被第二个项阻塞。反向关系(第二个项阻塞第一个项)会自动创建。

示例:批量查询依赖关系

Tool: get_dependencies_batch
Parametros:
workItemIds: ["uuid-1", "uuid-2", "uuid-3", "uuid-4"]

返回包含每个项依赖关系的映射,适用于可视化完整冲刺的阻塞关系图。

示例:查看某项的依赖关系

Tool: get_work_item_dependencies
Parametros:
workItemId: "uuid-del-item"

返回两个列表:

  • blocks:此项阻塞的项。
  • blockedBy:阻塞此项的项。