@viceme-ai/cli 0.13.2 → 0.14.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 +34 -0
- package/README.md +203 -165
- package/README.zh.md +180 -134
- package/checksums.txt +6 -6
- package/docs/releasing.md +40 -7
- package/package.json +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,39 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
+
## [0.14.2] - 2026-08-15
|
|
4
|
+
|
|
5
|
+
### Fixes
|
|
6
|
+
|
|
7
|
+
- 修复发布契约恢复流程 (`1d07412`)
|
|
8
|
+
|
|
9
|
+
## [0.14.1] - 2026-08-15
|
|
10
|
+
|
|
11
|
+
### Fixes
|
|
12
|
+
|
|
13
|
+
- 对齐 CDN 发布环境 (`914dbc5`)
|
|
14
|
+
|
|
15
|
+
### Other Changes
|
|
16
|
+
|
|
17
|
+
- 兼容 Windows 工作流换行 (`1b57a43`)
|
|
18
|
+
|
|
19
|
+
## [0.14.0] - 2026-08-15
|
|
20
|
+
|
|
21
|
+
### Features
|
|
22
|
+
|
|
23
|
+
- 发布签名 Agent 安装协议 (`14939ae`)
|
|
24
|
+
- 实现稳定 Skill 来源身份与恢复 (`28957ab`)
|
|
25
|
+
|
|
26
|
+
### Fixes
|
|
27
|
+
|
|
28
|
+
- 修复发布工作流代理校验 (`37534e6`)
|
|
29
|
+
- 保持旧发布合同不可变恢复 (`aaaef54`)
|
|
30
|
+
|
|
31
|
+
## [0.13.3] - 2026-08-13
|
|
32
|
+
|
|
33
|
+
### Other Changes
|
|
34
|
+
|
|
35
|
+
- 重构 CLI 快速开始与能力说明 (`77292b7`)
|
|
36
|
+
|
|
3
37
|
## [0.13.2] - 2026-08-13
|
|
4
38
|
|
|
5
39
|
### Fixes
|
package/README.md
CHANGED
|
@@ -1,36 +1,127 @@
|
|
|
1
|
-
|
|
1
|
+
<h1 align="center">ViceMe CLI</h1>
|
|
2
|
+
|
|
3
|
+
<p align="center">
|
|
4
|
+
<strong>Turn local AI Agent Skills into publishable products—from the conversation you already use.</strong>
|
|
5
|
+
</p>
|
|
6
|
+
|
|
7
|
+
<p align="center">
|
|
8
|
+
Install the CLI and official Agent Skills together, then ask Codex, Claude Code, or WorkBuddy to do the rest.
|
|
9
|
+
</p>
|
|
10
|
+
|
|
11
|
+
<p align="center">
|
|
12
|
+
<a href="./README.zh.md">简体中文</a> ·
|
|
13
|
+
<a href="#quick-start">Quick Start</a> ·
|
|
14
|
+
<a href="#official-agent-skills">Agent Skills</a> ·
|
|
15
|
+
<a href="#command-reference">Commands</a> ·
|
|
16
|
+
<a href="#security">Security</a>
|
|
17
|
+
</p>
|
|
18
|
+
|
|
19
|
+
## Why ViceMe CLI?
|
|
20
|
+
|
|
21
|
+
- **Agent-native** — describe what you want in natural language instead of
|
|
22
|
+
memorizing a publication command sequence.
|
|
23
|
+
- **One installation** — the native CLI and matching official Skills are
|
|
24
|
+
installed together for Codex, Claude Code, WorkBuddy, and the shared
|
|
25
|
+
`~/.agents/skills` fallback.
|
|
26
|
+
- **Human-controlled publishing** — the model can suggest bilingual copy and
|
|
27
|
+
media, but only the user decides the price and authorizes public publication.
|
|
28
|
+
- **Deterministic and resumable** — the CLI validates and packages locally,
|
|
29
|
+
preserves publication identity across interruptions, and avoids duplicate
|
|
30
|
+
listings when a response is lost.
|
|
31
|
+
- **Built for Agents and automation** — stable JSON output, error codes, dry
|
|
32
|
+
runs, and explicit state transitions make every action inspectable.
|
|
33
|
+
- **Safe by default** — device authorization, origin-bound profiles, local
|
|
34
|
+
secret checks, immutable digests, and verified uploads protect the release
|
|
35
|
+
path.
|
|
36
|
+
|
|
37
|
+
## What you can do
|
|
38
|
+
|
|
39
|
+
| Capability | What ViceMe provides |
|
|
40
|
+
| --- | --- |
|
|
41
|
+
| Publish a Skill | Validate a local Skill directory or ZIP, set a CNY price, upload it, review platform suggestions, and publish a paid listing. |
|
|
42
|
+
| Build a component | Ask an Agent to integrate the bundled production danmaku blueprint into a React and Tailwind CSS v4 project. |
|
|
43
|
+
| Set up an Agent | Install, authenticate, update, diagnose, and repair the CLI and official Skills as one compatible release. |
|
|
44
|
+
| Recover safely | Continue the same publication after a network or process interruption without uploading a duplicate product. |
|
|
45
|
+
|
|
46
|
+
## Quick Start
|
|
47
|
+
|
|
48
|
+
### With an AI Agent (recommended)
|
|
49
|
+
|
|
50
|
+
1. Install the CLI and official Skills:
|
|
51
|
+
|
|
52
|
+
```bash
|
|
53
|
+
curl -fsSL https://s3.viceme.cn/start/install.sh | sh
|
|
54
|
+
```
|
|
55
|
+
|
|
56
|
+
2. Start a new Codex, Claude Code, or WorkBuddy conversation so the Agent can
|
|
57
|
+
discover the installed Skills.
|
|
58
|
+
3. Attach a local Skill directory or ZIP and ask naturally:
|
|
59
|
+
|
|
60
|
+
> Publish this Skill to ViceMe for CNY 1.00.
|
|
61
|
+
|
|
62
|
+
The Agent checks login before reading the package, keeps the selected Profile
|
|
63
|
+
fixed throughout the workflow, validates the Skill, and asks before uploading.
|
|
64
|
+
After ViceMe prepares the bilingual copy and media suggestions, the Agent shows
|
|
65
|
+
the complete review—including the images—and asks once whether to confirm and
|
|
66
|
+
publish it publicly.
|
|
67
|
+
|
|
68
|
+
```text
|
|
69
|
+
Local Skill → Login → Validate → Confirm price → Upload → Platform analysis
|
|
70
|
+
→ Visual review → Confirm and publish → Public product URL
|
|
71
|
+
```
|
|
72
|
+
|
|
73
|
+
The initial request to “publish” is not permission to make the listing public.
|
|
74
|
+
Public publication happens only after the final review is displayed and the
|
|
75
|
+
user explicitly confirms it.
|
|
76
|
+
|
|
77
|
+
### From the terminal
|
|
78
|
+
|
|
79
|
+
```bash
|
|
80
|
+
# Verify the installation and current account.
|
|
81
|
+
viceme doctor
|
|
82
|
+
viceme auth status
|
|
83
|
+
|
|
84
|
+
# Sign in only when auth status reports unauthenticated.
|
|
85
|
+
viceme auth login
|
|
86
|
+
|
|
87
|
+
# Inspect without uploading anything.
|
|
88
|
+
viceme skill inspect --path ./my-skill
|
|
2
89
|
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
CLI handles installation, device authorization, validation, packaging,
|
|
6
|
-
uploads, review, and publication.
|
|
90
|
+
# Create or recover the stable private owner preview before pricing
|
|
91
|
+
viceme skill listing prepare --path ./my-skill
|
|
7
92
|
|
|
8
|
-
|
|
93
|
+
# Preview the exact package and CNY 1.00 price plan.
|
|
94
|
+
viceme skill publish --path ./my-skill --price-minor 100 --dry-run
|
|
95
|
+
```
|
|
96
|
+
|
|
97
|
+
## Installation
|
|
9
98
|
|
|
10
|
-
|
|
99
|
+
The official bootstrap installs the native CLI and all official Agent Skills
|
|
100
|
+
from one immutable release.
|
|
11
101
|
|
|
12
|
-
|
|
13
|
-
one immutable release.
|
|
102
|
+
### macOS or Linux
|
|
14
103
|
|
|
15
|
-
China
|
|
104
|
+
China:
|
|
16
105
|
|
|
17
106
|
```bash
|
|
18
107
|
curl -fsSL https://s3.viceme.cn/start/install.sh | sh
|
|
19
108
|
```
|
|
20
109
|
|
|
21
|
-
International
|
|
110
|
+
International:
|
|
22
111
|
|
|
23
112
|
```bash
|
|
24
113
|
VICEME_REGION=global sh -c "$(curl -fsSL https://s3.viceme.ai/start/install.sh)"
|
|
25
114
|
```
|
|
26
115
|
|
|
27
|
-
|
|
116
|
+
### Windows PowerShell
|
|
117
|
+
|
|
118
|
+
China:
|
|
28
119
|
|
|
29
120
|
```powershell
|
|
30
121
|
irm https://s3.viceme.cn/start/install.ps1 | iex
|
|
31
122
|
```
|
|
32
123
|
|
|
33
|
-
International
|
|
124
|
+
International:
|
|
34
125
|
|
|
35
126
|
```powershell
|
|
36
127
|
$env:VICEME_REGION="global"; irm https://s3.viceme.ai/start/install.ps1 | iex
|
|
@@ -42,9 +133,8 @@ If the bootstrap cannot be used, npm is the fallback:
|
|
|
42
133
|
npx --yes @viceme-ai/cli@latest install
|
|
43
134
|
```
|
|
44
135
|
|
|
45
|
-
The installer
|
|
46
|
-
|
|
47
|
-
detected supported Agent:
|
|
136
|
+
The installer writes the compatibility fallback to `~/.agents/skills` and the
|
|
137
|
+
native user directory of every detected supported Agent:
|
|
48
138
|
|
|
49
139
|
| Agent | Native directory |
|
|
50
140
|
| --- | --- |
|
|
@@ -55,9 +145,47 @@ detected supported Agent:
|
|
|
55
145
|
Select a target explicitly with `viceme install --agent codex`, `claude`,
|
|
56
146
|
`workbuddy`, or `agents`. Run `viceme doctor` after installation or repair.
|
|
57
147
|
|
|
58
|
-
##
|
|
148
|
+
## Official Agent Skills
|
|
149
|
+
|
|
150
|
+
| Skill | Use it when you want to... |
|
|
151
|
+
| --- | --- |
|
|
152
|
+
| `viceme-shared` | install ViceMe, sign in with a device code, manage Profiles, update, diagnose, or repair the local setup. |
|
|
153
|
+
| `viceme-publish` | validate, upload, review, resume, or publish a local Skill directory or ZIP as a paid ViceMe listing. |
|
|
154
|
+
| `viceme-danmaku` | build or adapt the bundled production React and Tailwind CSS v4 danmaku component in an existing project. |
|
|
155
|
+
|
|
156
|
+
The Agent Skills own the conversational workflow and approval rules. The CLI
|
|
157
|
+
owns deterministic local work and API calls. This separation lets an Agent
|
|
158
|
+
explain decisions while the same command contract remains reproducible from a
|
|
159
|
+
terminal or automation.
|
|
160
|
+
|
|
161
|
+
## How Skill publishing works
|
|
162
|
+
|
|
163
|
+
The current publication flow accepts one local directory containing a root
|
|
164
|
+
`SKILL.md`, or one local ZIP. Common GitHub ZIPs with a single wrapping
|
|
165
|
+
directory are normalized automatically. Remote URLs and multi-Skill bundles
|
|
166
|
+
are not accepted.
|
|
167
|
+
|
|
168
|
+
| Stage | Responsibility |
|
|
169
|
+
| --- | --- |
|
|
170
|
+
| Login | Device authorization happens before package inspection. Every command remains pinned to the same Profile and API origin. |
|
|
171
|
+
| Inspect | Local validation rejects unsafe paths, special files, excessive content, sensitive files, and common secret patterns. |
|
|
172
|
+
| Price and upload | The user supplies an exact CNY price in fen and explicitly allows the deterministic package to be uploaded. |
|
|
173
|
+
| Analysis | ViceMe proposes short Chinese and English summaries, bilingual usage instructions, a cover, and an ordered gallery. Suggestions are never treated as user decisions. |
|
|
174
|
+
| Review | The Agent displays the exact copy, price, cover, and gallery images. A short summary has a maximum display width of 30; ASCII counts as 1 and Chinese/non-ASCII as 2. |
|
|
175
|
+
| Publish | One explicit final confirmation authorizes review confirmation followed by immediate, irreversible public publication. |
|
|
176
|
+
|
|
177
|
+
If the upload or response is interrupted, continue the existing publication:
|
|
59
178
|
|
|
60
|
-
|
|
179
|
+
```bash
|
|
180
|
+
viceme --profile <publication-profile> skill publish --resume <publication-id>
|
|
181
|
+
```
|
|
182
|
+
|
|
183
|
+
Never create a second publication merely because the previous response was
|
|
184
|
+
unknown. Query or resume the existing ID first.
|
|
185
|
+
|
|
186
|
+
## Authentication and Profiles
|
|
187
|
+
|
|
188
|
+
Each Profile binds one region, one API endpoint, and one device-authorized
|
|
61
189
|
account. Profiles without a custom endpoint use the selected region's official
|
|
62
190
|
ViceMe API.
|
|
63
191
|
|
|
@@ -70,35 +198,24 @@ viceme profile list
|
|
|
70
198
|
viceme profile use default
|
|
71
199
|
```
|
|
72
200
|
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
```bash
|
|
77
|
-
viceme profile remove --all --yes
|
|
78
|
-
```
|
|
79
|
-
|
|
80
|
-
This destructive command recreates one unauthenticated `default` Profile; it
|
|
81
|
-
does not leave the CLI with an invalid empty configuration.
|
|
82
|
-
|
|
83
|
-
For a test or private ViceMe deployment, persist the endpoint in a dedicated
|
|
84
|
-
profile before signing in:
|
|
201
|
+
For a test or private deployment, persist a generic HTTPS endpoint in a
|
|
202
|
+
dedicated Profile before signing in:
|
|
85
203
|
|
|
86
204
|
```bash
|
|
87
205
|
viceme profile add \
|
|
88
|
-
--name
|
|
206
|
+
--name private-cn \
|
|
89
207
|
--region cn \
|
|
90
|
-
--api-base-url https://
|
|
208
|
+
--api-base-url https://api.example.com \
|
|
91
209
|
--use
|
|
92
210
|
viceme auth login
|
|
93
211
|
```
|
|
94
212
|
|
|
95
|
-
`
|
|
96
|
-
one-process CI/debug override and is never written to profile configuration.
|
|
213
|
+
`VICEME_API_BASE_URL` is a one-process CI/debug override, not Profile state.
|
|
97
214
|
Remote custom endpoints require HTTPS; only localhost and loopback development
|
|
98
|
-
may use HTTP.
|
|
99
|
-
|
|
215
|
+
may use HTTP. Credentials are isolated by Profile and API origin, and an Agent
|
|
216
|
+
must never switch to another Profile merely because it is already signed in.
|
|
100
217
|
|
|
101
|
-
For an Agent
|
|
218
|
+
For an Agent that cannot wait in one turn:
|
|
102
219
|
|
|
103
220
|
```bash
|
|
104
221
|
viceme auth login --no-wait
|
|
@@ -106,155 +223,76 @@ viceme auth login --device-code <device-code>
|
|
|
106
223
|
```
|
|
107
224
|
|
|
108
225
|
The user completes authorization in the browser. Never copy an access token
|
|
109
|
-
into the conversation.
|
|
110
|
-
sign in again after creating a profile for a different endpoint.
|
|
111
|
-
|
|
112
|
-
## Publish a Skill
|
|
113
|
-
|
|
114
|
-
The first release accepts a local directory containing `SKILL.md` or a local
|
|
115
|
-
ZIP. GitHub URLs, remote downloads, and multi-Skill bundles are not accepted.
|
|
116
|
-
|
|
117
|
-
Authenticate before inspecting the package, then keep every command pinned to
|
|
118
|
-
the Profile returned by `auth status`. An Agent must not switch to another
|
|
119
|
-
Profile merely because that Profile is already signed in.
|
|
120
|
-
|
|
121
|
-
```bash
|
|
122
|
-
viceme auth status
|
|
123
|
-
viceme --profile <publication-profile> auth login # only when unauthenticated
|
|
124
|
-
```
|
|
125
|
-
|
|
126
|
-
Inspect without side effects:
|
|
127
|
-
|
|
128
|
-
```bash
|
|
129
|
-
viceme --profile <publication-profile> skill inspect --path ./my-skill
|
|
130
|
-
```
|
|
131
|
-
|
|
132
|
-
Show the exact deterministic package and price plan:
|
|
133
|
-
|
|
134
|
-
```bash
|
|
135
|
-
viceme --profile <publication-profile> skill publish --path ./my-skill --price-minor 100 --dry-run
|
|
136
|
-
```
|
|
137
|
-
|
|
138
|
-
Start the resumable upload and listing analysis:
|
|
139
|
-
|
|
140
|
-
```bash
|
|
141
|
-
viceme --profile <publication-profile> skill publish --path ./my-skill --price-minor 100
|
|
142
|
-
```
|
|
143
|
-
|
|
144
|
-
Then follow the authoritative publication state:
|
|
145
|
-
|
|
146
|
-
```bash
|
|
147
|
-
viceme publication get <publication-id>
|
|
148
|
-
viceme publication wait <publication-id>
|
|
149
|
-
viceme publication review <publication-id>
|
|
150
|
-
viceme publication asset upload <publication-id> --role cover --path ./cover.png
|
|
151
|
-
viceme publication asset upload <publication-id> --role gallery --path ./demo.png
|
|
152
|
-
viceme publication update <publication-id> --input ./listing-draft.json
|
|
153
|
-
viceme publication confirm <publication-id> --review-digest <digest>
|
|
154
|
-
viceme publication publish <publication-id> --review-digest <digest>
|
|
155
|
-
```
|
|
226
|
+
into the conversation.
|
|
156
227
|
|
|
157
|
-
|
|
158
|
-
`usageInstructionsEnUs` derived from the validated `SKILL.md`, and package
|
|
159
|
-
images, but it never confirms them or decides the price. Each summary has a maximum display width of
|
|
160
|
-
30: ASCII counts as 1 and Chinese/non-ASCII counts as 2. The Agent must show the
|
|
161
|
-
exact bilingual summaries, both usage instructions, price, cover, and ordered gallery
|
|
162
|
-
to the user and receive explicit confirmation before `confirm` and again before
|
|
163
|
-
public `publish`.
|
|
228
|
+
## Command reference
|
|
164
229
|
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
viceme
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
or
|
|
173
|
-
|
|
174
|
-
|
|
230
|
+
| Command | Purpose |
|
|
231
|
+
| --- | --- |
|
|
232
|
+
| `viceme version` | Show the CLI and bundled Skill versions. |
|
|
233
|
+
| `viceme doctor` | Check the CLI, active Profile, credentials, API readiness, and installed official Skills. |
|
|
234
|
+
| `viceme auth status` | Show whether the active Profile is signed in. |
|
|
235
|
+
| `viceme profile list` | Show Profiles and their effective API endpoints. |
|
|
236
|
+
| `viceme skill inspect --path <path>` | Validate a local Skill without side effects. |
|
|
237
|
+
| `viceme skill listing prepare --path <path>` | Create or recover the stable private owner preview and persist the local binding. |
|
|
238
|
+
| `viceme skill listing get <listing-id>` | Read the authoritative private Listing state. |
|
|
239
|
+
| `viceme skill listing bind <listing-id> --path <path>` | Explicitly bind a source to a selected owned Listing. |
|
|
240
|
+
| `viceme skill publish --path <path> --price-minor <fen> --dry-run` | Preview the exact deterministic package and price. |
|
|
241
|
+
| `viceme skill publish --path <path> --price-minor <fen>` | Upload the package and start listing analysis. |
|
|
242
|
+
| `viceme publication wait <id>` | Wait for background analysis without re-uploading. |
|
|
243
|
+
| `viceme publication review <id>` | Read the authoritative bilingual copy, price, selected media, and review state. |
|
|
244
|
+
| `viceme publication asset upload ...` | Replace or add a cover or gallery image before confirmation. |
|
|
245
|
+
| `viceme publication update ...` | Replace the complete listing draft from a strict JSON file. |
|
|
246
|
+
| `viceme publication confirm ...` | Confirm the exact current review digest. |
|
|
247
|
+
| `viceme publication publish ...` | Make a confirmed listing public. |
|
|
248
|
+
| `viceme update` | Update the CLI and matching official Skills together. |
|
|
249
|
+
|
|
250
|
+
Run `viceme <command> --help` for the full flags and JSON fields.
|
|
251
|
+
|
|
252
|
+
## Output and updates
|
|
175
253
|
|
|
176
254
|
Business output is JSON by default. Successful output is the only content on
|
|
177
|
-
stdout; progress and diagnostics use stderr.
|
|
255
|
+
stdout; progress and diagnostics use stderr. Errors use a non-zero exit code
|
|
256
|
+
and a stable `error.code`, so Agents and automation never need to parse message
|
|
257
|
+
text.
|
|
178
258
|
|
|
179
259
|
```json
|
|
180
260
|
{
|
|
181
261
|
"ok": true,
|
|
182
262
|
"data": {},
|
|
183
263
|
"meta": {
|
|
184
|
-
"cliVersion": "
|
|
264
|
+
"cliVersion": "<version>",
|
|
185
265
|
"requestId": "optional"
|
|
186
266
|
}
|
|
187
267
|
}
|
|
188
268
|
```
|
|
189
269
|
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
270
|
+
Released installations check their authoritative release channel at most once
|
|
271
|
+
every 24 hours. When a newer version is available, ordinary JSON responses
|
|
272
|
+
include `_notice.update` with the current version, latest version, and
|
|
273
|
+
`viceme update`. Discovery is fail-open and never changes the business
|
|
274
|
+
command's exit code.
|
|
194
275
|
|
|
195
276
|
```bash
|
|
196
277
|
viceme update --check
|
|
197
278
|
viceme update
|
|
198
279
|
```
|
|
199
280
|
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
the business command's exit code. Set `VICEME_NO_UPDATE_NOTIFIER=1` only for
|
|
205
|
-
automation that intentionally suppresses this hint.
|
|
206
|
-
|
|
207
|
-
Bootstrap installations read the selected region's official S3 release index,
|
|
208
|
-
verify the exact binary checksum, refresh the matching official Skills, and
|
|
209
|
-
activate the binary atomically. npm installations update through the exact npm
|
|
210
|
-
package version. Updates never inherit `VICEME_ACCESS_TOKEN` into child
|
|
211
|
-
processes.
|
|
212
|
-
|
|
213
|
-
Binary or npm-launcher activation, all three official Skills, and profile config are
|
|
214
|
-
one recoverable local generation. Standalone and npm activation share an outer
|
|
215
|
-
activation lock, a delegated member-commit lock, and a durable active-generation
|
|
216
|
-
record containing the semantic version, installation method, and immutable
|
|
217
|
-
identity. One startup coordinator inspects
|
|
218
|
-
both standalone and npm journals regardless of which launcher entered the
|
|
219
|
-
process. Every ordinary command reconciles an interrupted outer journal before
|
|
220
|
-
business logic; a recovered process whose version, method, or immutable identity
|
|
221
|
-
changed must be restarted. The lock-internal generation fence rejects a late
|
|
222
|
-
older updater. Every mutation entry repeats the same two-journal arbitration
|
|
223
|
-
after it owns the activation lock and before any staging or network install, so
|
|
224
|
-
a process paused after startup cannot introduce a second recovery protocol. The
|
|
225
|
-
first phase also rejects switching between standalone and npm
|
|
226
|
-
before any mutation; reinstall explicitly after removing the previous generation
|
|
227
|
-
instead of mixing recovery protocols. Every Skills/config transaction holds or
|
|
228
|
-
revalidates the same generation authority immediately before commit. npm child
|
|
229
|
-
activation is bound to the exact committing journal by a one-time nonce and
|
|
230
|
-
target version; its member lock prevents a parent crash from admitting a newer
|
|
231
|
-
generation while the child still commits. A committed target is only cleaned up
|
|
232
|
-
after a crash—it is never reapplied or rolled back. Private
|
|
233
|
-
journals can therefore only restore the complete previous generation or finish
|
|
234
|
-
the complete target generation. Installation commits after local Skill/version
|
|
235
|
-
integrity checks; an unavailable active-profile API is reported as a warning so
|
|
236
|
-
stale profile state cannot block an upgrade. `viceme doctor` remains the
|
|
237
|
-
explicit network-readiness check before business commands.
|
|
238
|
-
|
|
239
|
-
## First-phase implementation status
|
|
240
|
-
|
|
241
|
-
The installation, device authorization, deterministic package upload, manual or
|
|
242
|
-
suggested listing media, review confirmation, publication, cancellation, and
|
|
243
|
-
terminal recovery paths are implemented. Local acceptance uses real Shop API,
|
|
244
|
-
PostgreSQL, Redis, and S3-compatible storage. `make check`, npm package/cold-start
|
|
245
|
-
tests, race tests, and Darwin/Linux/Windows amd64/arm64 builds pass. A real LLM
|
|
246
|
-
provider sandbox remains an environment acceptance item; without credentials,
|
|
247
|
-
analysis fails closed and the manual media path remains available.
|
|
248
|
-
|
|
249
|
-
## Security boundaries
|
|
281
|
+
The updater verifies the exact release, refreshes the matching official Skills,
|
|
282
|
+
and recovers interrupted activation as one compatible local generation.
|
|
283
|
+
|
|
284
|
+
## Security
|
|
250
285
|
|
|
251
286
|
- Local packaging rejects path traversal, absolute paths, symlinks, special
|
|
252
287
|
files, oversized content, sensitive files, and common secret patterns.
|
|
253
|
-
- The API independently validates the immutable ZIP and object
|
|
254
|
-
|
|
255
|
-
-
|
|
256
|
-
|
|
257
|
-
|
|
288
|
+
- The API independently validates the immutable ZIP, digest, and object
|
|
289
|
+
metadata instead of trusting a client-reported result.
|
|
290
|
+
- Credentials remain in the CLI's secure local store and are scoped to a
|
|
291
|
+
Profile and API origin; they are never part of Agent conversation state.
|
|
292
|
+
- Presigned upload URLs are not written to the local pending-operation store.
|
|
293
|
+
- Model analysis receives only filtered text, metadata, and image thumbnails.
|
|
294
|
+
- Public publication requires the exact reviewed copy, price, cover, and
|
|
295
|
+
ordered gallery to be displayed and explicitly authorized.
|
|
258
296
|
|
|
259
297
|
## Development
|
|
260
298
|
|
|
@@ -266,6 +304,6 @@ make npm-package-check
|
|
|
266
304
|
make release-manifest
|
|
267
305
|
```
|
|
268
306
|
|
|
269
|
-
The CLI and
|
|
270
|
-
|
|
271
|
-
|
|
307
|
+
The CLI and official Agent Skills are versioned and released together. GitHub,
|
|
308
|
+
npm, `s3.viceme.cn`, and `s3.viceme.ai` artifacts come from the same reviewed
|
|
309
|
+
commit.
|
package/README.zh.md
CHANGED
|
@@ -1,34 +1,119 @@
|
|
|
1
|
-
|
|
1
|
+
<h1 align="center">ViceMe CLI</h1>
|
|
2
|
+
|
|
3
|
+
<p align="center">
|
|
4
|
+
<strong>在熟悉的 Agent 对话中,把本地 AI Agent Skill 变成可发布的商品。</strong>
|
|
5
|
+
</p>
|
|
6
|
+
|
|
7
|
+
<p align="center">
|
|
8
|
+
一次安装 CLI 与官方 Agent Skills,然后直接让 Codex、Claude Code 或 WorkBuddy 完成后续流程。
|
|
9
|
+
</p>
|
|
10
|
+
|
|
11
|
+
<p align="center">
|
|
12
|
+
<a href="./README.md">English</a> ·
|
|
13
|
+
<a href="#快速开始">快速开始</a> ·
|
|
14
|
+
<a href="#官方-agent-skills">Agent Skills</a> ·
|
|
15
|
+
<a href="#命令参考">命令参考</a> ·
|
|
16
|
+
<a href="#安全边界">安全边界</a>
|
|
17
|
+
</p>
|
|
18
|
+
|
|
19
|
+
## 为什么使用 ViceMe CLI?
|
|
20
|
+
|
|
21
|
+
- **Agent 原生**——用自然语言描述目标,不需要记住一整套发布命令和状态流转。
|
|
22
|
+
- **一次安装**——原生 CLI 与匹配版本的官方 Skills 一起安装到 Codex、Claude
|
|
23
|
+
Code、WorkBuddy,并写入 `~/.agents/skills` 兼容目录。
|
|
24
|
+
- **由用户控制发布**——模型可以建议双语文案和素材,但价格与最终公开发布只能由
|
|
25
|
+
用户决定。
|
|
26
|
+
- **确定且可恢复**——CLI 在本地校验和打包;中断后继续同一个发布任务,响应丢失
|
|
27
|
+
也不会重复创建商品。
|
|
28
|
+
- **同时适合 Agent 和自动化**——稳定 JSON、错误码、Dry Run 和明确状态让每个动作
|
|
29
|
+
都可检查、可复现。
|
|
30
|
+
- **默认安全**——设备码授权、绑定 Origin 的 Profile、本地 Secret 检查、不可变摘要
|
|
31
|
+
和已验证上传共同保护发布链路。
|
|
32
|
+
|
|
33
|
+
## 能做什么
|
|
34
|
+
|
|
35
|
+
| 能力 | ViceMe 提供的内容 |
|
|
36
|
+
| --- | --- |
|
|
37
|
+
| 发布 Skill | 校验本地 Skill 目录或 ZIP、设置人民币价格、上传、审核平台建议,并发布付费商品。 |
|
|
38
|
+
| 构建组件 | 让 Agent 把随包提供的生产级弹幕蓝图接入 React 与 Tailwind CSS v4 项目。 |
|
|
39
|
+
| 配置 Agent | 把 CLI 与官方 Skills 作为同一个兼容版本安装、登录、更新、诊断和修复。 |
|
|
40
|
+
| 安全恢复 | 网络或进程中断后继续原发布任务,不重复上传和创建商品。 |
|
|
41
|
+
|
|
42
|
+
## 快速开始
|
|
43
|
+
|
|
44
|
+
### 使用 AI Agent(推荐)
|
|
45
|
+
|
|
46
|
+
1. 一次安装 CLI 与官方 Skills:
|
|
47
|
+
|
|
48
|
+
```bash
|
|
49
|
+
curl -fsSL https://s3.viceme.cn/start/install.sh | sh
|
|
50
|
+
```
|
|
51
|
+
|
|
52
|
+
2. 新建一个 Codex、Claude Code 或 WorkBuddy 对话,让 Agent 重新发现刚安装的
|
|
53
|
+
Skills。
|
|
54
|
+
3. 附上本地 Skill 目录或 ZIP,然后直接说:
|
|
55
|
+
|
|
56
|
+
> 帮我把这个 Skill 以人民币 1 元发布到 ViceMe。
|
|
57
|
+
|
|
58
|
+
Agent 会先检查登录状态,在整个流程中固定使用同一个 Profile,再校验 Skill,并在
|
|
59
|
+
上传前询问许可。ViceMe 完成双语文案和素材建议后,Agent 会把完整审核稿和图片直接
|
|
60
|
+
展示出来,最后只询问一次是否确认并立即公开发布。
|
|
61
|
+
|
|
62
|
+
```text
|
|
63
|
+
本地 Skill → 登录 → 校验 → 确认价格 → 上传 → 平台分析
|
|
64
|
+
→ 图文审核 → 确认并发布 → 公开商品链接
|
|
65
|
+
```
|
|
66
|
+
|
|
67
|
+
最初的“帮我发布”不等于授权公开上架。只有完整审核稿已经展示、用户明确确认后,
|
|
68
|
+
商品才会公开。
|
|
69
|
+
|
|
70
|
+
### 直接使用终端
|
|
71
|
+
|
|
72
|
+
```bash
|
|
73
|
+
# 检查安装和当前账户。
|
|
74
|
+
viceme doctor
|
|
75
|
+
viceme auth status
|
|
76
|
+
|
|
77
|
+
# 仅在未登录时发起设备码登录。
|
|
78
|
+
viceme auth login
|
|
79
|
+
|
|
80
|
+
# 只读校验,不上传任何内容。
|
|
81
|
+
viceme skill inspect --path ./my-skill
|
|
2
82
|
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
确定性打包、上传、审核和发布。
|
|
83
|
+
# 定价前先创建或恢复稳定的创作者私有预览
|
|
84
|
+
viceme skill listing prepare --path ./my-skill
|
|
6
85
|
|
|
7
|
-
|
|
86
|
+
# 预览确定性发布包与人民币 1 元的价格计划。
|
|
87
|
+
viceme skill publish --path ./my-skill --price-minor 100 --dry-run
|
|
88
|
+
```
|
|
8
89
|
|
|
9
90
|
## 安装
|
|
10
91
|
|
|
11
|
-
官方 Bootstrap 从同一个不可变 Release 一次安装原生 CLI
|
|
92
|
+
官方 Bootstrap 从同一个不可变 Release 一次安装原生 CLI 和全部官方 Agent Skills。
|
|
93
|
+
|
|
94
|
+
### macOS 或 Linux
|
|
12
95
|
|
|
13
|
-
|
|
96
|
+
中国区:
|
|
14
97
|
|
|
15
98
|
```bash
|
|
16
99
|
curl -fsSL https://s3.viceme.cn/start/install.sh | sh
|
|
17
100
|
```
|
|
18
101
|
|
|
19
|
-
|
|
102
|
+
海外:
|
|
20
103
|
|
|
21
104
|
```bash
|
|
22
105
|
VICEME_REGION=global sh -c "$(curl -fsSL https://s3.viceme.ai/start/install.sh)"
|
|
23
106
|
```
|
|
24
107
|
|
|
25
|
-
|
|
108
|
+
### Windows PowerShell
|
|
109
|
+
|
|
110
|
+
中国区:
|
|
26
111
|
|
|
27
112
|
```powershell
|
|
28
113
|
irm https://s3.viceme.cn/start/install.ps1 | iex
|
|
29
114
|
```
|
|
30
115
|
|
|
31
|
-
|
|
116
|
+
海外:
|
|
32
117
|
|
|
33
118
|
```powershell
|
|
34
119
|
$env:VICEME_REGION="global"; irm https://s3.viceme.ai/start/install.ps1 | iex
|
|
@@ -40,8 +125,7 @@ $env:VICEME_REGION="global"; irm https://s3.viceme.ai/start/install.ps1 | iex
|
|
|
40
125
|
npx --yes @viceme-ai/cli@latest install
|
|
41
126
|
```
|
|
42
127
|
|
|
43
|
-
|
|
44
|
-
各自的用户级目录:
|
|
128
|
+
安装器始终写入兼容目录 `~/.agents/skills`,并为检测到的 Agent 写入原生用户目录:
|
|
45
129
|
|
|
46
130
|
| Agent | 原生目录 |
|
|
47
131
|
| --- | --- |
|
|
@@ -49,12 +133,45 @@ npx --yes @viceme-ai/cli@latest install
|
|
|
49
133
|
| Claude Code | `~/.claude/skills` |
|
|
50
134
|
| WorkBuddy | `~/.workbuddy/skills` |
|
|
51
135
|
|
|
52
|
-
可通过 `viceme install --agent codex`、`claude`、`workbuddy` 或 `agents`
|
|
53
|
-
|
|
136
|
+
可通过 `viceme install --agent codex`、`claude`、`workbuddy` 或 `agents` 指定
|
|
137
|
+
目标。安装或修复后运行 `viceme doctor`。
|
|
138
|
+
|
|
139
|
+
## 官方 Agent Skills
|
|
140
|
+
|
|
141
|
+
| Skill | 适用场景 |
|
|
142
|
+
| --- | --- |
|
|
143
|
+
| `viceme-shared` | 安装 ViceMe、设备码登录、管理 Profile、更新、诊断或修复本地环境。 |
|
|
144
|
+
| `viceme-publish` | 把本地 Skill 目录或 ZIP 校验、上传、审核、恢复或发布为 ViceMe 付费商品。 |
|
|
145
|
+
| `viceme-danmaku` | 在已有项目中构建或适配随包提供的生产级 React 与 Tailwind CSS v4 弹幕组件。 |
|
|
146
|
+
|
|
147
|
+
Agent Skills 负责对话流程和授权规则;CLI 负责确定性本地操作与 API 调用。因此 Agent
|
|
148
|
+
可以解释每一步决策,而相同的命令契约仍可在终端或自动化中复现。
|
|
149
|
+
|
|
150
|
+
## Skill 发布流程
|
|
151
|
+
|
|
152
|
+
当前发布流程接受一个包含根级 `SKILL.md` 的本地目录,或一个本地 ZIP。常见的、只有
|
|
153
|
+
一层外包装目录的 GitHub ZIP 会被自动规范化。不接受远程 URL 和多 Skill 批量包。
|
|
154
|
+
|
|
155
|
+
| 阶段 | 责任边界 |
|
|
156
|
+
| --- | --- |
|
|
157
|
+
| 登录 | 解析包之前先完成设备码授权;所有后续命令固定使用同一个 Profile 与 API Origin。 |
|
|
158
|
+
| 校验 | 本地拒绝危险路径、特殊文件、超限内容、敏感文件和常见 Secret 模式。 |
|
|
159
|
+
| 定价与上传 | 用户以“分”为单位提供人民币价格,并明确允许上传确定性发布包。 |
|
|
160
|
+
| 平台分析 | ViceMe 建议中英文短简介、中英文使用说明、封面和有序画廊;建议不能替代用户决定。 |
|
|
161
|
+
| 图文审核 | Agent 展示精确文案、价格、封面和所有画廊图片。短简介最大显示宽度为 30:ASCII 计 1,中文及其他非 ASCII 计 2。 |
|
|
162
|
+
| 公开发布 | 用户只需做一次最终明确确认;随后完成审核确认并立即、不可逆地公开上架。 |
|
|
163
|
+
|
|
164
|
+
上传或响应中断后,继续原来的 Publication:
|
|
165
|
+
|
|
166
|
+
```bash
|
|
167
|
+
viceme --profile <publication-profile> skill publish --resume <publication-id>
|
|
168
|
+
```
|
|
169
|
+
|
|
170
|
+
不能因为上一次响应未知就创建第二个 Publication,应先查询或恢复原 ID。
|
|
54
171
|
|
|
55
172
|
## 登录与 Profile
|
|
56
173
|
|
|
57
|
-
每个 Profile 绑定一个区域、一个 API Endpoint
|
|
174
|
+
每个 Profile 绑定一个区域、一个 API Endpoint 和一个通过设备码授权的账户。没有
|
|
58
175
|
自定义 Endpoint 的 Profile 使用对应区域的 ViceMe 官方 API。
|
|
59
176
|
|
|
60
177
|
```bash
|
|
@@ -66,163 +183,92 @@ viceme profile list
|
|
|
66
183
|
viceme profile use default
|
|
67
184
|
```
|
|
68
185
|
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
```bash
|
|
72
|
-
viceme profile remove --all --yes
|
|
73
|
-
```
|
|
74
|
-
|
|
75
|
-
该破坏性命令会重新创建一个未登录的 `default` Profile,不会让 CLI 留在无有效
|
|
76
|
-
Profile 的状态。
|
|
77
|
-
|
|
78
|
-
连接测试环境或私有 ViceMe 部署时,先把 Endpoint 持久化到独立 Profile,再登录:
|
|
186
|
+
连接测试环境或私有部署时,使用通用 HTTPS 占位地址创建独立 Profile,再登录:
|
|
79
187
|
|
|
80
188
|
```bash
|
|
81
189
|
viceme profile add \
|
|
82
|
-
--name
|
|
190
|
+
--name private-cn \
|
|
83
191
|
--region cn \
|
|
84
|
-
--api-base-url https://
|
|
192
|
+
--api-base-url https://api.example.com \
|
|
85
193
|
--use
|
|
86
194
|
viceme auth login
|
|
87
195
|
```
|
|
88
196
|
|
|
89
|
-
`
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
Profile,不能把既有凭据静默迁移到另一个 Origin。
|
|
197
|
+
`VICEME_API_BASE_URL` 只是单进程 CI / 调试覆盖,不是 Profile 状态。远程自定义
|
|
198
|
+
Endpoint 必须使用 HTTPS;只有 localhost 和 loopback 本地开发可以使用 HTTP。
|
|
199
|
+
凭据按 Profile 和 API Origin 隔离;Agent 不能因为另一个 Profile 已登录就擅自切换。
|
|
93
200
|
|
|
94
|
-
Agent
|
|
201
|
+
Agent 无法在同一回合等待浏览器授权时使用分段流程:
|
|
95
202
|
|
|
96
203
|
```bash
|
|
97
204
|
viceme auth login --no-wait
|
|
98
205
|
viceme auth login --device-code <device-code>
|
|
99
206
|
```
|
|
100
207
|
|
|
101
|
-
用户在浏览器完成授权。不要在对话中复制 Access Token
|
|
102
|
-
Origin 隔离,因此为新 Endpoint 创建 Profile 后需要单独登录一次。
|
|
103
|
-
|
|
104
|
-
## 发布 Skill
|
|
105
|
-
|
|
106
|
-
第一版接受包含 `SKILL.md` 的本地目录或本地 ZIP,不接受 GitHub URL、远程下载和
|
|
107
|
-
多 Skill 批量包。
|
|
108
|
-
|
|
109
|
-
解析 Skill 之前先完成登录,并把后续所有命令固定到 `auth status` 返回的 Profile。
|
|
110
|
-
Agent 不得因为另一个 Profile 已经登录就擅自切换过去。
|
|
111
|
-
|
|
112
|
-
```bash
|
|
113
|
-
viceme auth status
|
|
114
|
-
viceme --profile <publication-profile> auth login # 仅在未登录时执行
|
|
115
|
-
```
|
|
116
|
-
|
|
117
|
-
只读检查:
|
|
118
|
-
|
|
119
|
-
```bash
|
|
120
|
-
viceme --profile <publication-profile> skill inspect --path ./my-skill
|
|
121
|
-
```
|
|
122
|
-
|
|
123
|
-
查看确定性发布包和价格计划:
|
|
124
|
-
|
|
125
|
-
```bash
|
|
126
|
-
viceme --profile <publication-profile> skill publish --path ./my-skill --price-minor 100 --dry-run
|
|
127
|
-
```
|
|
128
|
-
|
|
129
|
-
开始可恢复的上传与 Listing 分析:
|
|
130
|
-
|
|
131
|
-
```bash
|
|
132
|
-
viceme --profile <publication-profile> skill publish --path ./my-skill --price-minor 100
|
|
133
|
-
```
|
|
134
|
-
|
|
135
|
-
之后以服务端 Publication 状态为准:
|
|
136
|
-
|
|
137
|
-
```bash
|
|
138
|
-
viceme publication get <publication-id>
|
|
139
|
-
viceme publication wait <publication-id>
|
|
140
|
-
viceme publication review <publication-id>
|
|
141
|
-
viceme publication asset upload <publication-id> --role cover --path ./cover.png
|
|
142
|
-
viceme publication asset upload <publication-id> --role gallery --path ./demo.png
|
|
143
|
-
viceme publication update <publication-id> --input ./listing-draft.json
|
|
144
|
-
viceme publication confirm <publication-id> --review-digest <digest>
|
|
145
|
-
viceme publication publish <publication-id> --review-digest <digest>
|
|
146
|
-
```
|
|
147
|
-
|
|
148
|
-
模型会建议 `summaryZhCn`、`summaryEnUs`、根据已验证 `SKILL.md` 生成的
|
|
149
|
-
`usageInstructionsZhCn`、`usageInstructionsEnUs` 和包内图片,但不能替用户确认,也不能决定价格。
|
|
150
|
-
每版短简介的最大显示宽度为 30:ASCII 计 1,中文及其他非 ASCII 计 2。Agent 必须把双语
|
|
151
|
-
短简介、中英文使用说明、价格、封面和有序展示素材的完整 Draft 展示给用户,在 `confirm` 前获得明确确认,
|
|
152
|
-
并在真正公开的 `publish` 前再次确认。
|
|
153
|
-
|
|
154
|
-
网络中断后继续同一个发布操作:
|
|
208
|
+
用户在浏览器完成授权。不要在对话中复制 Access Token。
|
|
155
209
|
|
|
156
|
-
|
|
157
|
-
viceme --profile <publication-profile> skill publish --resume <publication-id>
|
|
158
|
-
```
|
|
210
|
+
## 命令参考
|
|
159
211
|
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
212
|
+
| 命令 | 用途 |
|
|
213
|
+
| --- | --- |
|
|
214
|
+
| `viceme version` | 显示 CLI 与随包 Skills 版本。 |
|
|
215
|
+
| `viceme doctor` | 检查 CLI、当前 Profile、凭据、API readiness 和已安装官方 Skills。 |
|
|
216
|
+
| `viceme auth status` | 显示当前 Profile 是否已登录。 |
|
|
217
|
+
| `viceme profile list` | 显示 Profile 及其实际 API Endpoint。 |
|
|
218
|
+
| `viceme skill inspect --path <path>` | 无副作用校验本地 Skill。 |
|
|
219
|
+
| `viceme skill listing prepare --path <path>` | 创建或恢复稳定的创作者私有预览,并保存本地绑定。 |
|
|
220
|
+
| `viceme skill listing get <listing-id>` | 读取权威的私有 Listing 状态。 |
|
|
221
|
+
| `viceme skill listing bind <listing-id> --path <path>` | 将来源明确绑定到用户选定且拥有的 Listing。 |
|
|
222
|
+
| `viceme skill publish --path <path> --price-minor <fen> --dry-run` | 预览确定性发布包与价格。 |
|
|
223
|
+
| `viceme skill publish --path <path> --price-minor <fen>` | 上传发布包并启动 Listing 分析。 |
|
|
224
|
+
| `viceme publication wait <id>` | 等待后台分析,不重复上传。 |
|
|
225
|
+
| `viceme publication review <id>` | 读取权威双语文案、价格、选定素材和审核状态。 |
|
|
226
|
+
| `viceme publication asset upload ...` | 确认前替换或新增封面、画廊图片。 |
|
|
227
|
+
| `viceme publication update ...` | 用严格 JSON 文件替换完整 Listing Draft。 |
|
|
228
|
+
| `viceme publication confirm ...` | 确认当前精确 Review Digest。 |
|
|
229
|
+
| `viceme publication publish ...` | 公开已经确认的 Listing。 |
|
|
230
|
+
| `viceme update` | 同时更新 CLI 与匹配版本的官方 Skills。 |
|
|
231
|
+
|
|
232
|
+
运行 `viceme <command> --help` 查看完整参数和 JSON 字段。
|
|
233
|
+
|
|
234
|
+
## 输出与更新
|
|
235
|
+
|
|
236
|
+
业务结果默认使用 JSON。成功时 stdout 只包含最终结果,进度和诊断写入 stderr。
|
|
237
|
+
失败使用非零退出码和稳定的 `error.code`,因此 Agent 与自动化不需要解析 message 文本。
|
|
165
238
|
|
|
166
239
|
```json
|
|
167
240
|
{
|
|
168
241
|
"ok": true,
|
|
169
242
|
"data": {},
|
|
170
243
|
"meta": {
|
|
171
|
-
"cliVersion": "
|
|
244
|
+
"cliVersion": "<version>",
|
|
172
245
|
"requestId": "optional"
|
|
173
246
|
}
|
|
174
247
|
}
|
|
175
248
|
```
|
|
176
249
|
|
|
177
|
-
|
|
178
|
-
`
|
|
179
|
-
|
|
180
|
-
## 更新
|
|
250
|
+
正式安装最多每 24 小时读取一次权威发布渠道。发现新版本后,普通 JSON 响应通过
|
|
251
|
+
`_notice.update` 返回当前版本、最新版本和 `viceme update`。检查失败不会改变业务
|
|
252
|
+
命令的退出码。
|
|
181
253
|
|
|
182
254
|
```bash
|
|
183
255
|
viceme update --check
|
|
184
256
|
viceme update
|
|
185
257
|
```
|
|
186
258
|
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
返回当前版本、最新版本与恢复命令 `viceme update`。检查失败不会改变业务命令的退出码;
|
|
190
|
-
只有明确不需要提示的自动化才应设置 `VICEME_NO_UPDATE_NOTIFIER=1`。
|
|
191
|
-
|
|
192
|
-
Bootstrap 安装会读取当前 Profile 所在区域的官方 S3 Release 索引,校验精确二进制
|
|
193
|
-
Checksum,用新二进制修复同版本官方 Skills 后原子激活。npm 安装通过精确 npm 包版本
|
|
194
|
-
更新。更新子进程不会继承 `VICEME_ACCESS_TOKEN`。
|
|
195
|
-
|
|
196
|
-
二进制或 npm launcher、三份官方 Skills 和 Profile 配置属于同一个可恢复的本地版本。
|
|
197
|
-
Standalone 与 npm 激活共用外层激活锁、委托成员提交锁,并持久化包含语义版本、安装方式和不可变身份的
|
|
198
|
-
active-generation。唯一的启动协调器不区分当前入口,始终检查 Standalone 和 npm 两类 Journal。
|
|
199
|
-
所有普通命令必须先恢复未完成的外层 Journal;如果恢复后当前进程的版本、安装方式或不可变身份
|
|
200
|
-
不再等于 active generation,本次命令会停止并要求重新执行。锁内 generation fence 会拒绝迟到
|
|
201
|
-
的旧版本更新。每个真实写入口拿到 activation lock 后、开始暂存或联网安装前,都会再次对两类
|
|
202
|
-
Journal 做相同仲裁,避免通过启动检查后暂停的旧进程引入第二套恢复协议。第一阶段也会在任何
|
|
203
|
-
文件变更前拒绝 Standalone 与 npm 的原地切换,不能把两套
|
|
204
|
-
恢复协议混合使用。每个 Skills/配置事务都必须持有同一代际权限,或在最终提交前重新验证。
|
|
205
|
-
npm 内部安装子进程必须匹配 Journal 中的一次性 nonce、目标版本和 Skill 目标;成员提交锁会阻止
|
|
206
|
-
父进程崩溃后,新一代在旧子进程尚未提交完毕时进入。目标一旦越过语义提交点,崩溃恢复只能完成本地清理,不能重新联网安装或回滚。私有
|
|
207
|
-
Journal 因此只能完整恢复上一代或完整完成目标版本。安装提交前必须通过本地 Skill/版本完整性
|
|
208
|
-
校验;当前 Profile 的 API 不可达只产生警告,避免旧 Profile 阻断升级。正式业务命令前再用
|
|
209
|
-
`viceme doctor` 明确检查网络 readiness。
|
|
210
|
-
|
|
211
|
-
## 第一阶段实施状态
|
|
212
|
-
|
|
213
|
-
安装、设备码授权、确定性包上传、建议或人工展示素材、Review 确认、发布、取消和终态恢复均已
|
|
214
|
-
实现。本地验收使用真实 Shop API、PostgreSQL、Redis 和 S3 兼容存储;`make check`、npm
|
|
215
|
-
打包与冷启动、race test,以及 Darwin/Linux/Windows 的 amd64/arm64 构建均通过。真实 LLM
|
|
216
|
-
Provider sandbox 仍属于部署环境验收项;没有凭据时分析 fail closed,人工素材流程仍可完成发布。
|
|
259
|
+
更新器会校验精确 Release、刷新匹配版本的官方 Skills,并把中断的激活过程恢复成
|
|
260
|
+
一个完整、兼容的本地版本。
|
|
217
261
|
|
|
218
262
|
## 安全边界
|
|
219
263
|
|
|
220
264
|
- 本地打包拒绝路径穿越、绝对路径、符号链接、特殊文件、超限内容、敏感文件和常见
|
|
221
265
|
Secret 模式。
|
|
222
|
-
- API 独立校验不可变 ZIP
|
|
266
|
+
- API 独立校验不可变 ZIP、Digest 与对象元数据,不信任客户端自报结果。
|
|
267
|
+
- 凭据保存在 CLI 的本地安全存储中,并绑定 Profile 与 API Origin,不进入 Agent
|
|
268
|
+
对话状态。
|
|
223
269
|
- Pending operation 不保存预签名上传 URL。
|
|
224
|
-
-
|
|
225
|
-
-
|
|
270
|
+
- 模型分析只接收筛选后的文本、元数据和图片缩略图。
|
|
271
|
+
- 公开发布前必须展示并明确授权当前精确文案、价格、封面和有序画廊。
|
|
226
272
|
|
|
227
273
|
## 开发
|
|
228
274
|
|
|
@@ -234,5 +280,5 @@ make npm-package-check
|
|
|
234
280
|
make release-manifest
|
|
235
281
|
```
|
|
236
282
|
|
|
237
|
-
CLI
|
|
238
|
-
`s3.viceme.
|
|
283
|
+
CLI 与官方 Agent Skills 同版本发布。GitHub、npm、`s3.viceme.cn` 和
|
|
284
|
+
`s3.viceme.ai` 的产物来自同一个已评审 Commit。
|
package/checksums.txt
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
1
|
+
a5f39465c4aef0ddfdf15b6487498fbbe2909389aaaf1590269780e6ff79de90 viceme_0.14.2_darwin_amd64
|
|
2
|
+
97f01a59e674279821ad6d58f7b642b7bb55bfc51e270661eccd384ee85410fd viceme_0.14.2_darwin_arm64
|
|
3
|
+
060d0879e85bebdc7ba9673fa06208a139ab13fd1e01c3f440d3f46723b4bf09 viceme_0.14.2_linux_amd64
|
|
4
|
+
f607618c5e1c0a3feedbe00050c12ecb8ce1115e0993659ddafefef27c9fa747 viceme_0.14.2_linux_arm64
|
|
5
|
+
5bddaa26d8dfdfa642c61356af122d6bf138ea66e0b4d9663a227a920c9a0124 viceme_0.14.2_windows_amd64.exe
|
|
6
|
+
5aa0c15a0abfaa8d0128840c618180af2144b4bf5d7fdc5a12d5ed3f5e5f6165 viceme_0.14.2_windows_arm64.exe
|
package/docs/releasing.md
CHANGED
|
@@ -31,7 +31,9 @@ files, create tags, write changelog entries, or run npm commands locally.
|
|
|
31
31
|
repository-owned `dev` to `main` PR, then tags the exact reviewed `dev`
|
|
32
32
|
head, reruns the quality gates, builds six platform binaries and six
|
|
33
33
|
checksums, creates the GitHub Release, bundles those exact checksums into
|
|
34
|
-
the npm launcher,
|
|
34
|
+
the npm launcher, signs the exact-version Agent installation Manifest with
|
|
35
|
+
GitHub OIDC, publishes the identical installation contract to the CN and
|
|
36
|
+
Global `start` buckets, publishes npm, and then sends an
|
|
35
37
|
AI-generated release summary to the release notification group in Feishu.
|
|
36
38
|
|
|
37
39
|
## One-time repository setup
|
|
@@ -71,6 +73,11 @@ required for merging: that workflow starts only after the release PR has been
|
|
|
71
73
|
merged and performs the tag, binary, GitHub Release, npm, and notification
|
|
72
74
|
steps.
|
|
73
75
|
|
|
76
|
+
Create a GitHub Actions Environment named `cdn` and restrict deployments to
|
|
77
|
+
protected branches. The S3 publication job is the only release job that uses
|
|
78
|
+
this Environment, matching the SDK release boundary; npm Trusted Publisher
|
|
79
|
+
remains token-free and does not use a GitHub Environment restriction.
|
|
80
|
+
|
|
74
81
|
Configure npm trusted publishing for:
|
|
75
82
|
|
|
76
83
|
- npm package: `@viceme-ai/cli`;
|
|
@@ -95,6 +102,28 @@ calculation to `WHEN_REQUIRED`: immutable artifacts are still compared
|
|
|
95
102
|
byte-for-byte on recovery, while optional AWS streaming checksum trailers that
|
|
96
103
|
the origins do not implement are not sent.
|
|
97
104
|
|
|
105
|
+
Every release renders `release/agent-install.md.tmpl` with the exact stable
|
|
106
|
+
version. The same bytes are published as the immutable
|
|
107
|
+
`cli/releases/vX.Y.Z/agent-install.md` object in both regions. Only the highest
|
|
108
|
+
stable version updates the public root `agent-install.md`, `install.sh`, and
|
|
109
|
+
`install.ps1` pointers. The separate `agent-release-manifest.json` contains the six platform asset
|
|
110
|
+
digests, bundled Skill digests, installer digests, and Sigstore verification
|
|
111
|
+
identity. Its detached `agent-release-manifest.sigstore.json` bundle is created with
|
|
112
|
+
the Release Workflow's GitHub OIDC identity and verified before publication;
|
|
113
|
+
recovery reuses an existing immutable bundle byte-for-byte. A recovery tag
|
|
114
|
+
that predates this contract keeps its original `release-manifest.json`
|
|
115
|
+
unchanged and uses the trusted current workflow generator only to add the new
|
|
116
|
+
Agent Manifest, signature bundle, and document.
|
|
117
|
+
|
|
118
|
+
The publication job verifies both public origins after upload. It compares the
|
|
119
|
+
versioned document, Manifest, and signature bundle with the release artifacts,
|
|
120
|
+
checks immutable and root cache policies, compares the CN and Global root
|
|
121
|
+
documents, and proves that an uploaded object outside the installation
|
|
122
|
+
allowlist is not anonymously readable. Anonymous bucket listing must also stay
|
|
123
|
+
disabled. The allowlist is limited to `agent-install.md`, the existing root
|
|
124
|
+
installers, and the versioned `cli/releases` installation objects; Skill ZIPs,
|
|
125
|
+
user uploads, and business media never belong in this bucket or policy.
|
|
126
|
+
|
|
98
127
|
Configure the repository secret `CN_S3_HTTPS_PROXY` with the authenticated
|
|
99
128
|
HTTPS forward-proxy URL used by GitHub Actions to reach the CN S3 endpoint.
|
|
100
129
|
The release job applies it only inside the CN publication subshell; Global S3
|
|
@@ -128,9 +157,13 @@ must have the same registry integrity as the locally packed artifact; otherwise
|
|
|
128
157
|
the workflow fails closed. A rerun of an older version cannot move the npm
|
|
129
158
|
`latest` tag behind a newer release.
|
|
130
159
|
|
|
131
|
-
If
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
160
|
+
If a publication failed after creating the immutable tag, a maintainer may
|
|
161
|
+
manually dispatch `CLI release publication` with that exact stable tag. This
|
|
162
|
+
also covers failures before the GitHub Release was created: recovery may create
|
|
163
|
+
the missing Release from regenerated and verified artifacts. If the Release
|
|
164
|
+
already exists, it must be non-draft and every existing asset must match
|
|
165
|
+
byte-for-byte before a missing asset is uploaded. Recovery still refuses
|
|
166
|
+
missing tags, version mismatches, changed release assets, and npm integrity
|
|
167
|
+
mismatches. It cannot create a new release identity. Normal production releases
|
|
168
|
+
still originate only from merging the repository-owned `dev` Release PR into
|
|
169
|
+
`main`.
|