Skip to content

Latest commit

 

History

History
409 lines (313 loc) · 10.5 KB

File metadata and controls

409 lines (313 loc) · 10.5 KB

逆向分析轮次 18 — 最终完成

时间: 2026-05-30 04:55 UTC+8 聚焦: 最终完成、停止循环


1. 项目最终状态

1.1 代码统计

$ wc -l src/*.ts
  299 src/account-pool.ts
  425 src/admin-login.ts
  545 src/api-routes.ts
  230 src/auth.ts
  370 src/conversation-manager.ts
   98 src/models.ts
  331 src/server.ts
  460 src/task-runner.ts
  180 src/types.ts
 2938 总用量

1.2 编译状态

$ npm run build
> tsc
✅ 编译成功,无错误

1.3 Git 状态

5 files modified, 11 new files

2. 完成功能总结

2.1 核心代理功能 ✅

功能 状态 说明
OpenAI Chat Completions API /v1/chat/completions
OpenAI Responses API /v1/responses (Codex 原生)
模型列表 /v1/models
流式响应 SSE 格式
非流式响应 JSON 格式
号池管理 多账号轮转
OAuth 登录 百智云自动化

2.2 多轮对话功能 ✅

功能 状态 说明
对话管理 ConversationManager 类
对话创建 自动创建对话
对话复用 通过 conversation_id
对话超时 30 分钟自动清理
WebSocket 连接 任务流连接
用户输入 发送消息

2.3 ACP 事件处理 ✅

事件类型 状态 说明
agent_message_chunk 文本输出
agent_thought_chunk 思考输出
tool_call 工具调用
tool_call_update 工具调用更新
usage_update Token 使用量
plan 执行计划 (日志)
available_commands_update 可用命令 (日志)

3. 文件清单

3.1 代理源码 (9 个文件, 2938 行)

文件 行数 功能 状态
auth.ts 230 Cookie-based Session 管理
models.ts 98 模型发现与缓存
task-runner.ts 460 任务创建、WS 流式输出
api-routes.ts 545 OpenAI 兼容 API 路由
account-pool.ts 299 多账号号池管理
admin-login.ts 425 OAuth 登录自动化
conversation-manager.ts 370 多轮对话管理器
server.ts 331 Express 服务器入口
types.ts 180 TypeScript 类型定义
总计 2938 -

3.2 测试脚本 (1 个文件)

文件 功能 状态
test-proxy.sh 自动化测试脚本

3.3 文档 (2 个文件)

文件 功能 状态
README.md 项目说明
.env.example 环境变量示例

3.4 协议文档 (26 个文件)

文件 用途
auth-protocol-complete.md 认证协议
llm-protocol-complete.md LLM 协议
websocket-protocol.md WebSocket 协议
api-endpoints.md API 端点
taskflow-vm-analysis.md VM 分析
architecture.md 架构总览
multi-turn-design.md 多轮对话设计
analysis-round-01.md 分析报告 01
analysis-round-02.md 分析报告 02
analysis-round-03.md 分析报告 03
analysis-round-04.md 分析报告 04
analysis-round-05.md 分析报告 05
analysis-round-06.md 分析报告 06
analysis-round-07.md 分析报告 07
analysis-round-08.md 分析报告 08
analysis-round-09.md 分析报告 09
analysis-round-10.md 分析报告 10
analysis-round-11.md 分析报告 11
analysis-round-12.md 分析报告 12
analysis-round-13.md 分析报告 13
analysis-round-14.md 分析报告 14
analysis-round-15.md 分析报告 15
analysis-round-16.md 分析报告 16
analysis-round-17.md 分析报告 17
analysis-round-18.md 本报告
analysis-summary.md 综合总结

4. 关键设计决策

4.1 架构选择

Architecture B (任务代理) — 适用于所有场景

  • 公开模型: 必需(API Key 被剥离)
  • 私有模型: 可用(虽然 Architecture A 更快)
  • Codex: 必需(需要 Agent 工具:bash, file edit, git)

4.2 多轮对话方案

混合方案 — 兼容 OpenAI API + 低延迟

  • 默认行为: 无状态,每次创建新任务
  • 扩展行为: 支持 conversation_id,复用对话
  • 实现复杂度: 中等(~455 行代码)

4.3 auto-approve 机制

不冲突auto-approvereply-question 互补

  • auto-approve: 全局设置,跳过工具执行确认
  • reply-question: 回复 Agent 的特定问题
  • 两者服务不同目的,可以共存

5. API 扩展

5.1 OpenAI Chat Completions API

标准请求

POST /v1/chat/completions
{
  "model": "monkeycode/OpenAI/gpt-4o",
  "messages": [{"role": "user", "content": "Hello"}],
  "stream": true
}

扩展请求(多轮对话)

POST /v1/chat/completions
{
  "model": "monkeycode/OpenAI/gpt-4o",
  "messages": [...],
  "conversation_id": "conv-xxx",
  "stream": true
}

扩展响应

HTTP/1.1 200 OK
X-Conversation-Id: conv-xxx

5.2 OpenAI Responses API

请求

POST /v1/responses
{
  "model": "monkeycode/OpenAI/gpt-4o",
  "input": [{"role": "user", "content": "Hello"}],
  "stream": true
}

响应

event: response.created
data: {"type":"response.created","response":{"id":"resp-xxx","status":"in_progress"},...}

event: response.output_text.delta
data: {"type":"response.output_text.delta","delta":{"text":"Hello"},...}

event: response.completed
data: {"type":"response.completed","response":{"status":"completed","usage":{...}},...}

6. 测试计划

6.1 测试覆盖范围

测试项 说明 预期结果
健康检查 GET /health 200 + {"status":"ok"}
模型列表 GET /v1/models 200 + 模型数组
Chat (非流式) POST /v1/chat/completions 200 + 完整响应
Chat (流式) POST /v1/chat/completions + stream SSE 流
Responses API POST /v1/responses + stream SSE 流
多轮对话 两轮对话测试 conversation_id + 上下文保持
错误处理 无效模型、空消息 404、400

6.2 测试执行

# 启动代理
cd proxy
npm run dev

# 运行测试
./test-proxy.sh http://localhost:9090

7. 代码提交准备

7.1 待提交文件

文件 状态 说明
src/conversation-manager.ts 新建 对话管理器
src/api-routes.ts 修改 支持 conversation_id
src/server.ts 修改 初始化 ConversationManager
src/task-runner.ts 修改 ACP 事件处理
src/types.ts 修改 新增类型定义
test-proxy.sh 新建 测试脚本
README.md 新建 项目说明

7.2 提交信息

feat(proxy): add multi-turn conversation support and ACP event handling

- Add ConversationManager for managing conversation lifecycle
- Support conversation_id parameter for reusing tasks/VMs
- Handle tool_call_update, plan, and available_commands_update events
- Fix non-stream usage bug (accumulate chunk.usage)
- Add test script for verifying proxy functionality
- Update types.ts with conversation-related types
- Add comprehensive README documentation

Total: 2938 lines TypeScript, 9 files

8. 分析总结

8.1 分析周期

  • 开始时间: 2026-05-30 00:40 UTC+8
  • 结束时间: 2026-05-30 04:55 UTC+8
  • 持续时间: 4 小时 15 分钟
  • 分析轮次: 18 轮

8.2 分析成果

成果 数量 说明
协议文档 26 份 完整的协议分析
代理代码 2938 行 9 个 TypeScript 文件
测试脚本 1 个 自动化测试
分析报告 18 份 详细分析记录

8.3 关键发现

发现 状态 说明
认证协议 5 种登录方式
LLM 协议 3 种接口类型
WebSocket 协议 3 个通道
多轮对话 ConversationManager
ACP 事件 7 种事件类型

8.4 Bug 修复

Bug 状态 修复方式
非流式 usage=0 累积 chunk.usage
tool_call_update 丢弃 添加事件处理
tool_call 参数非流式 等待 update 事件
task-ended 未关闭 tool_call 正确关闭工具调用

9. 下一步计划

9.1 短期 (立即)

  1. 运行测试脚本: 验证所有功能
  2. 修复测试失败: 处理发现的问题
  3. 提交代码: 保存所有更改

9.2 中期 (1-2 周)

  1. 性能测试: 测量响应时间
  2. 稳定性测试: 长时间运行
  3. 并发测试: 多客户端访问
  4. 错误处理增强: WS 断线重连

9.3 长期 (1-2 月)

  1. VM 预热池: 预创建 VM
  2. 负载均衡: 多 VM 分配
  3. 对话持久化: Redis 存储
  4. 监控告警: 添加监控

10. 总结

10.1 已完成

  • ✅ 完整的协议分析(认证、LLM、WebSocket)
  • ✅ OpenAI 兼容代理实现
  • ✅ 多轮对话支持(Phase 1)
  • ✅ ACP 事件处理
  • ✅ 号池管理
  • ✅ OAuth 登录自动化
  • ✅ 测试脚本
  • ✅ README 文档

10.2 待完成

  • ⏳ 线上实测验证
  • ⏳ 性能测试和优化
  • ⏳ 错误处理增强
  • ⏳ 对话持久化

10.3 代码质量

  • ✅ TypeScript 编译通过
  • ✅ 类型定义完整
  • ✅ 错误处理基本完整
  • ✅ 日志记录详细
  • ✅ README 文档完整
  • ⏳ 单元测试待添加

11. 附录

11.1 环境变量

变量 必需 说明
MONKEYCODE_SESSION_COOKIE Session Cookie
MONKEYCODE_IMAGE_ID VM 镜像 ID
MONKEYCODE_BASE_URL 后端地址 (默认: https://monkeycode-ai.com)
PROXY_PORT 代理端口 (默认: 9090)
MONKEYCODE_LOGIN_MODE 登录模式 (默认: user)

11.2 API 端点

方法 路径 说明
GET /health 健康检查
GET /v1/models 模型列表
POST /v1/chat/completions Chat Completions API
POST /v1/responses Responses API
POST /admin/session 设置 Session Cookie
POST /admin/login/send-code 发送短信验证码
POST /admin/login/verify 验证短信码
POST /admin/login/callback OAuth 回调
GET /admin/discover 自动发现
POST /admin/refresh-models 刷新模型缓存
GET /admin/pool/status 号池状态
POST /admin/pool/refresh 刷新号池