dsh-data-domain-knowledge 0.1.0-alpha.10 → 0.1.0-alpha.11
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/README.md +33 -88
- package/lib/client.js +4139 -2458
- package/lib/doc-page.js +1 -1
- package/lib/pages.js +1985 -1035
- package/lib/types/axis-registry.d.ts +20 -0
- package/lib/types/axis-registry.d.ts.map +1 -1
- package/lib/types/axis-registry.js +114 -0
- package/lib/types/axis-registry.js.map +1 -1
- package/lib/types/card-organize.d.ts +5 -3
- package/lib/types/card-organize.d.ts.map +1 -1
- package/lib/types/card-organize.js +7 -4
- package/lib/types/card-organize.js.map +1 -1
- package/lib/types/convert/host.d.ts +6 -5
- package/lib/types/convert/host.d.ts.map +1 -1
- package/lib/types/convert/host.js +55 -18
- package/lib/types/convert/host.js.map +1 -1
- package/lib/types/diagnosis/store.d.ts +7 -2
- package/lib/types/diagnosis/store.d.ts.map +1 -1
- package/lib/types/diagnosis/store.js +37 -2
- package/lib/types/diagnosis/store.js.map +1 -1
- package/lib/types/diagnosis/types.d.ts +38 -0
- package/lib/types/diagnosis/types.d.ts.map +1 -1
- package/lib/types/events.d.ts +60 -0
- package/lib/types/events.d.ts.map +1 -0
- package/lib/types/events.js +2 -0
- package/lib/types/events.js.map +1 -0
- package/lib/types/extract-contract.js +21 -1
- package/lib/types/extract-contract.js.map +1 -1
- package/lib/types/extract-model.d.ts +3 -0
- package/lib/types/extract-model.d.ts.map +1 -1
- package/lib/types/extract-model.js.map +1 -1
- package/lib/types/index.d.ts.map +1 -1
- package/lib/types/index.js +231 -51
- package/lib/types/index.js.map +1 -1
- package/lib/types/intent/engine.d.ts +2 -0
- package/lib/types/intent/engine.d.ts.map +1 -1
- package/lib/types/intent/engine.js +12 -1
- package/lib/types/intent/engine.js.map +1 -1
- package/lib/types/intent/host.d.ts.map +1 -1
- package/lib/types/intent/host.js +10 -3
- package/lib/types/intent/host.js.map +1 -1
- package/lib/types/intent/scope.d.ts.map +1 -1
- package/lib/types/intent/scope.js +4 -0
- package/lib/types/intent/scope.js.map +1 -1
- package/lib/types/intent/tools.d.ts +1 -1
- package/lib/types/intent/tools.d.ts.map +1 -1
- package/lib/types/intent/tools.js +17 -6
- package/lib/types/intent/tools.js.map +1 -1
- package/lib/types/intent/types.d.ts +2 -0
- package/lib/types/intent/types.d.ts.map +1 -1
- package/lib/types/knowledge-bases.d.ts +5 -2
- package/lib/types/knowledge-bases.d.ts.map +1 -1
- package/lib/types/knowledge-bases.js +36 -1
- package/lib/types/knowledge-bases.js.map +1 -1
- package/lib/types/model-text.d.ts +3 -1
- package/lib/types/model-text.d.ts.map +1 -1
- package/lib/types/model-text.js +3 -27
- package/lib/types/model-text.js.map +1 -1
- package/lib/types/organize-contract.d.ts.map +1 -1
- package/lib/types/organize-contract.js +3 -1
- package/lib/types/organize-contract.js.map +1 -1
- package/lib/types/query-analysis.d.ts +13 -1
- package/lib/types/query-analysis.d.ts.map +1 -1
- package/lib/types/query-analysis.js +62 -6
- package/lib/types/query-analysis.js.map +1 -1
- package/lib/types/recall-rank.d.ts +3 -3
- package/lib/types/recall-rank.d.ts.map +1 -1
- package/lib/types/recall-rank.js +4 -4
- package/lib/types/recall-rank.js.map +1 -1
- package/lib/types/runtime.d.ts +111 -14
- package/lib/types/runtime.d.ts.map +1 -1
- package/lib/types/runtime.js +1203 -239
- package/lib/types/runtime.js.map +1 -1
- package/lib/types/settings-schema.d.ts +4 -2
- package/lib/types/settings-schema.d.ts.map +1 -1
- package/lib/types/settings-schema.js +2 -1
- package/lib/types/settings-schema.js.map +1 -1
- package/lib/types/settings-volatile.d.ts +3 -3
- package/lib/types/settings-volatile.js +3 -3
- package/lib/types/store/knowledge-db.d.ts +8 -0
- package/lib/types/store/knowledge-db.d.ts.map +1 -1
- package/lib/types/store/knowledge-db.js +93 -3
- package/lib/types/store/knowledge-db.js.map +1 -1
- package/lib/types/types.d.ts +41 -4
- package/lib/types/types.d.ts.map +1 -1
- package/lib/types/types.js +3 -1
- package/lib/types/types.js.map +1 -1
- package/lib/types/wiki-materialize.d.ts +4 -0
- package/lib/types/wiki-materialize.d.ts.map +1 -1
- package/lib/types/wiki-materialize.js +34 -8
- package/lib/types/wiki-materialize.js.map +1 -1
- package/lib/types/wiki-trial-types.d.ts +80 -0
- package/lib/types/wiki-trial-types.d.ts.map +1 -1
- package/lib/types/wiki-trial.d.ts +28 -12
- package/lib/types/wiki-trial.d.ts.map +1 -1
- package/lib/types/wiki-trial.js +297 -76
- package/lib/types/wiki-trial.js.map +1 -1
- package/package.json +7 -1
- package/src/axis-registry.ts +123 -0
- package/src/card-organize.ts +8 -6
- package/src/client/AgentPresetCard.tsx +8 -17
- package/src/client/AttributionEventGuide.tsx +29 -28
- package/src/client/AxisRegistrySection.tsx +204 -164
- package/src/client/CompileDialogs.tsx +34 -27
- package/src/client/DeleteDocumentDialog.tsx +36 -5
- package/src/client/ExtractionTasksPage.tsx +189 -0
- package/src/client/KnowledgeBaseTab.tsx +156 -100
- package/src/client/KnowledgePanel.tsx +32 -30
- package/src/client/NodeSettings.tsx +55 -59
- package/src/client/PreviewSections.tsx +67 -30
- package/src/client/RecallPanel.tsx +34 -60
- package/src/client/TrialReportView.tsx +346 -214
- package/src/client/TypeDefinitionDrawer.tsx +126 -23
- package/src/client/WikiCardPreview.tsx +4 -6
- package/src/client/arch/model.ts +1 -1
- package/src/client/architecture.tsx +3 -4
- package/src/client/attribution/AttributionGraph.tsx +10 -6
- package/src/client/attribution/AttributionTab.tsx +99 -48
- package/src/client/attribution/EventView.tsx +98 -0
- package/src/client/attribution/StageChrome.tsx +34 -3
- package/src/client/attribution/graph-options.ts +9 -8
- package/src/client/attribution/model.ts +1 -1
- package/src/client/index.ts +41 -2
- package/src/client/pages.css +36 -6
- package/src/client/pages.tsx +7 -1
- package/src/client/styles.css +98 -0
- package/src/client/wiki-trial.ts +11 -2
- package/src/convert/host.ts +53 -21
- package/src/diagnosis/store.ts +42 -4
- package/src/diagnosis/types.ts +25 -0
- package/src/events.ts +45 -0
- package/src/extract-contract.ts +21 -1
- package/src/extract-model.ts +8 -1
- package/src/index.ts +229 -47
- package/src/intent/README.md +1 -1
- package/src/intent/engine.ts +11 -1
- package/src/intent/host.ts +10 -3
- package/src/intent/scope.ts +4 -0
- package/src/intent/tools.ts +18 -7
- package/src/intent/types.ts +2 -0
- package/src/knowledge-bases.ts +40 -4
- package/src/model-text.ts +8 -1
- package/src/organize-contract.ts +3 -1
- package/src/query-analysis.ts +68 -8
- package/src/recall-rank.ts +5 -5
- package/src/runtime.ts +1259 -238
- package/src/settings-schema.ts +2 -1
- package/src/settings-volatile.ts +3 -3
- package/src/store/knowledge-db.ts +97 -3
- package/src/types.ts +40 -5
- package/src/wiki-materialize.ts +37 -7
- package/src/wiki-trial-types.ts +76 -1
- package/src/wiki-trial.ts +322 -83
package/README.md
CHANGED
|
@@ -11,8 +11,7 @@
|
|
|
11
11
|
|
|
12
12
|
Tita Agent 的固定数据根目录是 `$DSH_HOME/tita-agent`(默认 `~/.dsh/tita-agent`)。
|
|
13
13
|
设置面板只展示这个目录并提供「打开目录」,不允许切换根路径;知识库、意图记录、记忆、
|
|
14
|
-
模型和 Python
|
|
15
|
-
`~/Desktop/titaagent` 与 `~/.tita-data-agent` 数据;旧数据需要用户自行处理。
|
|
14
|
+
模型和 Python 环境都从这里派生。
|
|
16
15
|
|
|
17
16
|
## 承载范围(五个视图)
|
|
18
17
|
|
|
@@ -27,8 +26,7 @@ Tita Agent 的固定数据根目录是 `$DSH_HOME/tita-agent`(默认 `~/.dsh/t
|
|
|
27
26
|
| `eval` | 评测 | 问题集格式(开发期能力,不注册运行时入口) |
|
|
28
27
|
|
|
29
28
|
意图的**会话审计留痕**落在 `<agentRoot>/intent/`:`intent.db` 保存当前记录与追加历史
|
|
30
|
-
(按 `sessionKey#turn`
|
|
31
|
-
`records.ndjson` 只做一次性迁移,不再继续写入。
|
|
29
|
+
(按 `sessionKey#turn` 读取时取当前版本,所以内存里「一轮一条」的语义不变)。
|
|
32
30
|
分类与 act 是代码内置的固定契约,不提供编辑入口。读接口 `/intent/store` 与 `/intent/overview` 读的是**留痕**:
|
|
33
31
|
引擎内存里那份有 600 秒 TTL,重启或隔一段时间回来不该让面板上的历史凭空消失。
|
|
34
32
|
|
|
@@ -39,7 +37,7 @@ Tita Agent 的固定数据根目录是 `$DSH_HOME/tita-agent`(默认 `~/.dsh/t
|
|
|
39
37
|
| 1 | SourceRaw | 原始可追溯文档:`knowledge.db` 的 `source` + `blob` | `allowSourceTruth` / `rootDir` |
|
|
40
38
|
| 2 | 编译 Compile | wiki:`knowledge.db` 的 `card`(**按 wiki 类型 schema 抽实体,直接入库**);wikiNotes:`derived.db` 的 `wiki_notes.json` | `extractCandidates` / `extractWithModel` / `wikiTypes` |
|
|
41
39
|
| 3 | 构建 Build | wikiNotes → 向量索引;wiki → `derived.db` 的 `knowledge_graph.json` | `embeddingProvider` / `embeddingModel` / `python` |
|
|
42
|
-
| 4 | 召回 Recall |
|
|
40
|
+
| 4 | 召回 Recall | 多路(坐标 + 关键词 + 向量)召回 wikiNotes,取 `recallTopK`(默认 10),再解析父级 wiki 与该 wiki 的 1 跳知识图谱 | `recallTopK` |
|
|
43
41
|
| 5 | 重排 Rerank | BERT cross-encoder 对候选 wikiNotes 精排,取 `contextTopN`(默认 5)组成 `context` | `contextTopN` / `rerankProvider` / `rerankModel` |
|
|
44
42
|
|
|
45
43
|
> 第 4、5 段在**界面上是同一栏**(知识库 → 召回重排)。它们在流水线上仍是两步,
|
|
@@ -93,24 +91,8 @@ SourceRaw → Knowledge → Wiki Card → Wiki Note → FTS / Vector / Rerank
|
|
|
93
91
|
|
|
94
92
|
因此,删除来源、合并 Knowledge、修改 Card 或重建检索索引时,都必须沿着这条依赖方向处理,不能直接把 Wiki Note 当成可编辑知识,也不能用 Card review 代替 Knowledge 验证。
|
|
95
93
|
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
> **0067(2026-10-06)**:转换的**原始输入**(那份 PDF / Word / HTML)搬进 `<库根>/source_raw/`,
|
|
99
|
-
> 位置记在 `source` 表的 `original_rel` / `original_sha256` / `original_bytes` 三列上。
|
|
100
|
-
> **知识库内不再有段目录**(原先的
|
|
101
|
-
> `01_source_raw` / `02_wiki` / `03_compiled` / `05_diagnosis` 由迁移导入后删除)。
|
|
102
|
-
> 「知识树能被用户直接读」由导出通道接住:`POST /knowledge/export`。
|
|
103
|
-
>
|
|
104
|
-
> 术语迁移:SourceRaw 曾叫 SourceRow / SourceTruth。磁盘目录 `01_source_raw`、工具名
|
|
105
|
-
> `add_source` / `query_source_truth`、HTTP `/knowledge/sources`、设置键 `allowSourceTruth`
|
|
106
|
-
> 与错误码 `SOURCE_TRUTH_DISABLED` 作为兼容名保留,语义等同 SourceRaw。
|
|
107
|
-
> 「编译 / 构建」是同一次 `rebuild()`:编译**按 wiki 类型 schema 抽实体**(模型优先、
|
|
108
|
-
> 规则兜底),判重后直接写 `02_wiki`;**wiki↔wiki 双向链接**与**分阶段重建**是设计目标,
|
|
109
|
-
> 图谱当前只有 `supported_by` 溯源边加规则抽出的 `relates_to`。
|
|
110
|
-
|
|
111
|
-
- 设置项**不再有独立入口**:它们挂在 Agent 概览架构图的对应节点上(SourceRaw → 收录开关与
|
|
112
|
-
知识库根目录;编译 → Schema;构建 → Embedding / Python;召回 → topK / 默认路线;
|
|
113
|
-
重排 → topN / reranker;意图与上下文 → 意图路由),每个节点只保存本节点字段。
|
|
94
|
+
- 知识库设置集中在侧边抽屉:数据位置、向量模型、检索与上下文。召回固定使用多路径融合;
|
|
95
|
+
低频设备、阈值和模型细节收在高级设置中。Agent 系统提示词常显,并链接到 preset 真源目录。
|
|
114
96
|
- **编译直接入库(0044)**:`rebuild_knowledge` 的 Pass 0 对指纹变了的来源做实体抽取,
|
|
115
97
|
按 `entityType:entityId` / `title` / `metadata.aliases` 三重索引判重 —— 命中已有卡片就把
|
|
116
98
|
新正文**追加**进去(不覆盖、不丢弃),没命中就新建。缺必填小节 / 字段的卡片**照常入库**,
|
|
@@ -156,7 +138,7 @@ SourceRaw → Knowledge → Wiki Card → Wiki Note → FTS / Vector / Rerank
|
|
|
156
138
|
这个概念)、`sources: [{id, resource, title, author, last_modified}]`(对网页就是那个页面
|
|
157
139
|
本身:地址、标题、作者、发布时间)。`source_id` / `external_id` / `created_at` /
|
|
158
140
|
`updated_at` / `metadata` / `lineage` 是我们的扩展键(OKF 明确允许,且要求消费者容忍
|
|
159
|
-
|
|
141
|
+
未知键)。
|
|
160
142
|
规范:<https://github.com/GoogleCloudPlatform/open-knowledge-format>(v0.2)。
|
|
161
143
|
- **召回组装按「卡片」而不是按「片段」**(0050):R1–R3 不变(多路召回 + RRF + 对候选池重排,
|
|
162
144
|
召回与重排的对象都是 wikiNotes),R4 改成四步 —— ① 取 notes 对应的 wiki 去重,一张卡片的等级
|
|
@@ -191,10 +173,10 @@ SourceRaw → Knowledge → Wiki Card → Wiki Note → FTS / Vector / Rerank
|
|
|
191
173
|
`JSON.stringify`,同一个 `undefined` 在那里无声无息,所以这个错只在工具调用上现形。
|
|
192
174
|
- 编译期一条 wiki 至少产出一条 note;正文按 `##`/`###` 分节且超过 800 字符时按节切分,
|
|
193
175
|
首条 note 的 `unitId` 保持 `<entityType>:<entityId>`,后续为 `<entityType>:<entityId>#<n>`,
|
|
194
|
-
每条 note 都带 `wikiId` 指回父级 wiki
|
|
176
|
+
每条 note 都带 `wikiId` 指回父级 wiki。
|
|
195
177
|
- `recall_knowledge` 返回 `hits`(重排后的 wikiNotes)、`context`(`{ note, wiki, graph }[]`)、
|
|
196
178
|
`wiki`、`graph`、`routes`、`recallMode`、`rerank`、`recallTopK`、`contextTopN`;入参 `top_k`
|
|
197
|
-
|
|
179
|
+
控制召回条数,`top_n` 控制进入上下文的条数,`mode` 覆盖默认召回路线,
|
|
198
180
|
`rerank: false` 可单次关闭重排。
|
|
199
181
|
- `rerankProvider` 默认 `bert-python`,模型默认 `BAAI/bge-reranker-base`
|
|
200
182
|
(存在 `~/.dsh/tita-agent/resource/models/bge-reranker-base` 时优先用本地目录)。重排在独立
|
|
@@ -211,8 +193,7 @@ bash scripts/setup-embedding.sh
|
|
|
211
193
|
|
|
212
194
|
脚本会把 Python 环境放到 `~/.dsh/tita-agent/resource/python`,把量化模型放到
|
|
213
195
|
`~/.dsh/tita-agent/resource/models/WeMM-Embedding-2B-Quantized`。新配置会自动发现这两个路径;
|
|
214
|
-
|
|
215
|
-
Tita Data Agent → Agent 概览 →「构建」节点的设置中确认:
|
|
196
|
+
设置位于 Tita Data Agent → Agent 概览 →「构建」节点:
|
|
216
197
|
|
|
217
198
|
- Provider:`WeMM Python(本地)`
|
|
218
199
|
- Python:`~/.dsh/tita-agent/resource/python/bin/python`
|
|
@@ -220,10 +201,8 @@ Tita Data Agent → Agent 概览 →「构建」节点的设置中确认:
|
|
|
220
201
|
- 维度:`1024`
|
|
221
202
|
- 设备:`自动(优先 MPS)`
|
|
222
203
|
|
|
223
|
-
知识库默认保存在 `~/.dsh/tita-agent/domain_knowledge/<库 id
|
|
224
|
-
|
|
225
|
-
`03_compiled` 会生成 `wiki_notes.json`、`knowledge_graph.json`、`wiki-index.md`、
|
|
226
|
-
`vector-manifest.json`、`vectors.binary` 和 `vectors.int8`。未修改的 wikiNote
|
|
204
|
+
知识库默认保存在 `~/.dsh/tita-agent/domain_knowledge/<库 id>`。点击「编译」后,
|
|
205
|
+
编译结果写入 `derived.db`。未修改的 wikiNote
|
|
227
206
|
会复用已有向量,只有新增或变更的 note 重新编码;编码与重排各自使用常驻 Python
|
|
228
207
|
worker(同一份 `src/python/embedding_worker.py`),避免每个请求重复加载模型。
|
|
229
208
|
|
|
@@ -271,8 +250,7 @@ pptx、xls、xlsx、odt、ods、odp、rtf、epub、csv 与文本层 PDF;另有
|
|
|
271
250
|
|
|
272
251
|
一个**知识库 = 独立配置 + 独立内容**(产品参照 WeKnora)。注册表持久化在
|
|
273
252
|
`<agentRoot>/resource/knowledge-bases.json`。
|
|
274
|
-
默认库 id 固定为 `default`,其 `rootDir` 固定为 `<agentRoot>/domain_knowledge/default
|
|
275
|
-
**不传 `kb` 的旧接口与旧工具一律作用于默认库,行为不变**。
|
|
253
|
+
默认库 id 固定为 `default`,其 `rootDir` 固定为 `<agentRoot>/domain_knowledge/default`。
|
|
276
254
|
|
|
277
255
|
```ts
|
|
278
256
|
interface KnowledgeBase { id; name; description; rootDir; isDefault; wikiTypes; createdAt; updatedAt; sourceCount; cardCount; noteCount; buildVersion }
|
|
@@ -282,7 +260,7 @@ interface KnowledgeBase { id; name; description; rootDir; isDefault; wikiTypes;
|
|
|
282
260
|
**计算字段**,由真实 runtime 重新统计并缓存进同一个 JSON,
|
|
283
261
|
HTTP `GET /knowledge/bases` 在返回前先刷新。
|
|
284
262
|
|
|
285
|
-
|
|
263
|
+
**Agent 数据根目录包含以下内容**:
|
|
286
264
|
|
|
287
265
|
| 段 | 装什么 | 删掉的后果 |
|
|
288
266
|
| --- | --- | --- |
|
|
@@ -299,51 +277,23 @@ HTTP `GET /knowledge/bases` 在返回前先刷新。
|
|
|
299
277
|
(同一句话在哪个知识库下说,理解方式不该变),所以它不分库。这样知识、记忆、意图三段
|
|
300
278
|
都是可以直接备份、直接 diff 的用户文件。
|
|
301
279
|
|
|
302
|
-
|
|
303
|
-
(后者搬去了 `memory/`)。
|
|
280
|
+
每个知识库的数据根目录为 `<agentRoot>/domain_knowledge/<知识库 id>/`:
|
|
304
281
|
|
|
305
|
-
|
|
|
282
|
+
| 文件或目录 | 内容 | 删除影响 |
|
|
306
283
|
| --- | --- | --- |
|
|
307
|
-
| `
|
|
308
|
-
| `
|
|
309
|
-
| `
|
|
310
|
-
|
|
311
|
-
|
|
312
|
-
`
|
|
313
|
-
落 `03_compiled/diagnosis_graph.json`。旧的 `05_diagnosis/` 撤销了;它里面的 `*.jsonl`
|
|
314
|
-
如果还在,角色是**只读的迁移输入与历史快照** —— 不再被写,但仍然读得出来(证据与根因
|
|
315
|
-
就从那里来),所以旧知识根不会因为这次改动而读不出内容。
|
|
316
|
-
|
|
317
|
-
schema 段已撤掉:它从建出来那天起就是一个**空目录**,分类注册表与 Wiki 类型注册表
|
|
318
|
-
一直住在 `<agentRoot>/resource/knowledge-bases.json`(那是配置,跟着根路径走)。
|
|
319
|
-
启动时会把空的那个目录删掉 —— **非空则保留**:那就不属于「没用的空文件夹」了,
|
|
320
|
-
删掉别人的文件比留一个空目录危险得多。
|
|
321
|
-
|
|
322
|
-
**文件名用标题(0051)。** `01_source_raw/阿里集团大数据建设OneData体系.md` —— `ls`
|
|
323
|
-
认得出、`grep` 文件名有用、`git diff` 看得出改的是哪份材料;`source_id`(`article:bc82…`)仍是
|
|
324
|
-
稳定身份,住在 front matter 里。三条配套规则:①标题里的路径不安全字符换成 `-`、截断到 120 字符、
|
|
325
|
-
只剩替换字符时退回 `source_id`;②**重名默认拒收**(`SOURCE_TITLE_DUPLICATED`,报错指出被谁占着,
|
|
326
|
-
改标题再来)—— 标题是来源的核心属性,两份不同的东西同名是要人处理的信号,不该由命名规则悄悄加后缀;
|
|
327
|
-
③确实要留两份同标题材料时显式传 `allow_duplicate_title: true`,落成 `<标题>-<内容哈希前 6 位>.md`
|
|
328
|
-
并回一条 warning。改名与迁移(老段名 `01_source_truth` → `01_source_raw`、文件名换成标题)在
|
|
329
|
-
`ensureLayout` 里一次性完成,**可重入**;存量正文里带老段名的图片引用不改写,解析器认两个段名。
|
|
330
|
-
|
|
331
|
-
`01_source_raw` 直接平铺来源文档:文件名就是标题,`source_id` 保留稳定身份,格式、作者、
|
|
332
|
-
外部链接等通用信息写在 front matter。目录结构不承担业务分类职责。
|
|
333
|
-
|
|
334
|
-
`resource/` 装模型、虚拟环境与 `knowledge-bases.json` —— 「这个 Agent 的全部磁盘足迹」
|
|
335
|
-
因此是一个目录,备份 / 迁移 / 整个删掉都只需要认一个路径。新版本直接使用
|
|
336
|
-
`<agentRoot>/resource/`,启动时不会读取、搬运或删除旧的用户目录。
|
|
337
|
-
旧的 `TITA_DATA_AGENT_HOME` 不再参与解析;如果当前根路径下没有本地资源,就使用
|
|
338
|
-
`python3` / HF 模型名作为兜底。
|
|
284
|
+
| `knowledge.db` | SourceRaw、Knowledge、Wiki Card 与版本记录 | 丢失知识真源 |
|
|
285
|
+
| `derived.db` | wikiNotes、知识图谱、检索索引 | 可重新编译 |
|
|
286
|
+
| `assets/` | 来源图片与附件 | 丢失对应素材 |
|
|
287
|
+
|
|
288
|
+
`resource/` 保存模型、Python 环境与 `knowledge-bases.json`。
|
|
289
|
+
如果资源目录没有本地 Python 或模型,就使用 `python3` 或 Hugging Face 模型名。
|
|
339
290
|
|
|
340
291
|
配置里 `python` / `embeddingModel` / `rerankModel` 三个字段的**默认值改成了空串 =
|
|
341
292
|
自动**:按 `<agentRoot>/resource/…` → 兜底名(`python3` / HF 模型名)的顺序解析。
|
|
342
293
|
设置面板用占位符显示解析后的真实路径,并在**资源不是当前 `resource/` 下的本地路径时
|
|
343
294
|
逐条告警**。
|
|
344
295
|
|
|
345
|
-
向量清单里记的模型名是 `local:<模型目录名>` ——
|
|
346
|
-
否则把模型搬一次就让整个索引判成「配置不匹配」而作废。
|
|
296
|
+
向量清单里记的模型名是 `local:<模型目录名>` —— **身份与位置解耦**。
|
|
347
297
|
|
|
348
298
|
**「文件类型 → 解析引擎」那张规则表已撤。** 它唯一被读的地方是浏览器决定
|
|
349
299
|
「这份文件直读还是送转换内核」,而那个判断现在只看扩展名本身(`DIRECT_READ_EXT`);
|
|
@@ -366,9 +316,11 @@ schema 段已撤掉:它从建出来那天起就是一个**空目录**,分类
|
|
|
366
316
|
```text
|
|
367
317
|
GET /knowledge/bases → { bases, defaultBaseId }
|
|
368
318
|
POST /knowledge/bases { name, description?, rootDir? } → { base }
|
|
369
|
-
|
|
319
|
+
GET /knowledge/models?kb=:id → DSH 编译模型目录与当前默认模型状态
|
|
320
|
+
PATCH /knowledge/bases/:id { name?, description?, extractionNote?, compileModel? } → { base }
|
|
370
321
|
DELETE /knowledge/bases/:id → { deleted: true }
|
|
371
322
|
GET /knowledge/documents?kb=&query=&limit=&offset= → { documents, total }
|
|
323
|
+
GET /knowledge/events?kb= → { events }
|
|
372
324
|
GET /knowledge/documents/:docId?kb= → { document }(正文截前 4000 字符)
|
|
373
325
|
GET /knowledge/documents/:docId/content?kb=&offset=&limit= → { text, offset, nextOffset, totalChars, eof }
|
|
374
326
|
GET /knowledge/documents/:docId/view?kb= → 独立整页(HTML,读全文)
|
|
@@ -454,20 +406,17 @@ Document ──▶ Knowledge × N ──▶ 坐标 (对象 × 动作 × 场景)
|
|
|
454
406
|
```
|
|
455
407
|
|
|
456
408
|
> **一个坐标最多一张卡**,这件事由 `knowledge.db` 的 `card.coordinate_key` **主键**兜着,
|
|
457
|
-
> 不是靠约定。`entity_id`
|
|
409
|
+
> 不是靠约定。`entity_id` 是版本历史和关联表使用的稳定别名。
|
|
458
410
|
|
|
459
411
|
四条要点:
|
|
460
412
|
|
|
461
413
|
- **卡片上记着它的坐标**(`card.object_id / action_id / scene_id` + front matter 的
|
|
462
|
-
`coordinate`)。坐标在这一层是**轴实体 id
|
|
463
|
-
|
|
464
|
-
|
|
465
|
-
|
|
466
|
-
- **不同坐标推同一个卡名 = 两张卡**(0069 之前它们会被按名字静默并成一张)。
|
|
467
|
-
撞名仍然报 warning,但它的后果从「身份错」退化成「标题重」。
|
|
414
|
+
`coordinate`)。坐标在这一层是**轴实体 id**,卡名只是显示。
|
|
415
|
+
- **判重的顺序是「先坐标,再认领,最后新建」**。如果按坐标未命中,就检查已有卡片能否认领,
|
|
416
|
+
最后才新建卡片。
|
|
417
|
+
- **不同坐标可以使用同一个卡名**。撞名会返回 warning。
|
|
468
418
|
- **落位落库**(`card_knowledge`,0063 §4.5):`section` / `ordinal` 是**关联**的属性。
|
|
469
|
-
|
|
470
|
-
0069 之前 `disputed`(「有相反的说法」)渲染进正文后与确定的事实长得一样。
|
|
419
|
+
召回命中**章节**之后,按这一节取它落位的知识(含四档状态与出处引文)。
|
|
471
420
|
|
|
472
421
|
**坐标不替代图。** 图是**从 Knowledge 派生的可选关系索引**,回答的是「通天塔依赖哪些表」
|
|
473
422
|
这类任意关系与反向关系;坐标回答的是「这条知识关于什么」。见
|
|
@@ -479,15 +428,11 @@ Document ──▶ Knowledge × N ──▶ 坐标 (对象 × 动作 × 场景)
|
|
|
479
428
|
(身份是 `(entity_kind, entity_id, version)`)+ 一行 `blob`(正文按 sha256 内容寻址)。
|
|
480
429
|
正文完全相同的重复写入**不产生新版本**,只更新 front matter 那类记账字段。
|
|
481
430
|
`listVersions` / `cardVersions` 返回新→旧,并把当前 head 标成 `isCurrent: true`;
|
|
482
|
-
`versionId`
|
|
483
|
-
拒掉)。
|
|
431
|
+
`versionId` 就是**整数版本号的字符串形式**。
|
|
484
432
|
|
|
485
433
|
**回滚 = 用历史版本的正文重新写一次**:回滚前会把当时的 head 再记一版,所以历史只增不减,
|
|
486
434
|
**回滚本身也可回滚**。回滚到当前版本是 no-op。
|
|
487
435
|
|
|
488
|
-
`memory/<库 id>/source-versions/` 与 `card-versions/` 是**旧的文件式快照**:仍然被读
|
|
489
|
-
(迁移把它们当历史导入),但**不再被写**。
|
|
490
|
-
|
|
491
436
|
### 起编译的语义(0066)
|
|
492
437
|
|
|
493
438
|
`POST /knowledge/rebuild` **立即返回** `202 { runId, queued }` —— 它只回答「这一趟的编号
|
|
@@ -497,7 +442,7 @@ Document ──▶ Knowledge × N ──▶ 坐标 (对象 × 动作 × 场景)
|
|
|
497
442
|
```jsonc
|
|
498
443
|
{ "progress": { "runId": "rebuild_…", "startedAt": "…", "finishedAt": "…",
|
|
499
444
|
"steps": [ /* 四段 */ ], "outcome": "索引 v21:…",
|
|
500
|
-
"report": { /*
|
|
445
|
+
"report": { /* RebuildReport */ } } }
|
|
501
446
|
```
|
|
502
447
|
|
|
503
448
|
`?runId=<编号>` 指名要哪一趟;不给编号时给**正在跑**的那一趟(没有在跑就给最近结束的那一趟)。
|