From 09c2a03cefa687832257d3b816da50db3cfcc0f2 Mon Sep 17 00:00:00 2001
From: ai_xiaopei <xiaopei@aisim.cn>
Date: Sat, 25 Jul 2026 23:48:11 +0800
Subject: [PATCH] feat: 实现输出格式化

---
 internal/vault/scanner.go |   38 ++++++++++++++++++++++++++++++++++++++
 1 files changed, 38 insertions(+), 0 deletions(-)

diff --git a/internal/vault/scanner.go b/internal/vault/scanner.go
new file mode 100644
index 0000000..f19def5
--- /dev/null
+++ b/internal/vault/scanner.go
@@ -0,0 +1,38 @@
+package vault
+
+import (
+	"os"
+	"path/filepath"
+	"strings"
+)
+
+// ScanVault 扫描知识库目录,返回所有 markdown 文件的元数据
+func ScanVault(vaultPath string) ([]*FileMeta, error) {
+	var files []*FileMeta
+
+	err := filepath.Walk(vaultPath, func(path string, info os.FileInfo, err error) error {
+		if err != nil {
+			return nil // 跳过错误文件
+		}
+		if info.IsDir() {
+			// 跳过隐藏目录
+			if strings.HasPrefix(info.Name(), ".") && info.Name() != "." {
+				return filepath.SkipDir
+			}
+			return nil
+		}
+		if !strings.HasSuffix(path, ".md") {
+			return nil
+		}
+
+		relPath, _ := filepath.Rel(vaultPath, path)
+		meta, err := ParseFile(path, relPath)
+		if err != nil {
+			return nil // 跳过解析失败的文件
+		}
+		files = append(files, meta)
+		return nil
+	})
+
+	return files, err
+}

--
Gitblit v1.9.1