Преглед изворни кода

feat:增加kiro-cli调试日志功能和配置

Jerry Liang пре 2 месеци
родитељ
комит
77e82cc925
4 измењених фајлова са 25 додато и 5 уклоњено
  1. 5 1
      service/.env
  2. 6 0
      service/config/config.go
  3. 13 3
      service/controllers/aiChatControllers.go
  4. 1 1
      service/main.go

+ 5 - 1
service/.env

@@ -53,4 +53,8 @@ PLANE_WEB_LABEL_FEEDBACK="f85c7c59-bb11-4035-bce1-3bc417655b70"
 
 # KIRO CONFIG
 KIRO_RUN_AS_USER=jerry-remote
-KIRO_HOME=/home/jerry-remote
+KIRO_HOME=/home/jerry-remote
+# 调试日志宏开关:true 开启后,拉起的 kiro-cli 子进程会注入 KIRO_LOG_LEVEL=debug,
+# 输出 debug 级日志用于问题排查。默认关闭,排查完请改回 false。
+# 日志输出路径(Linux,kiro-cli acp 默认):/tmp/kiro-log/logs/kiro-chat.log
+KIRO_DEBUG_LOG=false

+ 6 - 0
service/config/config.go

@@ -64,6 +64,11 @@ type KiroConfig struct {
 	// kiro-cli 依赖 HOME 定位其配置与凭证。为空时回退到降权用户的家目录,
 	// 若也无法推导则使用默认值。
 	Home string
+	// DebugLog 为调试日志总开关(宏开关)。
+	// 开启后,拉起 kiro-cli 子进程时注入 KIRO_LOG_LEVEL=debug,
+	// 让 kiro-cli 输出 debug 级日志,便于问题排查。
+	// 由环境变量 KIRO_DEBUG_LOG 控制(true/1/on 开启,默认关闭)。
+	DebugLog bool
 }
 
 type Config struct {
@@ -201,6 +206,7 @@ func LoadConfig() (*Config, error) {
 		Kiro: KiroConfig{
 			RunAsUser: v.GetString("KIRO_RUN_AS_USER"),
 			Home:      v.GetString("KIRO_HOME"),
+			DebugLog:  v.GetBool("KIRO_DEBUG_LOG"),
 		},
 	}, nil
 }

+ 13 - 3
service/controllers/aiChatControllers.go

@@ -29,7 +29,8 @@ var acpManager *services.ACPManager
 // runAsUser 指定拉起 kiro-cli 子进程时降权到的系统用户名,为空则不降权。
 // home 指定 kiro-cli 子进程的 HOME 目录;为空时回退到降权用户的家目录,
 // 若仍无法推导则使用默认值。
-func InitAIChat(serviceDir string, runAsUser string, home string) {
+// debugLog 为调试日志宏开关,开启时向 kiro-cli 子进程注入 KIRO_LOG_LEVEL=debug。
+func InitAIChat(serviceDir string, runAsUser string, home string, debugLog bool) {
 	home = strings.TrimSpace(home)
 
 	// 未显式配置 HOME 时的回退:优先推导降权用户的家目录,否则用默认值。
@@ -45,10 +46,19 @@ func InitAIChat(serviceDir string, runAsUser string, home string) {
 		}
 	}
 
+	// 组装传给 kiro-cli 子进程的环境变量。
+	childEnv := []string{"HOME=" + home}
+	if debugLog {
+		// 宏开关:开启 kiro-cli debug 级日志。
+		// 日志输出路径(Linux,kiro-cli acp 默认):/tmp/kiro-log/logs/kiro-chat.log
+		childEnv = append(childEnv, "KIRO_LOG_LEVEL=debug")
+	}
+
 	zap.L().Info("[AIChat] 初始化 ACP",
-		zap.String("runAsUser", runAsUser), zap.String("home", home))
+		zap.String("runAsUser", runAsUser), zap.String("home", home),
+		zap.Bool("debugLog", debugLog))
 
-	acpManager = services.NewACPManager(serviceDir, []string{"HOME=" + home}, runAsUser)
+	acpManager = services.NewACPManager(serviceDir, childEnv, runAsUser)
 }
 
 // AiChat 发送消息(SSE 流式响应)

+ 1 - 1
service/main.go

@@ -96,7 +96,7 @@ func main() {
 	routes.Setup(app)
 
 	// 初始化 AI Chat (ACP Client)
-	controllers.InitAIChat(".", cfg.Kiro.RunAsUser, cfg.Kiro.Home)
+	controllers.InitAIChat(".", cfg.Kiro.RunAsUser, cfg.Kiro.Home, cfg.Kiro.DebugLog)
 
 	// 启动第一个监听
 	go func() {