585 lines
12 KiB
Markdown
585 lines
12 KiB
Markdown
# Codex MCP 参考指南
|
||
|
||
完整的技术参考文档,包含集成指南、协作模式和 MCP 工具规范。
|
||
|
||
---
|
||
|
||
## 第一部分:集成指南
|
||
|
||
### 集成流程
|
||
|
||
```
|
||
接收建议 → 验证逻辑 → 计划集成 → 分阶段实施 → 测试验证 → 监控测量
|
||
```
|
||
|
||
### 阶段 1: 验证
|
||
|
||
#### 1.1 逻辑验证
|
||
检查清单:
|
||
- [ ] 算法正确性已验证(手动追踪或证明)
|
||
- [ ] 覆盖边界情况
|
||
- [ ] 确认复杂度分析
|
||
- [ ] 记录所有假设
|
||
|
||
#### 1.2 兼容性检查
|
||
- [ ] 语言版本兼容性
|
||
- [ ] 库依赖可用性
|
||
- [ ] 平台兼容性(OS、架构)
|
||
- [ ] 识别现有代码集成点
|
||
- [ ] 评估破坏性变更
|
||
|
||
兼容性矩阵:
|
||
| 方面 | Codex 假设 | 你的环境 | 兼容? | 所需操作 |
|
||
|------|-----------|----------|--------|----------|
|
||
| 语言 | Rust 1.75 | Rust 1.70 | ✗ | 升级或适配 |
|
||
| 库 | tokio 1.35 | tokio 1.28 | ⚠️ | 测试兼容性 |
|
||
| 平台 | Unix | 跨平台 | ✗ | 添加 Windows 支持 |
|
||
|
||
#### 1.3 性能验证
|
||
```rust
|
||
#[cfg(test)]
|
||
mod codex_validation {
|
||
use super::*;
|
||
use std::time::Instant;
|
||
|
||
#[test]
|
||
fn validate_codex_performance() {
|
||
let input = generate_test_data(10_000);
|
||
let start = Instant::now();
|
||
let result = codex_suggested_function(&input);
|
||
let duration = start.elapsed();
|
||
|
||
// 验证声称的性能
|
||
assert!(duration.as_millis() < 100, "应 <100ms 完成");
|
||
assert!(result.is_correct(), "结果必须正确");
|
||
}
|
||
}
|
||
```
|
||
|
||
### 阶段 2: 集成策略
|
||
|
||
#### 风险评估
|
||
| 风险级别 | 标准 | 缓解策略 |
|
||
|----------|------|----------|
|
||
| **低** | 非关键代码,易回滚 | 直接实施 |
|
||
| **中** | 影响多个组件 | 功能标志 + 分阶段推出 |
|
||
| **高** | 关键路径,难回滚 | 影子模式 + 广泛测试 |
|
||
| **关键** | 财务/安全影响 | 完全审计 + 渐进迁移 |
|
||
|
||
#### 策略选择
|
||
|
||
**直接集成**(低风险):
|
||
```rust
|
||
fn old_implementation() -> Result<Output> {
|
||
// Codex 的改进实现
|
||
new_implementation()
|
||
}
|
||
```
|
||
|
||
**并行实现**(中等风险):
|
||
```rust
|
||
fn process_data(input: &Input) -> Result<Output> {
|
||
if feature_flag_enabled() {
|
||
new_implementation(input)
|
||
} else {
|
||
old_implementation(input)
|
||
}
|
||
}
|
||
```
|
||
|
||
**影子模式**(高风险):
|
||
```rust
|
||
fn process_data(input: &Input) -> Result<Output> {
|
||
let result = old_implementation(input);
|
||
|
||
tokio::spawn(async move {
|
||
match new_implementation(input).await {
|
||
Ok(shadow_result) => {
|
||
if result != shadow_result {
|
||
log::warn!("影子实现不同: {:?}", shadow_result);
|
||
}
|
||
metrics::record_shadow_latency();
|
||
}
|
||
Err(e) => {
|
||
log::error!("影子实现失败: {}", e);
|
||
}
|
||
}
|
||
});
|
||
|
||
result
|
||
}
|
||
```
|
||
|
||
### 阶段 3: 测试策略
|
||
|
||
**测试金字塔**:
|
||
```
|
||
┌─────────────┐
|
||
│ 手动 │ ← 复杂场景
|
||
│ 测试 │
|
||
├─────────────┤
|
||
│ 集成 │ ← API/组件测试
|
||
│ 测试 │
|
||
├─────────────┤
|
||
│ 单元 │ ← 算法正确性
|
||
│ 测试 │
|
||
└─────────────┘
|
||
```
|
||
|
||
**必须测试**:
|
||
- [ ] 单元测试(所有绿色)
|
||
- [ ] 集成测试
|
||
- [ ] 性能基准(满足目标)
|
||
- [ ] 延迟改进 __%
|
||
- [ ] 吞吐量增加 __%
|
||
- [ ] 内存使用在限制内
|
||
- [ ] 负载测试(30+ 分钟)
|
||
- [ ] 错误处理验证
|
||
|
||
### 阶段 4: 监控
|
||
|
||
**关键指标**:
|
||
```markdown
|
||
- **延迟**: p50, p95, p99, max
|
||
- **吞吐量**: requests/second
|
||
- **错误率**: errors/total requests
|
||
- **资源使用**: CPU, memory, disk I/O
|
||
```
|
||
|
||
**警报配置**:
|
||
```yaml
|
||
alerts:
|
||
- name: LatencyIncrease
|
||
condition: p99_latency > baseline * 1.5
|
||
action: notify_team
|
||
|
||
- name: ErrorRateSpike
|
||
condition: error_rate > baseline * 2
|
||
action: auto_rollback
|
||
```
|
||
|
||
---
|
||
|
||
## 第二部分:协作模式
|
||
|
||
### 常用模式速查
|
||
|
||
| 任务类型 | 最佳模式 | 关键成功因素 |
|
||
|----------|----------|--------------|
|
||
| 新算法 | 迭代优化 | 明确约束 |
|
||
| 系统扩展 | 扩展规划 | 当前指标 |
|
||
| 性能问题 | 度量-分析-优化 | 分析数据 |
|
||
| 代码审查 | 重构提案 | 质量目标 |
|
||
| 架构选择 | 权衡矩阵 | 评估标准 |
|
||
|
||
### 核心模式
|
||
|
||
#### 1. 迭代优化
|
||
**场景**:设计多约束的复杂算法
|
||
```markdown
|
||
阶段1: "这里是朴素解决方案。请分析其复杂度。"
|
||
阶段2: "O(n²) 太慢,建议 O(n log n) 的优化。"
|
||
阶段3: "能否将空间复杂度从 O(n) 降至 O(1)?"
|
||
```
|
||
|
||
#### 2. 瓶颈分析
|
||
**场景**:系统性能在负载下退化
|
||
```markdown
|
||
**当前架构**: [图表]
|
||
**指标**:
|
||
- 95th 百分位延迟: 2s
|
||
- CPU 利用率: 80%
|
||
- 内存: 4GB/8GB
|
||
|
||
**问题**: 瓶颈在哪里?如何优化?
|
||
```
|
||
|
||
#### 3. 权衡矩阵
|
||
**场景**:存在多种架构选项
|
||
```markdown
|
||
**选项**:
|
||
1. 微服务
|
||
2. 模块化单体
|
||
3. 事件驱动
|
||
|
||
**标准**: 性能、可维护性、团队规模、时间线
|
||
|
||
**问题**: 为我们的约束创建权衡矩阵。
|
||
```
|
||
|
||
### 反模式
|
||
|
||
❌ **模糊问题陈述**
|
||
```markdown
|
||
错误: "我的代码很慢。怎么修复?"
|
||
|
||
正确: "processData() 函数处理 10K 记录需要 5s。
|
||
分析显示 80% 时间在嵌套循环中。
|
||
目标: <500ms。这是代码..."
|
||
```
|
||
|
||
❌ **缺少上下文**
|
||
```markdown
|
||
错误: "审查这个函数的 bug。" [仅函数代码]
|
||
|
||
正确: "审查这个认证函数:
|
||
- 用于公共 API
|
||
- 处理 1K req/min
|
||
- 对安全性至关重要
|
||
- 必须使用 JWT 令牌"
|
||
```
|
||
|
||
---
|
||
|
||
## 第三部分:MCP 工具规范
|
||
|
||
### Codex MCP 工具
|
||
|
||
#### 开启 Codex 会话
|
||
|
||
**工具名称**:`mcp__codex-mcp-tool__codex`
|
||
|
||
**完整调用示例**:
|
||
```json
|
||
{
|
||
"name": "mcp__codex-mcp-tool__codex",
|
||
"parameters": {
|
||
"model": "gpt-5.1-codex",
|
||
"sandbox": "danger-full-access",
|
||
"approval-policy": "on-failure",
|
||
"prompt": "<任务描述>",
|
||
"cwd": "<可选:工作目录>"
|
||
}
|
||
}
|
||
```
|
||
|
||
**参数说明**:
|
||
- `model`(必需):模型选择,推荐 `"gpt-5.1-codex"` 或 `"gpt-5.1"`
|
||
- `sandbox`(必需):沙盒模式
|
||
- `"read-only"` - 仅读取
|
||
- `"workspace-write"` - 可写入工作区
|
||
- `"danger-full-access"` - 完全访问
|
||
- `approval-policy`(必需):审批策略
|
||
- `"untrusted"` - 无需审批
|
||
- `"on-failure"` - 失败时审批
|
||
- `"on-request"` - 按需审批
|
||
- `"never"` - 从不审批
|
||
- `prompt`(必需):任务描述
|
||
- `cwd`(可选):工作目录路径
|
||
|
||
**返回值**:
|
||
```json
|
||
{
|
||
"conversationId": "<字符串>",
|
||
...
|
||
}
|
||
```
|
||
|
||
⚠️ **重要**:保存返回的 `conversationId` 用于后续对话。
|
||
|
||
#### 继续 Codex 会话
|
||
|
||
**工具名称**:`mcp__codex-mcp-tool__codex-reply`
|
||
|
||
**完整调用示例**:
|
||
```json
|
||
{
|
||
"name": "mcp__codex-mcp-tool__codex-reply",
|
||
"parameters": {
|
||
"conversationId": "<上步返回的 conversationId>",
|
||
"prompt": "<补充问题或新指令>"
|
||
}
|
||
}
|
||
```
|
||
|
||
**参数说明**:
|
||
- `conversationId`(必需):会话标识符
|
||
- `prompt`(必需):新的提示或问题
|
||
|
||
---
|
||
|
||
### MCP 标准结构
|
||
|
||
```json
|
||
{
|
||
"name": "tool_name",
|
||
"description": "此工具的功能和使用时机",
|
||
"inputSchema": {
|
||
"type": "object",
|
||
"properties": {
|
||
"param1": {
|
||
"type": "string",
|
||
"description": "参数描述"
|
||
}
|
||
},
|
||
"required": ["param1"]
|
||
}
|
||
}
|
||
```
|
||
|
||
### 字段要求
|
||
|
||
**name**(必需):
|
||
- 格式:snake_case 或 kebab-case
|
||
- 在服务器内必须唯一
|
||
- 示例:`"analyze_code"`, `"run-benchmark"`
|
||
|
||
**description**(推荐):
|
||
- 包括:功能、时机、返回值
|
||
- 示例:`"在分析指标时使用。执行 SQL 查询。返回 JSON。"`
|
||
|
||
**inputSchema**(必需):
|
||
- JSON Schema(Draft 7+)
|
||
- 必须指定:type、properties、required 字段
|
||
|
||
### 端点
|
||
|
||
#### 1. 列出工具 (`tools/list`)
|
||
```json
|
||
请求: {"method": "tools/list"}
|
||
|
||
响应:
|
||
{
|
||
"tools": [
|
||
{"name": "tool1", "description": "...", "inputSchema": {...}},
|
||
{"name": "tool2", "description": "...", "inputSchema": {...}}
|
||
]
|
||
}
|
||
```
|
||
|
||
#### 2. 调用工具 (`tools/call`)
|
||
```json
|
||
请求:
|
||
{
|
||
"method": "tools/call",
|
||
"params": {
|
||
"name": "tool_name",
|
||
"arguments": {"param1": "value1"}
|
||
}
|
||
}
|
||
|
||
响应:
|
||
{
|
||
"content": [{"type": "text", "text": "结果..."}],
|
||
"isError": false
|
||
}
|
||
```
|
||
|
||
### 工具类别
|
||
|
||
#### 代码分析
|
||
```json
|
||
{
|
||
"name": "analyze_code",
|
||
"description": "执行静态分析。识别 bug、性能问题、安全漏洞。",
|
||
"inputSchema": {
|
||
"type": "object",
|
||
"properties": {
|
||
"code": {"type": "string"},
|
||
"language": {"type": "string", "enum": ["rust", "python"]},
|
||
"checks": {"type": "array", "items": {"type": "string"}}
|
||
},
|
||
"required": ["code", "language"]
|
||
}
|
||
}
|
||
```
|
||
|
||
#### 性能测试
|
||
```json
|
||
{
|
||
"name": "run_benchmark",
|
||
"description": "执行性能基准测试。Codex 建议优化时使用。",
|
||
"inputSchema": {
|
||
"type": "object",
|
||
"properties": {
|
||
"function_name": {"type": "string"},
|
||
"iterations": {"type": "integer", "minimum": 1}
|
||
},
|
||
"required": ["function_name", "iterations"]
|
||
}
|
||
}
|
||
```
|
||
|
||
#### 测试执行
|
||
```json
|
||
{
|
||
"name": "run_tests",
|
||
"description": "执行测试套件。验证实现时使用。",
|
||
"inputSchema": {
|
||
"type": "object",
|
||
"properties": {
|
||
"test_path": {"type": "string"},
|
||
"coverage": {"type": "boolean"}
|
||
},
|
||
"required": ["test_path"]
|
||
}
|
||
}
|
||
```
|
||
|
||
### 最佳实践
|
||
|
||
#### 1. 工具发现
|
||
当 Codex 推荐工具时:
|
||
1. 列出可用工具:`tools/list`
|
||
2. 验证工具存在
|
||
3. 检查 inputSchema 要求
|
||
4. 准备参数
|
||
|
||
#### 2. 参数准备
|
||
**错误**:缺少必需参数
|
||
```json
|
||
{"name": "analyze_code", "arguments": {"code": "..."}}
|
||
```
|
||
|
||
**正确**:所有必需参数
|
||
```json
|
||
{
|
||
"name": "analyze_code",
|
||
"arguments": {
|
||
"code": "fn main() {...}",
|
||
"language": "rust"
|
||
}
|
||
}
|
||
```
|
||
|
||
#### 3. 错误处理
|
||
```rust
|
||
match call_mcp_tool("analyze_code", args) {
|
||
Ok(result) => send_to_codex(result),
|
||
Err(e) if e.is_invalid_args() => {
|
||
let fixed = fix_arguments(args);
|
||
call_mcp_tool("analyze_code", fixed)?
|
||
}
|
||
Err(e) => report_tool_failure(e)
|
||
}
|
||
```
|
||
|
||
### 安全与权限
|
||
|
||
#### 权限配置
|
||
在交接中指定允许的工具:
|
||
|
||
```markdown
|
||
## 可用 MCP 工具
|
||
|
||
**允许**:
|
||
- code_analyzer: 是(只读)
|
||
- run_benchmark: 是(安全测试)
|
||
|
||
**不允许**:
|
||
- execute_query: 否(不需要数据访问)
|
||
- system_command: 否(安全限制)
|
||
```
|
||
|
||
#### 安全约束
|
||
```json
|
||
{
|
||
"tool_constraints": {
|
||
"code_analyzer": {
|
||
"max_code_size": 10000,
|
||
"allowed_languages": ["rust", "python"]
|
||
}
|
||
}
|
||
}
|
||
```
|
||
|
||
---
|
||
|
||
## 快速参考
|
||
|
||
### MCP 工具调用检查表
|
||
```
|
||
□ 工具存在 (tools/list)
|
||
□ inputSchema 已审查
|
||
□ 必需参数已准备
|
||
□ 权限已确认
|
||
□ 错误处理已就绪
|
||
□ 结果解释计划
|
||
```
|
||
|
||
### 集成检查清单
|
||
```
|
||
验证:
|
||
□ 算法正确性
|
||
□ 兼容性
|
||
□ 性能声明
|
||
|
||
规划:
|
||
□ 风险评估
|
||
□ 集成策略
|
||
□ 回滚计划
|
||
|
||
实施:
|
||
□ 功能分支
|
||
□ 隔离测试
|
||
□ 分阶段集成
|
||
□ 文档更新
|
||
```
|
||
|
||
### 常用模板
|
||
|
||
#### 标准任务交接
|
||
```markdown
|
||
## 任务给 Codex
|
||
|
||
**背景**: [项目/系统简要描述]
|
||
**目标**: [清晰的目标陈述]
|
||
**约束**: [性能/安全/兼容性要求]
|
||
**当前状态**: [现有实现或尝试]
|
||
|
||
### 具体问题:
|
||
1. [第一个问题]
|
||
2. [第二个问题]
|
||
|
||
### 期望交付:
|
||
- [ ] 设计文档/伪代码
|
||
- [ ] 实现策略
|
||
- [ ] 测试用例
|
||
- [ ] 性能分析
|
||
```
|
||
|
||
#### 算法设计
|
||
```markdown
|
||
**问题陈述**: [描述问题]
|
||
**输入格式**: [数据结构与约束]
|
||
**输出要求**: [期望结果格式]
|
||
**性能约束**:
|
||
- 时间复杂度: O(?)
|
||
- 空间复杂度: O(?)
|
||
**测试用例**:
|
||
1. 输入: [...] → 期望: [...]
|
||
2. 边界情况: [...] → 期望: [...]
|
||
```
|
||
|
||
#### 架构评审
|
||
```markdown
|
||
**系统概览**: [高层描述]
|
||
**组件**:
|
||
- 组件 A: [用途和交互]
|
||
- 组件 B: [用途和交互]
|
||
**当前挑战**:
|
||
1. [挑战 1]
|
||
2. [挑战 2]
|
||
**扩展要求**:
|
||
- 当前负载: [指标]
|
||
- 预期增长: [预测]
|
||
**分析问题**:
|
||
1. [具体架构关注点]
|
||
2. [性能优化机会]
|
||
```
|
||
|
||
---
|
||
|
||
## 版本信息
|
||
|
||
**版本**: 2.0 | **更新**: 2025-11-05
|
||
|
||
合并了以下文档:
|
||
- INTEGRATION_GUIDE.md (v1.0)
|
||
- CODEX_PATTERNS.md (v1.0)
|
||
- MCP_TOOLS_SPEC.md (v1.0)
|
||
|
||
---
|
||
|
||
返回 [SKILL.md](SKILL.md) 以获取主要文档。
|