package main import ( "bufio" "encoding/json" "fmt" "os/exec" "time" ) func main() { cmd := exec.Command("kiro-cli", "acp") cmd.Dir = "." stdin, _ := cmd.StdinPipe() stdout, _ := cmd.StdoutPipe() if err := cmd.Start(); err != nil { fmt.Printf("启动失败: %v\n", err) return } scanner := bufio.NewScanner(stdout) scanner.Buffer(make([]byte, 0, 1024*1024), 1024*1024) // 等待进程就绪 time.Sleep(500 * time.Millisecond) // 发送 initialize req := map[string]any{ "jsonrpc": "2.0", "id": 1, "method": "initialize", "params": map[string]any{ "protocolVersion": 1, "clientCapabilities": map[string]any{}, "clientInfo": map[string]any{"name": "test", "version": "1.0.0"}, }, } data, _ := json.Marshal(req) data = append(data, '\n') stdin.Write(data) fmt.Println("已发送 initialize,等待响应...") // 读取响应(10秒超时) done := make(chan string, 1) go func() { if scanner.Scan() { done <- scanner.Text() } else { done <- fmt.Sprintf("scan error: %v", scanner.Err()) } }() select { case line := <-done: if len(line) > 200 { line = line[:200] } fmt.Printf("响应: %s\n", line) case <-time.After(10 * time.Second): fmt.Println("超时!") } stdin.Close() cmd.Process.Kill() }