Linear 集成
让你的智能体通过 Linear 管理问题、项目和开发流程。借助 AI 驱动的自动化,创建和更新问题、管理项目时间线、组织团队,并简化软件开发流程。
在使用 Linear 集成之前,请确保你已具备:
- 一个拥有有效订阅的 CrewAI AMP 账户
- 一个具备相应工作区权限的 Linear 账户
- 通过 集成页面 连接了你的 Linear 账户
设置 Linear 集成
Section titled “设置 Linear 集成”1. 连接你的 Linear 账户
Section titled “1. 连接你的 Linear 账户”- 访问 CrewAI AMP Integrations
- 在 Authentication Integrations 部分找到 Linear
- 点击 Connect 并完成 OAuth 流程
- 授予问题和项目管理所需权限
- 从 Integration Settings 复制你的 Enterprise Token
2. 安装所需包
Section titled “2. 安装所需包”uv add crewai-tools3. 环境变量设置
Section titled “3. 环境变量设置”export CREWAI_PLATFORM_INTEGRATION_TOKEN="your_enterprise_token"或者将其添加到你的 .env 文件中:
CREWAI_PLATFORM_INTEGRATION_TOKEN=your_enterprise_tokenlinear/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"}]}]}title、number、project、createdAt可用操作符:$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"}]}]}id、name
Linear 基础智能体设置
Section titled “Linear 基础智能体设置”from crewai import Agent, Task, Crewfrom 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()仅筛选特定 Linear 工具
Section titled “仅筛选特定 Linear 工具”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()项目与团队管理
Section titled “项目与团队管理”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()问题层级与子任务管理
Section titled “问题层级与子任务管理”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()自动化开发工作流
Section titled “自动化开发工作流”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()权限错误