@zonease/aiworker-cli 0.4.11 → 0.5.0
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 -28
- package/aiworker-bun.js +296 -261
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -33,8 +33,8 @@
|
|
|
33
33
|
│ ┌─────────────────────────────────────────────┴──┐
|
|
34
34
|
│ │ Step 4: operator 在 gateway 同机 loopback │
|
|
35
35
|
│ │ ws://127.0.0.1:9218/ws (空 token bypass) │
|
|
36
|
-
│ │ $ aiworker enroll list │
|
|
37
|
-
│ │ $ aiworker enroll approve YDCR-ZD8M │
|
|
36
|
+
│ │ $ aiworker fleet enroll list │
|
|
37
|
+
│ │ $ aiworker fleet enroll approve YDCR-ZD8M │
|
|
38
38
|
│ └─────────────────────────────────────────────┬──┘
|
|
39
39
|
│ │
|
|
40
40
|
│ ◄─────── enrollment.approved (deviceToken) ────┤
|
|
@@ -80,10 +80,10 @@ i [aiworker serve] OTP enrolling to wss://your-gateway.example/enroll-ws
|
|
|
80
80
|
**Operator 端**(gateway 主机或 basicauth 远端):
|
|
81
81
|
|
|
82
82
|
```sh
|
|
83
|
-
aiworker enroll list # 看 pending OTP
|
|
84
|
-
aiworker enroll approve YDCR-ZD8M # ✔ 已批准
|
|
83
|
+
aiworker fleet enroll list # 看 pending OTP
|
|
84
|
+
aiworker fleet enroll approve YDCR-ZD8M # ✔ 已批准
|
|
85
85
|
aiworker fleet list # online: true
|
|
86
|
-
aiworker chat w_ntssfzwwzzq0 'hello' # NDJSON 流式输出
|
|
86
|
+
aiworker fleet chat w_ntssfzwwzzq0 'hello' # NDJSON 流式输出
|
|
87
87
|
```
|
|
88
88
|
|
|
89
89
|
完整端到端实测见 [docs/changelog.md](docs/changelog.md) 11:50 条目。
|
|
@@ -107,7 +107,12 @@ npm install -g @zonease/aiworker-cli
|
|
|
107
107
|
|
|
108
108
|
AIWorker CLI 是 Bun-native:`npx` / `npm install -g` 不会把 runtime 改成 Node。没有 Bun 时,CLI 会提示安装 Bun 或改用 GitHub Releases 的 standalone binary。binary 跑在 `~/.bun/bin/aiworker` 或 `$(npm bin -g)/aiworker`。第一次跑任意命令时自动 mint master key 写到 `~/.aiworker/.env`(chmod 0600)。
|
|
109
109
|
|
|
110
|
-
**项目级 worker**(PLAN-023,可选):`aiworker
|
|
110
|
+
**项目级 worker**(PLAN-023,可选):`aiworker up --soul developer` 会在当前目录 `<cwd>/.aiworker/` 落项目级 layout(每 project 一份独立 worker.db / master key / persona / skills;不要求当前目录是 git repo),随后完成能力预检并启动本地 HTTP/admin。engine(claude / codex / cursor)保持 user 级共享。`aiworker scope` 诊断当前命中的 layout;显式拆步时仍可用 `aiworker init` / `aiworker doctor` / `aiworker serve`。详见 [docs/cli.md §`aiworker up`](docs/cli.md)。
|
|
111
|
+
|
|
112
|
+
```sh
|
|
113
|
+
cd ~/code/my-project
|
|
114
|
+
aiworker up --soul developer --port 9217
|
|
115
|
+
```
|
|
111
116
|
|
|
112
117
|
### 本地开发
|
|
113
118
|
|
|
@@ -127,7 +132,7 @@ bun apps/cli/src/aiworker.ts <subcmd> # = aiworker <subcmd>
|
|
|
127
132
|
|---|---|---|---|
|
|
128
133
|
| 朋友/客户/CI 临时装 worker | **OTP(推荐)** | 零(worker 不持任何 fleet 共享 secret) | 看 8 字符 OTP → approve |
|
|
129
134
|
| k8s/docker compose 批量 unattended | self-enroll | `AIWORKER_JOIN_TOKEN`(fleet 共享) | 无(自动入网) |
|
|
130
|
-
| 高安全单 worker 手动 | 手动 pair | worker 启动后输出 `wtk_xxx` bootstrap token | `aiworker pair --bootstrap-token wtk_...` |
|
|
135
|
+
| 高安全单 worker 手动 | 手动 pair | worker 启动后输出 `wtk_xxx` bootstrap token | `aiworker fleet pair --bootstrap-token wtk_...` |
|
|
131
136
|
| docker fast-launch(gateway 同机) | `aiworker fleet launch` | gateway 自动注入 | 一行命令 |
|
|
132
137
|
|
|
133
138
|
### OTP(推荐)
|
|
@@ -141,8 +146,8 @@ aiworker serve
|
|
|
141
146
|
|
|
142
147
|
Operator:
|
|
143
148
|
```sh
|
|
144
|
-
aiworker enroll list # → pending [{ otp, workerId, displayName }]
|
|
145
|
-
aiworker enroll approve <OTP>
|
|
149
|
+
aiworker fleet enroll list # → pending [{ otp, workerId, displayName }]
|
|
150
|
+
aiworker fleet enroll approve <OTP>
|
|
146
151
|
```
|
|
147
152
|
|
|
148
153
|
### self-enroll(自动化)
|
|
@@ -166,7 +171,7 @@ aiworker serve --gateway 'wss://operator:<pwd>@gateway/ws'
|
|
|
166
171
|
# 抓 stdout 的 wtk_xxx
|
|
167
172
|
|
|
168
173
|
# Operator:
|
|
169
|
-
aiworker pair --url 'wss://operator:<pwd>@gateway/ws' \
|
|
174
|
+
aiworker fleet pair --url 'wss://operator:<pwd>@gateway/ws' \
|
|
170
175
|
--worker-url http://<worker-host>:9217 \
|
|
171
176
|
--bootstrap-token wtk_xxx \
|
|
172
177
|
--display-name production-1
|
|
@@ -195,31 +200,31 @@ aiworker fleet list # 谁在线
|
|
|
195
200
|
aiworker fleet remove <workerId> # 摘除(deviceToken 立即失效)
|
|
196
201
|
|
|
197
202
|
# chat(流式 NDJSON)
|
|
198
|
-
aiworker chat <workerId> 'hello'
|
|
199
|
-
aiworker chat <workerId> '继续' --conversation-id <prev-id>
|
|
203
|
+
aiworker fleet chat <workerId> 'hello'
|
|
204
|
+
aiworker fleet chat <workerId> '继续' --conversation-id <prev-id>
|
|
200
205
|
|
|
201
206
|
# 配置(乐观锁必须带 --if-match)
|
|
202
|
-
aiworker config get <workerId> # 读出含 version
|
|
203
|
-
aiworker config set <workerId> "$(cat new.json)" --if-match <version>
|
|
207
|
+
aiworker fleet config get <workerId> # 读出含 version
|
|
208
|
+
aiworker fleet config set <workerId> "$(cat new.json)" --if-match <version>
|
|
204
209
|
|
|
205
210
|
# Token 轮换
|
|
206
|
-
aiworker token rotate <workerId>
|
|
211
|
+
aiworker fleet token rotate <workerId>
|
|
207
212
|
|
|
208
213
|
# OTP 审批
|
|
209
|
-
aiworker enroll list / approve <OTP> / reject <OTP>
|
|
214
|
+
aiworker fleet enroll list / approve <OTP> / reject <OTP>
|
|
210
215
|
|
|
211
216
|
# 日志订阅
|
|
212
|
-
aiworker logs <workerId> --follow --tail 200
|
|
217
|
+
aiworker fleet logs <workerId> --follow --tail 200
|
|
213
218
|
|
|
214
219
|
# Per-tool approvals
|
|
215
|
-
aiworker approvals list
|
|
216
|
-
aiworker approvals grant <workerId> <taskId> <toolCallId> # allow
|
|
217
|
-
aiworker approvals grant <workerId> <taskId> <toolCallId> --deny
|
|
220
|
+
aiworker fleet approvals list
|
|
221
|
+
aiworker fleet approvals grant <workerId> <taskId> <toolCallId> # allow
|
|
222
|
+
aiworker fleet approvals grant <workerId> <taskId> <toolCallId> --deny
|
|
218
223
|
|
|
219
224
|
# Cron
|
|
220
|
-
aiworker schedule list <workerId>
|
|
221
|
-
aiworker schedule add <workerId> --expression '0 9 * * *' --prompt '早报' --channel web --chat-id daily
|
|
222
|
-
aiworker schedule remove <workerId> <jobId>
|
|
225
|
+
aiworker fleet schedule list <workerId>
|
|
226
|
+
aiworker fleet schedule add <workerId> --expression '0 9 * * *' --prompt '早报' --channel web --chat-id daily
|
|
227
|
+
aiworker fleet schedule remove <workerId> <jobId>
|
|
223
228
|
```
|
|
224
229
|
|
|
225
230
|
Operator 端首次需写 `~/.aiworker/aiworker.json`:
|
|
@@ -249,7 +254,7 @@ chmod 600 ~/.aiworker/aiworker.json
|
|
|
249
254
|
|
|
250
255
|
```sh
|
|
251
256
|
# 1. 拿 worker 当前 config + version
|
|
252
|
-
aiworker config get <workerId>
|
|
257
|
+
aiworker fleet config get <workerId>
|
|
253
258
|
# → { "version": 1, "config": {...} }
|
|
254
259
|
|
|
255
260
|
# 2. 切到 claude-code default variant(model=sonnet, timeout=120s)
|
|
@@ -261,10 +266,10 @@ NEW='{
|
|
|
261
266
|
"channels": [],
|
|
262
267
|
"evolution": { "enabled": false, "observationRetentionDays": 7 }
|
|
263
268
|
}'
|
|
264
|
-
aiworker config set <workerId> "$NEW" --if-match 1
|
|
269
|
+
aiworker fleet config set <workerId> "$NEW" --if-match 1
|
|
265
270
|
|
|
266
271
|
# 3. chat 验证
|
|
267
|
-
aiworker chat <workerId> '请用中文回我一句话'
|
|
272
|
+
aiworker fleet chat <workerId> '请用中文回我一句话'
|
|
268
273
|
# {"kind":"accepted",...}
|
|
269
274
|
# {"kind":"chat.message","payload":{"role":"assistant","content":"...claude 真实回复..."}}
|
|
270
275
|
# {"kind":"done","payload":{"finishReason":"stop"}}
|
|
@@ -324,7 +329,7 @@ apps/{api, cli, web} + packages/{core, gateway, gateway-proto, shared, storage-s
|
|
|
324
329
|
| 形态 | 适用 | 入口 | docker |
|
|
325
330
|
|------|------|------|--------|
|
|
326
331
|
| **裸跑** | 开发 / CI | `aiworker gateway start` / `aiworker serve` 前台 | 无 |
|
|
327
|
-
| **systemd**(Linux 推荐) | 服务器长跑 | `aiworker install systemd [--user\|--system]` | 无 |
|
|
332
|
+
| **systemd**(Linux 推荐) | 服务器长跑 | `aiworker gateway install systemd [--user\|--system]` | 无 |
|
|
328
333
|
| **docker compose** | 不愿装 bun / per-worker 隔离 | `ops/compose/docker-compose.yml`(GHCR 镜像) | 有 |
|
|
329
334
|
|
|
330
335
|
---
|
|
@@ -358,7 +363,7 @@ apps/{api, cli, web} + packages/{core, gateway, gateway-proto, shared, storage-s
|
|
|
358
363
|
|---|---|---|
|
|
359
364
|
| `aiworker fleet list` → `WebSocket Expected 101 status code` | aiworker.json `gatewayUrl` 缺 `/ws` 或 basicauth | 重写 `~/.aiworker/aiworker.json`(见上) |
|
|
360
365
|
| 公网 `/health` 返回 401 | Caddy basicauth | `curl -u operator:<pwd> https://your-gateway/health` |
|
|
361
|
-
| OTP enroll 后 `aiworker chat` `executor error: OpenAI API key is not configured` | worker 没配 LLM | 走"Worker 配 LLM executor"段,切 claude-code / 配 OpenAI key |
|
|
366
|
+
| OTP enroll 后 `aiworker fleet chat` `executor error: OpenAI API key is not configured` | worker 没配 LLM | 走"Worker 配 LLM executor"段,切 claude-code / 配 OpenAI key |
|
|
362
367
|
| systemd `aiworker-gateway` exit 1 `gateway 入口未找到` | 用了 0.2.0 旧 cli | `bun install -g @zonease/aiworker-cli@latest`(≥0.2.1)+ restart |
|
|
363
368
|
|
|
364
369
|
---
|