跳转到内容

Linear 集成

让你的智能体通过 Linear 管理问题、项目和开发流程。借助 AI 驱动的自动化,创建和更新问题、管理项目时间线、组织团队,并简化软件开发流程。

在使用 Linear 集成之前,请确保你已具备:

  • 一个拥有有效订阅的 CrewAI AMP 账户
  • 一个具备相应工作区权限的 Linear 账户
  • 通过 集成页面 连接了你的 Linear 账户
  1. 访问 CrewAI AMP Integrations
  2. 在 Authentication Integrations 部分找到 Linear
  3. 点击 Connect 并完成 OAuth 流程
  4. 授予问题和项目管理所需权限
  5. Integration Settings 复制你的 Enterprise Token
Terminal window
uv add crewai-tools
Terminal window
export CREWAI_PLATFORM_INTEGRATION_TOKEN="your_enterprise_token"

或者将其添加到你的 .env 文件中:

CREWAI_PLATFORM_INTEGRATION_TOKEN=your_enterprise_token
linear/create_issue

说明: 在 Linear 中创建一个新问题。

参数:

  • teamId (string, required): 团队 ID - 指定该新问题所属父级的团队 ID。使用 Connect Portal Workflow Settings 让用户选择 Team ID。(示例:a70bdf0f-530a-4887-857d-46151b52b47c
  • title (string, required): 标题 - 指定此问题的标题。
  • description (string, optional): 描述 - 指定此问题的描述。
  • statusId (string, optional): 状态 - 指定此问题的状态。
  • priority (string, optional): 优先级 - 指定此问题的优先级整数值。
  • dueDate (string, optional): 截止日期 - 以 ISO 8601 格式指定此问题的截止日期。
  • cycleId (string, optional): Cycle ID - 指定此问题关联的迭代。
  • additionalFields (object, optional): 其他字段。
    {
    "assigneeId": "a70bdf0f-530a-4887-857d-46151b52b47c",
    "labelIds": ["a70bdf0f-530a-4887-857d-46151b52b47c"]
    }
linear/update_issue

说明: 更新 Linear 中的一个问题。

参数:

  • issueId (string, required): 问题 ID - 指定要更新的问题 ID。(示例:90fbc706-18cd-42c9-ae66-6bd344cc8977
  • title (string, optional): 标题 - 指定此问题的标题。
  • description (string, optional): 描述 - 指定此问题的描述。
  • statusId (string, optional): 状态 - 指定此问题的状态。
  • priority (string, optional): 优先级 - 指定此问题的优先级整数值。
  • dueDate (string, optional): 截止日期 - 以 ISO 8601 格式指定此问题的截止日期。
  • cycleId (string, optional): Cycle ID - 指定此问题关联的迭代。
  • additionalFields (object, optional): 其他字段。
    {
    "assigneeId": "a70bdf0f-530a-4887-857d-46151b52b47c",
    "labelIds": ["a70bdf0f-530a-4887-857d-46151b52b47c"]
    }
linear/get_issue_by_id

说明: 通过 ID 获取 Linear 中的问题。

参数:

  • issueId (string, required): 问题 ID - 指定要获取的问题记录 ID。(示例:90fbc706-18cd-42c9-ae66-6bd344cc8977
linear/get_issue_by_issue_identifier

说明: 通过问题标识符获取 Linear 中的问题。

参数:

  • externalId (string, required): 外部 ID - 指定要获取的问题的人类可读标识符。(示例:ABC-1
linear/search_issue

说明: 在 Linear 中搜索问题。

参数:

  • queryTerm (string, required): 查询词 - 要搜索的关键词。
  • issueFilterFormula (object, optional): 以析取范式表示的过滤器 - 由若干 AND 组组成的 OR。
    {
    "operator": "OR",
    "conditions": [
    {
    "operator": "AND",
    "conditions": [
    {
    "field": "title",
    "operator": "$stringContains",
    "value": "bug"
    }
    ]
    }
    ]
    }
    可用字段:titlenumberprojectcreatedAt 可用操作符:$stringExactlyMatches$stringDoesNotExactlyMatch$stringIsIn$stringIsNotIn$stringStartsWith$stringDoesNotStartWith$stringEndsWith$stringDoesNotEndWith$stringContains$stringDoesNotContain$stringGreaterThan$stringLessThan$numberGreaterThanOrEqualTo$numberLessThanOrEqualTo$numberGreaterThan$numberLessThan$dateTimeAfter$dateTimeBefore
linear/delete_issue

说明: 删除 Linear 中的问题。

参数:

  • issueId (string, required): 问题 ID - 指定要删除的问题记录 ID。(示例:90fbc706-18cd-42c9-ae66-6bd344cc8977
linear/archive_issue

说明: 归档 Linear 中的问题。

参数:

  • issueId (string, required): 问题 ID - 指定要归档的问题记录 ID。(示例:90fbc706-18cd-42c9-ae66-6bd344cc8977
linear/create_sub_issue

说明: 在 Linear 中创建子问题。

参数:

  • parentId (string, required): 父级 ID - 指定此新问题父级的 Issue ID。
  • teamId (string, required): 团队 ID - 指定该新子问题所属父级的团队 ID。使用 Connect Portal Workflow Settings 让用户选择 Team ID。(示例:a70bdf0f-530a-4887-857d-46151b52b47c
  • title (string, required): 标题 - 指定此问题的标题。
  • description (string, optional): 描述 - 指定此问题的描述。
  • additionalFields (object, optional): 其他字段。
    {
    "lead": "linear_user_id"
    }
linear/create_project

说明: 在 Linear 中创建一个新项目。

参数:

  • teamIds (object, required): 团队 ID - 指定此项目关联的团队 ID,可以是字符串或 JSON 数组。使用 Connect Portal User Settings 让用户选择 Team ID。
    [
    "a70bdf0f-530a-4887-857d-46151b52b47c",
    "4ac7..."
    ]
  • projectName (string, required): 项目名称 - 指定项目名称。(示例:My Linear Project
  • description (string, optional): 项目描述 - 指定此项目的描述。
  • additionalFields (object, optional): 其他字段。
    {
    "state": "planned",
    "description": ""
    }
linear/update_project

说明: 更新 Linear 中的项目。

参数:

  • projectId (string, required): 项目 ID - 指定要更新的项目 ID。(示例:a6634484-6061-4ac7-9739-7dc5e52c796b
  • projectName (string, optional): 项目名称 - 指定要更新的项目名称。(示例:My Linear Project
  • description (string, optional): 项目描述 - 指定此项目的描述。
  • additionalFields (object, optional): 其他字段。
    {
    "state": "planned",
    "description": ""
    }
linear/get_project_by_id

说明: 通过 ID 获取 Linear 中的项目。

参数:

  • projectId (string, required): 项目 ID - 指定要获取的项目 ID。(示例:a6634484-6061-4ac7-9739-7dc5e52c796b
linear/delete_project

说明: 删除 Linear 中的项目。

参数:

  • projectId (string, required): 项目 ID - 指定要删除的项目 ID。(示例:a6634484-6061-4ac7-9739-7dc5e52c796b
linear/search_teams

说明: 在 Linear 中搜索团队。

参数:

  • teamFilterFormula (object, optional): 以析取范式表示的过滤器 - 由若干 AND 组组成的 OR。
    {
    "operator": "OR",
    "conditions": [
    {
    "operator": "AND",
    "conditions": [
    {
    "field": "name",
    "operator": "$stringContains",
    "value": "Engineering"
    }
    ]
    }
    ]
    }
    可用字段:idname
from crewai import Agent, Task, Crew
from crewai import Agent, Task, Crew
# 创建一个具备 Linear 能力的智能体
linear_agent = Agent(
role="开发经理",
goal="高效管理 Linear 问题并跟踪开发进度",
backstory="一位专注于软件开发项目管理的 AI 助手。",
apps=['linear'] # 将可用所有 Linear 操作
)
# 创建缺陷报告任务
create_bug_task = Task(
description="为认证系统创建一个高优先级缺陷报告,并分配给后端团队",
agent=linear_agent,
expected_output="缺陷报告已成功创建,并返回问题 ID"
)
# 运行任务
crew = Crew(
agents=[linear_agent],
tasks=[create_bug_task]
)
crew.kickoff()
issue_manager = Agent(
role="问题管理员",
goal="高效创建和管理 Linear 问题",
backstory="一位专注于问题创建和生命周期管理的 AI 助手。",
apps=['linear/create_issue']
)
# 管理问题流程的任务
issue_workflow = Task(
description="创建一个功能请求问题,并更新相关问题的状态以反映当前进展",
agent=issue_manager,
expected_output="功能请求已创建,相关问题已更新"
)
crew = Crew(
agents=[issue_manager],
tasks=[issue_workflow]
)
crew.kickoff()
from crewai import Agent, Task, Crew
project_coordinator = Agent(
role="项目协调员",
goal="高效协调 Linear 中的项目和团队",
backstory="一位经验丰富的项目协调员,负责管理开发周期和团队工作流。",
apps=['linear']
)
# 协调项目设置的任务
project_coordination = Task(
description="""
1. 在 Linear 中搜索工程团队
2. 为第二季度功能开发创建一个新项目
3. 将该项目关联到相关团队
4. 将初始项目里程碑创建为问题
""",
agent=project_coordinator,
expected_output="第二季度项目已创建,团队已分配,初始里程碑已建立"
)
crew = Crew(
agents=[project_coordinator],
tasks=[project_coordination]
)
crew.kickoff()
from crewai import Agent, Task, Crew
task_organizer = Agent(
role="任务整理员",
goal="将复杂问题整理为可管理的子任务",
backstory="一位将复杂开发工作拆解为有组织子任务的 AI 助手。",
apps=['linear']
)
# 创建问题层级的任务
hierarchy_task = Task(
description="""
1. 搜索需要拆分的大型功能问题
2. 对每个复杂问题,为不同组件创建子问题
3. 用合适的描述和子问题链接更新父问题
4. 根据专业能力将子问题分配给合适的团队成员
""",
agent=task_organizer,
expected_output="复杂问题已拆分为可管理的子任务,并完成了合适分配"
)
crew = Crew(
agents=[task_organizer],
tasks=[hierarchy_task]
)
crew.kickoff()
from crewai import Agent, Task, Crew
workflow_automator = Agent(
role="工作流自动化员",
goal="自动化 Linear 中的开发工作流流程",
backstory="一位自动执行重复性开发工作流任务的 AI 助手。",
apps=['linear']
)
# 复杂的工作流自动化任务
automation_task = Task(
description="""
1. 搜索已处于进行中超过 7 天的问题
2. 根据截止日期和项目重要性更新其优先级
3. 为每个团队创建每周冲刺规划问题
4. 归档上一周期已完成的问题
5. 将项目状态报告生成为新的问题
""",
agent=workflow_automator,
expected_output="开发工作流已自动化,优先级、冲刺规划和状态报告均已更新"
)
crew = Crew(
agents=[workflow_automator],
tasks=[automation_task]
)
crew.kickoff()

权限错误