大模型驱动的禅道任务自动化规划与创建
作为一名埋头写代码的研发人员,你一定经历过这样的场景:领导:“小王啊,这个需求下个月要就要提测,你把任务拆一下,录到禅道里。你:“收到。(内心 OS:又要拆任务,又要录禅道,这玩意儿除了给领导看报表,到底有啥用啊…)两个小时后,你终于录完了 10 个任务,然后领导说:“小王啊,这个需求要延期了,你把任务改一下。你:😭既然领导要求用,那咱就得用。既然必须用,那咱就让它变得不那么痛苦。本文将介绍如何
大模型驱动的禅道任务自动化规划与创建
前言
咱们先说句实话:禅道这玩意儿,谁用谁知道。
作为一名埋头写代码的研发人员,你一定经历过这样的场景:
领导:“小王啊,这个需求下个月要就要提测,你把任务拆一下,录到禅道里。”
你:“收到。”
(内心 OS:又要拆任务,又要录禅道,这玩意儿除了给领导看报表,到底有啥用啊…)
然后你打开禅道,开始了一项伟大的工程:
- 手动拆分任务(脑细胞死亡 50%)
- 评估工时(瞎猜,反正最后都不准)
- 逐个录入任务(手指敲到抽筋)
- 选择任务类型(这类型到底选啥?算了随便选一个吧)
两个小时后,你终于录完了 10 个任务,然后领导说:“小王啊,这个需求要延期了,你把任务改一下。”
你:😭
但是! 既然领导要求用,那咱就得用。既然必须用,那咱就让它变得不那么痛苦。
本文将介绍如何利用大模型(LLM)的智能规划能力,结合禅道 API,实现任务的自动化规划与快速创建。虽然禅道本身可能不太好用,但至少我们可以让"录禅道"这件事变得不那么折磨人。
自行部署的禅道开源版 11.6
一、背景与挑战
1.1 传统任务规划的痛点
- 手动拆分任务:需要人工阅读需求文档,逐个拆分任务
- 工时评估困难:依赖个人经验,评估结果差异较大
- 重复录入工作:需要在禅道系统中逐个创建任务
- 任务类型标准化:不同人员对任务类型的理解不一致
1.2 解决方案
通过构建一个智能任务规划系统,实现:
- 大模型自动理解需求并拆分任务
- 智能评估工时并分配到工作日
- 批量创建任务到禅道系统
- 任务类型自动标准化
二、技术栈
- 语言:python
- 大模型:DeepSeek R1 或 其他大模型
- 工作流框架:LangGraph
- HTTP 客户端:Requests
- 工作日判断:chinese_calendar
三、核心功能实现
3.1 禅道工具类 (ZendaoTool)
禅道工具类封装了与禅道系统交互的所有 API 操作,是整个系统的基础。该工具类提供了完整的禅道操作接口,包括登录认证、需求管理、任务创建和批量处理等功能。
为了保证安全,该工具暂不介入大模型,手动调用来确保任务的正确性。
3.1.1 登录认证
登录功能支持从环境变量或参数中获取账号密码,通过禅道 API 进行身份验证,并维护会话状态。登录成功后会获取会话 ID,用于后续的 API 调用。
3.1.2 任务类型枚举
系统定义了完整的任务类型枚举,覆盖了研发全流程(根据你的禅道任务类型去定义):
- 需求相关:需求对接、市场/用户调研、需求分析等
- 设计相关:产品方案设计、UI 设计、架构设计等
- 开发相关:前端编码、后端编码、代码走查等
- 测试相关:测试用例、回归测试、集成测试等
- 生产支持:生产问题处理、项目升级支持等
- 项目管理:研发项目立项、项目管理等
- 质量管理:质量体系建设、质量审计稽查等
- 运营相关:培训、内容运营、数据审核等
3.1.3 核心方法
-
需求管理方法:
get_assigned_stories()- 获取指派给我的需求列表get_story_detail(story_id)- 获取指定需求的详细信息assign_story(story_id, assigned_to, comment)- 指派需求到指定用户add_story_comment(story_id, comment)- 为需求添加备注
-
任务管理方法:
create_task_from_story()- 从需求创建任务,自动获取项目信息和模块信息create_task()- 直接创建任务,需要提供完整的项目和模块信息get_task_detail(task_id)- 获取任务详情update_task()- 更新任务信息,包括名称、描述、指派人、状态等
-
项目管理方法:
get_doing_projects()- 获取进行中的项目列表get_project_stories(project_id)- 获取指定项目的需求列表
-
用户管理方法:
get_user_list()- 获取用户列表,返回用户名拼音和中文名的映射
3.1.4 批量创建任务
批量创建功能支持从文本数据直接创建任务,并包含完整的验证机制:
- 数据格式:每行数据包含人员姓名、需求编号、任务名称、任务类型、预计工时、预计开始、预计结束
- 验证机制:
- 用户名映射验证
- 需求 ID 存在性验证
- 任务类型有效性验证
- 工时格式验证
- 日期格式验证
- 创建流程:
- 先进行数据验证(不执行创建)
- 验证通过后确认创建
- 批量执行创建任务
3.2 任务规划智能体 (ZentaoTaskPlanAgent)
智能体使用 LangGraph 构建工作流,实现自动化的任务规划。该智能体通过多轮对话收集用户信息,自动生成任务规划,并将任务类型标准化。其流程如下:

