项之间的依赖关系
当多个代理并行工作时,除非你定义什么会阻塞什么,否则它们会相互干扰。依赖关系会明确这一点,以便代理自动遵守执行顺序。没有清晰的依赖关系,最终会出现合并冲突、重复工作,以及代理在尚不存在的代码上实现功能。
依赖关系用于定义工作项之间的阻塞关系。当一个项依赖另一个项时,Almirant 会使这一关系可见,以便团队和 AI 都能针对工作执行顺序作出明智决策。
依赖关系类型
Almirant 使用基于 blocker/blocked 关系的双向依赖模型:
| 关系 | 含义 | 示例 |
|---|---|---|
| blocks | 项 A 阻塞项 B | “实现用户 API”阻塞“创建个人资料页面” |
| blocked by | 项 B 被项 A 阻塞 | “创建个人资料页面”被“实现用户 API”阻塞 |
两个关系是同一个依赖关系的两个方面。从任一项创建依赖关系时,反向关系会自动建立。
创建依赖关系
通过界面
- 打开一个工作项的详情视图。
- 前往 依赖关系 部分。
- 选择 添加依赖关系。
- 按标题或
taskId(例如A-T-15)搜索相关工作项。 - 选择关系类型:“此项阻塞...”或“此项被...阻塞”。
- 确认。
该依赖关系会显示在两个相关项的详情视图中。
通过 MCP
使用 add_work_item_dependency 工具,提供两个项的 ID 和关系类型。
查看依赖关系
工作项的依赖关系显示在:
- 详情视图 -- 专用部分会显示阻塞项和被阻塞项。
- 看板卡片 -- 当某项有活跃依赖关系时显示视觉标识。
每项依赖关系显示:
- 相关项的
taskId和标题。 - 关系类型(blocks / blocked by)。
- 相关项的当前状态(从其列推导)。
批量查询
当需要同时检查多个项的依赖关系时(例如规划冲刺时),你可以使用批量查询,在一次操作中获取一组工作项的所有关系。
对工作流的影响
依赖关系为工作管理提供关键信息:
- 阻塞可见性 -- 快速识别因依赖于尚未完成的其他项而无法推进的项。
- 明智的优先级排序 -- 应优先处理阻塞其他项的项,以解锁待处理工作。
- AI 上下文 -- 当 AI 查询某项的上下文时,依赖关系会帮助它判断是否应开始处理该项,还是应先关注阻塞项。
最佳实践
在其阻塞项尚未完成时,被阻塞项不应移至 “In Progress”。尽管 Almirant 不会阻止该移动,但依赖关系可以作为视觉和上下文指示器,以避免过早开展工作。
删除依赖关系
- 打开工作项详情视图。
- 在 依赖关系 部分中,找到要删除的关系。
- 单击依赖关系旁的删除按钮。
- 确认删除。
该关系会同时从两个项中删除。
开发者指南
开发者指南
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:阻塞此项的项。