awesome-copilot 项目实战:用 Comet Opik Agent 为 LLM 应用构建全链路可观测性与 Prompt 治理体系
本文基于开源仓库 awesome-copilot 中社区贡献的 Comet Opik Agent 文档,系统讲解如何借助 Opik MCP 服务器,让 GitHub Copilot 完成 LLM 应用埋点、Prompt/版本治理、工作区与项目管理、Trace 与指标排查等一体化运维工作。读完本文,你将掌握 Opik 账户与 API Key 的获取方式、opik configure 与环境变量两套配置路径、Copilot 中 MCP 服务器的安装检查清单,以及从 Bronze 到 Gold 的质量门槛如何驱动生产就绪。
一、这个 Agent 是做什么的:Comet Opik 在 Copilot 中的定位
comet-opik 是 awesome-copilot 仓库中由 GitHub 合作伙伴(partner)贡献的定制 Agent。它的定位一句话概括:让 GitHub Copilot 成为你仓库的 Comet Opik 运维专员——负责把 Opik 客户端集成进 LLM 应用、强制 Prompt/版本治理、管理工作区与项目,并排查 Trace、指标与实验数据,且不破坏既有业务逻辑。
在仓库结构中,它被登记在 plugins/partners/plugin.json 的 agents 列表中,属于 partners 插件包;plugins/partners/README.md 对其描述为:
Unified Comet Opik agent for instrumenting LLM apps, managing prompts/projects, auditing prompts, and investigating traces/metrics via the latest Opik MCP server.
这意味着你既可以把 comet-opik.agent.md 单独下载安装为 VS Code 自定义 Agent,也可以随 partners 插件整体安装。从 Agent 元数据看,它启用的工具包括 read、search、edit、shell,以及 Opik MCP 服务器的全部工具(opik/*),是一个具备代码读写能力的完整代理。
二、Agent 元数据解析:MCP 服务器如何被声明
在 agents/comet-opik.agent.md 的 frontmatter 中,MCP 服务器配置如下:
mcp-servers:
opik:
type: 'local'
command: 'npx'
args:
- '-y'
- 'opik-mcp'
env:
OPIK_API_KEY: COPILOT_MCP_OPIK_API_KEY
OPIK_API_BASE_URL: COPILOT_MCP_OPIK_API_BASE_URL
OPIK_WORKSPACE_NAME: COPILOT_MCP_OPIK_WORKSPACE
OPIK_SELF_HOSTED: COPILOT_MCP_OPIK_SELF_HOSTED
OPIK_TOOLSETS: COPILOT_MCP_OPIK_TOOLSETS
DEBUG_MODE: COPILOT_MCP_OPIK_DEBUG
tools: ['*']
几个关键点值得展开:
type: 'local'+command: 'npx':服务器以本地进程方式启动,通过npx -y opik-mcp直接拉取并运行最新版 Opik MCP 服务器包,无需手工全局安装。这也是 docs/README.agents.md 中一键安装 MCP 所采用的配置(command: npx、args: ["-y", "opik-mcp"])。- 环境变量占位符机制:
env中右侧的COPILOT_MCP_OPIK_*是 VS Code 中"Copilot 自定义工具"(Custom Tools)里映射的密钥/配置变量名。也就是说,你需要在 VS Code 的.vscode/settings.json或密钥存储中为这些变量赋值,MCP 服务器进程才能拿到真实的 API Key 与端点。 tools: ['*']:Agent 获得 Opik MCP 暴露的全部工具能力,涵盖集成文档、Prompts、Projects、Traces、Metrics 等工具集。
三、前置条件与账户设置
3.1 账户与 Workspace
- 需要先拥有启用了 Opik 的 Comet 账户。SaaS 用户直接注册即可,自托管(OSS)用户则使用本地安装的 Opik 服务。
- Workspace slug:即
https://www.comet.com/opik/<workspace>/projects中的<workspace>段,后续配置中必须使用。OSS 安装默认使用default。 - 自托管 Base URL:默认是
http://localhost:5173/api/,同时要明确认证方案(是否启用 auth)。
3.2 API Key 的获取与保管
- 从 Comet 平台的 get-started 页面获取 API Key,该页面始终展示最近生成的 Key 与文档入口。
- 安全提醒:Key 应存放在 GitHub Secrets、1Password 等秘密管理器中,除非万不得已不要在聊天中粘贴明文。
- OSS 安装且关闭认证时,可以不使用 Key,但需要用户理解并接受对应的安全取舍。
3.3 运行环境检查
在启动 MCP 工具前确认运行时依赖:
node -v版本 ≥ 20.11;npx可用;~/.opik.config已存在,或COPILOT_MCP_OPIK_*环境变量已导出。
此外该 Agent 有一条硬性纪律:绝不改动仓库历史或初始化 git。若 git rev-parse 失败(说明不在 git 工作区内),应停下来让用户切换到正规 git 工作区,而不是擅自执行 git init / git add / git commit。在任一配置路径确认之前,不得继续执行 MCP 命令。
四、首选配置路径:opik configure
文档推荐的标准配置流程非常简单:
pip install --upgrade opik
opik configure --api-key <key> --workspace <workspace> --url <base_url_if_not_default>
pip install --upgrade opik安装/升级 Python SDK(CLI 也随附其中)。opik configure会在用户主目录生成或更新~/.opik.config。- 核心原理:Opik MCP 服务器和 SDK 都会通过 Opik 配置加载器(config loader)自动读取该文件,因此配置完成后无需再设置任何额外环境变量。
- 多 Workspace 场景:可以维护多份配置文件,通过
OPIK_CONFIG_PATH环境变量切换。
配置完成后可用如下命令验证,且不会泄露密钥:
opik config show --mask-api-key
若 CLI 不可用,也可以用 Python 方式验证:
python - <<'PY'
from opik.config import OpikConfig
print(OpikConfig().as_dict(mask_api_key=True))
PY
五、回退配置路径:环境变量与 INI 文件
5.1 环境变量方案
在 CI、多 Workspace,或 OPIK_CONFIG_PATH 指向自定义位置时,可以放弃配置文件,直接设置下列环境变量(这些变量正是 MCP 服务器 env 映射的 COPILOT_MCP_OPIK_* 占位符):
| 变量 | 是否必需 | 示例/说明 |
|---|---|---|
COPILOT_MCP_OPIK_API_KEY |
✅ | Workspace API Key(来自 get-started 页面) |
COPILOT_MCP_OPIK_WORKSPACE |
✅(SaaS) | Workspace slug,例如 platform-observability |
COPILOT_MCP_OPIK_API_BASE_URL |
可选 | 默认 https://www.comet.com/opik/api;OSS 用 http://localhost:5173/api |
COPILOT_MCP_OPIK_SELF_HOSTED |
可选 | 目标为 OSS Opik 时设为 "true" |
COPILOT_MCP_OPIK_TOOLSETS |
可选 | 逗号分隔,例如 integration,prompts,projects,traces,metrics |
COPILOT_MCP_OPIK_DEBUG |
可选 | 设为 "true" 时写入 /tmp/opik-mcp.log |
5.2 手工 INI 文件
如果连 opik configure 都无法运行,可以手工创建配置文件:
[opik]
api_key = <key>
workspace = <workspace>
url_override = https://www.comet.com/opik/api/
六、MCP Setup 检查清单
按以下顺序完成 MCP 环境搭建:
- 服务器启动:Copilot 通过
npx -y opik-mcp启动;保持 Node.js ≥ 20.11。 - 加载凭据:
- 首选:依赖
~/.opik.config,用opik config show --mask-api-key或上面的 Python 片段确认可读;MCP 服务器会自动读取。 - 回退:设置上一节的环境变量(CI/多 Workspace/自定义
OPIK_CONFIG_PATH场景)。
- 首选:依赖
- 在 VS Code 中映射密钥:在
.vscode/settings.json(Copilot 自定义工具)中映射好 secret 后再启用 Agent。 - Smoke test:本地先跑一次,确认 stdio 通道干净:
npx -y opik-mcp --apiKey <key> --transport stdio --debug true
七、核心职责:Agent 在仓库里的五大工作域
7.1 集成与启用(Integration & Enablement)
- 调用
opik-integration-docs加载权威的 onboarding 工作流。 - 遵循八个规定步骤:语言检查 → 仓库扫描 → 集成选型 → 深度分析 → 方案审批 → 实现 → 用户验证 → 调试循环。
- 只新增 Opik 相关代码(imports、tracer、middleware),不得改动业务逻辑或检入 git 的密钥。
7.2 Prompt 与实验治理
- 使用
get-prompts、create-prompt、save-prompt-version、get-prompt-version对每个生产 Prompt 进行编目与版本化。 - 强制 rollout notes(变更描述),并把部署与 Prompt commit 或版本 ID 关联。
- 实验阶段:在 Opik 内脚本化 Prompt 对比,并在合并 PR 前记录成功指标。
7.3 工作区与项目管理
- 用
list-projects/create-project按服务、环境或团队组织遥测数据。 - 保持命名一致(例如
<service>-<env>),并把 workspace/project ID 记录进集成文档,供 CI/CD 任务引用。
7.4 遥测、Trace 与指标
- 对所有 LLM 触点埋点:捕获 Prompt、响应、token/成本指标、延迟与关联 ID。
- 部署后执行
list-traces确认覆盖率;用get-trace-by-id(包含 span events/errors)排查异常,用get-trace-stats观察趋势窗口。 get-metrics验证 KPI(延迟 P95、单请求成本、成功率),并以此作为发布闸门或回归解释依据。
7.5 事故响应与质量门槛
质量门槛分为三档,作为"生产就绪度"的量化标尺:
- Bronze:所有入口点都有基础 Trace 与指标。
- Silver:Prompt 已在 Opik 中版本化;Trace 包含用户/上下文元数据;部署说明已更新。
- Gold:定义了 SLI/SLO;runbook 引用 Opik 仪表盘;有回归测试或单元测试断言 tracer 覆盖。
事故处理时,从 Opik 数据(Trace + 指标)入手,总结发现、指出修复位置,并为缺失埋点提交 TODO。
八、工具参考速查
| 工具 | 用途 |
|---|---|
opik-integration-docs |
带审批闸门的引导式工作流 |
list-projects、create-project |
工作区卫生管理 |
list-traces、get-trace-by-id、get-trace-stats |
追踪与根因分析 |
get-metrics |
KPI 与回归追踪 |
get-prompts、create-prompt、save-prompt-version、get-prompt-version |
Prompt 编目与变更控制 |
九、CLI 与 HTTP API 回退
当 MCP 调用失败或环境缺乏 MCP 连接时,可以回退到 Opik CLI(随 Python SDK 提供),它同样尊重 ~/.opik.config:
opik projects list --workspace <workspace>
opik traces list --project-id <uuid> --size 20
opik traces show --trace-id <uuid>
opik prompts list --name "<prefix>"
脚本化诊断优先使用 CLI 而非裸 HTTP。当 CLI 也不可用(最小化容器/CI)时,用 curl 复刻请求:
curl -s -H "Authorization: Bearer $OPIK_API_KEY" \
"https://www.comet.com/opik/api/v1/private/traces?workspace_name=<workspace>&project_id=<uuid>&page=1&size=10" \
| jq '.'
安全红线:日志中必须遮蔽 token,绝不把密钥回显给用户。
十、批量导入 / 导出
迁移或备份场景使用 import/export 命令:
# 导出
opik traces export --project-id <uuid> --output traces.ndjson
opik prompts export --output prompts.json
# 导入
opik traces import --input traces.ndjson --target-project-id <uuid>
opik prompts import --input prompts.json
规范要求:在笔记/PR 中记录源 Workspace、目标 Workspace、过滤条件与校验和,确保可复现;并清理任何含敏感数据的导出文件。
十一、测试与验证
交付前按三步验证:
-
静态校验:提交前运行
npm run validate:collections,确保 Agent 元数据合规。仓库中对应的是 package.json 中定义的plugin:validate/skill:validate等脚本,以及 eng/validate-plugins.mjs 中实现的校验逻辑(校验 name 规则、$schema、description 长度、keywords 数量等),保证像comet-opik这样的 Agent 清单始终满足 Agent Plugins 规范。 -
MCP smoke test:在仓库根目录执行:
COPILOT_MCP_OPIK_API_KEY=<key> COPILOT_MCP_OPIK_WORKSPACE=<workspace> \
COPILOT_MCP_OPIK_TOOLSETS=integration,prompts,projects,traces,metrics \
npx -y opik-mcp --debug true --transport stdio
预期 /tmp/opik-mcp.log 中出现 "Opik MCP Server running on stdio"。
- Copilot Agent QA:安装该 Agent 后打开 Copilot Chat,尝试类似提问:
- "List Opik projects for this workspace."
- "Show the last 20 traces for and summarize failures."
- "Fetch the latest prompt version for and compare to repo template."
成功响应的标志是回答中引用了 Opik 工具。最终交付物必须声明当前埋点等级(Bronze/Silver/Gold)、遗留缺口与下一步遥测动作,让干系人明确系统何时可投产。
十二、在仓库中如何安装使用
- 单独安装:下载 agents/comet-opik.agent.md 放入你的仓库,并在 VS Code 中按 docs/README.agents.md 的说明为其配置
opikMCP 服务器(npx -y opik-mcp)。 - 随插件安装:通过
copilot plugin install partners@awesome-copilot安装partners插件包(见 plugins/partners/README.md),comet-opik是其中登记的 Agent 之一(plugins/partners/plugin.json)。
总结
Comet Opik Agent 为 GitHub Copilot 补齐了 LLM 应用可观测性的最后一公里:从 opik configure 一键配置、环境变量回退,到集成埋点、Prompt 版本治理、Trace/指标排查,再到 CLI/HTTP 回退与批量导入导出,最后以 Bronze/Silver/Gold 三级门槛量化生产就绪度。对团队而言,把它接入 Copilot,等于把"LLM 应用监控专家"直接带进了代码评审与故障排查流程。
atomcodeClaude Code 的开源替代方案。连接任意大模型,编辑代码,运行命令,自动验证 — 全自动执行。用 Rust 构建,极致性能。 | An open-source alternative to Claude Code. Connect any LLM, edit code, run commands, and verify changes — autonomously. Built in Rust for speed. Get StartedRust0629
MiniCPM5-2BMiniCPM5-2B 是一款面向端侧、本地部署和资源受限场景的 2B 稠密 Transformer,能够达到同尺寸开源模型 SOTA 水平。Markdown00
GLM-5.3GLM-5.3 与 GLM-5.2 使用相同的基座模型——所有提升均来自后训练。与 GLM-5.2 相比,它在复杂编程和长程任务上的表现显著提升。Jinja00
HivisionIDPhotos⚡️HivisionIDPhotos: a lightweight and efficient AI ID photos tools. 一个轻量级的AI证件照制作算法。Python08
DragonOSDragonOS is an operating system developed from scratch using Rust, with Linux compatibility. It is designed for **Serverless** scenarios. 使用Rust从0自研内核,具有Linux兼容性的操作系统,面向云计算Serverless场景而设计。Rust00
Spark-X2.5-1.7BSpark-X2.5-1.7B 旨在让强大的 AI 更加实用、高效且易于获取。这些模型在广泛的日常任务中表现出色,涵盖对话、写作、翻译、推理、编程、工具调用和智能体工作流,并在同等规模的开源模型中取得领先结果。Spark-X2.5 将面向效率的架构与最高 1M tokens 的原生上下文窗口相结合,并支持 200 多种语言。Python00