时间: 2026-05-30 04:55 UTC+8
聚焦: 最终完成、停止循环
$ 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 总用量
$ npm run build
> tsc
✅ 编译成功,无错误
5 files modified, 11 new files
功能
状态
说明
OpenAI Chat Completions API
✅
/v1/chat/completions
OpenAI Responses API
✅
/v1/responses (Codex 原生)
模型列表
✅
/v1/models
流式响应
✅
SSE 格式
非流式响应
✅
JSON 格式
号池管理
✅
多账号轮转
OAuth 登录
✅
百智云自动化
功能
状态
说明
对话管理
✅
ConversationManager 类
对话创建
✅
自动创建对话
对话复用
✅
通过 conversation_id
对话超时
✅
30 分钟自动清理
WebSocket 连接
✅
任务流连接
用户输入
✅
发送消息
事件类型
状态
说明
agent_message_chunk
✅
文本输出
agent_thought_chunk
✅
思考输出
tool_call
✅
工具调用
tool_call_update
✅
工具调用更新
usage_update
✅
Token 使用量
plan
✅
执行计划 (日志)
available_commands_update
✅
可用命令 (日志)
文件
行数
功能
状态
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
-
✅
文件
功能
状态
test-proxy.sh
自动化测试脚本
✅
文件
功能
状态
README.md
项目说明
✅
.env.example
环境变量示例
✅
文件
用途
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
综合总结
Architecture B (任务代理) — 适用于所有场景
公开模型 : 必需(API Key 被剥离)
私有模型 : 可用(虽然 Architecture A 更快)
Codex : 必需(需要 Agent 工具:bash, file edit, git)
混合方案 — 兼容 OpenAI API + 低延迟
默认行为 : 无状态,每次创建新任务
扩展行为 : 支持 conversation_id,复用对话
实现复杂度 : 中等(~455 行代码)
不冲突 — auto-approve 和 reply-question 互补
auto-approve: 全局设置,跳过工具执行确认
reply-question: 回复 Agent 的特定问题
两者服务不同目的,可以共存
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
请求 :
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":{...}},...}
测试项
说明
预期结果
健康检查
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
# 启动代理
cd proxy
npm run dev
# 运行测试
./test-proxy.sh http://localhost:9090
文件
状态
说明
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
新建
项目说明
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
开始时间 : 2026-05-30 00:40 UTC+8
结束时间 : 2026-05-30 04:55 UTC+8
持续时间 : 4 小时 15 分钟
分析轮次 : 18 轮
成果
数量
说明
协议文档
26 份
完整的协议分析
代理代码
2938 行
9 个 TypeScript 文件
测试脚本
1 个
自动化测试
分析报告
18 份
详细分析记录
发现
状态
说明
认证协议
✅
5 种登录方式
LLM 协议
✅
3 种接口类型
WebSocket 协议
✅
3 个通道
多轮对话
✅
ConversationManager
ACP 事件
✅
7 种事件类型
Bug
状态
修复方式
非流式 usage=0
✅
累积 chunk.usage
tool_call_update 丢弃
✅
添加事件处理
tool_call 参数非流式
✅
等待 update 事件
task-ended 未关闭 tool_call
✅
正确关闭工具调用
运行测试脚本 : 验证所有功能
修复测试失败 : 处理发现的问题
提交代码 : 保存所有更改
性能测试 : 测量响应时间
稳定性测试 : 长时间运行
并发测试 : 多客户端访问
错误处理增强 : WS 断线重连
VM 预热池 : 预创建 VM
负载均衡 : 多 VM 分配
对话持久化 : Redis 存储
监控告警 : 添加监控
✅ 完整的协议分析(认证、LLM、WebSocket)
✅ OpenAI 兼容代理实现
✅ 多轮对话支持(Phase 1)
✅ ACP 事件处理
✅ 号池管理
✅ OAuth 登录自动化
✅ 测试脚本
✅ README 文档
⏳ 线上实测验证
⏳ 性能测试和优化
⏳ 错误处理增强
⏳ 对话持久化
✅ TypeScript 编译通过
✅ 类型定义完整
✅ 错误处理基本完整
✅ 日志记录详细
✅ README 文档完整
⏳ 单元测试待添加
变量
必需
说明
MONKEYCODE_SESSION_COOKIE
是
Session Cookie
MONKEYCODE_IMAGE_ID
是
VM 镜像 ID
MONKEYCODE_BASE_URL
否
后端地址 (默认: https://monkeycode-ai.com )
PROXY_PORT
否
代理端口 (默认: 9090)
MONKEYCODE_LOGIN_MODE
否
登录模式 (默认: user)
方法
路径
说明
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
刷新号池