@qfeius/everyline-cli 0.1.2 → 0.1.3
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 +307 -43
- package/bin/checksums.txt +6 -6
- package/bin/darwin-amd64/everyline-cli +0 -0
- package/bin/darwin-arm64/everyline-cli +0 -0
- package/bin/linux-amd64/everyline-cli +0 -0
- package/bin/linux-arm64/everyline-cli +0 -0
- package/bin/windows-amd64/everyline-cli.exe +0 -0
- package/bin/windows-arm64/everyline-cli.exe +0 -0
- package/docs/everyline-cli-skill-guide.md +645 -0
- package/docs/everyline-cli-skill-interaction-scenarios.md +321 -0
- package/docs/npm-release.md +72 -0
- package/package.json +15 -5
- package/scripts/doubao-skills.js +150 -0
- package/scripts/install.js +500 -9
- package/scripts/run.js +4 -1
- package/scripts/sync-skill-versions.js +30 -0
- package/skills/everyline-cli/SKILL.md +286 -0
- package/skills/everyline-review/SKILL.md +102 -0
- package/skills/everyline-review/references/review-flow.md +156 -0
- package/skills/everyline-review-config/SKILL.md +64 -0
- package/skills/everyline-review-config/references/management.md +138 -0
package/README.md
CHANGED
|
@@ -1,81 +1,345 @@
|
|
|
1
1
|
# everyline-cli
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
EveryLine 命令行工具,支持合同审查工作流、审查清单和审查规则管理。
|
|
4
4
|
|
|
5
|
-
|
|
5
|
+
公开版本只提供 prod 环境预设。其他部署环境应通过自定义 Profile 配置,不在公开文档和安装包中暴露内部环境地址。
|
|
6
6
|
|
|
7
|
-
|
|
7
|
+
## 安装
|
|
8
8
|
|
|
9
|
-
|
|
9
|
+
npm 包名为 `@qfeius/everyline-cli`,终端命令仍为 `everyline-cli`。 本地交付统一使用 `make package`,每次自动递增补丁版本,并同步 CLI 与三项 Skill 后生成安装包。发布到 npm 前使用 `.tgz` 安装;发布配置与操作见 [npm 发布指南](docs/npm-release.md)。
|
|
10
|
+
|
|
11
|
+
npm 全局安装会同步登记 Codex 和 WorkBuddy 的三项 Skill。切换 Node/npm 安装目录时,安装器会校验旧链接所属的 EveryLine 包并更新链接,保留已有授权状态;迁移中途失败会尝试恢复原链接。用户自建目录或其他来源的同名 Skill 会保留并提示冲突。需要手动备份时,请放在 Skill 扫描目录之外,避免仅添加 `.bak` 后缀后仍被作为同名 Skill 加载。
|
|
12
|
+
|
|
13
|
+
豆包工作本地技能也随 npm 全局安装同步。macOS 自动识别已存在的 `~/Library/Application Support/DoubaoWork/Default/.doubaowork/agent_mode/workspace/.user_skills`;其他平台或自定义工作区通过 `EVERYLINE_DOUBAO_SKILLS_DIR` 指定实际技能根目录。安装器比较三项技能的完整内容,同版本重新打包也会更新引用文件,旧副本留在扫描目录外,失败时回滚。同步后返回 `skills_updated / reload_skills`,Agent 应重新读取技能或新建任务;仅更新文件不会改写历史对话。`EVERYLINE_SKIP_DOUBAO_SKILL_INSTALL=1` 可单独跳过豆包。
|
|
14
|
+
|
|
15
|
+
### 本地构建
|
|
16
|
+
|
|
17
|
+
构建要求:Go 1.24 或更高版本、Node.js 18 或更高版本。进入 everyline-cli 源码目录后执行:
|
|
18
|
+
|
|
19
|
+
~~~bash
|
|
20
|
+
cd everyline-cli
|
|
10
21
|
make test
|
|
11
22
|
make build
|
|
12
|
-
./bin/everyline-cli version
|
|
13
|
-
```
|
|
14
23
|
|
|
15
|
-
|
|
24
|
+
mkdir -p ~/.local/bin
|
|
25
|
+
install -m 755 bin/everyline-cli ~/.local/bin/everyline-cli
|
|
26
|
+
export PATH="$HOME/.local/bin:$PATH"
|
|
16
27
|
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
--env dev \
|
|
20
|
-
--app-id cli_xxx
|
|
28
|
+
everyline-cli version
|
|
29
|
+
~~~
|
|
21
30
|
|
|
22
|
-
|
|
23
|
-
everyline-cli auth login
|
|
31
|
+
## 认证方式选择
|
|
24
32
|
|
|
25
|
-
|
|
26
|
-
|
|
33
|
+
| 使用场景 | 推荐身份 | 授权方式 |
|
|
34
|
+
|---|---|---|
|
|
35
|
+
| Codex、人工终端交互 | user | 浏览器 OAuth 授权 |
|
|
36
|
+
| 豆包(含本地电脑)、WorkBuddy | user | `auth init` / `auth complete` Device Grant |
|
|
37
|
+
| CI、定时任务、无浏览器 Agent | app | app-id + app secret |
|
|
27
38
|
|
|
28
|
-
|
|
39
|
+
user 身份不需要 app-id;app 身份必须配置 app-id。建议为不同身份创建不同 Profile,并在每次调用时显式指定 --profile 和 --as。
|
|
29
40
|
|
|
30
|
-
|
|
41
|
+
## user 用户授权
|
|
31
42
|
|
|
32
|
-
|
|
43
|
+
### 创建 Profile
|
|
33
44
|
|
|
34
|
-
|
|
35
|
-
everyline-cli config add
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
45
|
+
~~~bash
|
|
46
|
+
everyline-cli config add prod-user \
|
|
47
|
+
--env prod \
|
|
48
|
+
--default-identity user
|
|
49
|
+
~~~
|
|
39
50
|
|
|
40
|
-
|
|
51
|
+
### 浏览器登录
|
|
41
52
|
|
|
42
|
-
|
|
53
|
+
~~~bash
|
|
54
|
+
everyline-cli auth login \
|
|
55
|
+
--profile prod-user \
|
|
56
|
+
--as user \
|
|
57
|
+
--timeout 3m
|
|
58
|
+
~~~
|
|
43
59
|
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
60
|
+
CLI 会先读取 OAuth metadata 的 `registration_endpoint` 并动态注册浏览器 public client,再打开浏览器完成用户登录,通过本机 loopback 回调接收授权结果并缓存 user token。每次显式 `auth login --as user` 都使用本次注册返回的 client ID,历史 Profile 中的旧值不会继续参与登录。auth login 不使用 --env;环境在 config add 时指定。
|
|
61
|
+
|
|
62
|
+
user Token 过期且未刷新成功后,通过新的授权链接手动登录:Codex 重新执行 `auth login --profile <profile> --as user --no-open-browser --timeout 3m`;豆包/WorkBuddy 在原会话中执行 `auth init --profile <profile> --as user --output json`,展示本次返回的完整授权链接,用户完成后执行一次 `auth complete`。以 `auth status` 的 `authenticated=true` 确认恢复,再继续原业务操作。
|
|
63
|
+
|
|
64
|
+
豆包(含本地电脑)和 WorkBuddy 统一使用 Device Grant;dev/test Profile 已内置独立 Device client。执行下面的命令前先按后文准备并固定对应宿主的会话变量:
|
|
65
|
+
|
|
66
|
+
~~~bash
|
|
67
|
+
everyline-cli config add test-user --env test --default-identity user
|
|
68
|
+
everyline-cli auth init --profile test-user --as user --output json
|
|
69
|
+
# 用户打开 verification_uri_complete 并完成授权后:
|
|
70
|
+
everyline-cli auth complete --profile test-user --as user --output json
|
|
71
|
+
~~~
|
|
72
|
+
|
|
73
|
+
`auth init` 不监听 `127.0.0.1`,不动态注册 client,也不复用 Codex 浏览器 client。dev/test 预设使用独立 Device client `zscli_c77221e810ce3977`;prod 或自定义环境使用 Device Grant 时,通过 `--oauth-device-client-id` 配置平台确认的 client。dev/test/prod 均不内置浏览器 client ID;Codex 本地每次显式 user 登录会调用 metadata 声明的 `registration_endpoint`,保存返回值后启动 OAuth Authorization Code + PKCE,且不覆盖 Device client。豆包 AgentKit 的安全凭证存储要求注入 base64 编码的 32 字节 `EVERYLINE_CLI_CREDENTIAL_KEY_V1`,WorkBuddy 使用系统凭证库。
|
|
74
|
+
|
|
75
|
+
WorkBuddy 必须在第一次 `auth init` 前固定一个 `CODEBUDDY_SESSION_ID`,并在 `auth init`、用户回复“已授权”后的 `auth complete` 以及后续 `auth status` 中复用同一值。`auth complete` 本地提示没有待完成事务时,先用原值重试 `auth complete`;只有服务端状态明确为 `denied`、`expired` 或 `invalid_grant` 后才开始新的授权事务,避免让用户重复打开授权链接。
|
|
76
|
+
|
|
77
|
+
豆包普通工作任务(含“本地电脑”模式)在首次 `auth status` 前固定 `SESSION_ID` 和初始工作目录;宿主未提供标识时由 Agent 只生成一次 UUID,后续每条 CLI 命令都显式添加 `SESSION_ID=<same-session-id>`,并使用同一工作目录。豆包本地模式不使用 `auth login --as user`。Device 会话缺少凭证时返回未授权,不继承本机旧 OAuth token;找不到待完成事务时先恢复原标识和工作目录。
|
|
78
|
+
|
|
79
|
+
检查授权状态:
|
|
80
|
+
|
|
81
|
+
~~~bash
|
|
82
|
+
everyline-cli auth status \
|
|
83
|
+
--profile prod-user \
|
|
84
|
+
--as user \
|
|
85
|
+
--output json
|
|
86
|
+
~~~
|
|
87
|
+
|
|
88
|
+
`auth status` 默认读取当前身份对应的安全缓存。OAuth metadata 声明 refresh grant 时,CLI 会在过期前五分钟尝试刷新;进入该窗口后缺少 refresh token 或刷新失败时提示手动重新授权,不回退使用旧 token;业务请求收到可信 `code=110004` 时只刷新并重放一次。服务端不支持刷新或返回 `invalid_grant` 时清理被拒绝的旧 token;并发写入的新 token 会保留。
|
|
89
|
+
|
|
90
|
+
prod 预设已包含正式 OAuth metadata、business type、loopback redirect 和 scope;使用 `--env prod` 创建 user Profile 后,每次显式 Codex user 登录都会通过 metadata 声明的注册端点动态获取浏览器 client ID。prod 当前不内置 Device client,豆包/WorkBuddy 使用 prod 时需显式配置 `--oauth-device-client-id`。CLI 不把 AuthURL 直接当作 OAuth authorization endpoint。
|
|
91
|
+
|
|
92
|
+
## app 应用授权
|
|
93
|
+
|
|
94
|
+
### 创建 Profile
|
|
95
|
+
|
|
96
|
+
~~~bash
|
|
97
|
+
export EVERYLINE_APP_ID='cli_prod_xxx'
|
|
98
|
+
|
|
99
|
+
everyline-cli config add prod-app \
|
|
100
|
+
--env prod \
|
|
101
|
+
--default-identity app \
|
|
102
|
+
--app-id "$EVERYLINE_APP_ID"
|
|
103
|
+
~~~
|
|
104
|
+
|
|
105
|
+
### 登录
|
|
106
|
+
|
|
107
|
+
本地或 CI 环境都建议通过 stdin 传入 app secret,避免 secret 出现在命令参数中:
|
|
108
|
+
|
|
109
|
+
~~~bash
|
|
110
|
+
export EVERYLINE_APP_SECRET='从 Secret Manager 注入的值'
|
|
111
|
+
|
|
112
|
+
printf '%s' "$EVERYLINE_APP_SECRET" | \
|
|
113
|
+
everyline-cli auth login \
|
|
114
|
+
--profile prod-app \
|
|
115
|
+
--as app \
|
|
116
|
+
--app-secret-stdin \
|
|
117
|
+
--output json
|
|
118
|
+
~~~
|
|
119
|
+
|
|
120
|
+
本地开发机如果希望保存 app secret,可以显式使用 --save-app-secret。macOS 优先保存到 Keychain,其他系统使用配置目录下的 secrets.json。CI 和定时任务不应持久化 app secret。
|
|
121
|
+
|
|
122
|
+
app-id 的来源优先级为:--app-id > Profile 专用环境变量 > EVERYLINE_APP_ID > Profile。app secret 的来源优先级为:--app-secret > --app-secret-stdin > Profile 专用环境变量 > EVERYLINE_APP_SECRET > 本地安全存储。
|
|
123
|
+
|
|
124
|
+
## Codex/Agent 最佳实践
|
|
125
|
+
|
|
126
|
+
仓库和 npm 发布包包含三项职责分离的交互式 Skill:`everyline-cli` 负责首次配置、身份和授权,`everyline-review` 负责单份合同审查,`everyline-review-config` 负责清单、规则和规则分组。三项 Skill 共用当前 CLI 的实时帮助和结构化输出约束;原 `everyline-shared` 已合并到 `everyline-cli`。
|
|
127
|
+
|
|
128
|
+
全局安装 npm 包时,`postinstall` 会把三项 Skill 同步登记到 Codex 的 `$HOME/.agents/skills`、WorkBuddy 的 `$HOME/.workbuddy/skills`,并同步已发现或显式指定的豆包本地技能目录。首次安装建立授权门禁:旧 token 保留,但必须完成一次新的 user/app 授权后才能调用审查、清单或规则业务命令。项目局部安装和 `npx` 临时执行不登记用户级 Skill;豆包云端导入路径仍使用 `make skill-assets` 生成的三个独立 ZIP。Skill 不修改或替代 CLI 接口。
|
|
129
|
+
|
|
130
|
+
首次安装使用 `npm install -g --foreground-scripts --allow-scripts=@qfeius/everyline-cli @qfeius/everyline-cli@latest`,让安装器提示可见。Codex、WorkBuddy 和豆包均需在确认 CLI 与 Skill 就绪后,由 Agent 在回复正文展示统一安装完成文案;豆包静态 ZIP 导入在导入后首次运行时完成这一检查和提示。
|
|
131
|
+
|
|
132
|
+
在 Codex、WorkBuddy 或豆包电脑版安装并验证完整交互流程,请参阅 [EveryLine CLI 交互 Skill 安装与验证](docs/everyline-cli-skill-guide.md);评审全部对话分支,请参阅 [EveryLine CLI Skill 全量交互场景](docs/everyline-cli-skill-interaction-scenarios.md)。
|
|
133
|
+
|
|
134
|
+
Agent 执行 CLI 时建议遵循固定流程:
|
|
135
|
+
|
|
136
|
+
1. 检查版本和命令路径。
|
|
137
|
+
2. 使用显式 --profile 和 --as,不要依赖当前默认 Profile。
|
|
138
|
+
3. 先执行 auth status --output json。
|
|
139
|
+
4. 正式请求前先使用 --dry-run 或 --print-input。
|
|
140
|
+
5. 使用 --output json,不要解析 table 输出。
|
|
141
|
+
6. 将 stdout 作为业务结果,将 stderr 作为进度和诊断。
|
|
142
|
+
7. 已有 task-id 时使用 review task result,不要重复发起任务。
|
|
143
|
+
8. 遇到超时不要盲目重试 review task start,优先查询已有任务状态。
|
|
144
|
+
|
|
145
|
+
长期无人值守任务仍使用 app 身份。人工参与的豆包/WorkBuddy 沙箱可通过 Device Grant 使用 user 身份;Codex 本地交互继续使用 `auth login`。
|
|
146
|
+
|
|
147
|
+
Agent 调用示例:
|
|
148
|
+
|
|
149
|
+
~~~bash
|
|
150
|
+
everyline-cli auth status \
|
|
151
|
+
--profile prod-app \
|
|
152
|
+
--as app \
|
|
153
|
+
--output json
|
|
49
154
|
|
|
50
|
-
|
|
155
|
+
everyline-cli review run \
|
|
156
|
+
--profile prod-app \
|
|
157
|
+
--as app \
|
|
158
|
+
--input review-run.json \
|
|
159
|
+
--output json \
|
|
160
|
+
--timeout 30s \
|
|
161
|
+
--deadline 10m \
|
|
162
|
+
--interval 2s \
|
|
163
|
+
> result.json 2> progress.log
|
|
164
|
+
~~~
|
|
51
165
|
|
|
52
|
-
##
|
|
166
|
+
## 执行合同审查
|
|
53
167
|
|
|
54
|
-
|
|
168
|
+
### 一键流程
|
|
169
|
+
|
|
170
|
+
准备 review-run.json:
|
|
171
|
+
|
|
172
|
+
~~~json
|
|
55
173
|
{
|
|
56
174
|
"source": {
|
|
57
175
|
"type": "file",
|
|
58
176
|
"path": "./contract.pdf",
|
|
59
177
|
"name": "采购合同.pdf"
|
|
60
178
|
},
|
|
61
|
-
"
|
|
62
|
-
|
|
63
|
-
|
|
179
|
+
"config": {
|
|
180
|
+
"selectedPosition": "xxx公司",
|
|
181
|
+
"selectedAuditRole": "甲方",
|
|
182
|
+
"reviewStrength": "中立",
|
|
183
|
+
"matchContractTypeRulePackage": true
|
|
184
|
+
},
|
|
64
185
|
"extractSubjects": true,
|
|
65
186
|
"wait": true
|
|
66
187
|
}
|
|
67
|
-
|
|
188
|
+
~~~
|
|
189
|
+
|
|
190
|
+
先进行本地校验:
|
|
191
|
+
|
|
192
|
+
~~~bash
|
|
193
|
+
everyline-cli review run \
|
|
194
|
+
--profile prod-user \
|
|
195
|
+
--as user \
|
|
196
|
+
--input review-run.json \
|
|
197
|
+
--dry-run
|
|
198
|
+
~~~
|
|
199
|
+
|
|
200
|
+
确认无误后执行:
|
|
201
|
+
|
|
202
|
+
~~~bash
|
|
203
|
+
everyline-cli review run \
|
|
204
|
+
--profile prod-user \
|
|
205
|
+
--as user \
|
|
206
|
+
--input review-run.json \
|
|
207
|
+
--output json \
|
|
208
|
+
> result.json 2> progress.log
|
|
209
|
+
~~~
|
|
210
|
+
|
|
211
|
+
config.selectedPosition、config.selectedAuditRole 和 config.reviewStrength 是发起审查必填字段。`selectedPosition` 填写合同主体的精确名称,`selectedAuditRole` 填写同一主体在主体提取响应中的角色,例如“甲方”或“乙方”。`reviewStrength` 推荐使用“弱势/中立/强势”,并兼容旧版 `0/1/2`;CLI 在 HTTP 边界统一转换为 `0/1/2`。规则来源必须满足非空 `selectedCheckListIds` 或 `matchContractTypeRulePackage=true` 至少一项;两项同时提供时组合执行,互不覆盖且没有优先级。文件来源通常由上传接口补充文件身份;URL 来源还需要提供 businessId 和上传接口返回的 fileHash。发起审查的实际 HTTP 请求会固定补入 `usageReportContext.reportBusinessCode=everyLine_100_openApi_cli`,调用方无需提供也不能覆盖。
|
|
212
|
+
|
|
213
|
+
### 分步流程
|
|
214
|
+
|
|
215
|
+
需要控制每个阶段时使用:
|
|
68
216
|
|
|
69
|
-
|
|
217
|
+
~~~text
|
|
218
|
+
review file upload
|
|
219
|
+
↓
|
|
220
|
+
review task start
|
|
221
|
+
↓
|
|
222
|
+
review task result
|
|
223
|
+
~~~
|
|
70
224
|
|
|
71
|
-
|
|
225
|
+
上传文件:
|
|
72
226
|
|
|
73
|
-
|
|
227
|
+
~~~bash
|
|
228
|
+
everyline-cli review file upload \
|
|
229
|
+
--profile prod-user \
|
|
230
|
+
--as user \
|
|
231
|
+
--file ./contract.pdf \
|
|
232
|
+
--name 采购合同.pdf \
|
|
233
|
+
--output json > upload.json
|
|
234
|
+
~~~
|
|
74
235
|
|
|
75
|
-
|
|
236
|
+
沙箱宿主只提供原始附件字节流时,可保持相同上传契约并改用 stdin:
|
|
76
237
|
|
|
77
|
-
|
|
238
|
+
~~~bash
|
|
239
|
+
everyline-cli review file upload --profile prod-user --as user --stdin --name 采购合同.pdf --output json < attachment.pdf
|
|
240
|
+
~~~
|
|
241
|
+
|
|
242
|
+
使用上传结果中的 businessId、fileId 和 fileHash 发起任务:
|
|
243
|
+
|
|
244
|
+
~~~bash
|
|
245
|
+
everyline-cli review task start \
|
|
246
|
+
--profile prod-user \
|
|
247
|
+
--as user \
|
|
248
|
+
--data '{"businessId":"biz-001","fileId":123456,"fileHash":"<upload.fileHash>","config":{"selectedPosition":"xxx公司","selectedAuditRole":"甲方","reviewStrength":"中立","matchContractTypeRulePackage":true}}' \
|
|
249
|
+
--output json
|
|
250
|
+
~~~
|
|
251
|
+
|
|
252
|
+
拿到 taskId 后获取最终结果:
|
|
253
|
+
|
|
254
|
+
~~~bash
|
|
255
|
+
everyline-cli review task result \
|
|
256
|
+
--profile prod-user \
|
|
257
|
+
--as user \
|
|
258
|
+
--task-id 123456789 \
|
|
259
|
+
--output json > result.json
|
|
260
|
+
~~~
|
|
261
|
+
|
|
262
|
+
review task result 会在 stderr 输出 running 等任务状态,并把最终审查结果输出到 stdout;后端提供顶层 `url` 时会规范化为 `reviewDetailUrl`。JSON/raw 不对 URL 中的 `&` 做 HTML 转义,Skill 必须逐字展示包含完整 `token` query 的字段值。飞书用户 OAuth 响应缺少预览链接时仍返回完整成功详情。
|
|
263
|
+
|
|
264
|
+
CLI 已移除 --app-type 参数;文件上传也不再接受 --business-id。发起审查输入只接受当前契约声明的字段,未知字段会被拒绝;`usageReportContext` 仅由 CLI 在 HTTP 边界固定生成。
|
|
265
|
+
|
|
266
|
+
## 自更新
|
|
267
|
+
|
|
268
|
+
CLI 与三项本地 Skill 支持两种更新来源:用户提供的 `.tgz`,或官方 npm 的最新版。两者都由 npm 安装器完成同步,保留原安装 prefix 和账号配置。
|
|
78
269
|
|
|
79
270
|
```bash
|
|
80
|
-
|
|
271
|
+
# 使用指定包,无需先发布到 npm;将路径替换为实际文件。
|
|
272
|
+
npm install -g --foreground-scripts --allow-scripts=@qfeius/everyline-cli ./everyline-cli-<版本>.tgz
|
|
273
|
+
|
|
274
|
+
# 使用已经发布到 npm 的最新版。
|
|
275
|
+
npm install -g --foreground-scripts --allow-scripts=@qfeius/everyline-cli @qfeius/everyline-cli@latest --registry https://registry.npmjs.org
|
|
81
276
|
```
|
|
277
|
+
|
|
278
|
+
指定 tgz 时不因版本相同或 npm 查询失败跳过安装。更新后核对 CLI 与三项 Skill,重新读取或新建任务加载;豆包云端手动导入的 Skill 仍需在平台重新导入。详见 [更新与卸载](docs/everyline-cli-skill-guide.md#10-更新与卸载)。`everyline-cli update` 本身仍用于下述独立二进制 manifest 更新。
|
|
279
|
+
|
|
280
|
+
|
|
281
|
+
`everyline-cli version` 输出 `latestVersion/isLatest/updateRequired/updateCommand`;检查失败时 `isLatest=null`,且不会把未知状态当成需要更新。普通 review/checklist/rule 命令确认存在新版本时,在 stderr 输出 `UPDATE_PENDING` 单行 JSON,但继续完成当前业务 API。Agent 在当前完整业务流程结束后执行其中的 `updateCommand`,下一条新业务再使用新版 CLI 与 Skill。
|
|
282
|
+
|
|
283
|
+
独立二进制可以通过 HTTPS manifest 检查和更新当前平台制品。地址按 `--manifest-url`、`EVERYLINE_CLI_UPDATE_MANIFEST_URL`、发布构建内置值的顺序选择:
|
|
284
|
+
|
|
285
|
+
~~~bash
|
|
286
|
+
everyline-cli update \
|
|
287
|
+
--manifest-url https://example.com/everyline-cli/manifest.json \
|
|
288
|
+
--dry-run
|
|
289
|
+
|
|
290
|
+
everyline-cli update \
|
|
291
|
+
--manifest-url https://example.com/everyline-cli/manifest.json
|
|
292
|
+
~~~
|
|
293
|
+
|
|
294
|
+
manifest 需要声明版本、当前平台的制品 URL 和 SHA-256。CLI 只有在新版本、平台匹配且摘要校验通过时才替换二进制;下载失败或校验失败会保留原文件。Windows 需要延后替换时返回 `updated=false, scheduled=true`,独立 helper 的最终结果写入 stderr。通过 npm/npx 薄包装启动时不会修改包内二进制,请使用 npm 更新包。
|
|
295
|
+
|
|
296
|
+
CLI 和三项 Skill 来自同一个 npm 包。npm 更新成功后,Codex 与 WorkBuddy 的现有目录链接直接使用新版 Skill,已发现或显式配置的豆包本地技能目录同步完整内容。版本门禁以统一包版本为检测信号,因此每次 Skill 发布(包括纯文案调整)都必须提升 `package.json` 版本、发布同版本 npm 包并更新远端 manifest;只替换 ZIP 而不提升统一版本不会触发本地强制更新。主动重装 npm 包时,豆包同步仍会比较内容;豆包云端导入版按平台发布流程上传新 ZIP。
|
|
297
|
+
|
|
298
|
+
manifest 示例:
|
|
299
|
+
|
|
300
|
+
~~~json
|
|
301
|
+
{
|
|
302
|
+
"version": "1.2.3",
|
|
303
|
+
"platforms": {
|
|
304
|
+
"darwin-arm64": {
|
|
305
|
+
"url": "https://example.com/everyline-cli/1.2.3/darwin-arm64/everyline-cli",
|
|
306
|
+
"sha256": "0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef"
|
|
307
|
+
}
|
|
308
|
+
}
|
|
309
|
+
}
|
|
310
|
+
~~~
|
|
311
|
+
|
|
312
|
+
## 输出与安全
|
|
313
|
+
|
|
314
|
+
- 新 Profile 和未配置回退的默认输出为 JSON;显式配置的 table、yaml、raw 保持不变。
|
|
315
|
+
- 结构化结果使用 --output json 或 --raw,便于 Agent 和脚本解析。
|
|
316
|
+
- stdout 只承载业务结果;进度、浏览器授权提示和诊断信息写入 stderr。
|
|
317
|
+
- --dry-run 和 --print-input 只校验并输出规范化请求,不调用远端。
|
|
318
|
+
- 不要把 app secret、token 或 OAuth code 写入代码、日志、命令参数或提交记录。
|
|
319
|
+
- auth logout 删除 token 缓存;显式保存的 app secret 不会被自动删除。
|
|
320
|
+
- token、Profile 和 secret 文件由 CLI 使用受限权限保存;不要把配置目录加入公共仓库。
|
|
321
|
+
|
|
322
|
+
## 常用命令
|
|
323
|
+
|
|
324
|
+
~~~bash
|
|
325
|
+
everyline-cli config list
|
|
326
|
+
everyline-cli config show prod-user --output yaml
|
|
327
|
+
everyline-cli auth status --profile prod-user --as user --output json
|
|
328
|
+
everyline-cli auth logout --profile prod-user --as user
|
|
329
|
+
everyline-cli completion zsh
|
|
330
|
+
~~~
|
|
331
|
+
|
|
332
|
+
完整命令和 API 映射见命令参考与 API 映射。
|
|
333
|
+
|
|
334
|
+
## 开源贡献
|
|
335
|
+
|
|
336
|
+
提交代码前请确认:
|
|
337
|
+
|
|
338
|
+
- 不新增内部环境地址、内部域名或未确认的 OAuth 配置。
|
|
339
|
+
- 不提交 app secret、access token、OAuth code、Keychain 内容或本地配置文件。
|
|
340
|
+
- 使用 fake HTTP、临时 Profile 和测试 token 验证功能,不依赖真实 prod 凭证。
|
|
341
|
+
- 运行 go test ./...、go vet ./... 和 make build。
|
|
342
|
+
|
|
343
|
+
npm 安装版通过 `everyline-cli version --output json` 查询 npm 官方源的 `latest` 版本,无需配置 manifest。发现新版后,在当前业务流程结束时执行返回的 `updateCommand`,由 npm 安装器同步 CLI 和本地 Skills;检查失败时最新版本状态保持未知。独立二进制安装仍使用 HTTPS manifest。
|
|
344
|
+
|
|
345
|
+
三项 Skill 使用 `metadata.version` 标记实际加载版本。`npm pack` / `npm publish` 的 prepack 和 `scripts/build-skill-bundles.sh` 会自动从 `package.json` 同步该版本;发布前仍需以相同版本构建 CLI。每个会话首次使用时展示 Skill、CLI 和 npm 最新安装包版本,发现新版后在当前业务结束时更新;宿主文件已更新而会话仍旧时提示新建任务。
|
package/bin/checksums.txt
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
1
|
+
047f56657da2c179ffda29f0ab3f629347993736b763e338ac5f36585cd442e5 bin/darwin-amd64/everyline-cli
|
|
2
|
+
62dbc113dfae46b27a2c1e3bffaee339c43653477fb91ceb80a60f9b73902e58 bin/darwin-arm64/everyline-cli
|
|
3
|
+
77bd019ce146da784134cc39add984e4c7be1b7f6d33e9768e87792e9fc47d45 bin/linux-amd64/everyline-cli
|
|
4
|
+
e845e1171d2dc784e2600eef984f367d318c3e74fc62e50c0a2937b95c1432cc bin/linux-arm64/everyline-cli
|
|
5
|
+
d7dfc430e0101c303073de2c93bf3d57c9948d5f09c1295633c5257eb2188c97 bin/windows-amd64/everyline-cli.exe
|
|
6
|
+
f3a1584659cbfb529bb210ff29b3a6026adc642c5ffd5d8a863228660bdb0c85 bin/windows-arm64/everyline-cli.exe
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|