54 lines
1.4 KiB
Go
54 lines
1.4 KiB
Go
package main
|
|
|
|
import (
|
|
"context"
|
|
"log"
|
|
"os"
|
|
|
|
"agent/internal/agent"
|
|
"agent/internal/server"
|
|
)
|
|
|
|
func main() {
|
|
cfg := agent.LoadConfig()
|
|
|
|
store, err := agent.NewSessionStore(cfg.DataDir)
|
|
if err != nil {
|
|
log.Fatalf("failed to initialize session store: %v", err)
|
|
}
|
|
|
|
dockerCfg, err := agent.NewDockerConfigStore(cfg.DataDir)
|
|
if err != nil {
|
|
log.Fatalf("failed to initialize docker config store: %v", err)
|
|
}
|
|
|
|
apiCfg, err := agent.NewAPIConfigStore(cfg.DataDir, agent.APIConfig{
|
|
APIKey: cfg.APIKey,
|
|
BaseURL: cfg.BaseURL,
|
|
Model: cfg.Model,
|
|
Provider: agent.ProviderOpenAI,
|
|
})
|
|
if err != nil {
|
|
log.Fatalf("failed to initialize api config store: %v", err)
|
|
}
|
|
|
|
r, srv := server.NewRouter(cfg, store, dockerCfg, apiCfg)
|
|
|
|
// 托管模式:检测到 BENCHMARK_TOKEN 时自动启动评测,无需外部触发。
|
|
// agent.Run 不依赖 HTTP 服务,可直接在 goroutine 中调用。
|
|
if os.Getenv("BENCHMARK_TOKEN") != "" {
|
|
go func() {
|
|
log.Printf("[benchmark] 检测到托管模式(BENCHMARK_TOKEN 已注入),自动启动评测")
|
|
if err := srv.StartBenchmark(context.Background()); err != nil {
|
|
log.Printf("[benchmark] 初始轮异常: %v", err)
|
|
}
|
|
log.Printf("[benchmark] 初始轮结束,后续 coop 完成通知将自动触发新一轮处理")
|
|
}()
|
|
}
|
|
|
|
log.Printf("agent is running at http://localhost:%s", cfg.Port)
|
|
if err := r.Run(":" + cfg.Port); err != nil {
|
|
log.Fatalf("server stopped: %v", err)
|
|
}
|
|
}
|