3.2.1 工作流设计
智能体工作流包含四个主要节点:
-
用户输入节点 (user_input_node):
- 支持多行输入,以"END"结尾表示输入完毕
- 处理退出命令(quit/exit)
- 验证输入有效性
-
规划节点 (plan_node):
- 使用大模型理解用户需求
- 根据核心原则生成任务规划
- 判断是否需要调用工具获取更多信息
-
工具节点 (tool_node):
- 处理工具调用请求
- 返回工具执行结果
- 将结果传递回规划节点
-
任务类型标准化节点 (update_task_type_node):
- 将简短任务类型转换为禅道标准任务类型
- 保持任务规划的其他内容不变
工作流通过条件边连接,实现智能路由:
- 用户输入节点根据是否退出决定结束或继续
- 规划节点根据是否需要调用工具决定流向
- 规划节点根据是否有任务规划结果决定是否进入类型标准化
3.2.2 任务规划核心原则
规划节点使用大模型理解用户需求并生成任务规划,遵循以下核心原则:
- 信息收集:必须获取用户姓名、岗位、需求编号等信息
- 任务命名规范:
- 需求任务为 #需求(来源:业务需求)
- bug 任务为 @BUG 类(来源:生产事件/BUG)
- 事项任务为 *事项(来源:非业务需求)
- 工时分配:
- 每个任务不超过 8 小时,最少 2 小时
- 确保写满工作日 5 天 40 小时的工时
- 当天完成的结束日期写当天
- 任务数量:任务尽量拆分为 8 个及以上
- 输出格式:表头为人员姓名、需求编号、任务名称、任务类型、预计工时、预计开始、预计结束
3.2.3 任务类型标准化
任务类型标准化节点将大模型生成的简短任务类型转换为禅道标准任务类型:
- 映射关系:使用预定义的任务类型映射字典
- 转换规则:
- 根据任务名称和简短任务类型,选择最匹配的标准任务类型
- 保持任务规划的其他内容不变
- 输出格式与输入格式一致,使用制表符分隔
- 输出结果:可直接复制粘贴进 Excel 的文本
3.2.4 工具集成
智能体集成了以下工具,帮助大模型更好地规划任务:
-
get_current_date():
- 获取当前日期和星期几
- 判断今天是否是工作日
-
get_next_workdays(week_type):
- 获取工作日的日期和星期几
- 支持两种类型:
- “current”: 本周工作日
- “next”: 下周工作日
- 自动处理节假日调休
-
calculate(expression):
- 执行基本的数学计算
- 支持 +, -, *, / 运算符
- 用于工时计算等场景
四、使用流程
4.1 交互式任务规划流程
通过交互式的智能体规划任务,得到结果。
4.2 批量创建任务流程
将结果复制粘贴到工具类里,运行创建任务。
五、项目地址
GitHub: https://github.com/AriesYB/zentao-ai-agent
Gitee:https://gitee.com/ikanp/zentao-ai-agent
更多推荐


所有评论(0)