@@ -22,6 +22,8 @@ import (
2222 "fmt"
2323 "log"
2424 "os"
25+ "os/exec"
26+ "strings"
2527
2628 "google.golang.org/genai"
2729
@@ -98,6 +100,46 @@ func (l *consoleLauncher) Run(ctx context.Context, config *launcher.Config) erro
98100 log .Fatal (err )
99101 }
100102
103+ // 处理特殊命令
104+ trimmedInput := strings .TrimSpace (userInput )
105+ switch strings .ToLower (trimmedInput ) {
106+ case "q" , "quit" , "exit" :
107+ fmt .Println ("\n 正在退出..." )
108+ return nil
109+ case "vim" :
110+ // 创建临时文件
111+ tempFile , err := os .CreateTemp ("" , "adk-vim-input-" )
112+ if err != nil {
113+ fmt .Printf ("创建临时文件失败: %v\n " , err )
114+ continue
115+ }
116+ tempFilePath := tempFile .Name ()
117+ tempFile .Close ()
118+ defer os .Remove (tempFilePath ) // 确保程序结束时删除临时文件
119+
120+ // 启动vim编辑器
121+ fmt .Println ("正在启动vim编辑器,请输入您的文本内容..." )
122+ cmd := exec .Command ("vim" , tempFilePath )
123+ cmd .Stdin = os .Stdin
124+ cmd .Stdout = os .Stdout
125+ cmd .Stderr = os .Stderr
126+ err = cmd .Run ()
127+ if err != nil {
128+ fmt .Printf ("vim编辑失败: %v\n " , err )
129+ continue
130+ }
131+
132+ // 读取vim编辑的内容
133+ vimContent , err := os .ReadFile (tempFilePath )
134+ if err != nil {
135+ fmt .Printf ("读取vim编辑内容失败: %v\n " , err )
136+ continue
137+ }
138+
139+ userInput = string (vimContent )
140+ fmt .Println ("已成功读取vim编辑的内容" )
141+ }
142+
101143 userMsg := genai .NewContentFromText (userInput , genai .RoleUser )
102144
103145 streamingMode := l .config .streamingMode
0 commit comments