@zhizai/cli 0.0.2 → 0.0.4

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 CHANGED
@@ -4,94 +4,62 @@
4
4
 
5
5
  查笔记、写总结、管知识库——一条命令搞定,支持脚本和 AI Agent 调用。
6
6
 
7
- > **当前版本:v0.0.2**
8
- > 已实现:`auth` / `doctor` / `capabilities` / `version` / `notes` / `note get` / `setup`。
9
- > 其余业务命令(`note create` / `ask` / `team` 等)已挂载子命令树,实现中。
7
+ > **当前版本:v0.0.4**
8
+ > 已可用:`auth` / `doctor` / `capabilities` / `version` / `notes` / `note get` / `setup`。
9
+ > 其余业务命令(`note create` / `ask` / `team` 等)子命令已挂载,能力逐步完善中。
10
+
11
+ 参与开发、构建与发包请见 [docs/development.md](./docs/development.md)。
10
12
 
11
13
  ---
12
14
 
13
15
  ## 安装
14
16
 
15
- ### 从源码构建(推荐开发期)
16
-
17
- 需要 Go 1.21+:
18
-
19
- ```bash
20
- git clone https://github.com/BoteAI/zhizai-cli.git
21
- cd zhizai-cli
22
- make build
23
- make install
24
- ```
25
-
26
- 构建产物:
27
-
28
- | 文件 | 说明 |
29
- |------|------|
30
- | `zhizai-cli` | `make build` 直接产物 |
31
- | `bin/zhizai` | `make dev-link` 复制到 npm 启动器目录 |
32
-
33
- 安装后可用命令:`zhizai` 与短别名 `zz`(`make install` 会安装符号链接;npm 全局安装同样注册两个入口)。
34
-
35
- ### npm 全局安装(Release 后可用)
17
+ 推荐使用 npm 全局安装(会自动下载对应平台二进制):
36
18
 
37
19
  ```bash
38
20
  npm install -g @zhizai/cli@latest
39
- zhizai auth login --api-key <your-api-key>
40
- zhizai doctor -o json
41
21
  ```
42
22
 
43
- `postinstall` 会下载对应平台的二进制;发布 Release 前请优先用源码构建。
23
+ 安装后可用命令:
44
24
 
45
- ### 维护者发版
25
+ - `zhizai` — 主命令
26
+ - `zz` — 短别名
46
27
 
47
- 仓库已配置 tag 触发:构建多平台二进制 → GitHub Release → `npm publish`。
48
-
49
- 前置:GitHub Actions Secret 配置 `NPM_TOKEN`;本地 `.npmrc` 仅用于本机 npm,**不要提交**(见 `.npmrc.example`)。
28
+ 验证:
50
29
 
51
30
  ```bash
52
- # 使用 package.json 当前版本打 tag 并推送
53
- make release
54
- # 或
55
- npm run release
56
-
57
- # 升版本后再发(注意用 V=,不要用 VERSION=)
58
- make release V=patch
59
- make release V=0.0.2
31
+ zhizai version
32
+ zz version
60
33
  ```
61
34
 
