@gird/ccli 2.19.0 → 2.21.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (122) hide show
  1. package/README.md +4 -0
  2. package/dist/agent/ai.js.map +1 -1
  3. package/dist/agent/model-catalog.js +100 -0
  4. package/dist/agent/model-catalog.js.map +1 -0
  5. package/dist/agent/os.js +291 -2
  6. package/dist/agent/os.js.map +1 -1
  7. package/dist/agent/providers/anthropic.js +112 -4
  8. package/dist/agent/providers/anthropic.js.map +1 -1
  9. package/dist/agent/rag/db.js +142 -0
  10. package/dist/agent/rag/db.js.map +1 -0
  11. package/dist/agent/rag/embedding.js +135 -0
  12. package/dist/agent/rag/embedding.js.map +1 -0
  13. package/dist/agent/rag/indexer.js +104 -0
  14. package/dist/agent/rag/indexer.js.map +1 -0
  15. package/dist/agent/rag/parser.js +75 -0
  16. package/dist/agent/rag/parser.js.map +1 -0
  17. package/dist/agent/rag/search.js +47 -0
  18. package/dist/agent/rag/search.js.map +1 -0
  19. package/dist/cli/args/index.js +30 -0
  20. package/dist/cli/args/index.js.map +1 -1
  21. package/dist/cli/repl/index.js +4 -3
  22. package/dist/cli/repl/index.js.map +1 -1
  23. package/dist/cli/run/index.js +27 -18
  24. package/dist/cli/run/index.js.map +1 -1
  25. package/dist/cli/run/task.js +188 -32
  26. package/dist/cli/run/task.js.map +1 -1
  27. package/dist/cli/session/checkpoint.js +50 -34
  28. package/dist/cli/session/checkpoint.js.map +1 -1
  29. package/dist/cli/slash/config/account.js +84 -0
  30. package/dist/cli/slash/config/account.js.map +1 -0
  31. package/dist/cli/slash/config/alias.js +96 -0
  32. package/dist/cli/slash/config/alias.js.map +1 -0
  33. package/dist/cli/slash/config/login.js +80 -0
  34. package/dist/cli/slash/config/login.js.map +1 -0
  35. package/dist/cli/slash/config/model.js +50 -6
  36. package/dist/cli/slash/config/model.js.map +1 -1
  37. package/dist/cli/slash/config/models.js +45 -0
  38. package/dist/cli/slash/config/models.js.map +1 -0
  39. package/dist/cli/slash/index.js +25 -1
  40. package/dist/cli/slash/index.js.map +1 -1
  41. package/dist/cli/slash/system/agent.js +1 -1
  42. package/dist/cli/slash/system/agent.js.map +1 -1
  43. package/dist/cli/slash/system/compact.js +1 -1
  44. package/dist/cli/slash/system/compact.js.map +1 -1
  45. package/dist/cli/slash/system/goal.js +1 -1
  46. package/dist/cli/slash/system/goal.js.map +1 -1
  47. package/dist/cli/slash/system/help.js +6 -0
  48. package/dist/cli/slash/system/help.js.map +1 -1
  49. package/dist/cli/slash/system/indexer.js +25 -0
  50. package/dist/cli/slash/system/indexer.js.map +1 -0
  51. package/dist/cli/slash/system/plan.js +1 -1
  52. package/dist/cli/slash/system/plan.js.map +1 -1
  53. package/dist/cli/slash/system/revert.js +7 -5
  54. package/dist/cli/slash/system/revert.js.map +1 -1
  55. package/dist/cli/slash/system/upgrade.js +13 -0
  56. package/dist/cli/slash/system/upgrade.js.map +1 -0
  57. package/dist/cli/stats/index.js +6 -1
  58. package/dist/cli/stats/index.js.map +1 -1
  59. package/dist/cli/stats/usage.js +215 -0
  60. package/dist/cli/stats/usage.js.map +1 -0
  61. package/dist/cli/upgrade.js +90 -0
  62. package/dist/cli/upgrade.js.map +1 -0
  63. package/dist/config/config.js +344 -10
  64. package/dist/config/config.js.map +1 -1
  65. package/dist/config/credentials.js +104 -0
  66. package/dist/config/credentials.js.map +1 -0
  67. package/dist/config/project-context.js +135 -0
  68. package/dist/config/project-context.js.map +1 -0
  69. package/dist/harness/index.js +11 -3
  70. package/dist/harness/index.js.map +1 -1
  71. package/dist/index.js +31 -2
  72. package/dist/index.js.map +1 -1
  73. package/dist/server/webui-content.js +2 -0
  74. package/dist/server/webui-content.js.map +1 -0
  75. package/dist/server/webui.js +15 -4
  76. package/dist/server/webui.js.map +1 -1
  77. package/dist/tools/{skill-tool.js → agent/skill-tool.js} +1 -1
  78. package/dist/tools/agent/skill-tool.js.map +1 -0
  79. package/dist/tools/{todo.js → agent/todo.js} +1 -1
  80. package/dist/tools/agent/todo.js.map +1 -0
  81. package/dist/tools/agent/web-fetch.js.map +1 -0
  82. package/dist/tools/{edit-file.js → fs/edit-file.js} +8 -14
  83. package/dist/tools/fs/edit-file.js.map +1 -0
  84. package/dist/tools/fs/glob.js.map +1 -0
  85. package/dist/tools/{grep.js → fs/grep.js} +1 -1
  86. package/dist/tools/fs/grep.js.map +1 -0
  87. package/dist/tools/fs/list-dir.js +95 -0
  88. package/dist/tools/fs/list-dir.js.map +1 -0
  89. package/dist/tools/{read-file.js → fs/read-file.js} +1 -1
  90. package/dist/tools/fs/read-file.js.map +1 -0
  91. package/dist/tools/{write-file.js → fs/write-file.js} +8 -15
  92. package/dist/tools/fs/write-file.js.map +1 -0
  93. package/dist/tools/index.js +13 -11
  94. package/dist/tools/index.js.map +1 -1
  95. package/dist/tools/rag/search.js +65 -0
  96. package/dist/tools/rag/search.js.map +1 -0
  97. package/dist/tools/shared.js.map +1 -1
  98. package/dist/tools/shell/bash-background.js.map +1 -0
  99. package/dist/tools/shell/bash-output.js.map +1 -0
  100. package/dist/tools/shell/bash.js.map +1 -0
  101. package/dist/tools/shell/kill-bash.js.map +1 -0
  102. package/package.json +3 -1
  103. package/dist/tools/bash-background.js.map +0 -1
  104. package/dist/tools/bash-output.js.map +0 -1
  105. package/dist/tools/bash.js.map +0 -1
  106. package/dist/tools/edit-file.js.map +0 -1
  107. package/dist/tools/glob.js.map +0 -1
  108. package/dist/tools/grep.js.map +0 -1
  109. package/dist/tools/kill-bash.js.map +0 -1
  110. package/dist/tools/list-dir.js +0 -45
  111. package/dist/tools/list-dir.js.map +0 -1
  112. package/dist/tools/read-file.js.map +0 -1
  113. package/dist/tools/skill-tool.js.map +0 -1
  114. package/dist/tools/todo.js.map +0 -1
  115. package/dist/tools/web-fetch.js.map +0 -1
  116. package/dist/tools/write-file.js.map +0 -1
  117. /package/dist/tools/{web-fetch.js → agent/web-fetch.js} +0 -0
  118. /package/dist/tools/{glob.js → fs/glob.js} +0 -0
  119. /package/dist/tools/{bash-background.js → shell/bash-background.js} +0 -0
  120. /package/dist/tools/{bash-output.js → shell/bash-output.js} +0 -0
  121. /package/dist/tools/{bash.js → shell/bash.js} +0 -0
  122. /package/dist/tools/{kill-bash.js → shell/kill-bash.js} +0 -0
