| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768 |
- 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()
- }
|