
Cursor Agent 命令实战Opik 仓库 generate-code-review-slack-command 自动生成代码评审 Slack 消息【免费下载链接】comet-llmDebug, evaluate, and monitor your LLM applications, RAG systems, and agentic workflows with comprehensive tracing, automated evaluations, and production-ready dashboards.项目地址: https://gitcode.com/GitHub_Trending/co/comet-llmgenerate-code-review-slack-command是 Opikcomet-llm仓库在 .agents/commands/comet/generate-code-review-slack-command.md 中定义的一条 Cursor AI Agent 命令它自动从当前分支的 GitHub PR 中提取 Jira 票据、测试环境链接、PR 大小以及 FE/BE/Python/TypeScript 各组件摘要并按照固定的代码评审模板格式化为可直接粘贴到#code-review频道的 Slack 消息。读完本文你将掌握这条命令的完整执行流程、信息提取规则、消息模板细节、配套的 PR 大小提取共享逻辑以及它与自动发送命令send-code-review-slack的取舍可以直接在 Opik 仓库中复制使用或借鉴到自己的 Agent 命令设计中。命令概览做什么、不做什么功能定位该命令的核心职责是生成一条格式化、可复制的 Slack 命令用于在#code-review频道发布 PR 代码评审请求。消息包含PR 信息PR 链接Jira 票据自动从 PR 标题提取例如[OPIK-1234]测试环境链接自动从 PR 描述或评论提取可选的组件摘要FE、BE、Python、TypeScript可选的 Baz 审批状态PR 大小如 L执行模型只生成、不发送与原文档一致本命令的执行模型是只生成、不发送自动从 GitHub PR 提取信息仅对缺失的信息进行提问按模板格式化消息输出可复制的 Slack 命令不会自动发送。这是它与姊妹命令cursor send-code-review-slack见 .agents/commands/comet/send-code-review-slack.md的本质区别——后者通过 Slack MCP 的conversations_add_message工具直接把消息发到频道。选择哪条命令取决于你是否需要发送前的人工编辑见下文与 send-code-review-slack 的取舍。完整工作流命令执行时依次完成查找当前分支对应的 GitHub PR从 PR 标题提取 Jira 票据从 PR 描述提取测试环境链接从 PR 描述提取组件摘要FE、BE、Python、TypeScript仅对缺失信息进行提问允许用户小幅定制消息按代码评审模板格式化消息生成可复制、可编辑后发送的 Slack 命令展示命令供复制前置条件与环境配置依赖矩阵需要 GitHub MCP不需要 Slack MCP依赖是否必需说明GitHub MCP✅ 必需用于自动提取 PR 信息Slack MCP❌ 不需要本命令不发送消息因此无需配置 Slack MCPGit 仓库✅ 必需命令需在当前分支上运行Docker视环境而定GitHub MCP 通过 Docker 运行见.agents/mcp.jsonGitHub MCP 配置GitHub MCP 在 .agents/mcp.json 中声明通过 Docker 运行官方镜像ghcr.io/github/github-mcp-server启用repos、pull_requests、issues三组工具集令牌从${workspaceFolder}/.env.local中的GITHUB_PERSONAL_ACCESS_TOKEN读取GitHub: { command: docker, args: [ run, -i, --rm, -e, GITHUB_PERSONAL_ACCESS_TOKEN, -e, GITHUB_TOOLSETSrepos,pull_requests,issues, ghcr.io/github/github-mcp-server ], envFile: ${workspaceFolder}/.env.local }启用命令make cursor / make claude如果运行命令时提示 MCP 未配置按提示先执行环境初始化。仓库根目录 Makefile 提供了两个目标make cursor把.agents/目录软链为.cursor/让 Cursor 能读取命令定义make claude把.agents/同步到.claude/并生成根目录.mcp.json供 Claude CLI 使用。# 配置 MCP 环境后 make cursor # Cursor make claude # Claude CLI命令发现机制依赖 Agent 工具链Cursor/Claude能访问.agents/commands/comet/下的 Markdown 命令定义文件因此上述初始化是第一步。执行流程详解Step 1预检与环境检查命令启动后先做三项预检检查 GitHub MCP 可用性尝试用get_file_contents获取comet-ml/opik仓库信息。若不可用直接回复并停止This command needs GitHub MCP configured. Set MCP config/env, runmake cursor(Cursor) ormake claude(Claude CLI), then retry.确认处于 Git 仓库验证当前目录是 Git 仓库。获取当前分支名作为后续查找 PR 的依据。预检失败即停止不进入后续流程——这保证了信息源PR的可靠性。Step 2查找当前分支的 GitHub PR使用 GitHub MCP 在comet-ml/opik中查找当前分支对应的开放 PR。找到 PR提取 PR 编号、URL、标题和描述暂存供后续提取步骤使用。未找到 PR提示 No open PR found for this branch. Please provide the PR link manually:要求手动输入 PR 链接并校验 URL 格式随后用 GitHub MCP 拉取该 PR 详情。若拉取失败则停止并报错。手动链接成功获取后走与自动发现完全相同的提取 PR 编号/URL/标题/描述分支。Step 3从 PR 中提取信息这是命令的核心智能所在分为四类提取任务。3.1 提取 Jira 票据必填提取顺序严格递进解析 PR 标题匹配[OPIK-\d]、[issue-\d]或[NA]模式。例如从[OPIK-1234] [BE] feat(api): add trace request validation endpoint提取出OPIK-1234。标题中未找到时检查 PR 描述的## Issues章节中的OPIK-\d模式。仍未找到时提问Jira ticket not found in PR. Enter Jira ticket number (e.g., OPIK-1234):校验格式后存储。随后构造 Jira URLhttps://comet-ml.atlassian.net/browse/{TICKET}例如https://comet-ml.atlassian.net/browse/OPIK-1234。3.2 提取 Baz 审批状态可选尝试通过 GitHub MCP 拉取 PR 的 status checks / CI checks。若发现能表明 Baz approved 或类似审批状态的检查存储状态如 Baz approved: ✅ 或 Baz status: pending。不可用时跳过该字段它是可选项。3.3 提取 PR 大小必填遵循共享文档 .agents/docs/PR_SIZE_EXTRACTION.md 的步骤优先读取size/*标签标签缺失时按工作流自身的忽略清单与阈值回退到改动行数计算。存储格式为{emoji} {BUCKET}例如 L。详细机制见下文PR 大小提取的共享逻辑。3.4 提取测试环境链接必填提取顺序同样是多层回退先搜 PR 评论查找测试环境部署消息如 Test environment is now available!。未找到则搜 PR 描述的## Testing章节中的 URL。匹配常见测试环境模式https://pr-*.dev.comet.com、https://test.opik.com、https://*.opik.com或任意https://URL多个 URL 时优先选最像测试环境的第一个。未找到再搜## Details章节。仍未找到则提问Test environment link not found in PR. Enter test environment link (e.g., https://pr-4743.dev.comet.com):校验 URL 后存储。关键细节拉取评论必须分页。文档明确要求调用gh api时始终加--paginate# Issue comments一般 PR 评论含部署机器人消息 gh api repos/comet-ml/opik/issues/{pr_number}/comments --paginate # Review comments行内代码评论 gh api repos/comet-ml/opik/pulls/{pr_number}/comments --paginate原因GitHub API 默认每页仅返回 30 条。Opik 的 PR 经常超过这个数量——17 条 CI 测试组评论 部署机器人评论 评审者评论很容易突破 30 条。不加--paginate时含测试环境链接的部署机器人评论可能落在第 2 页而被静默漏掉导致提取失败并退回人工输入。3.5 提取组件摘要可选四个组件独立提取组件关键词启发式大小写不敏感缺失时的提问FEfrontend、FE、React、UI、[FE]标签Frontend summary not found in PR. Enter frontend summary (one line, optional - press Enter to skip):BEbackend、BE、Java、API、[BE]标签Backend summary not found in PR. Enter backend summary (one line, optional - press Enter to skip):PythonPython、Python SDK、SDK 或 Python 相关改动Python summary not found in PR. Enter Python summary (one line, optional - press Enter to skip):TypeScriptTypeScript、TypeScript SDK、TS、TS SDK、[TS]标签TypeScript summary not found in PR. Enter TypeScript summary (one line, optional - press Enter to skip):每个组件的摘要从## Details章节或组件相关提及中提取一行摘要未找到时提问按 Enter 可直接跳过摘要本来就是可选项。Step 4消息定制提问所有信息提取完成后命令询问用户是否定制消息Would you like to customize the message? (Enter any additional text to prepend/append, or press Enter to use default message):用户输入文本该文本会作为独立段落插入问候语之后、结构化字段之前。用户按 Enter空按默认模板输出。定制文本可用于补充上下文、强调重点或附加额外信息。Step 5按模板格式化 Slack 消息消息模板Hi team, Please review the following PR: {{user_customization_text_if_provided}} :jira_epic: jira link: {{Jira_URL}} :github: pr link: {{PR_link}} :straight_ruler: pr size: {{pr_size}} :test_tube: test env link: {{test_env}} {{baz_approved_status_if_available}} :react: fe summary (optional): {{description_in_one_line}} :java: be summary (optional): {{description_in_one_line}} :python: python summary (optional): {{description_in_one_line}} :typescript: typescript summary (optional): {{description_in_one_line}}字段规则问候语固定始终以Hi team,\n\nPlease review the following PR:\n开头。用户定制文本若有Step 4放在问候语之后、结构化字段之前。Jira 链接完整 URL如https://comet-ml.atlassian.net/browse/OPIK-1234。PR 链接GitHub PR URL。PR 大小只含桶名如 L始终包含——因为 GitHub 上大小信息总是可得。测试环境链接测试环境 URL。Baz 审批状态仅在成功提取时才包含可选字段。组件摘要只包含已提供的可选字段空值一律跳过。格式化示例Hi team, Please review the following PR: :jira_epic: jira link: https://comet-ml.atlassian.net/browse/OPIK-1234 :github: pr link: https://github.com/comet-ml/opik/pull/1234 :straight_ruler: pr size: L :test_tube: test env link: https://test.opik.com :react: fe summary (optional): Added new metrics dashboard UI :java: be summary (optional): Implemented metrics aggregation endpoint :typescript: typescript summary (optional): Added TypeScript SDK support for metricsStep 6生成可复制的 Slack 命令生成结果以代码块形式输出便于一键复制并附带明确的使用指引Copiable Slack Command GeneratedCopy the command below and paste it into the #code-review channel in Slack.You can edit it before sending to:Add mentions for specific reviewersAdd media links or video linksMake final proof editsAdd any additional context[FORMATTED_MESSAGE]To send in Slack:Open Slack and navigate to #code-review channelPaste the command aboveEdit as needed (add mentions, media links, etc.)Send the message如果用户偏好命令还会额外提供 Slack CLI 等价格式slack chat send --channel #code-review --text [FORMATTED_MESSAGE]Step 7展示与总结最终展示代码块中的格式化消息、说明使用方式并强调发送前可编辑添加 提及、媒体链接、最终校对。PR 大小提取的共享逻辑PR 大小是命令的必填字段其提取逻辑被抽取为共享文档 .agents/docs/PR_SIZE_EXTRACTION.md供generate-code-review-slack-command与send-code-review-slack两条命令共用避免两者逻辑漂移。提取规则优先读标签仓库的 Auto Label PR Size 工作流实现在 .github/workflows/labeler.yml为每个 PR 打恰好一个size/*标签 size/XS、 size/S、 size/M、 size/L、 size/XL。直接读取 PR 标签即可。存储格式{emoji} {BUCKET}如 L只含桶名、不含行数。回退计算仅当尚无size/*标签工作流可能还没跑完时用 PR 的改动行数additions deletions推导桶且必须套用与工作流相同的忽略清单与阈值保证回退结果与标签机落到同一桶。源码级依据labeler 工作流.github/workflows/labeler.yml 中定义了权威的分桶规则BUCKETS与IGNORE_GLOBSconst BUCKETS [ { name: size/XS, color: CHIP_COLOR, maxSize: 19 }, { name: size/S, color: CHIP_COLOR, maxSize: 100 }, { name: size/M, color: CHIP_COLOR, maxSize: 300 }, { name: size/L, color: CHIP_COLOR, maxSize: 600 }, { name: size/XL, color: CHIP_COLOR, maxSize: null }, // 兜底 ]; const IGNORE_GLOBS [ **/package-lock.json, **/yarn.lock, **/pnpm-lock.yaml, **/poetry.lock, **/uv.lock, sdks/python/src/opik/rest_api/**, sdks/typescript/src/opik/rest_api/**, **/*.snap, **/*.svg, **/*.png, ];分桶阈值XS 20、S 20–100、M 101–300、L 301–600、XL 600maxSize为闭区间上界最后一项为 null 兜底。忽略清单剔除锁文件package-lock.json、yarn.lock等、生成的 REST 客户端sdks/*/src/opik/rest_api/**以及快照/图片文件——否则一次锁文件升级会把小 PR 误标成 XL。工作流计算时还会对 PR 文件列表做github.paginate分页拉取.github/workflows/labeler.yml与命令提取评论时分页同理。为什么以 GitHub 为唯一事实源文档强调 GitHub 是大小信息的事实源消息发布时刻的大小即可满足需求——PR 进入评审后极少跨桶变化。共享文档刻意不在自身重复列出忽略清单与阈值而是要求读工作流定义从源头杜绝两处定义漂移。错误处理全景GitHub MCP 错误MCP 不可用测试后立即停止给出配置指引make cursor/make claude。PR 未找到提示手动提供 PR 链接或用户取消则停止。PR 拉取失败展示错误详情建议手动输入。提取错误Jira 票据未找到 → 提示输入票据号。测试环境链接未找到 → 提示输入测试环境 URL。组件摘要未找到 → 提示输入摘要可选可跳过。输入校验错误Jira 票据格式非法 → 展示期望格式如OPIK-1234并重新提问。PR URL 非法 → 展示期望格式并重新提问。测试环境 URL 非法 → 展示期望格式并重新提问。成功标准命令成功的可验证清单原文档明确定义✅ GitHub MCP 可用且可访问✅ 找到当前分支的 PR或手动提供✅ Jira 票据已从 PR 提取或手动提供✅ 测试环境链接已从 PR 提取或手动提供✅ 组件摘要已提取或手动提供可选✅ 消息按模板格式化含问候语和 Jira 链接✅ 生成并展示了可复制的 Slack 命令✅ 用户获得清晰的使用指引完整示例标准流程分支上有开放 PR# 1. 确保 GitHub MCP 已配置无需 Slack MCP # 2. 在带有开放 PR 的分支上运行 cursor generate-code-review-slack-command# 执行流程 # 1. 找到当前分支 PRhttps://github.com/comet-ml/opik/pull/1234 # 2. 从 PR 标题提取 Jira 票据[OPIK-1234] [FE] feat(api): add metrics dashboard # 3. 从 PR 评论/描述提取测试环境https://pr-1234.dev.comet.com来自 PR 评论或 Testing 章节 # 从 size/* 标签或 additionsdeletions提取 PR 大小 L # 4. 从 PR 描述提取摘要 # - FE: Added new metrics dashboard UI来自 Details 章节 # - BE: Implemented metrics aggregation endpoint来自 Details 章节 # - Python:未找到向用户提问 # - TypeScript:未找到向用户提问 # 5. 询问消息定制可选 # 6. 按模板格式化消息含问候语和 Jira 链接 # 7. 生成并展示可复制的 Slack 命令# 输出 # **Copiable Slack Command Generated** # # Copy the command below and paste it into the #code-review channel in Slack. # # You can edit it before sending to: # - Add mentions for specific reviewers # - Add media links or video links # - Make final proof edits # - Add any additional context # # # Hi team, # # Please review the following PR: # # :jira_epic: jira link: https://comet-ml.atlassian.net/browse/OPIK-1234 # :github: pr link: https://github.com/comet-ml/opik/pull/1234 # :straight_ruler: pr size: L # :test_tube: test env link: https://test.opik.com # :react: fe summary (optional): Added new metrics dashboard UI # :java: be summary (optional): Implemented metrics aggregation endpoint # :typescript: typescript summary (optional): Added TypeScript SDK support for metrics # # # **To send in Slack:** # 1. Open Slack and navigate to #code-review channel # 2. Paste the command above # 3. Edit as needed (add mentions, media links, etc.) # 4. Send the message信息缺失场景部分信息无法从 PR 提取时命令逐项提问、缺失即补cursor generate-code-review-slack-command # Found PR: https://github.com/comet-ml/opik/pull/1234 # Extracted Jira ticket: OPIK-1234 # Test environment link not found in PR. Enter test environment link (e.g., https://test.opik.com): https://test.opik.com # Frontend summary not found in PR. Enter frontend summary (one line, optional - press Enter to skip): [Enter pressed - skipped] # Backend summary not found in PR. Enter backend summary (one line, optional - press Enter to skip): Implemented metrics endpoint # Python summary not found in PR. Enter Python summary (one line, optional - press Enter to skip): [Enter pressed - skipped] # TypeScript summary not found in PR. Enter TypeScript summary (one line, optional - press Enter to skip): [Enter pressed - skipped] # Would you like to customize the message? (Enter any additional text to prepend/append, or press Enter to use default message): [Enter pressed - using default]定制场景cursor generate-code-review-slack-command # ... 提取步骤 ... # Would you like to customize the message? (Enter any additional text to prepend/append, or press Enter to use default message): This PR includes important security updates, please review carefully. # # 生成的消息包含定制文本 # Hi team, # # Please review the following PR: # # This PR includes important security updates, please review carefully. # # :jira_epic: jira link: https://comet-ml.atlassian.net/browse/OPIK-1234 # ...与 send-code-review-slack 的取舍本命令与自动发送命令cursor send-code-review-slack.agents/commands/comet/send-code-review-slack.md共享几乎完全相同的信息提取逻辑Jira、测试环境、组件摘要、PR 大小关键差异在发送环节维度generate-code-review-slack-commandsend-code-review-slack发送方式不发送生成可复制命令经 Slack MCP 直接发送Slack MCP不需要需要ghcr.io/korotovsky/slack-mcp-server适用场景发送前需要人工编辑快速直达频道本命令的典型适用场景原文档明确列出添加针对特定评审者的 提及附带 Slack MCP 无法直接发送的媒体链接或视频链接发送前做最终校对对最终消息格式有更强的掌控需求视频限制的补充说明Slack 无法直接发送视频视频应放入 PR 描述后在 Slack 中分享链接。如需与产品团队更顺畅地沟通send-code-review-slack命令的文档也建议改用本命令生成可编辑的 Slack 命令后再发送。设计要点与最佳实践提取优先、提问兜底所有字段先尝试自动提取标题 → 描述 → 评论 → 提问将人工输入降到最低可选字段允许 Enter 跳过不给用户制造负担。分页是硬要求无论提取评论还是计算 PR 大小凡是经 GitHub API 分页返回的数据都显式 paginate避免第 2 页的关键信息被静默丢失。单一事实源PR 大小的阈值与忽略清单只定义在 .github/workflows/labeler.yml命令与共享文档只引用不复制杜绝漂移。发送前留出编辑窗口把生成与发送拆成两条命令让高控制需求的场景 提及、多媒体、最终校对不被自动化吞掉。失败即停GitHub MCP 不可用或 PR 无法获取时立即停止并给出明确指引避免在半可用状态下产出错误消息。【免费下载链接】comet-llmDebug, evaluate, and monitor your LLM applications, RAG systems, and agentic workflows with comprehensive tracing, automated evaluations, and production-ready dashboards.项目地址: https://gitcode.com/GitHub_Trending/co/comet-llm创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考