ARTICLE DETAIL

资讯详情

深耕网站视觉设计与运营推广的一线实战洞察。

Current demo choices

Current demo choices Current demo choices【免费下载链接】opensreBuild your own AI SRE agents. The open source toolkit for the AI era.项目地址: https://gitcode.com/GitHub_Trending/op/opensreExplore a repo and analyze its CI/CD performance (recommended): callskill_view(nameanalyzing-github-ci-performance).Set up an agent that improves CI/CD reliability over time: callskill_view(namescheduling-github-ci-fixes).Connect OpenSRE to Slack and hand off DevOps chores for your team: callskill_view(nameconnecting-slack).Skip: finish onboarding.对应的测试 [test_onboarding_workflow.py](https://link.gitcode.com/i/5624fd0dd1e132eb8bbf4f77dc04502f) 验证了完整路由入口钩子先于任何工作执行被触发work []模型在收到用户选择后于同一回合通过 skill_view 加载子技能并执行其第一步示例中为 scan_local_git_workspace同时断言 session.active_skill 从 onboarding-github-ci 切换为 analyzing-github-ci-performance。 ## 3. Ask User根据菜单状态决定动作 SKILL.md 的 “Ask User” 章节要求 Agent 先读取 pre_execute 的结果再决定行为四种状态各有明确动作 | 菜单状态 | 含义 | Agent 动作 | |---|---|---| | menu: queued | 菜单已打开等待用户选择 | 结束当前回合等待选择**不要**再次调用 ask_user_choice也不要把它转成文本重复 | | menu: suppressed | 没有打开新菜单本次请求已带答案 | 用已有答案继续当前请求若用户显式要求重新打开演示菜单调用 slash_invoke 执行 /demo而普通问候不算重新打开 | | menu: unavailable | 菜单不可用 | 把 “Current demo choices” 渲染为编号列表并等待回复 | | 钩子错误且无菜单状态 | 选择器打开失败 | 解释选择器无法打开并同样展示编号列表 | 只有 queued 状态才允许让用户从打开的选择器中选取。菜单没有自由文本行其最后一项打开纯 shellplain shellShell 负责处理 Skip 与 Escape不会把答案回传给模型——这是交互式表面与文本回退text fallback两种宿主的分工边界。 ## 4. Follow the selected child交接协议 下一个消息携带问题与用户的回答。Agent 用匹配的技能名调用 skill_view然后**在同一回合内**遵循其返回的指令 - 使用生成的 “Current demo choices” 将答案匹配到对应技能先加载该技能再执行其工作流。 - 自定义答案把该文本当作新的用户请求用合适的工具或技能处理**不要**重新打开菜单或强制演示选项。 - 子技能提出自己的问题后继续跟随该子技能**不要**返回主菜单。 - Escape 取消引导等待新的用户请求。 - 显式的 /demo 会用新请求启动所选工作流让工具自行解析已存在的活动运行已完成的结果不计为新运行。 这种“先 skill_view 加载、再执行”的协议与目录层的 discovery.py、naming.py、schema.py 等模块配合保证技能加载经过契约校验见 [catalog/](https://link.gitcode.com/i/73657effa6b11c764f7d8a2d877f96de)。技能文件的编写规范可参考 [SKILL_TEMPLATE.md](https://link.gitcode.com/i/206a0e57a2a4b6aa1f99d4da3e6e746f)其要点包括使用 update_plan 追踪编号步骤、只在宿主必须打开菜单时才加 pre_execute 选择器、中途问题写进编号工作流、发布前运行原始卡片校验测试与相关工作流测试。 ## 5. 分支一CI/CD 性能分析analyzing-github-ci-performance 这是推荐的首选演示demo_order: 1。目标基于单个仓库近 30 天的原始 GitHub Actions 记录生成 CI/CD 可靠性报告包括失败率与开发者等待时间估算。 ### 5.1 五步工作流 1. **扫描本机**调用 scan_local_git_workspace()无参数。即使返回空结果也视为完成因为示例仓库仍可在第 2 步选用。 2. **选择仓库**调用 ask_user_choice标题为 Which repository should I analyze?。最多提供 5 个含 GitHub Actions 工作流的扫描仓库格式 owner/repo并把 Tracer-Cloud/opensre 作为示例选项即使只扫描到一个仓库也必须提供选择器“单个扫描结果不算选择”。调用后结束回合答案作为下一条消息到达。 3. **收集并计算指标**调用 analyze_github_ci_reliability(ownerowner, reporepo, days30)。该工具读取整个窗口的 Actions 历史默认分支运行、PR 运行、重试尝试、已合并 PR计算报告中的每个指标仅返回数值headline、key_results、comparison_figures本仓库在对比表中的列、benchmarks同行仓库列、coverage_notices 与原始计数。**它不渲染任何内容**报告由 Agent 自行撰写**不要**自行分页 REST API也不要自己运行 execute_python_code。若工具报告缺少 token让用户执行 opensre integrations setup github并把该阻塞项作为覆盖缺口带入第 4 步。 4. **以 Markdown 表格展示指标**先通过 skill_view(nameanalyzing-github-ci-performance, referencebenchmarks) 读取 [Benchmarks](https://link.gitcode.com/i/f699ac99538b87ce49d8602f24d7105c)。每个表格单元格必须有来源第 3 步的计算结果或该参考值无来源的单元格填 n/a 并在表下说明缺口**绝不估算**。指标定义见 [Metrics](https://link.gitcode.com/i/cebb6c7ecd4b79c78af2071c9b92bc06)仅在用户询问“某数值如何定义”时才读取。 5. **提供下一步**ask_user_choice标题 What would you like to do next?选项 Schedule local loops / Slack setup / Finish。除 Finish 外每个分支都由同级子技能拥有用 skill_view 加载并遵循其计划**不要**在此处重实现其步骤。 ### 5.2 报告格式 技能要求以 Markdown 表格直接输出报告占位符一律替换为计算值或参考基准值 markdown Developer impact: - xx developer-hours spent waiting on CI across xx developers. - Most affected developer: up to xx h/week waiting on CI. - xx% of PR runs failed, creating substantial retry and investigation overhead. Compared with langchain-ai/langchain and anomalyco/opencode: | Metric | owner/repo | langchain-ai/langchain | anomalyco/opencode | |---|---:|---:|---:| | Red time on main | hours and % of window | benchmark | benchmark | | Mean time to green | hours | benchmark | benchmark | | CI-caused failure rate | % of PR workflow runs | benchmark | benchmark | | Slowest normal run | minutes and workflow | benchmark | benchmark | | PR failure rate | % of PR workflow runs | benchmark | benchmark | What insights stand out: - CI-caused failures account for x.x% of all PR runs, roughly x.x-x.x× higher than the comparison repositories.5.3 指标定义与基准快照Metrics 定义了严格的统计口径关键点包括人口与覆盖以 UTC[start, end)为窗口默认分支与pull_request/pull_request_target事件分开计数pr_executions统计 PR 工作流运行数而非 PR 数eligible 结论为success、failure、timed_out、startup_failure、action_required后四者视为失败pending、cancelled、skipped、neutral 单独上报其缺席不等于成功。失败分类pr_failures按每个 eligible PR 运行计一次只要有任一次尝试失败按失败后首个后续成功分类为reliability_failures同一 SHA 上恢复、source_failures换 SHA 恢复、unresolved_failures无后续成功。报告中的CI-caused标签只是“同 SHA 恢复”代理指标不建立根因。比率pr_failure_rate 100 * pr_failures / pr_executionsci_failure_rate 100 * reliability_failures / pr_executions分母为零时是N/A而非零。主分支红时间按默认分支 push 运行按时间顺序重建分支状态失败开启红色区间当前提交或后继的所有适用工作流成功完成才闭合red_hours区间去重合并Red time on main报告小时数与窗口占比mean_recovery_hoursMean time to green为窗口内已知起点的已恢复中断的平均全程时长进行中的中断不计入。开发者影响估算对每个有同 SHA 恢复的已合并 PR 提交以“最早排队时间 最慢正常时长”为期望变绿时间、以各工作流首个成功完成时间的最晚者为实际变绿时间并按下一提交推送时间、PR 合并时间与窗口上界截断按作者合并区间后与工作时段默认假设工作日 09:00–18:00 UTC求交输出blocked_working_minutes。技能明确要求这是 CI 相关延迟的估算不等同于实测空闲时间、生产力损失或金钱成本。校验不变量reliability source unresolved pr_failures、ci_failure_rate pr_failure_rate、0 red_hours window_hours、每个受影响 PR 必须关联到观测到的同 SHA 恢复等。Benchmarks 提供冻结的同行对比快照测量日 2026-09-11、30 天窗口来自integrations/github/tools/ci_analytics/benchmarks.pyMetriclangchain-ai/langchainanomalyco/opencodeRed time on main7.5%31.6%Mean time to green9.0h4.3hCI-caused failure rate1.9%1.6%Slowest normal run4m20mPR failure rate11.5%54.6%该参考明确声明这些是历史语境而非受控排名工作负载不同快照的边界与尝试处理无法从快照本身验证目标仓库窗口不同或指标缺覆盖时须在对比旁披露。原始执行计数、受影响作者与工时依赖仓库与团队规模不做同行对比。快照仅使用一次用户显式要求刷新对比时才另行收集最新同行历史。6. 分支二定时修复 GitHub CIscheduling-github-ci-fixesdemo_order: 2目标按计划监控一个仓库的开放 PR每个 tick 自动编辑、测试并推送一个失败 PR 分支的修复绿色 PR 不会停止监控。可选的一次性私有仓库演示使用每分钟的修复策略。该技能requiresGitHub 写权限、经认证的编码 Agent、调度宿主机上的 Git演示还需要能创建私有仓库与示例 PR 的 token。6.1 运行时事实循环本质是调度器任务通过slash_invoke执行/croncron 粒度为一分钟没有 20 秒轮询。定时 tick 以完整工具目录无头运行tick 提示必须直接指名工具调用——fix_github_pr_ci自身会报告 PR 无失败检查因此 tick 无需单独的状态读取。fix_github_pr_ci在返回前会完成 clone、修复、push 并等待新检查单个 tick 耗时数分钟/cron run id会阻塞同样时长并返回 tick 报告运行期间不要轮询。github_cli的repo参数只作为-R传给接受它的命令gh repo …以位置参数接收仓库例如[repo, create, name, …]。每个响应只放一个动作update_plan与下一个工具调用同响应发送但ask_user_choice必须是其响应中的唯一调用只读检查各自独立成响应。技能激活期间可直接调用seed_demo_repository与write_demo_evidence声明在 script-tools.md它们返回结构化结果避免命令输出污染对话记录。6.2 十一步计划update_plan从以下编号步骤生成实时计划已满足的步骤标记completed已指定仓库跳过第 1 步已有失败 PR 跳过第 4、8 步用ask_user_choice选择仓库或私有演示。检查前置条件GitHub 身份与 scopes然后调度器。选择失败 PR或确认已授权的演示范围。仅演示创建演示仓库、失败分支与 PR。用list_github_actions_workflow_runs确认 GitHub 报告失败。用/cron add启动循环并记录任务 id。用/cron run id运行首个 tick 并阅读报告。用一次pr view验证修复。保存证据、移除演示循环与资源用/cron list验证。以 Markdown 输出结果报告。报告展示后用ask_user_choice提供后续跟进。6.3 关键操作细节前置检查第 2 步一次响应一个调用——github_cli [api, user, --include]确认认证并打印 token 的X-Oauth-Scopes头slash_invoke {command: /cron, args: [list]}确认调度器响应。演示失败构造第 4 步恰好三个调用顺序固定。示例要贴近现实——一个把calculator.add写成减法、测试几秒跑完的仓库github_cli [repo, create, opensre-ci-repair-demo-random, --private, --add-readme, --description, Temporary OpenSRE scheduled CI repair demo]不加 owner 前缀在认证用户下创建可保留删除时的管理员权限。seed_demo_repository(repoowner/repo)创建修复版 calculator 演示并推送失败分支记录返回的workspace与head_sha失败时先检查返回的 stage 与已保存进度再重试同一调用遇到意外的本地或远端变更立即停止。底层脚本seed_demo_repository.py内置了_CALCULATOR/_BROKEN_CALCULATORadd返回left - right、unittest测试add(2, 3) 5与名为Demo calculator CI的 GitHub Actions 工作流ubuntu-latest Python 3.12 python -m unittest -v并在每次 push 前通过_demo_state的收据机制保存确认状态以便安全重试。github_cli [pr, create, --base, main, --head, demo/failing-ci, --title, Demo: repair failing calculator CI, --body, …]repo设为新仓库。确认失败第 5 步list_github_actions_workflow_runs(owner, repo, branchhead branch)运行仍在排队或进行中时用一次shell_run sleep 20等待 20 秒后重试不用其他状态工具记录失败运行 id 与 head 提交。启动循环第 6 步一次slash_invoke调用并记录输出中的Task id created.{command: /cron, args: [add, --name, CI repair: owner/repo, --kind, manual_loop, --cron, */2 * * * *, --provider, interactive_shell, --mode, agent, --owner, owner, --repo, repo, --prompt, tick prompt]}【免费下载链接】opensreBuild your own AI SRE agents. The open source toolkit for the AI era.项目地址: https://gitcode.com/GitHub_Trending/op/opensre创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表