35
+ 也可从 [GitHub Releases](https://github.com/BoteAI/zhizai-cli/releases) 下载对应平台压缩包,解压后将 `zhizai` / `zhizai.exe` 放到 `PATH` 中。
36
+
62
37
  ---
63
38
 
64
39
  ## 使用要求
65
40
 
66
- - 需要有效的智在记录 **API Key**
67
- - 获取入口:[智在记录开发者](https://www.zzjilu.com/pc/developer)
68
- - OpenAPI 基址:`https://openapi.zzjilu.com/api/v1`
69
- - 请求头:`Authorization: <api-key>`(**不要**加 `Bearer`)
41
+ - 通过 `zhizai auth login` 完成**网页授权登录**
70
42
  - 限流:最高约 **2 次/秒**
71
43
 
72
44
  ---
73
45
 
74
46
  ## 开始使用
75
47
 
76
- ### 登录
48
+ ### 1. 登录
77
49
 
78
50
  ```bash
79
- # 直接传入 API Key(推荐脚本/CI)
80
- zhizai auth login --api-key <your-api-key>
81
-
82
- # 或交互粘贴
83
51
  zhizai auth login
84
52
  ```
85
53
 
86
- 登录成功后会写入 `~/.zhizai/config.json`,并调用 `queryNoteList` 做一次探活。
54
+ 按提示在浏览器确认授权即可。登录成功后写入 `~/.zhizai/config.json`。
87
55
 
88
- 也可用环境变量(优先级高于配置文件):
56
+ 刷新 OAuth access_token(业务请求也会在过期时自动刷新):
89
57
 
90
58
  ```bash
91
- export ZHIZAI_REC_API_KEY=<your-api-key>
59
+ zhizai auth refresh
92
60
  ```
93
61
 
94
- ### 检查状态
62
+ ### 2. 检查状态
95
63
 
96
64
  ```bash
97
65
  zhizai auth status
@@ -102,7 +70,7 @@ zhizai capabilities -o json
102
70
 
103
71
  `doctor` 返回 `ready=true,status=ready` 表示可正常调用业务接口。
104
72
 
105
- ### 查看笔记
73
+ ### 3. 查看笔记
106
74
 
107
75
  ```bash
108
76
  zhizai notes
@@ -112,48 +80,49 @@ zhizai note get <id>
112
80
  zhizai note get <id> --field summary
113
81
  ```
114
82
 
115
- ### 接入本机 AI
83
+ ### 4. 接入本机 AI
116
84
 
117
85
  ```bash
118
86
  # 预览将执行的操作
119
87
  zhizai setup --dry-run -o json
120
88
 
121
- # 正式安装(本地验收可跳过 npm 全局安装)
122
- zhizai setup --skill-source . --skip-cli-install
89
+ # 正式安装 Skill
90
+ zhizai setup
123
91
  ```
124
92
 
93
+ `setup` 会把原子 Skill 安装到 Cursor、Claude Code、Codex 等本机 AI 环境,并引导完成授权。
94
+
125
95
  ---
126
96
 
127
- ## 命令一览
97
+ ## 功能一览
128
98
 
129
99
  ### 已可用
130
100
 
131
- ```
132
- zhizai auth login [--api-key <key>] 保存 API Key 并验证连接
133
- zhizai auth status 查看认证状态(Key 掩码显示)
134
- zhizai auth logout 清除本机凭证
135
- zhizai doctor 检查安装、登录与 API 连通性
136
- zhizai capabilities 查看当前版本的稳定能力契约
137
- zhizai version 显示版本
138
- zhizai notes [--limit|--page|--all] 笔记列表
139
- zhizai note get <id> [--field ...] 笔记详情
140
- zhizai setup [--dry-run] 为本机 AI 安装原子 Skill 并引导授权
141
- ```
142
-
143
- ### 规划中(子命令已挂载,业务逻辑待实现)
144
-
145
- ```
146
- zhizai note create|update|delete|status
147
- zhizai file upload 文件上传
148
- zhizai ask "<问题>" 基于笔记的动态模版问答/总结
149
- zhizai scene 场景与知识卡
150
- zhizai knowledge 笔记集
151
- zhizai team 团队与成员
152
- zhizai msg 消息与录音卡
153
- zhizai update 升级 CLI 并同步 Skill
154
- ```
155
-
156
- 字段与接口细节以 `skills/zhiji-open-platform/references/` 为准。
101
+ | 命令 | 说明 |
102
+ |------|------|
103
+ | `zhizai auth login` | 网页设备授权登录 |
104
+ | `zhizai auth refresh` | 刷新 OAuth access_token |
105
+ | `zhizai auth status` | 查看认证状态(凭证掩码) |
106
+ | `zhizai auth logout` | 清除本机凭证 |
107
+ | `zhizai doctor` | 检查安装、登录与 API 连通性 |
108
+ | `zhizai capabilities` | 查看当前版本的稳定能力契约 |
109
+ | `zhizai version` | 显示版本 |
110
+ | `zhizai notes [--limit\|--page\|--all]` | 笔记列表 |
111
+ | `zhizai note get <id> [--field ...]` | 笔记详情 |
112
+ | `zhizai setup [--dry-run]` | 为本机 AI 安装原子 Skill 并引导授权 |
113
+
114
+ ### 规划中
115
+
116
+ | 命令 | 说明 |
117
+ |------|------|
118
+ | `zhizai note create\|update\|delete\|status` | 笔记写入与状态 |
119
+ | `zhizai file upload` | 文件上传 |
120
+ | `zhizai ask "<问题>"` | 基于笔记的动态模版问答 / 总结 |
121
+ | `zhizai scene` | 场景与知识卡 |
122
+ | `zhizai knowledge` | 笔记集 |
123
+ | `zhizai team` | 团队与成员 |
124
+ | `zhizai msg` | 消息与录音卡 |
125
+ | `zhizai update` | 升级 CLI 并同步 Skill |
157
126
 
158
127
  ---
159
128
 
@@ -161,7 +130,6 @@ zhizai update 升级 CLI 并同步 Skill
161
130
 
162
131
  | 参数 | 说明 |
163
132
  |------|------|
164
- | `--api-key <key>` | 临时覆盖 API Key |
165
133
  | `-o, --output table\|json` | 输出格式(默认 `table`) |
166
134
 
167
135
  机器 / AI Agent 调用时请加 `-o json`,统一读取:
@@ -180,45 +148,21 @@ zhizai update 升级 CLI 并同步 Skill
180
148
 
181
149
  ## 配置
182
150
 
183
- 凭证保存在 `~/.zhizai/config.json`:
151
+ 凭证保存在 `~/.zhizai/config.json`(含 OAuth `access_token` / `refresh_token` 等字段)。
184
152
 
185
- ```json
186
- {
187
- "api_key": "xxxx",
188
- "expires_at": "2027-12-31 23:59:59",
189
- "team_id": ""
190
- }
191
- ```
153
+ ### 鉴权说明
192
154
 
193
- 凭证优先级:
155
+ 默认使用 **OAuth 设备授权**:`zhizai auth login` → 浏览器确认 → 业务请求头 `X-OAuth2-Access-Token: Bearer …`。
194
156
 
195
- ```text
196
- --api-key > 环境变量 ZHIZAI_REC_API_KEY > ~/.zhizai/config.json
197
- ```
157
+ OAuth 过期时 CLI 会自动用 `refresh_token` 刷新;也可手动 `zhizai auth refresh`。
198
158
 
199
- | 环境变量 | 说明 |
200
- |----------|------|
201
- | `ZHIZAI_REC_API_KEY` | API Key |
202
- | `ZHIZAI_API_URL` | 覆盖 API 基址(默认 `https://openapi.zzjilu.com/api/v1`) |
203
- | `GOPROXY` | 构建时 Go 模块代理,国内可用 `https://goproxy.cn,direct` |
204
-
205
- ---
206
-
207
- ## 鉴权说明
208
-
209
- v0.1 仅支持 **API Key**:
210
-
211
- 1. 在开发者页获取 Key,或由管理员下发后自行配置
212
- 2. `zhizai auth login --api-key ...` 保存并探活
213
- 3. 后续请求自动带 `Authorization: <api-key>`
214
-
215
- OAuth 浏览器授权计划在后续版本补齐,不影响当前 API Key 流程。
159
+ 仅当网页授权失败时,CLI 会提示可改用 API Key 备用登录。
216
160
 
217
161
  ---
218
162
 
219
163
  ## AI Agent 使用
220
164
 
221
- 所有命令支持 `-o json`。内置原子 Skill 源在 `skills/`:
165
+ 所有命令支持 `-o json`。内置原子 Skill:
222
166
 
223
167
  | Skill | 职责 |
224
168
  |-------|------|
@@ -229,74 +173,17 @@ OAuth 浏览器授权计划在后续版本补齐,不影响当前 API Key 流
229
173
  | `zhizai-team` | 团队与成员 |
230
174
  | `zhizai-msg` | 消息与录音卡 |
231
175
 
232
- 另保留聚合 Skill `zhiji-open-platform`(含完整 OpenAPI 参考文档)。
233
- `zhizai setup` 就绪后,会把原子 Skill 安装到 Cursor、Claude Code、Codex 等本机 AI。
176
+ 另保留聚合 Skill `zhiji-open-platform`(含完整 OpenAPI 参考文档)。
234
177
 
235
178
  原则:**Skill 只做意图路由,真实请求一律走 `zhizai` CLI**,不自行拼 OpenAPI。
236
179
 
237
180
  ---
238
181
 
239
- ## 从源码开发
240
-
241
- ```bash
242
- # 依赖
243
- go version # >= 1.21
244
-
245
- # 构建
246
- make build
247
-
248
- # 本地链接到 bin/zhizai(配合 npm 启动器调试)
249
- make dev-link
250
-
251
- # 安装到 PATH
252
- make install
253
-
254
- # 测试 / 静态检查
255
- make test
256
- make lint
257
-
258
- # 多平台交叉编译
259
- make build-all
260
- ```
261
-
262
- 目录结构:
263
-
264
- ```text
265
- zhizai-cli/
266
- ├── main.go
267
- ├── cmd/ # Cobra 子命令
268
- ├── internal/
269
- │ ├── client/ # OpenAPI HTTP 客户端(限流、resultCode 适配)
270
- │ ├── config/ # ~/.zhizai/config.json
271
- │ ├── output/ # 统一 JSON 输出
272
- │ ├── platform/ # 本机 AI 平台探测
273
- │ ├── ui/
274
- │ └── version/
275
- ├── skills/ # 原子 Skill + 开放平台参考
276
- ├── bin/zhizai.js # npm 启动器
277
- ├── scripts/postinstall.js
278
- └── .github/workflows/release.yml
279
- ```
280
-
281
- ---
282
-
283
- ## 路线图
284
-
285
- | 版本 | 内容 |
286
- |------|------|
287
- | **v0.1** | 脚手架、auth、doctor、capabilities(当前) |
288
- | **v0.2** | notes / note 详情与 CRUD、file upload |
289
- | **v0.3** | setup 安装 Skill、capabilities 完善 |
290
- | **v0.4** | scene / knowledge / team / msg |
291
- | **v0.5** | ask 动态模版总结管线 |
292
- | **v1.0** | update、Release CI、npm 发布 |
293
-
294
- ---
295
-
296
182
  ## 相关链接
297
183
 
298
184
  - [智在记录官网](https://www.zzjilu.com)
299
185
  - [开发者中心](https://www.zzjilu.com/pc/developer)
186
+ - [开发与发包说明](./docs/development.md)
300
187
  - [问题反馈](https://github.com/BoteAI/zhizai-cli/issues)
301
188
 
302
189
  ## License
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@zhizai/cli",
3
- "version": "0.0.2",
3
+ "version": "0.0.4",
4
4
  "description": "CLI tool for 智在记录 — manage notes and knowledge from the terminal and AI agents",
5
5
  "keywords": [
6
6
  "zhizai",
@@ -57,7 +57,13 @@ async function installArchive({ platform, binDir, binaryName, binaryPath, url, t
57
57
  run('tar', ['-xzf', tmpFile, '-C', binDir, binaryName]);
58
58
  }
59
59
 
60
- fs.chmodSync(binaryPath, 0o755);
60
+ if (!fs.existsSync(binaryPath)) {
61
+ throw new Error(`Binary missing after extract: ${binaryPath}`);
62
+ }
63
+ // chmod is meaningful on Unix; Windows may not need it.
64
+ if (platform.platform !== 'windows') {
65
+ fs.chmodSync(binaryPath, 0o755);
66
+ }
61
67
  console.log(`zhizai installed at ${binaryPath}`);
62
68
  } finally {
63
69
  try { fs.unlinkSync(tmpFile); } catch (_) {}
@@ -70,7 +76,9 @@ async function main() {
70
76
  const binaryName = getBinaryName(platform);
71
77
  const binaryPath = path.join(binDir, binaryName);
72
78
  const url = getDownloadURL(platform);
73
- const tmpFile = path.join(os.tmpdir(), `zhizai-download-${Date.now()}`);
79
+ // Expand-Archive on Windows requires a .zip extension; tar.gz similarly.
80
+ const archiveExt = platform.platform === 'windows' ? '.zip' : '.tar.gz';
81
+ const tmpFile = path.join(os.tmpdir(), `zhizai-download-${Date.now()}${archiveExt}`);
74
82
 
75
83
  if (fs.existsSync(binaryPath)) {
76
84
  try {
@@ -1,6 +1,6 @@
1
1
  ---
2
2
  name: zhizai-auth
3
- description: 安装和连接智在记录,完成 API Key 配置、环境诊断与 CLI 升级。用户说安装、连接、登录、检查为什么不能用时使用。
3
+ description: 安装和连接智在记录,完成网页授权登录、环境诊断与 CLI 升级。用户说安装、连接、登录、检查为什么不能用时使用。
4
4
  ---
5
5
 
6
6
  # 智在记录连接与诊断
@@ -11,9 +11,11 @@ description: 安装和连接智在记录,完成 API Key 配置、环境诊断
11
11
 
12
12
  | 意图 | 命令 |
13
13
  |---|---|
14
- | 登录 | `zhizai auth login --api-key <key>` |
14
+ | 登录 | `zhizai auth login` |
15
15
  | 查看状态 | `zhizai auth status` |
16
16
  | 退出 | `zhizai auth logout` |
17
17
  | 诊断 | `zhizai doctor -o json` |
18
18
  | 能力契约 | `zhizai capabilities -o json` |
19
19
  | 安装 Skill | `zhizai setup` |
20
+
21
+ 默认使用网页设备授权。仅当网页授权失败时,再提示用户使用 `zhizai auth login --api-key <key>`。