ai_xiaopei
6 days ago 1196f409d86bc61e7596eb274840244a62ce84ba
cmd/root.go
@@ -6,6 +6,7 @@
   "strings"
   "github.com/spf13/cobra"
   "github.com/aisim/kb-cli/internal/llm"
)
var (
@@ -39,7 +40,7 @@
   Short: "知识库搜索与管理工具",
   Long: `kb-cli - 知识库搜索与管理工具
Global: [--vault=<路径>] [--db=<路径>]`,
Global: [--vault <路径>] [--db <路径>]`,
}
func Execute() {
@@ -63,17 +64,39 @@
   rootCmd.Long = sb.String()
   if err := rootCmd.Execute(); err != nil {
      cobra.CheckErr(err)
      // 如果是参数不足的错误,显示对应命令的 help
      errMsg := err.Error()
      if strings.Contains(errMsg, "arg(s)") || strings.Contains(errMsg, "received") || strings.Contains(errMsg, "required flag") {
         // 找到当前命令并显示其 help
         cmd, _, findErr := rootCmd.Find(os.Args[1:])
         if findErr == nil {
            cmd.Help()
         }
         fmt.Println() // 空行
      } else {
         cobra.CheckErr(err)
      }
   }
}
func init() {
   homeDir, _ := os.UserHomeDir()
   defaultVault := os.Getenv("KB_VAULT")
   // 从配置文件读取默认值(优先级:配置文件 > 环境变量 > 内置默认值)
   cfg := llm.LoadConfig()
   defaultVault := cfg.KnowledgeBase.VaultPath
   defaultDB := cfg.KnowledgeBase.DBPath
   // 如果配置文件没有设置,使用环境变量或默认值
   if defaultVault == "" {
      defaultVault = homeDir + "/aisim/note/001/笔记001"
      defaultVault = os.Getenv("KB_VAULT")
      if defaultVault == "" {
         defaultVault = homeDir + "/aisim/note/001/笔记001"
      }
   }
   defaultDB := homeDir + "/.cache/kb-cli/kb.db"
   if defaultDB == "" {
      defaultDB = homeDir + "/.cache/kb-cli/kb.db"
   }
   rootCmd.PersistentFlags().StringVar(&vaultPath, "vault", defaultVault, "知识库根目录")
   rootCmd.PersistentFlags().StringVar(&dbPath, "db", defaultDB, "索引数据库路径")