Files
Agent-System/cmd/bizdev-cli/main.go
T

84 lines
2.5 KiB
Go

package main
import (
"context"
"flag"
"fmt"
"os"
"path/filepath"
"chat-agent-system/internal/bizdev"
"chat-agent-system/internal/config"
)
func main() {
taskKey := flag.String("task", "intake", "任务标识 (intake, research, cdo_quote 等)")
backend := flag.String("backend", "", "智能体后端 (留空则读取 .env 配置,可选: stub, pi-agent, cursor-cli)")
project := flag.String("project", "医疗器械研发演示项目", "项目名称")
customer := flag.String("customer", "北京水木东方", "客户名称")
device := flag.String("device", "医疗器械", "设备类型")
use := flag.String("use", "临床诊疗", "预期用途")
market := flag.String("market", "国内", "目标市场")
materials := flag.String("materials", "", "输入补充材料内容")
envPath := flag.String("env", ".env", "环境配置文件路径")
flag.Parse()
cfg, err := config.Load(*envPath)
if err != nil {
fmt.Fprintf(os.Stderr, "加载配置失败: %v\n", err)
os.Exit(1)
}
activeBackend := cfg.AgentBackend
if *backend != "" {
activeBackend = *backend
cfg.AgentBackend = *backend
}
var materialsList []bizdev.MaterialInput
if *materials != "" {
materialsList = []bizdev.MaterialInput{
{
Filename: "user_input.md",
Content: []byte(*materials),
},
}
}
svc := bizdev.NewService(cfg)
res, err := svc.ExecuteTask(context.Background(), bizdev.TaskRunRequest{
TaskKey: *taskKey,
ProjectName: *project,
CustomerName: *customer,
DeviceType: *device,
IntendedUse: *use,
TargetMarket: *market,
Materials: materialsList,
Backend: activeBackend,
})
if err != nil {
fmt.Fprintf(os.Stderr, "任务执行失败: %v\n", err)
os.Exit(1)
}
if !res.Success {
fmt.Fprintf(os.Stderr, "警告: 后端执行未完全成功 [%s]: %s\n", res.TaskKey, res.ErrorReason)
}
fmt.Printf("=== 任务执行成功 [%s] ===\n", res.TaskKey)
fmt.Printf("耗时: %v\n", res.Duration)
fmt.Printf("宿主机受控工作区: %s\n", res.WorkDir)
fmt.Printf("交付文档产物: %s\n", filepath.Join(res.WorkDir, "output.md"))
if _, err := os.Stat(filepath.Join(res.WorkDir, "execution.log")); err == nil {
fmt.Printf("执行审计日志: %s\n", filepath.Join(res.WorkDir, "execution.log"))
}
fmt.Printf("使用的后端: %s\n", res.BackendUsed)
if len(res.Attachments) > 0 {
fmt.Printf("附加产物:\n")
for _, a := range res.Attachments {
p := filepath.Join(res.WorkDir, a.Filename)
fmt.Printf(" - %s (%d bytes) -> %s\n", a.Filename, len(a.Data), p)
}
}
}