@llangtop/pwiki-core 0.1.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.
- package/dist/WikiEngine.d.ts +81 -0
- package/dist/WikiEngine.d.ts.map +1 -0
- package/dist/WikiEngine.js +371 -0
- package/dist/WikiEngine.js.map +1 -0
- package/dist/compile/compiler.d.ts +39 -0
- package/dist/compile/compiler.d.ts.map +1 -0
- package/dist/compile/compiler.js +227 -0
- package/dist/compile/compiler.js.map +1 -0
- package/dist/compile/index.d.ts +3 -0
- package/dist/compile/index.d.ts.map +1 -0
- package/dist/compile/index.js +2 -0
- package/dist/compile/index.js.map +1 -0
- package/dist/embed/WikiEmbedder.d.ts +28 -0
- package/dist/embed/WikiEmbedder.d.ts.map +1 -0
- package/dist/embed/WikiEmbedder.js +147 -0
- package/dist/embed/WikiEmbedder.js.map +1 -0
- package/dist/embed/index.d.ts +2 -0
- package/dist/embed/index.d.ts.map +1 -0
- package/dist/embed/index.js +2 -0
- package/dist/embed/index.js.map +1 -0
- package/dist/index.d.ts +10 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +9 -0
- package/dist/index.js.map +1 -0
- package/dist/llm/WikiLLM.d.ts +24 -0
- package/dist/llm/WikiLLM.d.ts.map +1 -0
- package/dist/llm/WikiLLM.js +46 -0
- package/dist/llm/WikiLLM.js.map +1 -0
- package/dist/llm/index.d.ts +3 -0
- package/dist/llm/index.d.ts.map +1 -0
- package/dist/llm/index.js +2 -0
- package/dist/llm/index.js.map +1 -0
- package/dist/models.d.ts +5 -0
- package/dist/models.d.ts.map +1 -0
- package/dist/models.js +54 -0
- package/dist/models.js.map +1 -0
- package/dist/search/WikiSearch.d.ts +14 -0
- package/dist/search/WikiSearch.d.ts.map +1 -0
- package/dist/search/WikiSearch.js +223 -0
- package/dist/search/WikiSearch.js.map +1 -0
- package/dist/search/index.d.ts +2 -0
- package/dist/search/index.d.ts.map +1 -0
- package/dist/search/index.js +2 -0
- package/dist/search/index.js.map +1 -0
- package/dist/store/WikiStore.d.ts +47 -0
- package/dist/store/WikiStore.d.ts.map +1 -0
- package/dist/store/WikiStore.js +301 -0
- package/dist/store/WikiStore.js.map +1 -0
- package/dist/store/index.d.ts +2 -0
- package/dist/store/index.d.ts.map +1 -0
- package/dist/store/index.js +2 -0
- package/dist/store/index.js.map +1 -0
- package/dist/types.d.ts +129 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +3 -0
- package/dist/types.js.map +1 -0
- package/dist/util/fs.d.ts +7 -0
- package/dist/util/fs.d.ts.map +1 -0
- package/dist/util/fs.js +36 -0
- package/dist/util/fs.js.map +1 -0
- package/dist/util/index.d.ts +3 -0
- package/dist/util/index.d.ts.map +1 -0
- package/dist/util/index.js +3 -0
- package/dist/util/index.js.map +1 -0
- package/dist/util/paths.d.ts +17 -0
- package/dist/util/paths.d.ts.map +1 -0
- package/dist/util/paths.js +31 -0
- package/dist/util/paths.js.map +1 -0
- package/package.json +34 -0
|
@@ -0,0 +1,81 @@
|
|
|
1
|
+
import { WikiStore } from "./store/index.js";
|
|
2
|
+
import { WikiSearch } from "./search/index.js";
|
|
3
|
+
import type { EngineConfig, SearchHit, SearchMode, FileEntry, RawChunk, WikiStatus, ModelInfo } from "./types.js";
|
|
4
|
+
export declare class WikiEngine {
|
|
5
|
+
readonly store: WikiStore;
|
|
6
|
+
readonly search: WikiSearch;
|
|
7
|
+
private embedder;
|
|
8
|
+
private llm;
|
|
9
|
+
constructor(config?: EngineConfig);
|
|
10
|
+
get sources(): string[];
|
|
11
|
+
addSource(absPath: string): boolean;
|
|
12
|
+
removeSource(target: string): string | null;
|
|
13
|
+
load(): Promise<{
|
|
14
|
+
files: number;
|
|
15
|
+
sources: number;
|
|
16
|
+
}>;
|
|
17
|
+
loadSource(absPath: string): Promise<number>;
|
|
18
|
+
search_(query: string, mode?: SearchMode): Promise<SearchHit[]>;
|
|
19
|
+
/** 创建 .md 条目 */
|
|
20
|
+
createEntry(sourceDir: string, relPath: string, title: string, tags?: string[], content?: string): string;
|
|
21
|
+
/** 读取条目全文 */
|
|
22
|
+
readEntry(relPath: string): {
|
|
23
|
+
entry: FileEntry;
|
|
24
|
+
content: string;
|
|
25
|
+
} | null;
|
|
26
|
+
/** 重命名(修改 frontmatter title) */
|
|
27
|
+
renameEntry(relPath: string, newTitle: string): boolean;
|
|
28
|
+
/** 移动文件 */
|
|
29
|
+
moveEntry(relPath: string, newRelPath: string): boolean;
|
|
30
|
+
/** 修改内容 */
|
|
31
|
+
modifyEntry(relPath: string, content: string): boolean;
|
|
32
|
+
get semanticEnabled(): boolean;
|
|
33
|
+
enableSemantic(modelId?: string): Promise<{
|
|
34
|
+
ok: boolean;
|
|
35
|
+
msg: string;
|
|
36
|
+
}>;
|
|
37
|
+
disableSemantic(): void;
|
|
38
|
+
generateEmbeddings(sourceDir?: string): Promise<{
|
|
39
|
+
embedded: number;
|
|
40
|
+
skipped: number;
|
|
41
|
+
}>;
|
|
42
|
+
/** 获取待编译的原始块 */
|
|
43
|
+
getRawChunks(sourceDir?: string, uncompiledOnly?: boolean): RawChunk[];
|
|
44
|
+
/** 获取编译 prompt(调用方自行调 LLM) */
|
|
45
|
+
getCompilePrompt(relPath: string): {
|
|
46
|
+
system: string;
|
|
47
|
+
user: string;
|
|
48
|
+
} | null;
|
|
49
|
+
/** 存储编译结果 */
|
|
50
|
+
storeCompiled(relPath: string, result: {
|
|
51
|
+
topic: string;
|
|
52
|
+
normalizedText: string;
|
|
53
|
+
concepts: string[];
|
|
54
|
+
aliases: string[];
|
|
55
|
+
}): void;
|
|
56
|
+
/** 编译状态查询 */
|
|
57
|
+
compileStatus(sourceDir?: string): {
|
|
58
|
+
total: number;
|
|
59
|
+
compiled: number;
|
|
60
|
+
uncompiled: string[];
|
|
61
|
+
};
|
|
62
|
+
get llmInfo(): {
|
|
63
|
+
apiBase: string;
|
|
64
|
+
model: string;
|
|
65
|
+
hasKey: boolean;
|
|
66
|
+
};
|
|
67
|
+
/** 编译单个文件(调 LLM + 存储结果) */
|
|
68
|
+
compileFile(relPath: string): Promise<{
|
|
69
|
+
ok: boolean;
|
|
70
|
+
msg: string;
|
|
71
|
+
}>;
|
|
72
|
+
/** 批量编译 */
|
|
73
|
+
compileAll(sourceDir?: string, limit?: number): Promise<{
|
|
74
|
+
compiled: number;
|
|
75
|
+
failed: number;
|
|
76
|
+
msgs: string[];
|
|
77
|
+
}>;
|
|
78
|
+
status(): WikiStatus;
|
|
79
|
+
listModels(): ModelInfo[];
|
|
80
|
+
}
|
|
81
|
+
//# sourceMappingURL=WikiEngine.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"WikiEngine.d.ts","sourceRoot":"","sources":["../src/WikiEngine.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,371 @@
|
|
|
1
|
+
// WikiEngine.ts — 协调层:组装 Store / Search / Embedder / Compiler
|
|
2
|
+
import { existsSync, renameSync, mkdirSync, writeFileSync } from "node:fs";
|
|
3
|
+
import { resolve, dirname } from "node:path";
|
|
4
|
+
import { createHash } from "node:crypto";
|
|
5
|
+
import { WikiStore } from "./store/index.js";
|
|
6
|
+
import { WikiSearch } from "./search/index.js";
|
|
7
|
+
import { WikiEmbedder } from "./embed/index.js";
|
|
8
|
+
import { defaultModel, findModel } from "./models.js";
|
|
9
|
+
import { chunkByHeadings, preprocess, buildEmbeddingText, COMPILE_SYSTEM_PROMPT, buildCompilePrompt, parseCompileResult, getCompileStats, markCompiled } from "./compile/index.js";
|
|
10
|
+
import { WikiLLM } from "./llm/index.js";
|
|
11
|
+
function defaultBasePath() {
|
|
12
|
+
const home = process.env.HOME || process.env.USERPROFILE || process.cwd();
|
|
13
|
+
return `${home}/.Pwiki`;
|
|
14
|
+
}
|
|
15
|
+
export class WikiEngine {
|
|
16
|
+
store;
|
|
17
|
+
search;
|
|
18
|
+
embedder;
|
|
19
|
+
llm;
|
|
20
|
+
constructor(config = {}) {
|
|
21
|
+
const basePath = config.basePath ?? defaultBasePath();
|
|
22
|
+
const modelId = config.modelId ?? defaultModel().id;
|
|
23
|
+
const model = findModel(modelId) ?? defaultModel();
|
|
24
|
+
this.store = new WikiStore(basePath);
|
|
25
|
+
this.embedder = new WikiEmbedder(model, this.store.paths.modelsDir);
|
|
26
|
+
this.search = new WikiSearch(this.store, (text) => this.embedder.embed(text));
|
|
27
|
+
this.llm = new WikiLLM({ apiBase: this.store.config.llmApiBase, apiKey: this.store.config.llmApiKey, model: this.store.config.llmModel });
|
|
28
|
+
// 如果 config.json 已有 semantic=true,自动准备 embedder
|
|
29
|
+
if (this.store.config.semantic) {
|
|
30
|
+
this.embedder.init().catch(() => { });
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
// ==========================================================================
|
|
34
|
+
// 数据源
|
|
35
|
+
// ==========================================================================
|
|
36
|
+
get sources() { return this.store.config.sources; }
|
|
37
|
+
addSource(absPath) {
|
|
38
|
+
return this.store.addSource(absPath);
|
|
39
|
+
}
|
|
40
|
+
removeSource(target) {
|
|
41
|
+
return this.store.removeSource(target);
|
|
42
|
+
}
|
|
43
|
+
// ==========================================================================
|
|
44
|
+
// 扫描 + 索引
|
|
45
|
+
// ==========================================================================
|
|
46
|
+
async load() {
|
|
47
|
+
const sources = this.store.config.sources;
|
|
48
|
+
let totalFiles = 0;
|
|
49
|
+
for (const src of sources) {
|
|
50
|
+
const entries = await this.store.scanDir(src);
|
|
51
|
+
this.store.setEntries(entries);
|
|
52
|
+
totalFiles += entries.length;
|
|
53
|
+
}
|
|
54
|
+
return { files: totalFiles, sources: sources.length };
|
|
55
|
+
}
|
|
56
|
+
async loadSource(absPath) {
|
|
57
|
+
const entries = await this.store.scanDir(absPath);
|
|
58
|
+
this.store.setEntries(entries);
|
|
59
|
+
return entries.length;
|
|
60
|
+
}
|
|
61
|
+
// ==========================================================================
|
|
62
|
+
// 搜索
|
|
63
|
+
// ==========================================================================
|
|
64
|
+
async search_(query, mode = "keyword") {
|
|
65
|
+
return this.search.search(query, mode);
|
|
66
|
+
}
|
|
67
|
+
// ==========================================================================
|
|
68
|
+
// 条目 CRUD
|
|
69
|
+
// ==========================================================================
|
|
70
|
+
/** 创建 .md 条目 */
|
|
71
|
+
createEntry(sourceDir, relPath, title, tags = [], content = "") {
|
|
72
|
+
const absPath = resolve(sourceDir, relPath);
|
|
73
|
+
if (existsSync(absPath))
|
|
74
|
+
return `已存在: ${absPath}`;
|
|
75
|
+
// 确保 .md 后缀
|
|
76
|
+
const finalPath = relPath.endsWith(".md") ? relPath : `${relPath}.md`;
|
|
77
|
+
const finalAbs = resolve(sourceDir, finalPath);
|
|
78
|
+
const fm = [
|
|
79
|
+
"---",
|
|
80
|
+
`title: ${title}`,
|
|
81
|
+
`tags: [${tags.join(", ")}]`,
|
|
82
|
+
`created: ${new Date().toISOString()}`,
|
|
83
|
+
"---", "",
|
|
84
|
+
].join("\n");
|
|
85
|
+
mkdirSync(dirname(finalAbs), { recursive: true });
|
|
86
|
+
writeFileSync(finalAbs, fm + content, "utf-8");
|
|
87
|
+
// 更新索引
|
|
88
|
+
const entry = {
|
|
89
|
+
title, tags, sourceDir,
|
|
90
|
+
relPath: finalPath.replace(/\\/g, "/"),
|
|
91
|
+
mtime: new Date().toISOString(),
|
|
92
|
+
};
|
|
93
|
+
this.store.setEntries([entry]);
|
|
94
|
+
this.store.setContent(entry.relPath, fm + content);
|
|
95
|
+
return entry.relPath;
|
|
96
|
+
}
|
|
97
|
+
/** 读取条目全文 */
|
|
98
|
+
readEntry(relPath) {
|
|
99
|
+
const entry = this.store.getEntry(relPath);
|
|
100
|
+
if (!entry)
|
|
101
|
+
return null;
|
|
102
|
+
const content = this.store.getContent(relPath);
|
|
103
|
+
if (!content)
|
|
104
|
+
return null;
|
|
105
|
+
return { entry, content };
|
|
106
|
+
}
|
|
107
|
+
/** 重命名(修改 frontmatter title) */
|
|
108
|
+
renameEntry(relPath, newTitle) {
|
|
109
|
+
const entry = this.store.getEntry(relPath);
|
|
110
|
+
const content = this.store.getContent(relPath);
|
|
111
|
+
if (!entry || !content)
|
|
112
|
+
return false;
|
|
113
|
+
const updated = content.replace(/^(title:\s*).+$/m, `$1${newTitle}`);
|
|
114
|
+
// 写文件
|
|
115
|
+
const absPath = resolve(entry.sourceDir, relPath);
|
|
116
|
+
writeFileSync(absPath, updated, "utf-8");
|
|
117
|
+
// 更新索引
|
|
118
|
+
entry.title = newTitle;
|
|
119
|
+
entry.mtime = new Date().toISOString();
|
|
120
|
+
this.store.setEntries([entry]);
|
|
121
|
+
this.store.setContent(relPath, updated);
|
|
122
|
+
return true;
|
|
123
|
+
}
|
|
124
|
+
/** 移动文件 */
|
|
125
|
+
moveEntry(relPath, newRelPath) {
|
|
126
|
+
const entry = this.store.getEntry(relPath);
|
|
127
|
+
if (!entry)
|
|
128
|
+
return false;
|
|
129
|
+
const oldAbs = resolve(entry.sourceDir, relPath);
|
|
130
|
+
const newAbs = resolve(entry.sourceDir, newRelPath);
|
|
131
|
+
if (existsSync(newAbs))
|
|
132
|
+
return false;
|
|
133
|
+
mkdirSync(dirname(newAbs), { recursive: true });
|
|
134
|
+
renameSync(oldAbs, newAbs);
|
|
135
|
+
const newEntry = { ...entry, relPath: newRelPath, mtime: new Date().toISOString() };
|
|
136
|
+
this.store.removeEntry(relPath);
|
|
137
|
+
this.store.setEntries([newEntry]);
|
|
138
|
+
// 迁移向量
|
|
139
|
+
const vec = this.store.getEmbedding(relPath);
|
|
140
|
+
if (vec) {
|
|
141
|
+
this.store.setSingleEmbedding(newRelPath, vec);
|
|
142
|
+
this.store.removeEmbeddingsByPath(relPath);
|
|
143
|
+
this.store.flushVectors();
|
|
144
|
+
}
|
|
145
|
+
return true;
|
|
146
|
+
}
|
|
147
|
+
/** 修改内容 */
|
|
148
|
+
modifyEntry(relPath, content) {
|
|
149
|
+
const entry = this.store.getEntry(relPath);
|
|
150
|
+
if (!entry)
|
|
151
|
+
return false;
|
|
152
|
+
const absPath = resolve(entry.sourceDir, relPath);
|
|
153
|
+
writeFileSync(absPath, content, "utf-8");
|
|
154
|
+
entry.mtime = new Date().toISOString();
|
|
155
|
+
this.store.setEntries([entry]);
|
|
156
|
+
this.store.setContent(relPath, content);
|
|
157
|
+
return true;
|
|
158
|
+
}
|
|
159
|
+
// ==========================================================================
|
|
160
|
+
// 语义搜索控制
|
|
161
|
+
// ==========================================================================
|
|
162
|
+
get semanticEnabled() { return this.store.config.semantic; }
|
|
163
|
+
async enableSemantic(modelId) {
|
|
164
|
+
if (modelId) {
|
|
165
|
+
const m = findModel(modelId);
|
|
166
|
+
if (!m)
|
|
167
|
+
return { ok: false, msg: `未知模型: ${modelId}` };
|
|
168
|
+
this.embedder.switchModel(m);
|
|
169
|
+
this.store.saveConfig({ model: m.id });
|
|
170
|
+
}
|
|
171
|
+
const ok = await this.embedder.init();
|
|
172
|
+
if (!ok)
|
|
173
|
+
return { ok: false, msg: `初始化失败: ${this.embedder.error}` };
|
|
174
|
+
this.store.saveConfig({ semantic: true });
|
|
175
|
+
return { ok: true, msg: `语义搜索已开启。模型: ${this.embedder.modelInfo.name}。来源: ${this.embedder.source}` };
|
|
176
|
+
}
|
|
177
|
+
disableSemantic() {
|
|
178
|
+
this.store.saveConfig({ semantic: false });
|
|
179
|
+
}
|
|
180
|
+
// ==========================================================================
|
|
181
|
+
// 向量生成
|
|
182
|
+
// ==========================================================================
|
|
183
|
+
async generateEmbeddings(sourceDir) {
|
|
184
|
+
if (!this.embedder.ready)
|
|
185
|
+
await this.embedder.init();
|
|
186
|
+
if (!this.embedder.ready)
|
|
187
|
+
throw new Error(`Embedder 未就绪: ${this.embedder.error}`);
|
|
188
|
+
const entries = Object.values(this.store.entries).filter(e => !sourceDir || e.sourceDir === sourceDir);
|
|
189
|
+
let embedded = 0, skipped = 0;
|
|
190
|
+
for (const entry of entries) {
|
|
191
|
+
const content = this.store.getContent(entry.relPath);
|
|
192
|
+
if (!content) {
|
|
193
|
+
skipped++;
|
|
194
|
+
continue;
|
|
195
|
+
}
|
|
196
|
+
const mft = this.store.getManifestEntry(entry.relPath);
|
|
197
|
+
const md5 = md5Hash(content);
|
|
198
|
+
if (mft?.embedded && mft.md5 === md5) {
|
|
199
|
+
skipped++;
|
|
200
|
+
continue;
|
|
201
|
+
}
|
|
202
|
+
const chunks = chunkByHeadings(content, entry.relPath);
|
|
203
|
+
if (chunks.length <= 1) {
|
|
204
|
+
// 单块文件:直接嵌入全文
|
|
205
|
+
const vec = await this.embedder.embed(content.slice(0, 800));
|
|
206
|
+
this.store.setSingleEmbedding(entry.relPath, vec);
|
|
207
|
+
}
|
|
208
|
+
else {
|
|
209
|
+
// 多块文件:逐块嵌入
|
|
210
|
+
for (const chunk of chunks) {
|
|
211
|
+
const pre = preprocess(chunk.text, chunk.heading, chunk.level);
|
|
212
|
+
const embedText = buildEmbeddingText(chunk.text, pre);
|
|
213
|
+
const vec = await this.embedder.embed(embedText);
|
|
214
|
+
this.store.setSingleEmbedding(chunk.key, vec);
|
|
215
|
+
this.store.setChunkMeta(chunk.key, {
|
|
216
|
+
heading: chunk.heading, level: chunk.level,
|
|
217
|
+
...pre,
|
|
218
|
+
});
|
|
219
|
+
}
|
|
220
|
+
}
|
|
221
|
+
// 更新 manifest
|
|
222
|
+
this.store.setManifestEntry(entry.relPath, {
|
|
223
|
+
md5, size: content.length, chunks: chunks.length,
|
|
224
|
+
compiled: mft?.compiled ?? false,
|
|
225
|
+
embedded: true,
|
|
226
|
+
updatedAt: new Date().toISOString(),
|
|
227
|
+
});
|
|
228
|
+
embedded++;
|
|
229
|
+
}
|
|
230
|
+
this.store.flushVectors();
|
|
231
|
+
this.store.vectors.model = this.embedder.modelInfo.hfRepo;
|
|
232
|
+
this.store.vectors.dim = this.embedder.modelInfo.dim;
|
|
233
|
+
this.store.flushVectors();
|
|
234
|
+
return { embedded, skipped };
|
|
235
|
+
}
|
|
236
|
+
// ==========================================================================
|
|
237
|
+
// LLM 编译
|
|
238
|
+
// ==========================================================================
|
|
239
|
+
/** 获取待编译的原始块 */
|
|
240
|
+
getRawChunks(sourceDir, uncompiledOnly = true) {
|
|
241
|
+
const entries = Object.values(this.store.entries).filter(e => !sourceDir || e.sourceDir === sourceDir);
|
|
242
|
+
const result = [];
|
|
243
|
+
for (const entry of entries) {
|
|
244
|
+
if (uncompiledOnly) {
|
|
245
|
+
const mft = this.store.getManifestEntry(entry.relPath);
|
|
246
|
+
if (mft?.compiled)
|
|
247
|
+
continue;
|
|
248
|
+
}
|
|
249
|
+
const content = this.store.getContent(entry.relPath);
|
|
250
|
+
if (!content)
|
|
251
|
+
continue;
|
|
252
|
+
const chunks = chunkByHeadings(content, entry.relPath);
|
|
253
|
+
for (const chunk of chunks) {
|
|
254
|
+
const key = chunk.key;
|
|
255
|
+
result.push({
|
|
256
|
+
key, relPath: entry.relPath,
|
|
257
|
+
heading: chunk.heading,
|
|
258
|
+
rawText: chunk.text,
|
|
259
|
+
compiled: !!this.store.getChunkMeta(key)?.topic,
|
|
260
|
+
});
|
|
261
|
+
}
|
|
262
|
+
}
|
|
263
|
+
return result;
|
|
264
|
+
}
|
|
265
|
+
/** 获取编译 prompt(调用方自行调 LLM) */
|
|
266
|
+
getCompilePrompt(relPath) {
|
|
267
|
+
const content = this.store.getContent(relPath);
|
|
268
|
+
if (!content)
|
|
269
|
+
return null;
|
|
270
|
+
const chunks = chunkByHeadings(content, relPath);
|
|
271
|
+
if (chunks.length === 0)
|
|
272
|
+
return null;
|
|
273
|
+
// 合并为单文件 prompt
|
|
274
|
+
const texts = chunks.map(c => `### ${c.heading}\n${c.text}`).join("\n\n");
|
|
275
|
+
return {
|
|
276
|
+
system: COMPILE_SYSTEM_PROMPT,
|
|
277
|
+
user: buildCompilePrompt(relPath, texts, chunks[0].heading),
|
|
278
|
+
};
|
|
279
|
+
}
|
|
280
|
+
/** 存储编译结果 */
|
|
281
|
+
storeCompiled(relPath, result) {
|
|
282
|
+
const content = this.store.getContent(relPath);
|
|
283
|
+
const md5 = content ? md5Hash(content) : "";
|
|
284
|
+
// 存储 compiled record
|
|
285
|
+
const record = {
|
|
286
|
+
path: relPath,
|
|
287
|
+
compiledAt: new Date().toISOString(),
|
|
288
|
+
sourceMD5: md5,
|
|
289
|
+
model: "llm",
|
|
290
|
+
...result,
|
|
291
|
+
embeddingText: buildEmbeddingText(result.normalizedText, { topic: result.topic, concepts: result.concepts, aliases: result.aliases }),
|
|
292
|
+
};
|
|
293
|
+
this.store.setCompiled(relPath, record);
|
|
294
|
+
// 存储 LLM 块元数据
|
|
295
|
+
this.store.setChunkMeta(`${relPath}###llm`, {
|
|
296
|
+
heading: "(file-level)",
|
|
297
|
+
level: 0,
|
|
298
|
+
topic: result.topic,
|
|
299
|
+
summary: result.normalizedText.slice(0, 200),
|
|
300
|
+
concepts: result.concepts,
|
|
301
|
+
aliases: result.aliases,
|
|
302
|
+
});
|
|
303
|
+
markCompiled(this.store, relPath);
|
|
304
|
+
}
|
|
305
|
+
/** 编译状态查询 */
|
|
306
|
+
compileStatus(sourceDir) {
|
|
307
|
+
return getCompileStats(this.store);
|
|
308
|
+
}
|
|
309
|
+
// ==========================================================================
|
|
310
|
+
// 状态
|
|
311
|
+
// ==========================================================================
|
|
312
|
+
// ==========================================================================
|
|
313
|
+
// LLM 编译(内置调用)
|
|
314
|
+
// ==========================================================================
|
|
315
|
+
get llmInfo() { return this.llm.info; }
|
|
316
|
+
/** 编译单个文件(调 LLM + 存储结果) */
|
|
317
|
+
async compileFile(relPath) {
|
|
318
|
+
const content = this.store.getContent(relPath);
|
|
319
|
+
if (!content)
|
|
320
|
+
return { ok: false, msg: `Not found: ${relPath}` };
|
|
321
|
+
const chunks = chunkByHeadings(content, relPath);
|
|
322
|
+
if (chunks.length === 0)
|
|
323
|
+
return { ok: false, msg: `No chunks: ${relPath}` };
|
|
324
|
+
const texts = chunks.map(c => `### ${c.heading}\n${c.text}`).join("\n\n");
|
|
325
|
+
const userPrompt = buildCompilePrompt(relPath, texts, chunks[0].heading);
|
|
326
|
+
try {
|
|
327
|
+
const raw = await this.llm.chatJson(COMPILE_SYSTEM_PROMPT, userPrompt);
|
|
328
|
+
const result = parseCompileResult(raw);
|
|
329
|
+
if (!result)
|
|
330
|
+
return { ok: false, msg: `Invalid JSON: ${raw.slice(0, 200)}` };
|
|
331
|
+
this.storeCompiled(relPath, result);
|
|
332
|
+
return { ok: true, msg: `Compiled: ${relPath} -> "${result.topic}"` };
|
|
333
|
+
}
|
|
334
|
+
catch (e) {
|
|
335
|
+
return { ok: false, msg: `LLM error: ${e.message}` };
|
|
336
|
+
}
|
|
337
|
+
}
|
|
338
|
+
/** 批量编译 */
|
|
339
|
+
async compileAll(sourceDir, limit = 10) {
|
|
340
|
+
const stats = getCompileStats(this.store);
|
|
341
|
+
const targets = sourceDir
|
|
342
|
+
? stats.uncompiled.filter(p => this.store.getEntry(p)?.sourceDir === sourceDir)
|
|
343
|
+
: stats.uncompiled;
|
|
344
|
+
const batch = targets.slice(0, limit);
|
|
345
|
+
let compiled = 0, failed = 0;
|
|
346
|
+
const msgs = [];
|
|
347
|
+
for (const path of batch) {
|
|
348
|
+
const r = await this.compileFile(path);
|
|
349
|
+
if (r.ok) {
|
|
350
|
+
compiled++;
|
|
351
|
+
msgs.push(` ${r.msg}`);
|
|
352
|
+
}
|
|
353
|
+
else {
|
|
354
|
+
failed++;
|
|
355
|
+
msgs.push(` FAIL: ${r.msg}`);
|
|
356
|
+
}
|
|
357
|
+
}
|
|
358
|
+
return { compiled, failed, msgs };
|
|
359
|
+
}
|
|
360
|
+
status() {
|
|
361
|
+
return this.store.status();
|
|
362
|
+
}
|
|
363
|
+
listModels() {
|
|
364
|
+
const { MODELS } = require("./models.js");
|
|
365
|
+
return MODELS;
|
|
366
|
+
}
|
|
367
|
+
}
|
|
368
|
+
function md5Hash(content) {
|
|
369
|
+
return createHash("md5").update(content).digest("hex");
|
|
370
|
+
}
|
|
371
|
+
//# sourceMappingURL=WikiEngine.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"WikiEngine.js","sourceRoot":"","sources":["../src/WikiEngine.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
import type { WikiStore } from "../store/index.js";
|
|
2
|
+
import type { ChunkMeta } from "../types.js";
|
|
3
|
+
export declare function extractSummary(raw: string, maxLen?: number): string;
|
|
4
|
+
export interface HeadingChunk {
|
|
5
|
+
key: string;
|
|
6
|
+
relPath: string;
|
|
7
|
+
heading: string;
|
|
8
|
+
level: number;
|
|
9
|
+
text: string;
|
|
10
|
+
}
|
|
11
|
+
/** 按 heading 将 markdown 切分为块 */
|
|
12
|
+
export declare function chunkByHeadings(content: string, relPath: string, maxEmbedLen?: number): HeadingChunk[];
|
|
13
|
+
/** 推断 chunkType */
|
|
14
|
+
export declare function inferChunkType(text: string, heading: string): string;
|
|
15
|
+
/** 推断 contentClass */
|
|
16
|
+
export declare function inferContentClass(text: string): string;
|
|
17
|
+
/** 推断 importance (0-1) */
|
|
18
|
+
export declare function inferImportance(text: string, heading: string): number;
|
|
19
|
+
/** 生成关键词(简单分词) */
|
|
20
|
+
export declare function extractKeywords(text: string): string[];
|
|
21
|
+
/** 预处理一个块,生成程序可推断的 ChunkMeta 字段 */
|
|
22
|
+
export declare function preprocess(text: string, heading: string, level: number): Partial<ChunkMeta>;
|
|
23
|
+
export declare const COMPILE_SYSTEM_PROMPT = "\u4F60\u662F\u4E00\u4E2A\"\u77E5\u8BC6\u8BED\u4E49\u7F16\u8BD1\u5668\"\u3002\n\u4F60\u7684\u4EFB\u52A1\u4E0D\u662F\u603B\u7ED3\u5185\u5BB9\u3002\n\u4F60\u7684\u4EFB\u52A1\u662F\uFF1A\u5C06\u4EBA\u7C7B\u968F\u624B\u8BB0\u5F55\u7684\u975E\u7ED3\u6784\u5316\u7B14\u8BB0\uFF0C\u8F6C\u6362\u4E3A\u9002\u5408\u673A\u5668\u8BED\u4E49\u7D22\u5F15\u3001\u6982\u5FF5\u68C0\u7D22\u3001\u77E5\u8BC6\u805A\u7C7B\u3001\u957F\u671F\u6F14\u5316\u7684\"\u8BA4\u77E5\u77E5\u8BC6\u5355\u5143\"\u3002\n\u6838\u5FC3\u539F\u5219\uFF1A\n1. \u4FDD\u7559\u539F\u59CB\u4FE1\u606F \u2014 \u4E0D\u5220\u6280\u672F\u7EC6\u8282\n2. \u4E0D\u6539\u53D8\u539F\u610F \u2014 \u53EA\u89C4\u8303\u5316\u8868\u8FBE\n3. \u8865\u5168\u9690\u5F0F\u8868\u8FBE \u2014 \u8865\u5145\u7701\u7565\u7684\u4E3B\u8BED\u3001\u5C55\u5F00\u7F29\u5199\n4. \u7EDF\u4E00\u672F\u8BED \u2014 \u5C06\u540C\u4E49\u8868\u8FBE\u5F52\u4E00\n5. \u63D0\u53D6\u6838\u5FC3\u6982\u5FF5 \u2014 \u8BC6\u522B\u6280\u672F\u5173\u952E\u8BCD\n6. \u4FDD\u6301\u5355\u4E3B\u9898 \u2014 \u4E00\u4E2A chunk \u53EA\u63CF\u8FF0\u4E00\u4E2A\u8BA4\u77E5\u4E3B\u9898\n7. \u8F93\u51FA\u7ED3\u6784\u5316 JSON \u2014 \u4E25\u683C\u9075\u5FAA schema\n\u8F93\u51FA JSON schema:\n{\n \"topic\": \"string \u2014 \u6838\u5FC3\u4E3B\u9898\uFF08\u4E00\u53E5\u8BDD\uFF09\",\n \"normalizedText\": \"string \u2014 \u89C4\u8303\u5316\u540E\u7684\u6587\u672C\",\n \"concepts\": [\"string \u2014 \u6838\u5FC3\u6982\u5FF5\"],\n \"aliases\": [\"string \u2014 \u540C\u4E49\u8868\u8FBE\uFF08\u4E2D\u82F1\u5BF9\u7167\u3001\u7F29\u5199\u5C55\u5F00\uFF09\"]\n}";
|
|
24
|
+
export declare function buildCompilePrompt(relPath: string, rawText: string, heading: string): string;
|
|
25
|
+
export declare function parseCompileResult(raw: string): {
|
|
26
|
+
topic: string;
|
|
27
|
+
normalizedText: string;
|
|
28
|
+
concepts: string[];
|
|
29
|
+
aliases: string[];
|
|
30
|
+
} | null;
|
|
31
|
+
export declare function buildEmbeddingText(rawText: string, meta: Partial<ChunkMeta>, maxLen?: number): string;
|
|
32
|
+
export declare function getCompileStats(store: WikiStore): {
|
|
33
|
+
total: number;
|
|
34
|
+
compiled: number;
|
|
35
|
+
uncompiled: string[];
|
|
36
|
+
};
|
|
37
|
+
/** 标记文件为已编译 */
|
|
38
|
+
export declare function markCompiled(store: WikiStore, relPath: string): void;
|
|
39
|
+
//# sourceMappingURL=compiler.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"compiler.d.ts","sourceRoot":"","sources":["../../src/compile/compiler.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AACnD,OAAO,KAAK,EAAE,SAAS,EAAiB,MAAM,aAAa,CAAC;AAM5D,wBAAgB,cAAc,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,SAAM,GAAG,MAAM,CAchE;AAMD,MAAM,WAAW,YAAY;IAC3B,GAAG,EAAE,MAAM,CAAC;IACZ,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;CACd;AAED,gCAAgC;AAChC,wBAAgB,eAAe,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,WAAW,SAAM,GAAG,YAAY,EAAE,CAgCnG;AAMD,mBAAmB;AACnB,wBAAgB,cAAc,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,MAAM,CAapE;AAED,sBAAsB;AACtB,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAKtD;AAED,0BAA0B;AAC1B,wBAAgB,eAAe,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,MAAM,CAOrE;AAED,kBAAkB;AAClB,wBAAgB,eAAe,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,EAAE,CActD;AAED,mCAAmC;AACnC,wBAAgB,UAAU,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,SAAS,CAAC,CAS3F;AAMD,eAAO,MAAM,qBAAqB,2hDAiBhC,CAAC;AAEH,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,MAAM,CAQ5F;AAED,wBAAgB,kBAAkB,CAAC,GAAG,EAAE,MAAM,GAAG;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,cAAc,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,MAAM,EAAE,CAAC;IAAC,OAAO,EAAE,MAAM,EAAE,CAAA;CAAE,GAAG,IAAI,CAiBvI;AAMD,wBAAgB,kBAAkB,CAChC,OAAO,EAAE,MAAM,EACf,IAAI,EAAE,OAAO,CAAC,SAAS,CAAC,EACxB,MAAM,SAAM,GACX,MAAM,CAQR;AAMD,wBAAgB,eAAe,CAAC,KAAK,EAAE,SAAS,GAAG;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAC;IAAC,UAAU,EAAE,MAAM,EAAE,CAAA;CAAE,CAU3G;AAED,eAAe;AACf,wBAAgB,YAAY,CAAC,KAAK,EAAE,SAAS,EAAE,OAAO,EAAE,MAAM,GAAG,IAAI,CAWpE"}
|