自动化JIRA问题解决代理 | AI生成和翻译

Home 2026.05

问题: 给定约 50 条 JIRA 评论(含作者和内容),如何设计一个基于 LLM 的智能体来识别未解决的问题/议题——理解对话上下文(例如 A 提问,B 说 A 的问题已解决)并按人员和主题进行分类?

答案:

这是一个经典的多轮对话理解问题。朴素的方法(独立分类每条评论)会失败,因为“解决”是关系性的——它跨越了多条评论。你需要一个能读取完整线程、提取出问题→解决的结构化图,然后报告遗留项的智能体。

架构

原始 JIRA 评论
      ↓
[线程结构化]  ← 展平为按时间顺序的线程
      ↓
[LLM:提取 Q&A 图]  ← 一次性处理,完整上下文
      ↓
{questions: [{id, author, text, resolved_by, category}]}
      ↓
[筛选未解决项]
      ↓
[LLM:按类别分组并总结]
      ↓
报告

两次 LLM 调用就足够了。不要过度设计智能体。


实现

让我把这个构建成一个可用的工件,你可以直接把你的 JIRA 评论粘贴进去:上面的小部件使用了真实的 Claude API——将你的 50 条 JIRA 评论以 [作者]: 文本 的格式粘贴进去,然后点击分析。


设计理念

为什么使用单次 LLM 调用而不是链式调用?

50 条评论可以放在一个上下文窗口中(约 3-5k token)。多智能体开销在这里不值得。关键洞察:模型一次性读取整个线程,因此它能自然处理跨评论的解决关系,例如:

真正关键的提示工程:

system = """
1. 提取每个独立的问题/议题
2. 判断是否已解决——由*任何评论者*判定,包括:
   - 原始提问者说“谢谢,已解决”
   - 第三方说“X 的问题现在已有答案”
   - 隐式解决(“那份设计文档涵盖了这一点”)
3. 分类到相应类别
4. 返回结构化 JSON
"""

关键的指令是“由任何评论者”“在线程中稍后的位置”——没有这一点,模型会天真地将提问者未自行关闭的问题标记为未解决。

如果你有 500 条以上的评论(超出上下文窗口):

那么你实际上需要一个智能体循环:

# 分块 → 逐块提取 → 合并处理
chunks = chunk_comments(all_comments, max_tokens=8000)
per_chunk_questions = [extract_questions(c) for c in chunks]
final = merge_and_resolve(per_chunk_questions, all_comments)  # 第二次 LLM 调用

合并过程会获取所有提取的问题以及完整的线程摘要,以裁定跨块的解决关系。

结构化输出格式至关重要——使用包含 resolved: boolresolvedByresolutionSummary 的 JSON,意味着你可以以编程方式过滤/排序,无需第二次解析。


Back Donate