dsh-modellix 0.1.0 → 0.2.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/CHANGELOG.md +56 -0
- package/README.md +101 -169
- package/README.zh-CN.md +99 -167
- package/docs/assets/chat-media-generation-en.webp +0 -0
- package/docs/assets/chat-media-generation-zh.webp +0 -0
- package/docs/assets/design-results-drawer-en.webp +0 -0
- package/docs/assets/design-results-drawer-zh.webp +0 -0
- package/docs/assets/llm-model-selector-en.webp +0 -0
- package/docs/assets/llm-model-selector-zh.webp +0 -0
- package/docs/assets/media-players-en.webp +0 -0
- package/docs/assets/media-players-zh.webp +0 -0
- package/docs/assets/settings-ready-en.webp +0 -0
- package/docs/assets/settings-ready-zh.webp +0 -0
- package/docs/assets/web-tools-auto-en.webp +0 -0
- package/docs/assets/web-tools-auto-zh.webp +0 -0
- package/docs/en-US/LOCAL_USAGE.md +17 -15
- package/docs/en-US/RELEASE_CHECKLIST.md +270 -0
- package/docs/en-US/USER_GUIDE.md +183 -401
- package/docs/zh-CN/LOCAL_USAGE.md +17 -15
- package/docs/zh-CN/RELEASE_CHECKLIST.md +270 -0
- package/docs/zh-CN/USER_GUIDE.md +182 -400
- package/lib/client.d.ts +16 -2
- package/lib/client.js +1308 -466
- package/lib/client.js.map +1 -1
- package/lib/index.d.ts +159 -109
- package/lib/index.js +995 -192
- package/lib/index.js.map +1 -1
- package/package.json +7 -2
- package/docs/assets/credential-recovery.webp +0 -0
- package/docs/assets/design-desktop.webp +0 -0
- package/docs/assets/design-mobile-en.webp +0 -0
- package/docs/assets/design-proposal.webp +0 -0
- package/docs/assets/design-results-media.webp +0 -0
- package/docs/assets/llm-model-selector.webp +0 -0
- package/docs/assets/onboarding-defaults.webp +0 -0
- package/docs/assets/settings-ready.webp +0 -0
- package/docs/assets/web-tools.webp +0 -0
package/docs/en-US/USER_GUIDE.md
CHANGED
|
@@ -2,32 +2,17 @@
|
|
|
2
2
|
|
|
3
3
|
# dsh-modellix User Guide
|
|
4
4
|
|
|
5
|
-
This guide
|
|
5
|
+
This guide describes the current `0.2.0` experience. Media creation is chat-first; there is no standalone Design tab. The right-side **Modellix Design** panel is a session-scoped result workspace.
|
|
6
6
|
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
| Capability | Entry point | Purpose |
|
|
10
|
-
| --- | --- | --- |
|
|
11
|
-
| Design | The Design view in Harness | Select an image, video, or audio model, use a prompt, parameter form, or natural-language adjustment, and review results |
|
|
12
|
-
| LLM | The Harness model selector and Modellix settings | Synchronize the live Modellix model catalog and switch models quickly |
|
|
13
|
-
| Web | Native Harness Web Tools | Run `web_search` and `web_fetch` through the Modellix provider |
|
|
14
|
-
|
|
15
|
-
## Installation and verification
|
|
7
|
+
## 1. Install and verify
|
|
16
8
|
|
|
17
9
|
### Requirements
|
|
18
10
|
|
|
19
11
|
- DeepSeek Harness `0.1.1-rc.2`
|
|
20
|
-
-
|
|
21
|
-
-
|
|
22
|
-
- A valid [Modellix API Key](https://docs.modellix.ai/get-started)
|
|
23
|
-
|
|
24
|
-
The Bundle contains its own Harness integration. `modellix-cli` is neither installed nor invoked as a runtime dependency.
|
|
12
|
+
- Node.js `^22.19.0 || >=24.0.0`
|
|
13
|
+
- A valid Modellix API Key
|
|
25
14
|
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
### Install the published package
|
|
29
|
-
|
|
30
|
-
The examples below use the `web` profile. Replace that name consistently if your profile differs:
|
|
15
|
+
Install the package into the Harness Web profile:
|
|
31
16
|
|
|
32
17
|
```sh
|
|
33
18
|
dsh plugin --profile web add dsh-modellix
|
|
@@ -35,469 +20,297 @@ dsh --profile web --dump-config
|
|
|
35
20
|
dsh --profile web
|
|
36
21
|
```
|
|
37
22
|
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
- the `dsh-modellix` Bundle configuration layer;
|
|
41
|
-
- a plugin row whose id is `modellix`;
|
|
42
|
-
- Web configuration that selects the `modellix` Search/Fetch provider and enables the native Harness Search/Fetch tools.
|
|
43
|
-
|
|
44
|
-
After installing or updating the Client Bundle, restart the corresponding Harness Web profile. Refreshing the browser alone does not load a new Bundle.
|
|
23
|
+
The dumped configuration should contain the `dsh-modellix` Bundle and plugin id `modellix`. Restart the running profile after installing or updating a Client bundle.
|
|
45
24
|
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
Build only from trusted source:
|
|
25
|
+
To use a local package artifact:
|
|
49
26
|
|
|
50
27
|
```sh
|
|
51
28
|
pnpm install --frozen-lockfile
|
|
52
29
|
pnpm run verify:release:static
|
|
53
30
|
pnpm pack
|
|
54
|
-
dsh plugin --profile web add ./dsh-modellix-0.
|
|
55
|
-
```
|
|
56
|
-
|
|
57
|
-
`pnpm run check` includes environment verification, type checking, lint, the complete unit/contract suite, global hard coverage thresholds, and file-specific regression floors for the Host runtime and Design parameter planner. `verify:release:static` also performs the production dependency audit, build, exact artifact verification, an isolated Node 24 tarball installation, and a mandatory Node.js `^22.19.0` tarball runtime smoke. It does not replace real-browser and real API/Agent acceptance. Installing TypeScript source directly from Git requires the install phase to create `lib/`. Without a verified `prepare` flow, use the published package or a prebuilt tarball.
|
|
58
|
-
|
|
59
|
-
### Complete release evidence gate
|
|
60
|
-
|
|
61
|
-
Before an actual release, commit the final code, documentation, and screenshots and keep the worktree clean. Create the following two Secret-free JSON files outside the repository. Each must be under 32 KiB, target the current package name/version and lowercase 40-character HEAD, and use a canonical UTC ISO-8601 `completedAt` no more than 72 hours old.
|
|
62
|
-
|
|
63
|
-
Browser evidence must attest onboarding, settings, Design, LLM, Web, 401 Credential recovery, accessibility, themes, and viewport acceptance:
|
|
64
|
-
|
|
65
|
-
```json
|
|
66
|
-
{
|
|
67
|
-
"version": 1,
|
|
68
|
-
"kind": "browser",
|
|
69
|
-
"status": "passed",
|
|
70
|
-
"package": { "name": "dsh-modellix", "version": "0.1.0" },
|
|
71
|
-
"commit": "<current-40-character-lowercase-git-head>",
|
|
72
|
-
"completedAt": "<canonical-utc-iso-8601>",
|
|
73
|
-
"checks": {
|
|
74
|
-
"onboarding": "passed",
|
|
75
|
-
"settings": "passed",
|
|
76
|
-
"design": "passed",
|
|
77
|
-
"llm": "passed",
|
|
78
|
-
"web": "passed",
|
|
79
|
-
"401": "passed",
|
|
80
|
-
"a11y": "passed",
|
|
81
|
-
"theme": "passed",
|
|
82
|
-
"viewports": "passed"
|
|
83
|
-
}
|
|
84
|
-
}
|
|
85
|
-
```
|
|
86
|
-
|
|
87
|
-
Real API/Agent evidence must cover catalogs, parameter planning, image, video, audio, the LLM Agent, and Web. An operator must explicitly trigger every real billed call. The Boolean field records only that authorization; never include a Key, Authorization header, Credential, request header, or other Secret in evidence:
|
|
88
|
-
|
|
89
|
-
```json
|
|
90
|
-
{
|
|
91
|
-
"version": 1,
|
|
92
|
-
"kind": "api-agent",
|
|
93
|
-
"status": "passed",
|
|
94
|
-
"package": { "name": "dsh-modellix", "version": "0.1.0" },
|
|
95
|
-
"commit": "<current-40-character-lowercase-git-head>",
|
|
96
|
-
"completedAt": "<canonical-utc-iso-8601>",
|
|
97
|
-
"checks": {
|
|
98
|
-
"catalogs": "passed",
|
|
99
|
-
"planner": "passed",
|
|
100
|
-
"image": "passed",
|
|
101
|
-
"video": "passed",
|
|
102
|
-
"audio": "passed",
|
|
103
|
-
"llm-agent": "passed",
|
|
104
|
-
"web": "passed"
|
|
105
|
-
},
|
|
106
|
-
"billedCallsExplicitlyAuthorized": true
|
|
107
|
-
}
|
|
108
|
-
```
|
|
109
|
-
|
|
110
|
-
For a live run, first complete one Modellix-backed DSH Agent turn in an isolated Web profile. Have the acceptance process provide `MODELLIX_API_KEY` directly from a controlled source, set `MODELLIX_ALLOW_BILLED_E2E=1`, `MODELLIX_REAL_AGENT_ATTESTED=1`, and absolute outside-repository paths in `MODELLIX_REAL_E2E_OUTPUT_DIR` and `MODELLIX_API_AGENT_E2E_EVIDENCE_FILE`, then run `pnpm run test:real:modellix`. The runner uses no Mock transport: it performs live catalogs and Schema planning, submits one image/video/audio POST each, uses bounded task reads, calls real Web Search/Fetch, saves downloaded media for independent decoding checks, and writes Secret-free evidence. It does not accept a Key on the command line.
|
|
111
|
-
|
|
112
|
-
Run the complete gate with absolute paths:
|
|
113
|
-
|
|
114
|
-
```sh
|
|
115
|
-
MODELLIX_BROWSER_EVIDENCE_FILE=/absolute/path/browser-evidence.json \
|
|
116
|
-
MODELLIX_API_AGENT_E2E_EVIDENCE_FILE=/absolute/path/api-agent-evidence.json \
|
|
117
|
-
pnpm run verify:release
|
|
31
|
+
dsh plugin --profile web add ./dsh-modellix-0.2.0.tgz
|
|
118
32
|
```
|
|
119
33
|
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
## First-time setup
|
|
34
|
+
See [LOCAL_USAGE.md](LOCAL_USAGE.md) for isolated-profile setup and update commands.
|
|
123
35
|
|
|
124
|
-
|
|
36
|
+
## 2. Connect Modellix
|
|
125
37
|
|
|
126
|
-
|
|
38
|
+
### First-time flow
|
|
127
39
|
|
|
128
|
-
|
|
40
|
+
1. Open the Harness Web UI.
|
|
41
|
+
2. In **Connect Modellix**, enter a valid API Key.
|
|
42
|
+
3. Keep Design, LLM, and Web enabled unless your environment intentionally disables one capability.
|
|
43
|
+
4. Select **Save and enable**.
|
|
44
|
+
5. Open Settings → Modellix and verify that the Credential source/status and LLM catalog are healthy.
|
|
129
45
|
|
|
130
|
-
|
|
131
|
-
2. Review the Design, LLM, and Web feature switches. All three are on by default on a fresh installation.
|
|
132
|
-
3. Select “Save and enable.” The plugin stores the Key through the Harness Credential boundary before it stores non-secret settings.
|
|
133
|
-
4. After a successful save, the draft is cleared. The UI shows only configured status and source; it never reveals the stored Key.
|
|
46
|
+
The stored Key is write-only. After save, the UI displays status and source but never returns the Key to the Client.
|
|
134
47
|
|
|
135
|
-
|
|
48
|
+
Select **Configure later** only when you want to postpone setup. The plugin remains unavailable and asks again on the next explicit use of an enabled Modellix capability.
|
|
136
49
|
|
|
137
|
-
###
|
|
50
|
+
### Environment Credential
|
|
138
51
|
|
|
139
|
-
|
|
52
|
+
You can supply `MODELLIX_API_KEY` in the Harness launch environment. The settings UI reports an environment source but cannot display, replace, or remove it. Update the external secret and restart Harness.
|
|
140
53
|
|
|
141
|
-
|
|
142
|
-
- The next explicit use of an enabled Modellix capability that needs a Credential creates a new recovery request and prompts again.
|
|
143
|
-
- A single recovery request displays only one Credential dialog; concurrent 401 responses do not stack dialogs.
|
|
54
|
+
### Secret handling
|
|
144
55
|
|
|
145
|
-
|
|
56
|
+
Never place a real Key in:
|
|
146
57
|
|
|
147
|
-
|
|
58
|
+
- a repository, patch, fixture, document, or screenshot;
|
|
59
|
+
- a command argument, URL, query, hash, or browser storage;
|
|
60
|
+
- Client state, DOM/ARIA, logs, Console, toast, telemetry, HAR, recording, or snapshot.
|
|
148
61
|
|
|
149
|
-
|
|
62
|
+
## 3. Understand the current interface
|
|
150
63
|
|
|
151
|
-
|
|
152
|
-
| --- | --- | --- | --- |
|
|
153
|
-
| Local Harness Credential | Enter during first-time setup or in Modellix settings | Depends on whether the Credential store is writable; normally yes | Select “Replace API Key” or “Remove API Key” in settings |
|
|
154
|
-
| Environment variable | Provide `MODELLIX_API_KEY` in the Harness launch environment | No; it is read-only in the UI | Update the external launch environment or secret manager, then restart Harness |
|
|
64
|
+

|
|
155
65
|
|
|
156
|
-
|
|
66
|
+
The plugin adds:
|
|
157
67
|
|
|
158
|
-
|
|
68
|
+
- a Modellix section in Settings;
|
|
69
|
+
- a **Modellix Design** launcher at the far right of the session header;
|
|
70
|
+
- chat result cards for media generation/result tools;
|
|
71
|
+
- Modellix models in the Harness model selector;
|
|
72
|
+
- explicit Modellix Web tools available to the Agent.
|
|
159
73
|
|
|
160
|
-
|
|
74
|
+
It does not add a standalone Design tab.
|
|
161
75
|
|
|
162
|
-
-
|
|
163
|
-
- An unsaved draft exists only in the current form state and is cleared on save, cancel, “Configure later,” or component unmount.
|
|
164
|
-
- After save, the Credential value never returns to the Client or enters a URL, query, hash, settings document, Design task record, prompt, model context, Tool argument, user-facing diagnostic, DOM, ARIA, log, or screenshot.
|
|
165
|
-
- Public model Schema requests carry no Authorization. Authenticated requests are limited to fixed Modellix HTTPS origins.
|
|
166
|
-
- Design revalidates the exact Modellix endpoint from the Schema and rejects cross-origin redirects.
|
|
167
|
-
- Persisted Design records contain only request/task identifiers, model, state, and result URLs—not the Key or prompt.
|
|
76
|
+
### Right-side panel
|
|
168
77
|
|
|
169
|
-
|
|
78
|
+
- Desktop width is fixed at 360 px so its internal card layout does not compress during the open/close transition.
|
|
79
|
+
- At 560 px and below it becomes a full-width panel.
|
|
80
|
+
- Results and every card are expanded by default.
|
|
81
|
+
- Select **Results** to collapse the whole list; select a card header to collapse only that card.
|
|
82
|
+
- Select X to close. Keyboard focus returns to the launcher.
|
|
83
|
+
- The advanced exact-parameter editor remains in the implementation but its entry is hidden for `0.2.0`.
|
|
170
84
|
|
|
171
|
-
##
|
|
85
|
+
## 4. Create media by chatting
|
|
172
86
|
|
|
173
|
-
|
|
87
|
+
Ordinary users should describe the desired work in natural language. The Agent selects tools and models according to the conversation.
|
|
174
88
|
|
|
175
|
-
|
|
89
|
+
### New text-to-image request
|
|
176
90
|
|
|
177
|
-
|
|
91
|
+
Example:
|
|
178
92
|
|
|
179
|
-
|
|
93
|
+
> Create a polished 16:9 architectural hero image: a glass botanical research pavilion floating above a dawn cloud sea, connected to an observation bridge, restrained lapis-blue and warm-gold tones, realistic premium materials, no people, no text, no logo, no watermark.
|
|
180
94
|
|
|
181
|
-
|
|
182
|
-
- “Configured in the local Credential store”: a local Credential is the source;
|
|
183
|
-
- “Configured by a read-only environment variable”: `MODELLIX_API_KEY` is the source;
|
|
184
|
-
- “Waiting for verification / Verified / Invalid Key”: the current verification state.
|
|
185
|
-
|
|
186
|
-
For a writable local Credential, settings always retains a “Configure/Replace API Key” action. A configured local Credential also has “Remove API Key.” After removal, an enabled capability requests configuration on its next explicit call.
|
|
187
|
-
|
|
188
|
-
An environment-sourced Key cannot be replaced or removed in the UI.
|
|
189
|
-
|
|
190
|
-
### Feature switches
|
|
95
|
+
If the user names a model or exact fields, the Agent still checks the live Schema before submission.
|
|
191
96
|
|
|
192
|
-
|
|
97
|
+
### Continue from the previous work
|
|
193
98
|
|
|
194
|
-
|
|
195
|
-
- With LLM off, the plugin no longer maintains the Modellix LLM catalog and manual refresh is unavailable.
|
|
196
|
-
- With Web off, the Modellix Web provider is unavailable.
|
|
99
|
+
Example:
|
|
197
100
|
|
|
198
|
-
|
|
101
|
+
> Turn the image just completed in this conversation into a five-second cinematic video. Slowly push the camera forward and preserve the composition and palette.
|
|
199
102
|
|
|
200
|
-
|
|
103
|
+
The Agent treats references to the previous/current work, a conversation attachment, or a prior Modellix URL as source-dependent. It should select an edit or transformation model and place the latest relevant URL into that model's declared media input field. It must not silently replace the request with a new text-to-image or text-to-video task.
|
|
201
104
|
|
|
202
|
-
|
|
105
|
+
### Use a local file or attachment
|
|
203
106
|
|
|
204
|
-
|
|
107
|
+
When the live Schema needs an HTTP(S) media URL, the Agent can call `modellix_media_upload_file` for:
|
|
205
108
|
|
|
206
|
-
|
|
109
|
+
- a current-session attachment; or
|
|
110
|
+
- a regular, non-symlink file inside the session workspace.
|
|
207
111
|
|
|
208
|
-
|
|
112
|
+
An upload is not automatically replayed if the outcome is unknown.
|
|
209
113
|
|
|
210
|
-
|
|
114
|
+
### Generate voice
|
|
211
115
|
|
|
212
|
-
|
|
116
|
+
Example:
|
|
213
117
|
|
|
214
|
-
|
|
215
|
-
- The right results pane contains task states, media previews, expiry, download actions, and diagnostics.
|
|
118
|
+
> Generate this English voiceover with a professional narrator, calm emotion, MP3 at 44.1 kHz: “From one idea to images, video, and sound, Modellix Design keeps creation flowing naturally in the conversation.”
|
|
216
119
|
|
|
217
|
-
|
|
120
|
+
The Agent must use a Schema-published voice and parameter format instead of translating or guessing enum values.
|
|
218
121
|
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
Design uses the current Modellix catalog instead of a static list assumed to remain valid forever.
|
|
222
|
-
|
|
223
|
-
1. Search by model name, provider, or model id.
|
|
224
|
-
2. Filter by All types, Image, Video, or Audio.
|
|
225
|
-
3. Select a target in the model list. Models marked featured by the catalog have a star.
|
|
226
|
-
4. Select “Refresh models” when you need the latest catalog. If live refresh fails while a cached result remains usable, the UI explicitly states that it is showing the most recent result.
|
|
227
|
-
|
|
228
|
-
The plugin first restores the most recently selected model if it remains available. Otherwise, it chooses a preferred available model from the current catalog. Select again if a model is removed or becomes unavailable.
|
|
229
|
-
|
|
230
|
-
### Schema parameters and defaults
|
|
231
|
-
|
|
232
|
-
After model selection, the plugin reads its public `api_schema` and turns supported structures into a form:
|
|
233
|
-
|
|
234
|
-
| Schema information | UI behavior |
|
|
235
|
-
| --- | --- |
|
|
236
|
-
| Primary prompt field | A required multiline prompt field |
|
|
237
|
-
| `default` | Materialized into the draft and submitted unless the user overrides it |
|
|
238
|
-
| `required` | Marked required; a missing value prevents generation |
|
|
239
|
-
| `enum` | Select control |
|
|
240
|
-
| `boolean` | Switch |
|
|
241
|
-
| `number` / `integer` | Numeric input with minimum, maximum, and step constraints |
|
|
242
|
-
| String | Single-line or multiline text input with length constraints |
|
|
243
|
-
| Array or object | JSON editor with separate syntax-error and Schema-constraint messages |
|
|
244
|
-
| An unsupported structure that cannot be interpreted safely | The field is disabled or the model cannot submit, with an explanation |
|
|
122
|
+
## 5. Media tools and routing
|
|
245
123
|
|
|
246
|
-
|
|
247
|
-
|
|
248
|
-
|
|
249
|
-
|
|
250
|
-
|
|
251
|
-
|
|
252
|
-
|
|
253
|
-
|
|
254
|
-
1. Select the model.
|
|
255
|
-
2. Enter a prompt.
|
|
256
|
-
3. Review the default parameters.
|
|
257
|
-
4. Select “Confirm and generate.”
|
|
258
|
-
|
|
259
|
-
The live model Schema always determines actual required fields. This guide does not assume that every model needs only a prompt.
|
|
260
|
-
|
|
261
|
-
#### 2. Edit exact parameters
|
|
262
|
-
|
|
263
|
-
Directly edit dimensions, aspect ratio, duration, count, format, or other model-advertised parameters. User values override defaults; the plugin does not send arbitrary fields absent from the Schema.
|
|
264
|
-
|
|
265
|
-
If JSON cannot be parsed, the UI reports a JSON syntax error. If JSON parses but fails the current field constraints, it reports a parameter constraint error. Any invalid field or missing required field disables generation.
|
|
266
|
-
|
|
267
|
-
#### 3. Adjust parameters in natural language
|
|
268
|
-
|
|
269
|
-
Under “Adjust parameters by chat,” enter an instruction such as “make it 16:9, eight seconds, and more cinematic,” then select “Propose parameter changes.”
|
|
270
|
-
|
|
271
|
-
This action:
|
|
272
|
-
|
|
273
|
-
- uses the same Modellix Key with the fixed `openai/gpt-5.6-luna` model;
|
|
274
|
-
- may incur separate LLM usage;
|
|
275
|
-
- can change only parameters declared by the current Schema;
|
|
276
|
-
- returns a summary, before-and-after field changes, and any conflicts;
|
|
277
|
-
- neither applies changes nor starts media generation automatically.
|
|
278
|
-
|
|
279
|
-

|
|
280
|
-
|
|
281
|
-
After review, select “Apply changes” or “Reject.” Resolve conflicts first. If parameters or the Schema changed after proposal creation, the stale proposal is rejected; create another proposal.
|
|
282
|
-
|
|
283
|
-
### Worked Design example: a premium cliffside library
|
|
124
|
+
| Tool | Purpose | Important behavior |
|
|
125
|
+
| --- | --- | --- |
|
|
126
|
+
| `modellix_media_list` | Search the live image/video/audio model catalog | Read-only; use when no compatible model is already known |
|
|
127
|
+
| `modellix_media_schema` | Read the live API Schema for a model slug | Returns field paths, required state, options, and an IR contract hash |
|
|
128
|
+
| `modellix_media_prepare` | Convert a natural-language adjustment into a reviewable Schema patch | Does not generate media; requires confirmation before applying |
|
|
129
|
+
| `modellix_media_upload_file` | Upload a valid attachment/workspace file and return a URL | One-shot; unknown outcome is not replayed |
|
|
130
|
+
| `modellix_media_generate` | Submit one Schema-validated generation | Submission is not automatically retried |
|
|
131
|
+
| `modellix_media_get_result` | Read the current task result | Agent checks at most once in the submit turn; Client watcher owns continued status |
|
|
284
132
|
|
|
285
|
-
|
|
133
|
+
The Agent routing context is injected only while Design is enabled. Disabling Design removes these tools from model visibility.
|
|
286
134
|
|
|
287
|
-
|
|
288
|
-
| --- | --- |
|
|
289
|
-
| Model | `openai/gpt-image-2`, only when it is currently listed as available and its live Schema exposes the fields below |
|
|
290
|
-
| Prompt used in acceptance | `A premium editorial architectural photograph of a quiet cliffside library above a misty alpine lake at blue hour, carved pale stone arches, warm amber reading lamps, one thoughtful reader, subtle greenery, natural reflections, cinematic but realistic lighting, restrained navy and ivory palette, precise composition, no text, no logo.` |
|
|
291
|
-
| `quality` | `high` |
|
|
292
|
-
| `size` | `1536x1024` |
|
|
135
|
+
## 6. Result cards and status
|
|
293
136
|
|
|
294
|
-
|
|
295
|
-
2. Enter the prompt. Set `quality` to `high` and `size` to `1536x1024`; leave every unrelated field at the current Schema default.
|
|
296
|
-
3. Either edit those controls directly, or enter “Set quality to high and size to 1536x1024” in the parameter assistant. The assistant returns a reviewable two-field proposal; it does not generate the image.
|
|
297
|
-
4. Review the proposal and form, apply the changes if needed, and confirm model, output count, balance, and account-side pricing.
|
|
298
|
-
5. Select “Confirm and generate” once, then follow the task in the right results pane.
|
|
137
|
+

|
|
299
138
|
|
|
300
|
-
|
|
139
|
+
### Running
|
|
301
140
|
|
|
302
|
-
The
|
|
141
|
+
The chat card shows only its header/status and model. Preview and JSON are hidden because no successful resource exists yet. The assistant's ordinary response says the submission was accepted and points to the live card/panel; it does not embed a stale “running” state.
|
|
303
142
|
|
|
304
|
-
###
|
|
143
|
+
### Succeeded
|
|
305
144
|
|
|
306
|
-
|
|
145
|
+
The existing card updates in place and exposes:
|
|
307
146
|
|
|
308
|
-
-
|
|
309
|
-
-
|
|
310
|
-
-
|
|
311
|
-
-
|
|
147
|
+
- **Preview** and **JSON** tabs;
|
|
148
|
+
- image enlargement, video playback, or audio playback;
|
|
149
|
+
- **Add URL to chat**;
|
|
150
|
+
- **Download**.
|
|
312
151
|
|
|
313
|
-
|
|
152
|
+
The corresponding one-shot result query is suppressed when the generation card already owns the same job. This prevents two identical cards.
|
|
314
153
|
|
|
315
|
-
|
|
154
|
+
### Failed
|
|
316
155
|
|
|
317
|
-
|
|
156
|
+
The card remains concise and shows the failure state/diagnostic. Preview and JSON are not presented as if a successful resource existed.
|
|
318
157
|
|
|
319
|
-
|
|
158
|
+
### Session ownership
|
|
320
159
|
|
|
321
|
-
|
|
160
|
+
Every new task records the Harness session id. Chat cards and the drawer read the same session controller, so:
|
|
322
161
|
|
|
323
|
-
-
|
|
324
|
-
-
|
|
325
|
-
-
|
|
162
|
+
- the left/chat status and right/drawer status converge to the same task snapshot;
|
|
163
|
+
- a task created in another conversation is not shown;
|
|
164
|
+
- reopening/remounting the layout does not destroy the background watcher;
|
|
165
|
+
- legacy records without a session id remain readable for compatibility but are not injected into a new conversation.
|
|
326
166
|
|
|
327
|
-
|
|
167
|
+
### Expiry and storage
|
|
328
168
|
|
|
329
|
-
|
|
169
|
+
The plugin stores replay identifiers, task state, resource URLs, and timestamps. It does not store prompts, API Keys, or media copies in the task WAL. If the upstream result has no expiry, the UI applies a seven-day local display limit.
|
|
330
170
|
|
|
331
|
-
|
|
332
|
-
- If upstream provides no expiry, the plugin uses a seven-day local display limit from completion or the last update.
|
|
333
|
-
- After expiry, the resource is no longer presented as available.
|
|
334
|
-
- The local limit does not renew, proxy, or permanently store the upstream file.
|
|
171
|
+
## 7. Use the Modellix Design panel
|
|
335
172
|
|
|
336
|
-
|
|
173
|
+

|
|
337
174
|
|
|
338
|
-
|
|
175
|
+
1. Select **Modellix Design** in the conversation header.
|
|
176
|
+
2. Confirm that the result count matches the current session.
|
|
177
|
+
3. Collapse or expand the Results section.
|
|
178
|
+
4. Collapse or expand a card from its header.
|
|
179
|
+
5. Switch between Preview and JSON for a successful card.
|
|
180
|
+
6. Select **Add URL to chat** to continue editing or transforming that resource.
|
|
181
|
+
7. Select **Download** to open the upstream file.
|
|
182
|
+
8. Select X to close the panel.
|
|
339
183
|
|
|
340
|
-
|
|
184
|
+
## 8. Preview media
|
|
341
185
|
|
|
342
|
-
|
|
343
|
-
2. Review “LLM model catalog” status and select “Refresh LLM models” when needed.
|
|
344
|
-
3. Open the native Harness model selector.
|
|
345
|
-
4. Select a target from the current catalog under the Modellix provider.
|
|
346
|
-
5. The new model applies from the next model call.
|
|
186
|
+

|
|
347
187
|
|
|
348
|
-
|
|
188
|
+
### Images
|
|
349
189
|
|
|
350
|
-
|
|
190
|
+
Select the image to open an enlarged dialog. Focus enters the dialog, Tab stays inside, Escape closes it, and focus returns to the image trigger.
|
|
351
191
|
|
|
352
|
-
|
|
192
|
+
### Video
|
|
353
193
|
|
|
354
|
-
|
|
355
|
-
- OpenAI Completions-compatible protocol;
|
|
356
|
-
- base URL: `https://llm.modellix.ai/v1`;
|
|
357
|
-
- default input: text;
|
|
358
|
-
- plugin-layer automatic retries: `0`.
|
|
194
|
+
The native player supports playback, seek, volume/mute, fullscreen, and the browser's media menu. A completed result should load metadata and advance current time after Play.
|
|
359
195
|
|
|
360
|
-
|
|
196
|
+
### Audio
|
|
361
197
|
|
|
362
|
-
|
|
198
|
+
The native audio player supports playback, seek, volume/mute, and the browser's media menu. A completed result should load duration and advance current time after Play.
|
|
363
199
|
|
|
364
|
-
|
|
200
|
+
## 9. Use Modellix LLM models
|
|
365
201
|
|
|
366
|
-
|
|
367
|
-
- the Modellix Fetch provider for native `web_fetch`.
|
|
202
|
+

|
|
368
203
|
|
|
369
|
-
|
|
204
|
+
1. Keep LLM enabled in Modellix settings.
|
|
205
|
+
2. Check catalog status/count or select **Refresh** if needed.
|
|
206
|
+
3. Open the Harness model selector.
|
|
207
|
+
4. Choose a model in the Modellix group.
|
|
208
|
+
5. Send the next Agent turn.
|
|
370
209
|
|
|
371
|
-
|
|
210
|
+
The provider endpoint is OpenAI-compatible. Provider retries are `0`; unavailable catalog data does not produce fake model entries.
|
|
372
211
|
|
|
373
|
-
|
|
212
|
+
## 10. Automatic Web Search and Fetch
|
|
374
213
|
|
|
375
|
-
|
|
214
|
+

|
|
376
215
|
|
|
377
|
-
|
|
378
|
-
| --- | --- | --- |
|
|
379
|
-
| Missing API Key | An enabled capability has no usable Credential | Configure it in recovery or Modellix settings, or choose Configure later |
|
|
380
|
-
| HTTP 401 / invalid Key | Modellix explicitly rejected the Credential | Replace a local Key; update `MODELLIX_API_KEY` and restart Harness for an environment source |
|
|
381
|
-
| HTTP 402 | Billing is unavailable or blocked | Check balance and billing; do not replace an otherwise valid Key to hide the issue |
|
|
382
|
-
| HTTP 429 | The request was rate limited | Wait as instructed and retry manually; a billed submission is not replayed automatically |
|
|
383
|
-
| Offline or DNS/connection failure | Harness Host cannot currently reach Modellix | Check network, proxy, and fixed HTTPS origins, then retry manually |
|
|
384
|
-
| Timeout | The request did not complete within its bound | Retry reads later; for an unknown billed submission, check records first |
|
|
385
|
-
| 5xx | Modellix is temporarily unavailable | Retry manually later; the Key is not marked invalid |
|
|
386
|
-
| Policy blocked | Account or environment policy rejects the operation | Check Harness and Modellix account policy |
|
|
387
|
-
| Schema unavailable/unsupported | The model contract cannot be interpreted safely | Refresh or select another model; do not bypass validation |
|
|
388
|
-
| Schema changed | A pre-submit reread found an old draft contract | Reselect/refresh the model and confirm parameters again |
|
|
389
|
-
| Submission outcome unknown | The billed POST outcome cannot be determined | Check Results or Modellix-side records before another billed action |
|
|
390
|
-
| Resource expired | The upstream URL or local display period ended | The plugin cannot renew it; generate again if needed |
|
|
391
|
-
| LLM catalog unavailable | Catalog read or materialization failed | Check switch, Key, network, and policy, then refresh manually |
|
|
392
|
-
| Credential changed | The task belongs to an earlier Credential epoch | The old running task may not refresh; inspect diagnostics and do not auto-resubmit |
|
|
216
|
+
Ask the question normally. For example:
|
|
393
217
|
|
|
394
|
-
|
|
218
|
+
> Verify the official Modellix page for alibaba/wan2.7-videoedit. Give its title, one required parameter and what it means, with a source. Do not answer from memory.
|
|
395
219
|
|
|
396
|
-
|
|
397
|
-
2. If a local Key editor is already open, it upgrades in place to mandatory recovery wording. If an ordinary plugin dialog such as Remove API Key or the full-image viewer is open, recovery waits until that dialog closes instead of stacking a second modal.
|
|
398
|
-
3. For a writable local Credential, enter a replacement and save it. The stored Key remains write-only, and the plugin does not replay the failed or billed operation; retry the intended capability explicitly after recovery.
|
|
399
|
-
4. For an environment source, update `MODELLIX_API_KEY` outside Harness and restart the profile because the UI cannot replace it.
|
|
400
|
-
5. “Configure later” dismisses only the current request. A timer does not repeatedly steal focus; another prompt appears only after a later explicit capability call still needs a Credential.
|
|
220
|
+
Expected flow:
|
|
401
221
|
|
|
402
|
-
|
|
222
|
+
1. Agent automatically calls `modellix_web_search`.
|
|
223
|
+
2. When full-page content is needed, Agent calls `modellix_web_fetch`.
|
|
224
|
+
3. The answer cites the fetched/source pages.
|
|
403
225
|
|
|
404
|
-
|
|
226
|
+
The user should not need to say “use search” or “use fetch.” If the user explicitly says not to browse, the Agent does not call them. The routing context also prevents duplicate calls to both the explicit tools and native provider tools for the same operation.
|
|
405
227
|
|
|
406
|
-
##
|
|
228
|
+
## 11. Settings and errors
|
|
407
229
|
|
|
408
|
-
###
|
|
230
|
+
### Feature switches
|
|
409
231
|
|
|
410
|
-
-
|
|
411
|
-
-
|
|
412
|
-
-
|
|
413
|
-
- Enter in the Key field can save. During save, the button retains action text, is marked busy, and blocks duplicate submission.
|
|
414
|
-
- Ordinary confirmation dialogs support Escape. A mandatory Credential gate does not close implicitly with Escape, but Configure later remains focusable.
|
|
415
|
-
- When a dialog closes, focus returns to the trigger or a reasonable primary-content location.
|
|
232
|
+
- **Design:** controls media tools, chat result views, and the result panel.
|
|
233
|
+
- **LLM:** controls live Modellix model materialization.
|
|
234
|
+
- **Web:** controls Modellix Search/Fetch providers and explicit tools.
|
|
416
235
|
|
|
417
|
-
|
|
236
|
+
### Credential status
|
|
418
237
|
|
|
419
|
-
|
|
238
|
+
Only HTTP 401 is an invalid Credential. Other cases remain distinct:
|
|
420
239
|
|
|
421
|
-
|
|
422
|
-
|
|
423
|
-
|
|
424
|
-
|
|
425
|
-
|
|
426
|
-
|
|
240
|
+
| State | Meaning / next step |
|
|
241
|
+
| --- | --- |
|
|
242
|
+
| 402 | Check account status in Modellix |
|
|
243
|
+
| 429 | Wait for the rate limit window |
|
|
244
|
+
| Offline/timeout | Restore connectivity; do not assume the Key is invalid |
|
|
245
|
+
| 5xx | Service error; retry only when the operation is safe |
|
|
246
|
+
| Unknown generation/upload result | Inspect the task/transcript/Modellix record before any manual repeat |
|
|
427
247
|
|
|
428
|
-
|
|
248
|
+
Concurrent 401 responses open only one Credential dialog. Settings always retains a replace-Key action where the Credential is writable.
|
|
429
249
|
|
|
430
|
-
|
|
250
|
+
Routine UI operations do not show a payment warning. Users with a required Modellix Key can review consumption and details in Modellix.
|
|
431
251
|
|
|
432
|
-
|
|
252
|
+
## 12. Accessibility and responsive checks
|
|
433
253
|
|
|
434
|
-
|
|
435
|
-
|
|
436
|
-
|
|
437
|
-
|
|
438
|
-
|
|
439
|
-
|
|
440
|
-
|
|
441
|
-
| `web_search` / `web_fetch` | Possibly | A user or agent should not automatically repeat a sensitive operation after an unknown outcome |
|
|
254
|
+
- Dialogs have visible titles, dialog semantics, initial focus, focus trap, background inertness, and focus restoration.
|
|
255
|
+
- The required Credential gate cannot disappear through Escape/backdrop/X; **Configure later** is always keyboard reachable.
|
|
256
|
+
- Inputs use real labels and linked help/error text.
|
|
257
|
+
- Busy and invalid states are exposed through ARIA.
|
|
258
|
+
- Result tabs support Arrow/Home/End behavior.
|
|
259
|
+
- Pointer targets are at least 24×24 CSS px and expand to 48×48 for coarse pointers.
|
|
260
|
+
- Light, dark, forced-colors, reduced-motion, 320/560/768/1440 widths, and 200% text scaling are supported.
|
|
442
261
|
|
|
443
|
-
|
|
262
|
+
## 13. Troubleshooting
|
|
444
263
|
|
|
445
|
-
|
|
264
|
+
### Modellix Design is missing
|
|
446
265
|
|
|
447
|
-
|
|
266
|
+
Confirm Design is enabled, inspect `dsh --profile web --dump-config`, and fully restart the profile after a plugin update.
|
|
448
267
|
|
|
449
|
-
### The
|
|
268
|
+
### The Agent does not use Web automatically
|
|
450
269
|
|
|
451
|
-
|
|
452
|
-
- You may have selected Configure later. Configure directly in settings, or explicitly open an enabled Modellix capability to create a new recovery request.
|
|
453
|
-
- If settings itself failed to load, use Retry in the dialog and inspect the Harness Host connection.
|
|
270
|
+
Confirm Web is enabled and the current Agent session contains the `Web routing` context. The explicit tools should appear as `modellix_web_search` and `modellix_web_fetch`.
|
|
454
271
|
|
|
455
|
-
###
|
|
272
|
+
### A model Schema is reported as unavailable
|
|
456
273
|
|
|
457
|
-
|
|
458
|
-
2. Confirm that a Credential is configured and not in 401 invalid state.
|
|
459
|
-
3. Select “Refresh models.”
|
|
460
|
-
4. Check Host network access to Modellix over HTTPS.
|
|
461
|
-
5. If the catalog works but one model cannot submit, its Schema may not be supported; select another model.
|
|
274
|
+
Refresh the live media catalog, verify the exact model slug returned by `modellix_media_list`, and read `modellix_media_schema` again. The parser supports documented OpenAPI layouts and bounded shared references; it blocks unsafe or unsupported contracts instead of guessing.
|
|
462
275
|
|
|
463
|
-
###
|
|
276
|
+
### A task never updates
|
|
464
277
|
|
|
465
|
-
|
|
278
|
+
Keep the conversation open long enough for the Client watcher, verify the Credential epoch has not changed, and inspect the right panel. Do not submit a replacement merely because an immutable assistant sentence looks old; current status belongs to the card/panel.
|
|
466
279
|
|
|
467
|
-
###
|
|
280
|
+
### Two cards represent one task
|
|
468
281
|
|
|
469
|
-
|
|
470
|
-
- If you edited parameters after creating the proposal, reject the old proposal and create another.
|
|
471
|
-
- If the Schema or model changed, refresh and enter the instruction again.
|
|
282
|
+
This is not expected in `0.2.0`. Capture the two job ids and tool call ids without Secrets. The generation card should win the per-session task claim, and the matching result-query card should be suppressed.
|
|
472
283
|
|
|
473
|
-
###
|
|
284
|
+
### Results from another conversation appear
|
|
474
285
|
|
|
475
|
-
|
|
476
|
-
- Repeated read failures can reach the polling bound; after connectivity returns, reopen or refresh the view.
|
|
477
|
-
- Replacing the Key can stop refresh for a task from an older Credential epoch.
|
|
478
|
-
- Do not click the billed generation action again merely because the page did not update immediately.
|
|
286
|
+
This is not expected for new `0.2.0` tasks. Record the affected session/task ids and report it as a session-isolation defect.
|
|
479
287
|
|
|
480
|
-
###
|
|
288
|
+
### Media cannot play
|
|
481
289
|
|
|
482
|
-
|
|
290
|
+
Confirm the result is Succeeded, the upstream URL has not expired, and the browser can reach the file origin. Failed or running tasks intentionally have no player.
|
|
483
291
|
|
|
484
|
-
|
|
292
|
+
## 14. Screenshot catalog
|
|
485
293
|
|
|
486
|
-
|
|
294
|
+
All twelve official captures are 1920×1080 and come from real English or Chinese UI sessions:
|
|
487
295
|
|
|
488
|
-
|
|
296
|
+
| English screenshot | What it proves |
|
|
297
|
+
| --- | --- |
|
|
298
|
+
| `settings-ready-en.webp` | Write-only Credential status, enabled services, live catalog |
|
|
299
|
+
| `chat-media-generation-en.webp` | One completed image card in chat |
|
|
300
|
+
| `design-results-drawer-en.webp` | Session-scoped image/video/audio result list |
|
|
301
|
+
| `media-players-en.webp` | Real video/audio preview controls |
|
|
302
|
+
| `llm-model-selector-en.webp` | Live Modellix models in Harness |
|
|
303
|
+
| `web-tools-auto-en.webp` | Automatic explicit Search and Fetch |
|
|
489
304
|
|
|
490
|
-
|
|
305
|
+
No screenshot contains a real Key, Network request, HAR, Console output, Credential file, cookie, or browser storage.
|
|
491
306
|
|
|
492
|
-
|
|
307
|
+
## 15. Acceptance and release
|
|
493
308
|
|
|
494
|
-
|
|
309
|
+
Use [RELEASE_CHECKLIST.md](RELEASE_CHECKLIST.md) for the step-by-step manual acceptance and evidence requirements. The Chinese equivalent is [../zh-CN/RELEASE_CHECKLIST.md](../zh-CN/RELEASE_CHECKLIST.md).
|
|
495
310
|
|
|
496
|
-
##
|
|
311
|
+
## 16. Uninstall
|
|
497
312
|
|
|
498
|
-
|
|
499
|
-
2. For an environment source, revoke `MODELLIX_API_KEY` in the external launch environment or secret manager.
|
|
500
|
-
3. Remove the plugin from the target profile and inspect the configuration:
|
|
313
|
+
Remove a writable local Key in Modellix settings, or revoke an environment Key externally. Then:
|
|
501
314
|
|
|
502
315
|
```sh
|
|
503
316
|
dsh plugin --profile web remove dsh-modellix
|
|
@@ -505,42 +318,11 @@ dsh --profile web --dump-config
|
|
|
505
318
|
dsh --profile web
|
|
506
319
|
```
|
|
507
320
|
|
|
508
|
-
|
|
509
|
-
|
|
510
|
-
Uninstallation does not promise to delete upstream Modellix tasks, external environment variables, or every piece of persisted Harness data. If your organization requires complete cleanup, inspect Credential storage, Harness profile data, and Modellix account records separately.
|
|
511
|
-
|
|
512
|
-
## Current limitations
|
|
513
|
-
|
|
514
|
-
- The natural-language parameter assistant modifies only fields declared by the current Schema; it does not run an open-ended agent workflow.
|
|
515
|
-
- There is no upstream cancellation API, and the UI has no generation cancellation button.
|
|
516
|
-
- Results are upstream URLs plus task metadata, not a permanent local media library.
|
|
517
|
-
- An unsupported complex Schema blocks submission instead of guessing or silently dropping constraints.
|
|
518
|
-
- LLM depends on the live catalog and provides no fabricated model when the catalog is unavailable.
|
|
519
|
-
- Web uses the native Harness Tool seam; the plugin has no duplicate custom Tool UI.
|
|
520
|
-
|
|
521
|
-
## Included screenshots and safe-capture checklist
|
|
522
|
-
|
|
523
|
-
These images were captured in an isolated acceptance profile and checked for Secrets. Most plugin copy is Chinese; `design-mobile-en.webp` and `llm-model-selector.webp` use English Harness chrome, while `web-tools.webp` uses English Harness chrome around a Chinese public-documentation request and response. Both guides reuse the same safe set with language-appropriate alt text:
|
|
524
|
-
|
|
525
|
-
| Suggested file | Alt text | Capture focus |
|
|
526
|
-
| --- | --- | --- |
|
|
527
|
-
| `docs/assets/onboarding-defaults.webp` | Chinese-language Modellix first-time setup dialog with an empty API Key field and Design, LLM, and Web switches enabled | Empty password field, three default switches, Configure later and Save actions |
|
|
528
|
-
| `docs/assets/settings-ready.webp` | Chinese-language Modellix settings showing a verified Credential, three feature switches, and LLM catalog status | Show configured status only, never the Key |
|
|
529
|
-
| `docs/assets/design-desktop.webp` | Chinese-language Modellix Design desktop layout with model, prompt, and parameters on the left and generation results on the right | 1440px, generic prompt, non-sensitive result |
|
|
530
|
-
| `docs/assets/design-proposal.webp` | Chinese-language Design parameter proposal showing before-and-after changes with Apply and Reject actions | No personal data; make clear that a proposal does not generate automatically |
|
|
531
|
-
| `docs/assets/design-results-media.webp` | Chinese-language Design results pane showing the image created during real acceptance, its expiry, and download action | The image uses a public test prompt; video and audio passed separate real API acceptance and are not mixed into this screenshot |
|
|
532
|
-
| `docs/assets/design-mobile-en.webp` | English-language Modellix Design in a single-column layout at 320 pixels with the workspace above Results | 320px, longest English copy, no clipped key action, and visible English localization |
|
|
533
|
-
| `docs/assets/credential-recovery.webp` | Chinese-language Modellix recovery dialog after an invalid API Key with an empty field and Configure later action | Simulated 401 only; never show a real Key |
|
|
534
|
-
| `docs/assets/llm-model-selector.webp` | English-language Harness model selector expanded to the Modellix provider with models synchronized from the live catalog | Show only public model names, with no account or call content |
|
|
535
|
-
| `docs/assets/web-tools.webp` | English-language Harness conversation showing native web_search and web_fetch completed for a Chinese public-documentation request | Use public documentation; do not show private URLs, Cookies, or request details |
|
|
536
|
-
|
|
537
|
-
These screenshots show only an empty Key, an explicitly fake Key, public model names, public URLs, and generic test prompts. The real Key was read directly by the acceptance process and never entered the browser, screenshots, Network/HAR, Console, Credential files, or persistent recordings. Future screenshot updates must preserve the same rule.
|
|
321
|
+
Uninstallation does not delete upstream tasks, external environment variables, or every Harness profile artifact.
|
|
538
322
|
|
|
539
323
|
## References
|
|
540
324
|
|
|
541
|
-
- [
|
|
542
|
-
- [Chinese README](../../README.zh-CN.md)
|
|
325
|
+
- [README](../../README.md)
|
|
543
326
|
- [Modellix getting started](https://docs.modellix.ai/get-started)
|
|
544
|
-
- [Modellix
|
|
545
|
-
- [Modellix GPT Image 2 example](https://www.modellix.ai/zh_CN/models/openai/gpt-image-2)
|
|
327
|
+
- [Modellix model catalog](https://www.modellix.ai/models)
|
|
546
328
|
- [DeepSeek Harness](https://github.com/deepseek-ai/deepseek-harness)
|