Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
30 commits
Select commit Hold shift + click to select a range
43abf0a
feat(knowledge): 新增知识库管理及用户旅程端到端测试支持
clark-fc Aug 5, 2026
9fc6434
Merge remote-tracking branch 'origin/main' into feat/iteration1-w1-fo…
clark-fc Aug 5, 2026
8ee2c37
test(knowledge): 添加多模态与表格型仓库 E2E 测试套件支持
clark-fc Aug 5, 2026
ef463e8
test(e2e): 优化检索结果标记召回判断并完善服务调优用例
clark-fc Aug 5, 2026
54da9aa
chore(deps): 更新pnpm锁文件及包覆盖版本
clark-fc Aug 5, 2026
e3bb5a7
test(commands): 添加知识库统计接口的E2E测试
clark-fc Aug 5, 2026
d9e8601
feat(knowledge): 支持上传目录路径并递归扫描文件
clark-fc Aug 5, 2026
99a3dba
Merge remote-tracking branch 'origin/main' into feat/iteration1-w1-fo…
clark-fc Aug 10, 2026
1d98528
fix(knowledge): 修正文档上传接口请求的字段名为 docIds
clark-fc Aug 10, 2026
ab766d4
test(commands): 添加知识文档列表的端到端测试步骤
clark-fc Aug 10, 2026
219d8be
test(e2e): 修正知识库删除测试中文件名匹配逻辑
clark-fc Aug 10, 2026
12e7a22
test(knowledge): 增加文档相关命令的独立读回验证
clark-fc Aug 10, 2026
e292b20
docs(knowledge): 添加知识库各类资源及操作命令手册
clark-fc Aug 10, 2026
1b568e8
test(knowledge): 补全知识库相关命令参数并增加E2E测试覆盖
clark-fc Aug 11, 2026
4343fc8
feat(core): 添加并统一管理 x-dashscope-openapisource 请求头
clark-fc Aug 11, 2026
8195914
test(auth): 添加 openApiSource 头和相关测试字段
clark-fc Aug 11, 2026
92a978a
fix(knowledge): 验证并限制查询时间范围为过去时间
clark-fc Aug 11, 2026
0369bd3
fix(knowledge): 修复内容文件读取时的编码和错误提示
clark-fc Aug 11, 2026
9bd8b60
refactor(knowledge-search): 移除对 query-history 功能的支持及相关代码
clark-fc Aug 11, 2026
2d5c49b
fix(knowledge): 优化quiet和format参数的输出逻辑
clark-fc Aug 11, 2026
cc51164
fix(knowledge): 优化导入任务轮询逻辑与失败信息展示
clark-fc Aug 13, 2026
aa38d5c
fix(commands): 修复知识库创建时请求ID未传递问题
clark-fc Aug 13, 2026
30f7525
docs(commands): 更新知识库分块命令中 --doc-id 的描述和注意事项
clark-fc Aug 13, 2026
b7a4efe
feat(speech): 支持同步Flash ASR模型和异步文件转录模型
clark-fc Aug 14, 2026
eb4f9af
fix(knowledge): 修正 getConnector 不返回 fileConnectorConfig 问题
clark-fc Aug 14, 2026
d5c4bd3
docs(knowledge): 优化知识库文档内容及CLI说明
clark-fc Aug 14, 2026
4086da5
docs(knowledge): 修改多处参数描述为“精确匹配”并完善错误处理说明
clark-fc Aug 14, 2026
70b5006
Merge remote-tracking branch 'origin/main' into feat/iteration1-w1-fo…
clark-fc Aug 17, 2026
e681263
feat(cli): 增加知识库全生命周期管理命令
clark-fc Aug 17, 2026
9450895
test(commands): 添加dry-run参数测试支持文件检测
clark-fc Aug 17, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
23 changes: 23 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,29 @@ The format follows [Keep a Changelog](https://keepachangelog.com/en/1.1.0/), and

[中文版](CHANGELOG.zh.md) · [README](README.md) · [Contributing](CONTRIBUTING.md)

## [1.16.0] - 2026-08-17

> Full knowledge-base lifecycle management arrives in the CLI: create and configure knowledge bases, upload documents, tune chunks, and deploy retrieval/Q&A services — all from `bl knowledge` and `kscli`.

### Added

- **Knowledge base management** — `bl knowledge create` / `list` / `info` / `update` / `delete` manage knowledge bases end to end; `bl knowledge stats` reports document counts and usage over a past time range.
- **Document management** — `bl knowledge doc upload` uploads local files or whole directories (recursive scan, skips unsupported formats and tool directories like `node_modules`); `doc list` / `status` / `tag` / `delete` cover the rest of the document lifecycle, and `doc import-oss` imports documents from OSS.
- **Retrieval / Q&A service management** — `bl knowledge service list` / `get` / `create` / `update` / `deploy` / `delete` / `copy` manage retrieval and Q&A service configurations, including deploying a draft to a published version.
- **Chunk management** — `bl knowledge chunk add` / `list` / `update` / `delete` inspect and fine-tune document chunks.
- **Data-center management** — `bl knowledge category list` / `add` / `delete`, `bl knowledge file list` / `get` / `delete`, and `bl knowledge collection create` / `get` manage categories, raw files, and data collections.
- **Service version selection for retrieval and chat** — `bl knowledge search` and `bl knowledge chat` accept `--agent-version` to call the beta (draft) config for debugging or a specific published version.
- **`kscli` parity** — all new knowledge commands are also available in Knowledge Studio CLI under shorter paths, e.g. `kscli kb list`, `kscli doc upload`, `kscli service deploy`.

### Removed

- **`bl knowledge search --query-history` removed** — the parameter never took effect; use `bl knowledge chat` with `--message` history for multi-turn scenarios.

### Internal

- Requests now carry a static OpenAPI source identification header for backend channel attribution.
- Added knowledge-base E2E suites, including five user-journey scenarios covering cold start, content ops, chunk tuning, service tuning, and the data plane.

## [1.15.1] - 2026-08-17

### Added
Expand Down
23 changes: 23 additions & 0 deletions CHANGELOG.zh.md
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,29 @@

[English](CHANGELOG.md) · [README](README.zh.md) · [参与贡献](CONTRIBUTING.zh.md)

## [1.16.0] - 2026-08-17

> CLI 迎来知识库全生命周期管理:从创建配置知识库、上传文档、调优切片,到部署检索/问答服务,均可通过 `bl knowledge` 与 `kscli` 完成。

### 新增

- **知识库管理** —— `bl knowledge create` / `list` / `info` / `update` / `delete` 覆盖知识库的完整生命周期;`bl knowledge stats` 查询指定过去时间段内的文档数量与用量统计。
- **文档管理** —— `bl knowledge doc upload` 支持上传本地文件或整个目录(递归扫描,自动跳过不支持的格式及 `node_modules` 等工具目录);`doc list` / `status` / `tag` / `delete` 覆盖文档生命周期其余环节,`doc import-oss` 支持从 OSS 导入文档。
- **检索 / 问答服务管理** —— `bl knowledge service list` / `get` / `create` / `update` / `deploy` / `delete` / `copy` 管理检索与问答服务配置,支持将草稿部署为正式版本。
- **切片管理** —— `bl knowledge chunk add` / `list` / `update` / `delete` 查看并精调文档切片。
- **数据中心管理** —— `bl knowledge category list` / `add` / `delete`、`bl knowledge file list` / `get` / `delete`、`bl knowledge collection create` / `get` 管理类目、原始文件与数据集。
- **检索与问答支持指定服务版本** —— `bl knowledge search` 和 `bl knowledge chat` 新增 `--agent-version`,可调用 beta(草稿)配置进行调试,或指定已发布的版本号。
- **`kscli` 同步支持** —— 全部新知识库命令在 Knowledge Studio CLI 中以更短路径提供,如 `kscli kb list`、`kscli doc upload`、`kscli service deploy`。

### 移除

- **移除 `bl knowledge search --query-history`** —— 该参数此前并未实际生效;多轮场景请改用 `bl knowledge chat` 并通过 `--message` 传入对话历史。

### 内部

- 请求现在携带静态的 OpenAPI 来源标识请求头,用于后端渠道归因。
- 新增知识库 E2E 测试套件,含冷启动、内容运营、切片调优、服务调优、数据面五条用户旅程场景。

## [1.15.1] - 2026-08-17

### 新增
Expand Down
11 changes: 10 additions & 1 deletion docs/agents/cli-e2e-tests.md
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@
| --------------- | ----------------------------------------------------- | ---------------------------------------------------------------------------------------- |
| **共享基建** | `packages/e2e` | gating、子进程 runner、output、globalSetup(`private`,不发布) |
| **命令 E2E** | `packages/commands/tests/e2e` | help、缺参、dry-run、live(gated);每用例最小路由 |
| **Journey E2E** | `packages/commands/tests/e2e/knowledge/journeys` | 用户旅程全链路(跨命令回路 + 标记词召回闭环),全部 live gated;见 `journeys/README.md` |
| **bl smoke** | `packages/cli/tests/e2e/registry.smoke.e2e.test.ts` | 产品 map 全部 path `--help`、分组 help、根 help |
| **kscli smoke** | `packages/kscli/tests/e2e/registry.smoke.e2e.test.ts` | 从 `kscli/src/commands.ts` 推导 path/分组;identity(`--version`、`search --help` path) |
| **runtime** | `packages/runtime/tests` | `proxy.e2e`、console 跨域 flag 拒绝 |
Expand All @@ -27,7 +28,7 @@

### commands E2E

- 路径:`packages/commands/tests/e2e/<kebab-topic>.e2e.test.ts`
- 路径:`packages/commands/tests/e2e/<kebab-topic>.e2e.test.ts`;knowledge 领域集中在 `packages/commands/tests/e2e/knowledge/` 子目录(新增 knowledge 命令测试放这里)
- 子进程:`runCommandE2e(routes, args)` from `./helpers.ts`(spawn `harness/main.ts`,`routes` 为本 topic 最小 path → export 映射)
- fixtures:`packages/commands/tests/e2e/fixtures/`
- 路由常量:`topic-routes.ts`(按 topic 维护,**非**全量产品 map)
Expand Down Expand Up @@ -78,6 +79,14 @@ describe.skipIf(<ready>)("e2e: <topic>(DashScope …)", () => {
3. **--dry-run**:实现在联网/上传/写盘**之前**返回;断言 stdout JSON/文本
4. **真实集成**:放在 skip 块**末尾**

## Journey 层(用户旅程全链路)

- **定位**:命令 E2E 验单命令契约;journey 验“用户带着目标跨命令走通回路”,结构性断言不在 journey 重复
- **闭环断言**:fixture 埋独特标记词,以“标记词能否被召回”判定回路闭合;硬断言 fail,软断言 `recordSoft` 落报告人工复核
- **日志产物**:`createJourneyReporter` 在 `test/output/<session>/` 落盘 `journey-report.md`、分步 stdout/stderr、`resources.json`(未清理资源警示)
- **入口**:`pnpm run test:journey`;旅程清单与约定见 [journeys/README.md](../../packages/commands/tests/e2e/knowledge/journeys/README.md)
- **新增命令时**:评估是否属于某条旅程的环节,是则纳入对应 journey 并更新 README 映射表

## 增删命令同步

- **commands export** + **topic 路由**(`topic-routes.ts` 或测试文件内 `ROUTES`)+ **产品 map**(`cli/commands.ts` / `kscli/commands.ts`)
Expand Down
248 changes: 248 additions & 0 deletions docs/knowledge/chunk.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,248 @@
# Chunk 管理命令手册

Chunk 是知识库中最小的检索单元。文档导入后自动切分为 chunk,也可以手动添加。

> **通用约定**(鉴权、Workspace ID、全局参数、输出格式、危险操作确认、Dry-run 模式)请参阅 [总览文档](../knowledge-cli-guide.md#通用约定)。

---

#### `bl knowledge chunk add`

直接向知识库添加 chunk。

**用法**

```bash
bl knowledge chunk add --index-id <id> (--content <text> | --field <k=v>) [flags]
```

**参数**

| 参数 | 类型 | 必填 | 说明 |
| ----------------------- | ------ | ---- | ------------------------------------------------------------------------------------------- |
| `--index-id <id>` | string | 是 | 知识库 ID |
| `--doc-id <id>` | string | 否² | 所属文档 ID;表格/图片知识库必填,文档型可选 |
| `--content <text>` | string | 否¹ | Chunk 正文,最多 6000 字符(文档型);与 `--content-file` 互斥 |
| `--content-file <path>` | string | 否¹ | 从 UTF-8 文本文件读取正文(`.md`/`.txt` 等);与 `--content` 互斥 |
| `--title <text>` | string | 否 | Chunk 标题,最多 50 字符(文档型) |
| `--image-url <url>` | array | 否 | Chunk 图片 URL(可重复,最多 10 个;文档型) |
| `--field <key=value>` | array | 否¹ | 任意字段键值对(可重复),用于表格/图片知识库,键为 Excel 列名;与 content/title/image 互斥 |

> ¹ `--content`/`--content-file`/`--title`/`--image-url` 与 `--field` 互斥,必须提供其一。
> ² 表格/图片知识库必须提供 `--doc-id`。文档型知识库可选。

**参数约束**

- `--field` 与 `--content`/`--content-file`/`--title`/`--image-url` 互斥
- `--content` 与 `--content-file` 互斥
- `--content` 最多 6000 字符
- `--title` 最多 50 字符
- `--image-url` 最多 10 个

**输出**

text 模式:

```
chunk created (pipeline: idx-xxx)
List chunks to find the new chunk id.
```

quiet 模式:无输出(成功退出码 0)。

json 模式:返回 API 原始响应(不含 chunk ID)。

**注意事项**

- 支持文档/表格/图片知识库;音视频知识库不支持。
- API 响应不含 chunk ID,需用 `chunk list` 查找新 chunk。
- API 幂等但限流 10 次/秒,批量脚本需自行节流。
- 表格/图片知识库用 `--field`,键为 Excel 列名,值为字符串。

**示例**

```bash
# 添加文本 chunk
bl knowledge chunk add --index-id idx-xxx --content "chunk text" --title intro --workspace-id ws-xxx

# 添加表格行(字段方式)
bl knowledge chunk add --index-id idx-xxx --field 列A=v1 --field 列B=v2

# 从文件读取内容
bl knowledge chunk add --index-id idx-xxx --content-file ./chunk.md --doc-id doc-xxx
```

---

#### `bl knowledge chunk list`

列出知识库中的 chunk,含内容和状态。

**用法**

```bash
bl knowledge chunk list --index-id <id> [flags]
```

**参数**

| 参数 | 类型 | 必填 | 说明 |
| ------------------- | ------ | ---- | ------------------------------ |
| `--index-id <id>` | string | 是 | 知识库 ID |
| `--doc-id <id>` | string | 否 | 只显示属于此文档的 chunk |
| `--page-number <n>` | number | 否 | 页码(默认:1) |
| `--page-size <n>` | number | 否 | 每页条数(默认:20,最大 100) |

**参数约束**

- `--page-size` 范围 1-100

**输出**

text 模式:

```
[chunk] chunk-xxx (doc: intro.md, doc_id: file-xxx) status: COMPLETED
chunk content preview (truncated at 200 chars)…
total: 1
```

> 如果 chunk 被排除检索,行尾会显示 `[excluded from retrieval]`。

quiet 模式:每行一个 `metadata._id`(chunk ID),用于管道传给 update/delete。

json 模式:返回 API 原始响应,`data.nodes[]` 含完整 chunk 数据。

**注意事项**

- 用 `metadata._id` 作为 chunk ID,`metadata.doc_id` 作为文档 ID,在 chunk update/delete 中使用。
- 页大小默认 20,最大 100。

**示例**

```bash
# 列出所有 chunk
bl knowledge chunk list --index-id idx-xxx --workspace-id ws-xxx

# 只看某文档的 chunk
bl knowledge chunk list --index-id idx-xxx --doc-id file-xxx --page-size 50
```

---

#### `bl knowledge chunk update`

更新 chunk 内容或切换其检索可见性。

**用法**

```bash
bl knowledge chunk update --index-id <id> --chunk-id <id> --doc-id <id> [flags]
```

**参数**

| 参数 | 类型 | 必填 | 说明 |
| ----------------------- | ------ | ---- | ------------------------------------------------------ |
| `--index-id <id>` | string | 是 | 知识库 ID |
| `--chunk-id <id>` | string | 是 | Chunk ID(`metadata._id`,来自 chunk list 输出) |
| `--doc-id <id>` | string | 是 | 所属文档 ID(`metadata.doc_id`,来自 chunk list 输出) |
| `--content <text>` | string | 否¹ | 新内容,10-6000 字符;与 `--content-file` 互斥 |
| `--content-file <path>` | string | 否¹ | 从 UTF-8 文本文件读取新内容 |
| `--title <text>` | string | 否 | Chunk 标题,0-50 字符(空字符串清除标题;不传则不变) |
| `--exclude` | switch | 否² | 将此 chunk 排除出检索 |
| `--include` | switch | 否² | 将此 chunk 恢复检索(默认行为) |

> ¹ `--content` 与 `--content-file` 互斥。
> ² `--exclude` 与 `--include` 互斥。

**参数约束**

- `--content` 与 `--content-file` 互斥
- `--exclude` 与 `--include` 互斥
- 至少提供一个更新项(`--content`/`--content-file`/`--title`/`--exclude`/`--include`)
- `--content` 长度 10-6000 字符
- `--title` 最多 50 字符

**输出**

text 模式:

```
updated: chunk-xxx
```

quiet 模式:无输出。

json 模式:返回 API 原始响应。

**注意事项**

- 内容必须 10-6000 字符,且不超过知识库的 max chunk size。
- `--content-file` 期望 UTF-8 纯文本文件,不解析 `.docx`/`.pdf` 等文档格式。
- 仅切换 `--exclude`/`--include` 而不提供新内容时,CLI 自动读回当前内容并重新提交(API 要求 content 字段必填,CLI 隐藏了此限制)。

**示例**

```bash
# 修改内容
bl knowledge chunk update --index-id idx-xxx --chunk-id chunk-xxx --doc-id file-xxx --content "corrected text" --workspace-id ws-xxx

# 排除 chunk 不参与检索
bl knowledge chunk update --index-id idx-xxx --chunk-id chunk-xxx --doc-id file-xxx --exclude

# 恢复检索
bl knowledge chunk update --index-id idx-xxx --chunk-id chunk-xxx --doc-id file-xxx --include
```

---

#### `bl knowledge chunk delete`

从知识库中删除 chunk(不可逆)。

**用法**

```bash
bl knowledge chunk delete --index-id <id> --chunk-id <id> [flags]
```

**参数**

| 参数 | 类型 | 必填 | 说明 |
| ----------------- | ------ | ---- | ------------------------------------------------ |
| `--index-id <id>` | string | 是 | 知识库 ID |
| `--chunk-id <id>` | array | 是 | Chunk ID(可重复,每批最多 10 个,超出自动分批) |
| `--yes` | switch | 否 | 跳过确认提示 |

**输出**

text 模式:

```
deleted: 2 chunk(s) in 1 batch(es)
```

quiet 模式:无输出。

json 模式:返回 `{ deleted_count, batches }`。

**注意事项**

- 服务端每次最多接受 10 个 chunk ID,CLI 自动分批。
- 如果某批失败,操作停止,已删除的批次会在错误 hint 中列出。
- Chunk 被永久移除,不可恢复。

**示例**

```bash
# 删除多个 chunk
bl knowledge chunk delete --index-id idx-xxx --chunk-id chunk-a --chunk-id chunk-b --workspace-id ws-xxx

# 跳过确认
bl knowledge chunk delete --index-id idx-xxx --chunk-id chunk-a --yes
```

---

← [返回总览](../knowledge-cli-guide.md)
Loading