文档管理覆盖文件上传、OSS 导入、解析状态跟踪、文档删除和标签维护。文档导入知识库后自动解析为切片。本组共 6 个命令。
鉴权、业务空间 ID、全局参数、输出格式、二次确认和干跑模式等通用约定见 CLI 概述。以下示例默认已通过配置文件设置业务空间 ID。
kscli doc list
列出知识库中的文档及其解析状态。
kscli doc list --index-id <id> [flags]
参数
| 参数 | 类型 | 必填 | 说明 |
|---|
--index-id <id> | string | 是 | 知识库 ID |
--page-number <n> | number | 否 | 页码,默认 1 |
--page-size <n> | number | 否 | 每页条数,默认 10,范围 1–100 |
输出
text 模式每行一个文档,FAILED 状态的文档以红色高亮:
doc-xxx COMPLETED intro.md md 1024
total: 1
quiet 模式每行输出一个 doc_id。json 模式返回完整结果。
文档在知识库中的 doc_id 与数据中心的文件 ID 不一定相同,取决于导入方式。对知识库文档的后续操作(如 doc delete、chunk update)请以本命令输出的 doc_id 为准。
示例
# 列出文档
kscli doc list --index-id idx-xxx
# 每页 100 条
kscli doc list --index-id idx-xxx --page-size 100
kscli doc status
查看知识库导入任务的执行状态。
kscli doc status --index-id <id> --job-id <id> [flags]
参数
| 参数 | 类型 | 必填 | 说明 |
|---|
--index-id <id> | string | 是 | 知识库 ID |
--job-id <id> | string | 是 | 导入任务 ID,由 kb create 或 doc upload 返回 |
--page-number <n> | number | 否 | 页码,默认 1 |
--page-size <n> | number | 否 | 每页条数 |
--wait | switch | 否 | 轮询直到任务到达终态 |
--poll-interval <seconds> | number | 否 | 轮询间隔秒数,默认 5 |
输出
status: COMPLETED
doc-xxx COMPLETED intro.md
quiet 模式输出任务整体状态。json 模式返回完整结果,包含每个文档的状态。
注意事项
- 任务整体状态为
PENDING、RUNNING 或 COMPLETED。
- 单个文档可能解析失败(如
PARSE_FAILED),此时命令以非零退出码结束并展示服务端错误信息。
- 服务端返回
SystemError 通常说明该任务 ID 不存在,请从 doc upload 或 kb create 的返回结果中确认。
示例
# 查询一次
kscli doc status --index-id idx-xxx --job-id job-xxx
# 轮询等待完成,间隔 10 秒
kscli doc status --index-id idx-xxx --job-id job-xxx --wait --poll-interval 10
kscli doc upload
上传本地文件或目录到数据中心,可选择同时导入知识库。
kscli doc upload --file <path> [flags]
参数
| 参数 | 类型 | 必填 | 说明 |
|---|
--file <path> | array | 是 | 本地文件或目录路径,可重复传入。目录递归扫描,不支持的格式自动跳过 |
--index-id <id> | string | 否 | 上传后导入此知识库,所有文件合并为一个导入任务 |
--category-id <id> | string | 否 | 目标数据中心分类,默认为业务空间的默认分类 |
--tag <text> | array | 否 | 文件标签,可重复传入,应用到每个上传的文件 |
--wait | switch | 否 | 轮询导入任务直到终态,需同时指定 --index-id |
--poll-interval <seconds> | number | 否 | 轮询间隔秒数,默认 5 |
输出
intro.md file-xxx registered
job: job-xxx
status: COMPLETED
Uploaded 1 file.
quiet 模式每行输出一个文件 ID。json 模式返回 files(路径与文件 ID)、skipped、index_id、ingestion_id、final_status 字段。
支持的文件格式
.pdf、.doc、.docx、.ppt、.pptx、.xls、.xlsx、.csv、.md、.txt、.html、.png、.jpg、.jpeg、.bmp、.gif
注意事项
- 目录递归扫描时,
node_modules、.git 等目录自动跳过。
- 多文件按顺序逐个上传。部分文件上传失败时,已成功上传的文件 ID 会在错误提示中列出,便于续传或清理。
- 上传大批量文件前,建议先用
--dry-run --verbose 确认将上传和跳过的文件清单。
示例
# 上传单个文件
kscli doc upload --file ./a.md
# 上传多个文件并导入知识库,等待解析完成
kscli doc upload --file ./a.md --file ./b.pdf --index-id idx-xxx --wait
# 上传整个目录
kscli doc upload --file ./docs/
# 干跑预览
kscli doc upload --file ./docs/ --dry-run --verbose
kscli doc delete
从知识库中删除文档及其切片。
kscli doc delete --index-id <id> --doc-id <id> [flags]
参数
| 参数 | 类型 | 必填 | 说明 |
|---|
--index-id <id> | string | 是 | 知识库 ID |
--doc-id <id> | array | 是 | 文档 ID,可重复传入 |
--yes | switch | 否 | 跳过确认提示 |
输出
deleted: 2 document(s)
doc-a
doc-b
quiet 模式每行输出一个已删除的 doc_id。json 模式返回实际删除的 ID 列表。
注意事项
- 只从知识库索引中移除文档,数据中心的源文件保留。如需删除源文件,使用
kscli file delete。
doc_id 应从 kscli doc list --quiet 获取,而不是 doc upload 返回的文件 ID。
- 删除是异步执行的:命令立即返回成功,但
doc list 中可能仍短暂显示该文档,约 30 秒后生效。
- 输出的是实际删除的 ID 列表,数量可能与请求不一致,差异会在 stderr 中警告。
示例
# 删除单个文档
kscli doc delete --index-id idx-xxx --doc-id doc-xxx
# 批量删除并跳过确认
kscli doc delete --index-id idx-xxx --doc-id doc-a --doc-id doc-b --yes
kscli doc tag
批量更新数据中心文件的标签。
kscli doc tag --doc-id <id> --tag <text> [flags]
参数
| 参数 | 类型 | 必填 | 说明 |
|---|
--doc-id <id> | array | 是 | 数据中心文件 ID,可重复传入,每次最多 20 个 |
--tag <text> | array | 是 | 标签,可重复传入,应用到每个 --doc-id |
--mode <mode> | string | 否 | 更新模式,append(默认,追加)或 overwrite(覆盖) |
参数约束
--doc-id 每次最多 20 个
--tag 最多 100 个,单个标签最多 32 字符,标签总长度最多 700 字符
输出
tagged: 2 file(s) with [project-a, draft]
quiet 模式无输出。json 模式返回完整结果。
--mode overwrite 会用本次传入的标签替换文件上的全部现有标签,被替换掉的标签无法恢复。仅在确认要清空原标签时使用,否则用默认的 append。
同一组标签会应用到所有 --doc-id。需要给不同文件打不同标签时,分多次执行。
示例
# 追加标签
kscli doc tag --doc-id file-xxx --tag project-a --tag draft
# 覆盖标签
kscli doc tag --doc-id file-a --doc-id file-b --tag final --mode overwrite
kscli doc import-oss
从已授权的 OSS bucket 批量导入文件到数据中心。
kscli doc import-oss --bucket <name> --region <id> --oss-key <key> [flags]
参数
| 参数 | 类型 | 必填 | 说明 |
|---|
--bucket <name> | string | 是 | 已授权的 OSS bucket 名称 |
--region <id> | string | 是 | OSS 地域 ID,如 cn-beijing |
--oss-key <key> | array | 是 | OSS 对象 key,可重复传入,每次最多 10 个 |
--category-id <id> | string | 否 | 目标数据中心分类,默认为默认分类 |
--tag <text> | array | 否 | 文件标签,可重复传入,最多 10 个 |
--overwrite | switch | 否 | 覆盖之前从相同 OSS key 导入的文件 |
输出
imported: 2 file(s)
file-a SUCCESS docs/a.pdf
file-b SUCCESS docs/b.docx
quiet 模式每行输出一个文件 ID。json 模式返回每个文件的文件 ID、状态和 OSS key。
注意事项
- bucket 必须事先授权给平台服务。在 RAM 控制台确认
AliyunServiceRoleForBailian 服务角色已对该 bucket 正确授权,否则导入返回权限错误。
- 导入后的文件名取自 OSS key 的最后一段。
--overwrite 会替换之前导入的文件并生成新的文件 ID,旧文件 ID 随之失效。如果有知识库或脚本引用了旧 ID,需要同步更新。
示例
# 导入单个文件
kscli doc import-oss --bucket my-bucket --region cn-beijing --oss-key docs/a.pdf
# 导入多个文件并覆盖同 key 的旧文件
kscli doc import-oss --bucket my-bucket --region cn-beijing \
--oss-key docs/a.pdf --oss-key docs/b.docx --overwrite