Claude Code + Codex + Gemini 多模型协作工作流系统 ## 核心功能 - 6阶段开发工作流 (/ccg:dev) - 智能路由:前端→Gemini,后端→Codex - Prompt 增强 (Auggie MCP prompt-enhancer) - 双模型代码审查和技术分析 ## 命令列表 - /ccg:dev - 完整开发工作流 - /ccg:frontend - 前端任务 - /ccg:backend - 后端任务 - /ccg:review - 代码审查 - /ccg:analyze - 技术分析 - /ccg:enhance - Prompt 增强 - /ccg:commit - 智能提交 - /ccg:rollback - 交互式回滚 - /ccg:clean-branches - 清理分支 - /ccg:worktree - Worktree 管理 - /ccg:init - 项目初始化 ## 特性 - 预编译二进制(无需 Go 环境) - 专家系统提示词(Codex/Gemini) - 一键安装脚本
34 lines
837 B
Go
34 lines
837 B
Go
package main
|
|
|
|
import (
|
|
"strings"
|
|
"testing"
|
|
)
|
|
|
|
func TestBackendParseJSONStream_UnknownEventsAreSilent(t *testing.T) {
|
|
input := strings.Join([]string{
|
|
`{"type":"turn.started"}`,
|
|
`{"type":"assistant","text":"hi"}`,
|
|
`{"type":"user","text":"yo"}`,
|
|
`{"type":"item.completed","item":{"type":"agent_message","text":"ok"}}`,
|
|
}, "\n")
|
|
|
|
var infos []string
|
|
infoFn := func(msg string) { infos = append(infos, msg) }
|
|
|
|
message, threadID := parseJSONStreamInternal(strings.NewReader(input), nil, infoFn, nil, nil)
|
|
if message != "ok" {
|
|
t.Fatalf("message=%q, want %q (infos=%v)", message, "ok", infos)
|
|
}
|
|
if threadID != "" {
|
|
t.Fatalf("threadID=%q, want empty (infos=%v)", threadID, infos)
|
|
}
|
|
|
|
for _, msg := range infos {
|
|
if strings.Contains(msg, "Agent event:") {
|
|
t.Fatalf("unexpected log for unknown event: %q", msg)
|
|
}
|
|
}
|
|
}
|
|
|