@qoder-ai/qmind-cli 1.1.0 → 1.1.2
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/CHANGELOG.md +12 -0
- package/README.md +76 -48
- package/dist/qmind.js +2 -2
- package/package.json +2 -2
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,17 @@
|
|
|
1
1
|
# @qoder-ai/qmind-cli
|
|
2
2
|
|
|
3
|
+
## 1.1.2
|
|
4
|
+
|
|
5
|
+
### Patch Changes
|
|
6
|
+
|
|
7
|
+
- c3a3a0f: Remove a redundant module-boundary note from the CLI package README.
|
|
8
|
+
|
|
9
|
+
## 1.1.1
|
|
10
|
+
|
|
11
|
+
### Patch Changes
|
|
12
|
+
|
|
13
|
+
- 711c3b9: Rewrite every package README for package consumers and make the public QMind CLI explicitly bin-only, without the former workspace module exports.
|
|
14
|
+
|
|
3
15
|
## 1.1.0
|
|
4
16
|
|
|
5
17
|
### Minor Changes
|
package/README.md
CHANGED
|
@@ -1,12 +1,10 @@
|
|
|
1
1
|
# `@qoder-ai/qmind-cli`
|
|
2
2
|
|
|
3
|
-
QMind
|
|
3
|
+
QMind 命令行工具,可用于登录、管理知识库和来源、检索内容、运行 RAG/编译任务,以及把本地目录同步到知识库。
|
|
4
4
|
|
|
5
|
-
|
|
5
|
+
## 安装
|
|
6
6
|
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
## Install and run
|
|
7
|
+
需要 Node.js `>=20.18.1`:
|
|
10
8
|
|
|
11
9
|
```sh
|
|
12
10
|
npm install --global @qoder-ai/qmind-cli
|
|
@@ -14,69 +12,99 @@ qmind version
|
|
|
14
12
|
qmind --help
|
|
15
13
|
```
|
|
16
14
|
|
|
17
|
-
|
|
15
|
+
升级和卸载也交给 npm:
|
|
16
|
+
|
|
17
|
+
```sh
|
|
18
|
+
npm update --global @qoder-ai/qmind-cli
|
|
19
|
+
npm uninstall --global @qoder-ai/qmind-cli
|
|
20
|
+
```
|
|
18
21
|
|
|
19
|
-
|
|
22
|
+
`qmind self-update` 仅用于提示 npm 升级方式,不会修改 npm 管理的文件。
|
|
20
23
|
|
|
21
|
-
|
|
22
|
-
import { createQMindCliHost } from '@qoder-ai/qmind-cli';
|
|
24
|
+
## 快速开始
|
|
23
25
|
|
|
24
|
-
|
|
25
|
-
flags: { token: process.env.QMIND_TOKEN },
|
|
26
|
-
});
|
|
26
|
+
交互式登录会打开浏览器完成授权,并把凭证安全保存到本机:
|
|
27
27
|
|
|
28
|
-
|
|
29
|
-
|
|
28
|
+
```sh
|
|
29
|
+
qmind login
|
|
30
|
+
qmind notebook list
|
|
31
|
+
qmind source list --nb <notebook-id>
|
|
32
|
+
qmind retrieve --nb <notebook-id> "部署流程是什么?"
|
|
30
33
|
```
|
|
31
34
|
|
|
32
|
-
|
|
35
|
+
CI 或 Agent 场景建议使用环境变量和结构化输出:
|
|
36
|
+
|
|
37
|
+
```sh
|
|
38
|
+
export QMIND_TOKEN='<token>'
|
|
39
|
+
qmind notebook list --non-interactive --format json
|
|
40
|
+
qmind retrieve --nb <notebook-id> --format agent "发布前要检查什么?"
|
|
41
|
+
```
|
|
33
42
|
|
|
34
|
-
|
|
35
|
-
import { runQMindCli } from '@qoder-ai/qmind-cli';
|
|
43
|
+
不要把 token 写进脚本参数、仓库或日志。使用完本机凭证后可执行:
|
|
36
44
|
|
|
37
|
-
|
|
45
|
+
```sh
|
|
46
|
+
qmind logout
|
|
38
47
|
```
|
|
39
48
|
|
|
40
|
-
|
|
49
|
+
## 命令
|
|
50
|
+
|
|
51
|
+
| 命令 | 用途 |
|
|
52
|
+
| --------------------------- | -------------------------------------- |
|
|
53
|
+
| `login` / `logout` | 登录或清除本机凭证 |
|
|
54
|
+
| `notebook` | 创建、列出、查看、删除知识库 |
|
|
55
|
+
| `cards` / `list` / `search` | 列出或搜索卡片 |
|
|
56
|
+
| `source` | 创建、上传、下载、移动、读取或删除来源 |
|
|
57
|
+
| `retrieve` | 检索知识库上下文,不发起 LLM 调用 |
|
|
58
|
+
| `rag` | 基于知识库提问 |
|
|
59
|
+
| `compile` / `lint` | 启动编译或检查工作流 |
|
|
60
|
+
| `task` | 创建、查询或列出任务运行 |
|
|
61
|
+
| `upload-folder` / `sync` | 将本地目录同步到知识库 |
|
|
62
|
+
| `image` | 获取图片上传地址或访问地址 |
|
|
63
|
+
| `version` | 查看版本和构建信息 |
|
|
41
64
|
|
|
42
|
-
|
|
65
|
+
使用 `qmind <command> --help` 查看完整参数。例如:
|
|
43
66
|
|
|
44
|
-
|
|
67
|
+
```sh
|
|
68
|
+
qmind source upload --help
|
|
69
|
+
qmind upload-folder --help
|
|
70
|
+
```
|
|
45
71
|
|
|
46
|
-
|
|
47
|
-
- stdout 只承载结果,诊断、progress 与 download 信息进入 stderr;
|
|
48
|
-
- 成功/help 为 `0`,运行失败/部分成功/取消为 `1`,usage 与 `INVALID_ARGUMENT` 为 `2`;
|
|
49
|
-
- JSON runtime error 使用稳定 `{ "error": { "code", "message", "status", "errorCode", "requestId", "rawBody", "details" } }` envelope;
|
|
50
|
-
- `source upload` 复用 SDK 的 50/500 MiB strategy;download 默认不覆盖并流式原子落盘;
|
|
51
|
-
- `upload-folder` 支持默认扩展/隐藏文件过滤、`--ignore` glob、`skip|overwrite|if-changed`、`--delete`、`--dry-run`、mapping、1..10 并发与 retryable-only 三次上传。`--delete` 明确把 notebook source root 当作该本地目录的镜像,会删除远端多余项;为避免空计划误删,它不能与 `--skip-upload` 组合,建议先用 `--dry-run` 审阅 stats。
|
|
72
|
+
## 输出与退出码
|
|
52
73
|
|
|
53
|
-
|
|
74
|
+
领域命令支持 `table`、`json`、`agent`、`ndjson` 等输出格式;具体可用值以命令的 `--help` 为准。
|
|
54
75
|
|
|
55
|
-
|
|
76
|
+
- stdout 只输出命令结果,进度与诊断信息输出到 stderr;
|
|
77
|
+
- `0` 表示成功或正常显示帮助;
|
|
78
|
+
- `1` 表示运行失败、部分成功或用户取消;
|
|
79
|
+
- `2` 表示参数用法错误或 `INVALID_ARGUMENT`。
|
|
56
80
|
|
|
57
|
-
|
|
58
|
-
- `login()` / `logout()`:Device Flow + PKCE 与完整凭证清理;
|
|
59
|
-
- `createFileSource()`:可重复打开、流式读取的 `QMindBinarySource`;
|
|
60
|
-
- `downloadToFile()`:credential-free signed URL 的流式、原子、默认 no-clobber 下载;
|
|
61
|
-
- `config`:不含 token、proxy credentials 或 TLS material 的安全 runtime metadata;
|
|
62
|
-
- `close()`:释放 host-owned Undici dispatchers。
|
|
81
|
+
JSON 错误使用稳定的 `error` envelope,包含 `code`、`message`,以及服务端提供时的 `status`、`errorCode`、`requestId` 和 `details`。
|
|
63
82
|
|
|
64
|
-
|
|
83
|
+
## 同步目录
|
|
65
84
|
|
|
66
|
-
|
|
85
|
+
先用 `--dry-run` 审阅计划,再决定是否执行删除:
|
|
86
|
+
|
|
87
|
+
```sh
|
|
88
|
+
qmind upload-folder \
|
|
89
|
+
--nb <notebook-id> \
|
|
90
|
+
--dir ./docs \
|
|
91
|
+
--mode if-changed \
|
|
92
|
+
--ignore '**/drafts/**' \
|
|
93
|
+
--dry-run
|
|
94
|
+
```
|
|
67
95
|
|
|
68
|
-
|
|
96
|
+
移除 `--dry-run` 后才会写入远端。`--delete` 会把知识库的来源根目录视为本地目录的镜像,并删除远端多余项;使用前请确认 dry-run 结果。并发范围为 `1..10`。
|
|
69
97
|
|
|
70
|
-
|
|
71
|
-
- device token 在过期前 30 秒主动 refresh;
|
|
72
|
-
- host `401` 触发一次 refresh 和严格一次 retry,并发失败共享同一个 refresh;
|
|
73
|
-
- credential schema v1 在 refresh 时先备份,再原子迁移为 schema v2;
|
|
74
|
-
- `credentials.json` 位于 mode `0700` 目录中,自身为 mode `0600` regular file;
|
|
75
|
-
- `@napi-rs/keyring` 是可选、仍维护的 OS-keyring 增强;不可用时确定性回退到私有文件;
|
|
76
|
-
- secrets 不进入 public config、debug URL、error 或 login result。
|
|
98
|
+
## 配置与网络
|
|
77
99
|
|
|
78
|
-
|
|
100
|
+
常用环境变量:
|
|
79
101
|
|
|
80
|
-
|
|
102
|
+
- `QMIND_TOKEN`:非交互 token;
|
|
103
|
+
- `QMIND_ENV`:`prod`、`daily` 或 `test`;
|
|
104
|
+
- `QMIND_SASH_URL` / `QMIND_DASHBOARD_URL`:覆盖服务 origin;
|
|
105
|
+
- `QMIND_HOME`:覆盖配置与凭证目录,默认 `~/.qmind`;
|
|
106
|
+
- `QMIND_NON_INTERACTIVE=1`:禁止打开浏览器;
|
|
107
|
+
- `QMIND_REQUEST_TIMEOUT_MS` / `QMIND_STREAM_IDLE_TIMEOUT_MS`:请求与流空闲超时;
|
|
108
|
+
- `QMIND_TLS_CA_FILE`:私有 CA 文件。
|
|
81
109
|
|
|
82
|
-
|
|
110
|
+
CLI 支持 `HTTP_PROXY`、`HTTPS_PROXY` 和 `NO_PROXY`。TLS 默认严格校验;上传到签名对象地址时不会携带 QMind 的 Authorization、Cookie、CSRF 或代理凭证。
|
package/dist/qmind.js
CHANGED
|
@@ -2024,7 +2024,7 @@ function requestsJsonOutput(argv) {
|
|
|
2024
2024
|
}
|
|
2025
2025
|
//#endregion
|
|
2026
2026
|
//#region src/build-info.ts
|
|
2027
|
-
const QMIND_CLI_VERSION = "1.1.
|
|
2027
|
+
const QMIND_CLI_VERSION = "1.1.2";
|
|
2028
2028
|
const QMIND_CLI_BUILD_TIME = "development";
|
|
2029
2029
|
const QMIND_CLI_UPDATE_BASE_URL = typeof __QMIND_CLI_UPDATE_BASE_URL__ === "string" ? __QMIND_CLI_UPDATE_BASE_URL__ : "https://qoder-ide-cn.oss-cn-hangzhou.aliyuncs.com/qmind/cli/";
|
|
2030
2030
|
function qmindCliPlatform() {
|
|
@@ -4833,7 +4833,7 @@ function registerUpdateCommand(context, program) {
|
|
|
4833
4833
|
publicKey: String(raw.publicKey ?? "")
|
|
4834
4834
|
});
|
|
4835
4835
|
if (result.updated) context.io.stdout(`[self-update] updated ${QMIND_CLI_VERSION} -> ${result.version}\n`);
|
|
4836
|
-
else if (result.version === "1.1.
|
|
4836
|
+
else if (result.version === "1.1.2".replace(/^v/, "")) context.io.stdout(`[self-update] already current: ${result.version}\n`);
|
|
4837
4837
|
else context.io.stdout(`[self-update] verified available version: ${result.version}\n`);
|
|
4838
4838
|
});
|
|
4839
4839
|
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@qoder-ai/qmind-cli",
|
|
3
|
-
"version": "1.1.
|
|
3
|
+
"version": "1.1.2",
|
|
4
4
|
"description": "QMind command line interface",
|
|
5
5
|
"bin": {
|
|
6
6
|
"qmind": "bin/cli.js"
|
|
@@ -37,7 +37,7 @@
|
|
|
37
37
|
"devDependencies": {
|
|
38
38
|
"@types/picomatch": "4.0.3",
|
|
39
39
|
"@types/proper-lockfile": "4.1.4",
|
|
40
|
-
"@ali/qmind-sdk": "^0.1.
|
|
40
|
+
"@ali/qmind-sdk": "^0.1.1"
|
|
41
41
|
},
|
|
42
42
|
"license": "UNLICENSED",
|
|
43
43
|
"scripts": {
|