@@ -1 +1 @@
1
- {"version":3,"file":"anthropic.js","sourceRoot":"","sources":["../../../src/agent/providers/anthropic.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"anthropic.js","sourceRoot":"","sources":["../../../src/agent/providers/anthropic.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,142 @@
1
+ import { DatabaseSync } from 'node:sqlite';
2
+ import { join } from 'node:path';
3
+ import { mkdirSync } from 'node:fs';
4
+ /**
5
+ * 初始化代码大纲 SQLite 数据库。
6
+ * 数据库存放在项目工作空间根目录的 .ccli/codebase.sqlite 中。
7
+ */
8
+ export function initDb(workspacePath) {
9
+ const ccliDir = join(workspacePath, '.ccli');
10
+ mkdirSync(ccliDir, { recursive: true });
11
+ const dbPath = join(ccliDir, 'codebase.sqlite');
12
+ const db = new DatabaseSync(dbPath);
13
+ // 初始化数据表
14
+ db.exec(`
15
+ CREATE TABLE IF NOT EXISTS files (
16
+ path TEXT PRIMARY KEY,
17
+ mtime INTEGER NOT NULL
18
+ );
19
+ `);
20
+ db.exec(`
21
+ CREATE TABLE IF NOT EXISTS symbols (
22
+ id INTEGER PRIMARY KEY AUTOINCREMENT,
23
+ file_path TEXT NOT NULL,
24
+ name TEXT NOT NULL,
25
+ type TEXT NOT NULL,
26
+ start_line INTEGER NOT NULL,
27
+ end_line INTEGER NOT NULL,
28
+ FOREIGN KEY(file_path) REFERENCES files(path) ON DELETE CASCADE
29
+ );
30
+ `);
31
+ // 动态增加向量与哈希缓存字段(用于老表平滑升级)
32
+ try {
33
+ db.exec(`ALTER TABLE symbols ADD COLUMN content_hash TEXT;`);
34
+ }
35
+ catch { }
36
+ try {
37
+ db.exec(`ALTER TABLE symbols ADD COLUMN embedding TEXT;`);
38
+ }
39
+ catch { }
40
+ // 创建索引加快符号名搜索和文件范围反查
41
+ db.exec(`
42
+ CREATE INDEX IF NOT EXISTS idx_symbols_name ON symbols(name);
43
+ CREATE INDEX IF NOT EXISTS idx_symbols_file ON symbols(file_path);
44
+ `);
45
+ return db;
46
+ }
47
+ /**
48
+ * 记录或更新扫描过的文件与修改时间。
49
+ */
50
+ export function saveFile(db, path, mtime) {
51
+ const stmt = db.prepare(`
52
+ INSERT INTO files (path, mtime)
53
+ VALUES (?, ?)
54
+ ON CONFLICT(path) DO UPDATE SET mtime = excluded.mtime
55
+ `);
56
+ stmt.run(path, mtime);
57
+ }
58
+ /**
59
+ * 获取某个文件的扫描记录。
60
+ */
61
+ export function getFile(db, path) {
62
+ const stmt = db.prepare(`SELECT path, mtime FROM files WHERE path = ?`);
63
+ const rows = stmt.all(path);
64
+ if (rows.length === 0)
65
+ return undefined;
66
+ return {
67
+ path: rows[0].path,
68
+ mtime: Number(rows[0].mtime)
69
+ };
70
+ }
71
+ /**
72
+ * 清除某个文件已有的所有符号索引(重新扫描前清理)。
73
+ */
74
+ export function clearFileSymbols(db, path) {
75
+ const stmt = db.prepare(`DELETE FROM symbols WHERE file_path = ?`);
76
+ stmt.run(path);
77
+ }
78
+ /**
79
+ * 清除某个文件的文件扫描历史。
80
+ */
81
+ export function deleteFileRecord(db, path) {
82
+ const stmt = db.prepare(`DELETE FROM files WHERE path = ?`);
83
+ stmt.run(path);
84
+ }
85
+ /**
86
+ * 保存一个符号记录。
87
+ */
88
+ export function saveSymbol(db, filePath, symbol) {
89
+ const stmt = db.prepare(`
90
+ INSERT INTO symbols (file_path, name, type, start_line, end_line, content_hash, embedding)
91
+ VALUES (?, ?, ?, ?, ?, ?, ?)
92
+ `);
93
+ const embeddingStr = symbol.embedding ? JSON.stringify(symbol.embedding) : null;
94
+ stmt.run(filePath, symbol.name, symbol.type, symbol.startLine, symbol.endLine, symbol.contentHash || null, embeddingStr);
95
+ }
96
+ /**
97
+ * 更新现有符号的向量与哈希数据(用于按需延迟加载 Embedding)。
98
+ */
99
+ export function updateSymbolEmbedding(db, id, contentHash, embedding) {
100
+ const stmt = db.prepare(`
101
+ UPDATE symbols
102
+ SET content_hash = ?, embedding = ?
103
+ WHERE id = ?
104
+ `);
105
+ stmt.run(contentHash, JSON.stringify(embedding), id);
106
+ }
107
+ /**
108
+ * 获取所有已生成 Embedding 向量的符号,供内存计算相似度检索。
109
+ */
110
+ export function getAllSymbolsForSearch(db) {
111
+ const stmt = db.prepare(`
112
+ SELECT id, file_path, name, type, start_line, end_line, content_hash, embedding
113
+ FROM symbols
114
+ WHERE embedding IS NOT NULL
115
+ `);
116
+ return stmt.all();
117
+ }
118
+ /**
119
+ * 获取某个文件下所有没有生成向量、或者 hash 不一致的待更新符号列表。
120
+ */
121
+ export function getSymbolsPendingEmbedding(db, filePath) {
122
+ const stmt = db.prepare(`
123
+ SELECT id, file_path, name, type, start_line, end_line, content_hash, embedding
124
+ FROM symbols
125
+ WHERE file_path = ?
126
+ `);
127
+ return stmt.all(filePath);
128
+ }
129
+ /**
130
+ * 打印当前的符号索引统计数据。
131
+ */
132
+ export function getSymbolStats(db) {
133
+ const fileStmt = db.prepare(`SELECT COUNT(*) as cnt FROM files`);
134
+ const symStmt = db.prepare(`SELECT COUNT(*) as cnt FROM symbols`);
135
+ const fileRows = fileStmt.all();
136
+ const symRows = symStmt.all();
137
+ return {
138
+ filesCount: fileRows[0]?.cnt ?? 0,
139
+ symbolsCount: symRows[0]?.cnt ?? 0
140
+ };
141
+ }
142
+ //# sourceMappingURL=db.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"db.js","sourceRoot":"","sources":["../../../src/agent/rag/db.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,135 @@
1
+ import { readFileSync, existsSync } from 'node:fs';
2
+ import { join } from 'node:path';
3
+ import { createHash } from 'node:crypto';
4
+ import { initDb, updateSymbolEmbedding } from './db.js';
5
+ function getMd5(text) {
6
+ return createHash('md5').update(text).digest('hex');
7
+ }
8
+ /**
9
+ * 截取并读取指定文件中的代码行片段(自适应支持本地及 SshOS/DockerOS 远程读取)。
10
+ */
11
+ export async function readCodeSnippet(workspacePath, filePath, startLine, endLine, os) {
12
+ const fullPath = os ? os.resolve(workspacePath, filePath) : join(workspacePath, filePath);
13
+ try {
14
+ let content;
15
+ if (os) {
16
+ content = await os.readFile(fullPath, 'utf8');
17
+ }
18
+ else {
19
+ if (!existsSync(fullPath))
20
+ return '';
21
+ content = readFileSync(fullPath, 'utf8');
22
+ }
23
+ const lines = content.split(/\r?\n/);
24
+ return lines.slice(startLine - 1, endLine).join('\n');
25
+ }
26
+ catch {
27
+ return '';
28
+ }
29
+ }
30
+ /**
31
+ * 解析最终生效的 Embedding 配置。
32
+ * 优先使用独立的 embeddingApiKey / embeddingBaseURL / embeddingModel,
33
+ * 未配置时再回退到主对话模型的 apiKey / baseURL。
34
+ */
35
+ export function resolveEmbeddingConfig(config) {
36
+ return {
37
+ apiKey: config.embeddingApiKey ?? config.apiKey,
38
+ baseURL: config.embeddingBaseURL ?? config.baseURL ?? 'https://api.openai.com/v1',
39
+ model: config.embeddingModel ?? 'text-embedding-3-small',
40
+ };
41
+ }
42
+ /**
43
+ * 调用 AI 接口生成输入文本的高维特征向量 (Embedding)。
44
+ * 优先兼容 OpenAI / Gemini / 千问等任何主流 OpenAI 格式的向量接口。
45
+ */
46
+ export async function getEmbedding(text, config) {
47
+ const { apiKey, baseURL, model } = resolveEmbeddingConfig(config);
48
+ if (!apiKey) {
49
+ // 兜底返回 1536 维全零向量,防止在未配置 key 时系统直接崩溃或死锁
50
+ return new Array(1536).fill(0);
51
+ }
52
+ // 兼容端点自适应拼接
53
+ const url = baseURL.endsWith('/v1') ? `${baseURL}/embeddings` : `${baseURL}/v1/embeddings`;
54
+ const response = await fetch(url, {
55
+ method: 'POST',
56
+ headers: {
57
+ 'Content-Type': 'application/json',
58
+ 'Authorization': `Bearer ${apiKey}`
59
+ },
60
+ body: JSON.stringify({
61
+ model: model,
62
+ input: text
63
+ }),
64
+ signal: AbortSignal.timeout(10000)
65
+ });
66
+ if (!response.ok) {
67
+ throw new Error(`Embedding API error: ${response.statusText} (${response.status})`);
68
+ }
69
+ const data = await response.json();
70
+ if (!data?.data?.[0]?.embedding) {
71
+ throw new Error(`Invalid response format from Embedding API`);
72
+ }
73
+ return data.data[0].embedding;
74
+ }
75
+ /**
76
+ * 计算两个浮点数向量之间的余弦相似度 (Cosine Similarity)。
77
+ * 范围在 [-1, 1] 之间,值越大代表两段文本语义越相似。
78
+ */
79
+ export function cosineSimilarity(vecA, vecB) {
80
+ let dotProduct = 0;
81
+ let normA = 0;
82
+ let normB = 0;
83
+ const length = Math.min(vecA.length, vecB.length);
84
+ for (let i = 0; i < length; i++) {
85
+ dotProduct += vecA[i] * vecB[i];
86
+ normA += vecA[i] * vecA[i];
87
+ normB += vecB[i] * vecB[i];
88
+ }
89
+ if (normA === 0 || normB === 0)
90
+ return 0;
91
+ return dotProduct / (Math.sqrt(normA) * Math.sqrt(normB));
92
+ }
93
+ /**
94
+ * 遍历数据库中大纲里的所有符号,增量计算它们的 Embedding 并写入缓存。
95
+ */
96
+ export async function syncEmbeddings(workspacePath, config, onProgress) {
97
+ const log = onProgress ?? (() => { });
98
+ const db = initDb(workspacePath);
99
+ const stmt = db.prepare(`
100
+ SELECT id, file_path, name, type, start_line, end_line, content_hash, embedding
101
+ FROM symbols
102
+ `);
103
+ const allSymbols = stmt.all();
104
+ let updated = 0;
105
+ let skipped = 0;
106
+ log(`🧬 正在分析 ${allSymbols.length} 个符号的 Embedding 缓存状态...`);
107
+ for (const sym of allSymbols) {
108
+ const snippet = await readCodeSnippet(workspacePath, sym.file_path, sym.start_line, sym.end_line);
109
+ if (!snippet) {
110
+ skipped++;
111
+ continue;
112
+ }
113
+ const currentHash = getMd5(snippet.trim());
114
+ const hasCachedVec = sym.embedding && sym.content_hash === currentHash;
115
+ if (hasCachedVec) {
116
+ skipped++;
117
+ continue;
118
+ }
119
+ // 缓存失效或缺失,重新拉取向量
120
+ try {
121
+ log(` -> 正在生成符号向量 [${sym.file_path}]: ${sym.name}...`);
122
+ const vector = await getEmbedding(snippet, config);
123
+ updateSymbolEmbedding(db, sym.id, currentHash, vector);
124
+ updated++;
125
+ // 简单的防频控延迟(20ms)
126
+ await new Promise(resolve => setTimeout(resolve, 20));
127
+ }
128
+ catch (e) {
129
+ log(`⚠️ 生成符号 [${sym.name}] 向量失败: ${e.message}`);
130
+ }
131
+ }
132
+ log(`✨ 向量同步完成!本次生成: ${updated},跳过复用: ${skipped}。`);
133
+ return { total: allSymbols.length, updated, skipped };
134
+ }
135
+ //# sourceMappingURL=embedding.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"embedding.js","sourceRoot":"","sources":["../../../src/agent/rag/embedding.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AACnD,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAGzC,OAAO,EAAE,MAAM,EAAE,qBAAqB,EAAE,MAAM,SAAS,CAAC;AAExD,SAAS,MAAM,CAAC,IAAY;IACxB,OAAO,UAAU,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;AACxD,CAAC;AAED;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,eAAe,CACjC,aAAqB,EACrB,QAAgB,EAChB,SAAiB,EACjB,OAAe,EACf,EAAc;IAEd,MAAM,QAAQ,GAAG,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,OAAO,CAAC,aAAa,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,aAAa,EAAE,QAAQ,CAAC,CAAC;IAC1F,IAAI,CAAC;QACD,IAAI,OAAe,CAAC;QACpB,IAAI,EAAE,EAAE,CAAC;YACL,OAAO,GAAG,MAAM,EAAE,CAAC,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;QAClD,CAAC;aAAM,CAAC;YACJ,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC;gBAAE,OAAO,EAAE,CAAC;YACrC,OAAO,GAAG,YAAY,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;QAC7C,CAAC;QACD,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;QACrC,OAAO,KAAK,CAAC,KAAK,CAAC,SAAS,GAAG,CAAC,EAAE,OAAO,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC1D,CAAC;IAAC,MAAM,CAAC;QACL,OAAO,EAAE,CAAC;IACd,CAAC;AACL,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,sBAAsB,CAAC,MAAc;IAKjD,OAAO;QACH,MAAM,EAAE,MAAM,CAAC,eAAe,IAAI,MAAM,CAAC,MAAM;QAC/C,OAAO,EAAE,MAAM,CAAC,gBAAgB,IAAI,MAAM,CAAC,OAAO,IAAI,2BAA2B;QACjF,KAAK,EAAE,MAAM,CAAC,cAAc,IAAI,wBAAwB;KAC3D,CAAC;AACN,CAAC;AAED;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,YAAY,CAAC,IAAY,EAAE,MAAc;IAC3D,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,KAAK,EAAE,GAAG,sBAAsB,CAAC,MAAM,CAAC,CAAC;IAElE,IAAI,CAAC,MAAM,EAAE,CAAC;QACV,wCAAwC;QACxC,OAAO,IAAI,KAAK,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IACnC,CAAC;IAED,YAAY;IACZ,MAAM,GAAG,GAAG,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,OAAO,aAAa,CAAC,CAAC,CAAC,GAAG,OAAO,gBAAgB,CAAC;IAE3F,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,GAAG,EAAE;QAC9B,MAAM,EAAE,MAAM;QACd,OAAO,EAAE;YACL,cAAc,EAAE,kBAAkB;YAClC,eAAe,EAAE,UAAU,MAAM,EAAE;SACtC;QACD,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC;YACjB,KAAK,EAAE,KAAK;YACZ,KAAK,EAAE,IAAI;SACd,CAAC;QACF,MAAM,EAAE,WAAW,CAAC,OAAO,CAAC,KAAK,CAAC;KACrC,CAAC,CAAC;IAEH,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;QACf,MAAM,IAAI,KAAK,CAAC,wBAAwB,QAAQ,CAAC,UAAU,KAAK,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC;IACxF,CAAC;IAED,MAAM,IAAI,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAS,CAAC;IAC1C,IAAI,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,SAAS,EAAE,CAAC;QAC9B,MAAM,IAAI,KAAK,CAAC,4CAA4C,CAAC,CAAC;IAClE,CAAC;IACD,OAAO,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;AAClC,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,gBAAgB,CAAC,IAAc,EAAE,IAAc;IAC3D,IAAI,UAAU,GAAG,CAAC,CAAC;IACnB,IAAI,KAAK,GAAG,CAAC,CAAC;IACd,IAAI,KAAK,GAAG,CAAC,CAAC;IAEd,MAAM,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;IAClD,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QAC9B,UAAU,IAAI,IAAI,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;QAChC,KAAK,IAAI,IAAI,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;QAC3B,KAAK,IAAI,IAAI,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;IAC/B,CAAC;IAED,IAAI,KAAK,KAAK,CAAC,IAAI,KAAK,KAAK,CAAC;QAAE,OAAO,CAAC,CAAC;IACzC,OAAO,UAAU,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;AAC9D,CAAC;AAED;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,cAAc,CAChC,aAAqB,EACrB,MAAc,EACd,UAAkC;IAElC,MAAM,GAAG,GAAG,UAAU,IAAI,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC,CAAC;IACrC,MAAM,EAAE,GAAG,MAAM,CAAC,aAAa,CAAC,CAAC;IAEjC,MAAM,IAAI,GAAG,EAAE,CAAC,OAAO,CAAC;;;KAGvB,CAAC,CAAC;IACH,MAAM,UAAU,GAAG,IAAI,CAAC,GAAG,EAAW,CAAC;IAEvC,IAAI,OAAO,GAAG,CAAC,CAAC;IAChB,IAAI,OAAO,GAAG,CAAC,CAAC;IAEhB,GAAG,CAAC,WAAW,UAAU,CAAC,MAAM,yBAAyB,CAAC,CAAC;IAE3D,KAAK,MAAM,GAAG,IAAI,UAAU,EAAE,CAAC;QAC3B,MAAM,OAAO,GAAG,MAAM,eAAe,CAAC,aAAa,EAAE,GAAG,CAAC,SAAS,EAAE,GAAG,CAAC,UAAU,EAAE,GAAG,CAAC,QAAQ,CAAC,CAAC;QAClG,IAAI,CAAC,OAAO,EAAE,CAAC;YACX,OAAO,EAAE,CAAC;YACV,SAAS;QACb,CAAC;QAED,MAAM,WAAW,GAAG,MAAM,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC,CAAC;QAC3C,MAAM,YAAY,GAAG,GAAG,CAAC,SAAS,IAAI,GAAG,CAAC,YAAY,KAAK,WAAW,CAAC;QAEvE,IAAI,YAAY,EAAE,CAAC;YACf,OAAO,EAAE,CAAC;YACV,SAAS;QACb,CAAC;QAED,iBAAiB;QACjB,IAAI,CAAC;YACD,GAAG,CAAC,iBAAiB,GAAG,CAAC,SAAS,MAAM,GAAG,CAAC,IAAI,KAAK,CAAC,CAAC;YACvD,MAAM,MAAM,GAAG,MAAM,YAAY,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;YACnD,qBAAqB,CAAC,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,WAAW,EAAE,MAAM,CAAC,CAAC;YACvD,OAAO,EAAE,CAAC;YAEV,iBAAiB;YACjB,MAAM,IAAI,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,CAAC;QAC1D,CAAC;QAAC,OAAO,CAAM,EAAE,CAAC;YACd,GAAG,CAAC,YAAY,GAAG,CAAC,IAAI,WAAW,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC;QACpD,CAAC;IACL,CAAC;IAED,GAAG,CAAC,kBAAkB,OAAO,UAAU,OAAO,GAAG,CAAC,CAAC;IACnD,OAAO,EAAE,KAAK,EAAE,UAAU,CAAC,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC;AAC1D,CAAC"}
@@ -0,0 +1,104 @@
1
+ import { readdirSync, statSync, readFileSync, existsSync } from 'node:fs';
2
+ import { join, relative, extname } from 'node:path';
3
+ import { initDb, getFile, clearFileSymbols, saveSymbol, saveFile, deleteFileRecord, getSymbolStats } from './db.js';
4
+ import { parseSourceFile } from './parser.js';
5
+ const ALLOWED_EXTENSIONS = new Set(['.ts', '.tsx', '.js', '.jsx', '.mjs', '.cjs']);
6
+ const EXCLUDED_DIRS = new Set(['node_modules', 'dist', 'build', '.git', '.ccli', '.gemini']);
7
+ /**
8
+ * 遍历并收集所有的待扫描代码文件。
9
+ */
10
+ function collectFiles(dirPath, rootDir, filesList) {
11
+ if (!existsSync(dirPath))
12
+ return;
13
+ const items = readdirSync(dirPath);
14
+ for (const item of items) {
15
+ if (item.startsWith('.'))
16
+ continue; // 忽略任何隐藏文件/目录
17
+ const fullPath = join(dirPath, item);
18
+ let stat;
19
+ try {
20
+ stat = statSync(fullPath);
21
+ }
22
+ catch {
23
+ continue;
24
+ }
25
+ if (stat.isDirectory()) {
26
+ if (EXCLUDED_DIRS.has(item))
27
+ continue;
28
+ collectFiles(fullPath, rootDir, filesList);
29
+ }
30
+ else if (stat.isFile()) {
31
+ const ext = extname(item);
32
+ if (ALLOWED_EXTENSIONS.has(ext)) {
33
+ filesList.push(fullPath);
34
+ }
35
+ }
36
+ }
37
+ }
38
+ /**
39
+ * 扫描并增量构建项目代码大纲索引。
40
+ * @param workspacePath 项目根目录物理路径
41
+ * @param onProgress 进度汇报回调函数
42
+ */
43
+ export function buildIndex(workspacePath, onProgress) {
44
+ const log = onProgress ?? (() => { });
45
+ log('🔎 正在初始化本地代码符号数据库...');
46
+ const db = initDb(workspacePath);
47
+ log('📂 正在扫描项目文件结构...');
48
+ const filesList = [];
49
+ collectFiles(workspacePath, workspacePath, filesList);
50
+ log(`📊 发现 ${filesList.length} 个代码文件,开始进行增量解析...`);
51
+ const currentFilesRelative = new Set();
52
+ let scannedCount = 0;
53
+ let parsedCount = 0;
54
+ for (const absolutePath of filesList) {
55
+ const relativePath = relative(workspacePath, absolutePath);
56
+ currentFilesRelative.add(relativePath);
57
+ const mtime = statSync(absolutePath).mtimeMs;
58
+ const cached = getFile(db, relativePath);
59
+ // 增量检查:如果修改时间一致,跳过解析
60
+ if (cached && cached.mtime === mtime) {
61
+ scannedCount++;
62
+ continue;
63
+ }
64
+ // 解析文件并提取符号
65
+ try {
66
+ const content = readFileSync(absolutePath, 'utf8');
67
+ const symbols = parseSourceFile(relativePath, content);
68
+ // 写入数据库:先保存文件记录,满足外键约束
69
+ saveFile(db, relativePath, mtime);
70
+ clearFileSymbols(db, relativePath);
71
+ for (const sym of symbols) {
72
+ saveSymbol(db, relativePath, sym);
73
+ }
74
+ parsedCount++;
75
+ }
76
+ catch (e) {
77
+ log(`⚠️ 无法解析文件 ${relativePath}: ${e.message}`);
78
+ }
79
+ scannedCount++;
80
+ }
81
+ // 清理已经被删除的文件索引
82
+ log('🧹 正在清理失效的废弃索引...');
83
+ const allDbFilesStmt = db.prepare(`SELECT path FROM files`);
84
+ const dbFiles = allDbFilesStmt.all();
85
+ let deletedCount = 0;
86
+ for (const row of dbFiles) {
87
+ const dbPath = row.path;
88
+ if (!currentFilesRelative.has(dbPath)) {
89
+ // 在磁盘上已找不到该文件,执行物理清理
90
+ clearFileSymbols(db, dbPath);
91
+ deleteFileRecord(db, dbPath);
92
+ deletedCount++;
93
+ }
94
+ }
95
+ const stats = getSymbolStats(db);
96
+ log(`✨ 索引同步完成!`);
97
+ if (parsedCount > 0)
98
+ log(` -> 新增/修改解析: ${parsedCount} 个文件`);
99
+ if (deletedCount > 0)
100
+ log(` -> 清理失效文件: ${deletedCount} 个`);
101
+ log(` -> 库中当前状态: 共分析 ${stats.filesCount} 个文件,发现 ${stats.symbolsCount} 个符号。`);
102
+ return stats;
103
+ }
104
+ //# sourceMappingURL=indexer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"indexer.js","sourceRoot":"","sources":["../../../src/agent/rag/indexer.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,75 @@
1
+ import ts from 'typescript';
2
+ import { createHash } from 'node:crypto';
3
+ function getMd5(text) {
4
+ return createHash('md5').update(text).digest('hex');
5
+ }
6
+ /**
7
+ * 使用 TypeScript Compiler API 解析文件大纲,抓取类、函数、方法、接口和变量定义,
8
+ * 并自动截取代码正文计算 MD5 校验和。
9
+ */
10
+ export function parseSourceFile(filePath, content) {
11
+ const sourceFile = ts.createSourceFile(filePath, content, ts.ScriptTarget.Latest, true);
12
+ const symbols = [];
13
+ function visit(node) {
14
+ let name = '';
15
+ let type = '';
16
+ if (ts.isClassDeclaration(node) && node.name) {
17
+ name = node.name.text;
18
+ type = 'class';
19
+ }
20
+ else if (ts.isFunctionDeclaration(node) && node.name) {
21
+ name = node.name.text;
22
+ type = 'function';
23
+ }
24
+ else if (ts.isInterfaceDeclaration(node) && node.name) {
25
+ name = node.name.text;
26
+ type = 'interface';
27
+ }
28
+ else if (ts.isMethodDeclaration(node) && node.name) {
29
+ if (ts.isIdentifier(node.name)) {
30
+ name = node.name.text;
31
+ type = 'method';
32
+ }
33
+ }
34
+ else if (ts.isModuleDeclaration(node) && node.name) {
35
+ name = node.name.text;
36
+ type = 'namespace';
37
+ }
38
+ else if (ts.isVariableStatement(node)) {
39
+ // 支持 export const x = ... 等变量声明的符号解析与哈希
40
+ for (const decl of node.declarationList.declarations) {
41
+ if (ts.isIdentifier(decl.name)) {
42
+ const varName = decl.name.text;
43
+ const start = sourceFile.getLineAndCharacterOfPosition(node.getStart(sourceFile));
44
+ const end = sourceFile.getLineAndCharacterOfPosition(node.getEnd());
45
+ const codeText = content.substring(node.getStart(sourceFile), node.getEnd());
46
+ const contentHash = getMd5(codeText.trim());
47
+ symbols.push({
48
+ name: varName,
49
+ type: 'variable',
50
+ startLine: start.line + 1,
51
+ endLine: end.line + 1,
52
+ contentHash
53
+ });
54
+ }
55
+ }
56
+ }
57
+ if (name && type) {
58
+ const start = sourceFile.getLineAndCharacterOfPosition(node.getStart(sourceFile));
59
+ const end = sourceFile.getLineAndCharacterOfPosition(node.getEnd());
60
+ const codeText = content.substring(node.getStart(sourceFile), node.getEnd());
61
+ const contentHash = getMd5(codeText.trim());
62
+ symbols.push({
63
+ name,
64
+ type,
65
+ startLine: start.line + 1,
66
+ endLine: end.line + 1,
67
+ contentHash
68
+ });
69
+ }
70
+ ts.forEachChild(node, visit);
71
+ }
72
+ ts.forEachChild(sourceFile, visit);
73
+ return symbols;
74
+ }
75
+ //# sourceMappingURL=parser.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"parser.js","sourceRoot":"","sources":["../../../src/agent/rag/parser.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,47 @@
1
+ import { initDb, getAllSymbolsForSearch } from './db.js';
2
+ import { getEmbedding, cosineSimilarity, readCodeSnippet } from './embedding.js';
3
+ /**
4
+ * 本地代码库模糊语义检索。
5
+ * 将自然语言转化为向量,计算 SQLite 符号库的余弦相似度并按匹配度倒序返回。
6
+ * 支持 RuntimeOS 跨环境读取真实文件内容。
7
+ */
8
+ export async function codebaseSearch(query, config, workspacePath, limit = 5, os) {
9
+ const db = initDb(workspacePath);
10
+ // 1. 获取输入文本的向量坐标
11
+ const queryVector = await getEmbedding(query, config);
12
+ // 2. 从本地 SQLite 获取所有已同步的符号及向量
13
+ const dbSymbols = getAllSymbolsForSearch(db);
14
+ // 3. 在内存中极速计算余弦相似度并评分排序
15
+ const scored = dbSymbols.map(sym => {
16
+ let vec = [];
17
+ try {
18
+ vec = JSON.parse(sym.embedding || '[]');
19
+ }
20
+ catch { }
21
+ const similarity = cosineSimilarity(queryVector, vec);
22
+ return {
23
+ filePath: sym.file_path,
24
+ name: sym.name,
25
+ type: sym.type,
26
+ startLine: sym.start_line,
27
+ endLine: sym.end_line,
28
+ similarity
29
+ };
30
+ });
31
+ // 过滤掉完全不相关的项,并按评分从高到低截取前 N 项
32
+ const topScored = scored
33
+ .filter(item => item.similarity > 0)
34
+ .sort((a, b) => b.similarity - a.similarity)
35
+ .slice(0, limit);
36
+ // 4. 从本地源文件中读取命中的代码段正文(支持 SshOS/DockerOS 远程或本地 OS)
37
+ const results = [];
38
+ for (const item of topScored) {
39
+ const code = await readCodeSnippet(workspacePath, item.filePath, item.startLine, item.endLine, os);
40
+ results.push({
41
+ ...item,
42
+ code
43
+ });
44
+ }
45
+ return results;
46
+ }
47
+ //# sourceMappingURL=search.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"search.js","sourceRoot":"","sources":["../../../src/agent/rag/search.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,sBAAsB,EAAE,MAAM,SAAS,CAAC;AACzD,OAAO,EAAE,YAAY,EAAE,gBAAgB,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAC;AAcjF;;;;GAIG;AACH,MAAM,CAAC,KAAK,UAAU,cAAc,CAChC,KAAa,EACb,MAAc,EACd,aAAqB,EACrB,KAAK,GAAG,CAAC,EACT,EAAc;IAEd,MAAM,EAAE,GAAG,MAAM,CAAC,aAAa,CAAC,CAAC;IAEjC,iBAAiB;IACjB,MAAM,WAAW,GAAG,MAAM,YAAY,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;IAEtD,8BAA8B;IAC9B,MAAM,SAAS,GAAG,sBAAsB,CAAC,EAAE,CAAC,CAAC;IAE7C,wBAAwB;IACxB,MAAM,MAAM,GAAG,SAAS,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE;QAC/B,IAAI,GAAG,GAAa,EAAE,CAAC;QACvB,IAAI,CAAC;YACD,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,SAAS,IAAI,IAAI,CAAC,CAAC;QAC5C,CAAC;QAAC,MAAM,CAAC,CAAA,CAAC;QAEV,MAAM,UAAU,GAAG,gBAAgB,CAAC,WAAW,EAAE,GAAG,CAAC,CAAC;QACtD,OAAO;YACH,QAAQ,EAAE,GAAG,CAAC,SAAS;YACvB,IAAI,EAAE,GAAG,CAAC,IAAI;YACd,IAAI,EAAE,GAAG,CAAC,IAAI;YACd,SAAS,EAAE,GAAG,CAAC,UAAU;YACzB,OAAO,EAAE,GAAG,CAAC,QAAQ;YACrB,UAAU;SACb,CAAC;IACN,CAAC,CAAC,CAAC;IAEH,6BAA6B;IAC7B,MAAM,SAAS,GAAG,MAAM;SACnB,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,UAAU,GAAG,CAAC,CAAC;SACnC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,UAAU,GAAG,CAAC,CAAC,UAAU,CAAC;SAC3C,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;IAErB,mDAAmD;IACnD,MAAM,OAAO,GAAmB,EAAE,CAAC;IACnC,KAAK,MAAM,IAAI,IAAI,SAAS,EAAE,CAAC;QAC3B,MAAM,IAAI,GAAG,MAAM,eAAe,CAAC,aAAa,EAAE,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC;QACnG,OAAO,CAAC,IAAI,CAAC;YACT,GAAG,IAAI;YACP,IAAI;SACP,CAAC,CAAC;IACP,CAAC;IAED,OAAO,OAAO,CAAC;AACnB,CAAC"}
@@ -11,6 +11,7 @@ export function parseArgs(argv) {
11
11
  yes: false,
12
12
  noHooks: false,
13
13
  project: false,
14
+ upgrade: false,
14
15
  unknown: [],
15
16
  positionals: [],
16
17
  };
@@ -35,6 +36,32 @@ export function parseArgs(argv) {
35
36
  case '--project':
36
37
  result.project = true;
37
38
  break;
39
+ case '--docker': {
40
+ const next = argv[i + 1];
41
+ if (next && !next.startsWith('-')) {
42
+ result.docker = next;
43
+ i++;
44
+ }
45
+ else {
46
+ result.unknown.push(arg);
47
+ }
48
+ break;
49
+ }
50
+ case '--remote': {
51
+ const next = argv[i + 1];
52
+ if (next && !next.startsWith('-')) {
53
+ result.remote = next;
54
+ i++;
55
+ }
56
+ else {
57
+ result.unknown.push(arg);
58
+ }
59
+ break;
60
+ }
61
+ case '--upgrade': {
62
+ result.upgrade = true;
63
+ break;
64
+ }
38
65
  case '--port': {
39
66
  const next = argv[i + 1];
40
67
  const n = Number(next);
@@ -92,6 +119,9 @@ export function parseArgs(argv) {
92
119
  }
93
120
  }
94
121
  }
122
+ if (result.positionals[0] === 'upgrade') {
123
+ result.upgrade = true;
124
+ }
95
125
  return result;
96
126
  }
97
127
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/cli/args/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/cli/args/index.ts"],"names":[],"mappings":"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"}