@mokuyoaxis/dsh-iris 0.1.1 → 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/CHANGELOG.md +75 -1
- package/README.en.md +259 -0
- package/README.md +70 -7
- package/bin/dsh-iris.js +23 -0
- package/cordis.patch.yml +1 -1
- package/docs/ARCHITECTURE.md +81 -0
- package/docs/FAULT_INJECTION.md +26 -0
- package/docs/PROVIDER_SUBMISSION_CONTRACT.md +60 -0
- package/docs/ROADMAP.md +25 -8
- package/docs/SECURITY.md +53 -0
- package/docs/TASK_SEMANTICS.md +147 -0
- package/docs/assets/diagrams/iris-architecture.drawio +1 -0
- package/docs/assets/diagrams/iris-architecture.png +0 -0
- package/docs/assets/diagrams/iris-architecture.svg +63 -0
- package/docs/assets/diagrams/iris-task-lifecycle.drawio +1 -0
- package/docs/assets/diagrams/iris-task-lifecycle.png +0 -0
- package/docs/assets/diagrams/iris-task-lifecycle.svg +64 -0
- package/docs/assets/diagrams/iris-workflow-compose.drawio +1 -0
- package/docs/assets/diagrams/iris-workflow-compose.png +0 -0
- package/docs/assets/diagrams/iris-workflow-compose.svg +41 -0
- package/docs/assets/examples/iris-flower-generated.webp +0 -0
- package/docs/assets/screenshots/image-task-succeeded.webp +0 -0
- package/docs/assets/screenshots/prompt-general-after.webp +0 -0
- package/docs/assets/screenshots/prompt-general-before.webp +0 -0
- package/docs/assets/screenshots/prompt-general-preview.webp +0 -0
- package/docs/assets/screenshots/prompt-image-before.webp +0 -0
- package/docs/assets/screenshots/prompt-image-preview.webp +0 -0
- package/docs/releases/0.1.2.md +26 -0
- package/docs/releases/0.1.3.md +30 -0
- package/docs/screenshots.md +34 -0
- package/lib/actions.js +609 -175
- package/lib/api.js +122 -18
- package/lib/bundled-skills.js +62 -0
- package/lib/client.js +460 -22
- package/lib/doctor.js +243 -0
- package/lib/index.js +57 -46
- package/lib/prompt-optimizer-config.js +170 -0
- package/lib/prompt-optimizer.js +244 -0
- package/lib/provider-contract.js +234 -0
- package/lib/task-semantics.js +209 -0
- package/lib/tasks.js +473 -29
- package/package.json +13 -4
- package/screenshots.json +6 -0
- package/user_guide.md +84 -3
package/user_guide.md
CHANGED
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
|
|
5
5
|
## 安装
|
|
6
6
|
|
|
7
|
-
你需要 DeepSeek Harness `>=0.1.2-rc.1 <0.1.3-0`、PATH 中的 `pnpm`,以及至少一个媒体或视觉服务供应商。dsh-iris 自身要求 Node.js 20.10 或更高版本;如果所用 DSH 版本要求更高,以 DSH 为准。Iris 0.1.1 不兼容 DSH 0.1.0/0.1.1 的旧客户端 Runtime。
|
|
7
|
+
你需要 DeepSeek Harness `>=0.1.2-rc.1 <0.1.3-0`、PATH 中的 `pnpm`,以及至少一个媒体或视觉服务供应商。dsh-iris 自身要求 Node.js 20.10 或更高版本;如果所用 DSH 版本要求更高,以 DSH 为准。Iris 0.1.1 及后续 0.1.x 不兼容 DSH 0.1.0/0.1.1 的旧客户端 Runtime。
|
|
8
8
|
|
|
9
9
|
从 npm 安装到 Web profile:
|
|
10
10
|
|
|
@@ -13,6 +13,8 @@ dsh plugin --profile web add @mokuyoaxis/dsh-iris
|
|
|
13
13
|
dsh web
|
|
14
14
|
```
|
|
15
15
|
|
|
16
|
+
npm 上无 scope 的 `dsh-iris` 是另一款插件;安装或更新 Iris Media 时必须使用完整 scoped 包名。
|
|
17
|
+
|
|
16
18
|
从源码目录试用:
|
|
17
19
|
|
|
18
20
|
```bash
|
|
@@ -28,7 +30,7 @@ dsh web
|
|
|
28
30
|
dsh --profile web --dump-config
|
|
29
31
|
```
|
|
30
32
|
|
|
31
|
-
输出中应出现
|
|
33
|
+
输出中应出现 `@mokuyoaxis/dsh-iris` 配置层和唯一行 ID `mokuyoaxis-dsh-iris`。DSH 的插件命令和 profile 机制见[官方说明](https://github.com/deepseek-ai/deepseek-harness/blob/master/docs/user/develop/basic/publish.md)。
|
|
32
34
|
|
|
33
35
|
## 最快配置:DashScope
|
|
34
36
|
|
|
@@ -180,12 +182,75 @@ Iris 工作台中的文件字段提供三种方式:
|
|
|
180
182
|
|
|
181
183
|
直接写工具名最明确;自然语言也可以,由 Agent 判断需要调用哪个 Iris 工具。视频、图片和语音生成可能产生供应商费用。
|
|
182
184
|
|
|
183
|
-
|
|
185
|
+
从 0.1.2 起,插件会在 DSH Skill registry 可用时自动注册 `iris-verify-ui` 和 `iris-compose-media`,不要求会话工作区位于本仓库,也不需要用户复制 `.dsh/skills/`。项目目录中存在同名 Skill 时,DSH 仍优先使用项目版本;宿主未提供 Skill registry 时不影响 14 个 Iris 工具。
|
|
186
|
+
|
|
187
|
+
## 对话框提示词优化
|
|
188
|
+
|
|
189
|
+
安装并启用 Iris 后,DSH 对话输入区会出现一个没有边框、底色和文字的“🫧”入口。点击后打开半透明玻璃悬浮窗;桌面端靠近输入区,手机窄屏自动变为底部面板,并适配浏览器安全区、可用高度和内部滚动。它独立于 Iris 工作台,可用于普通问答、写作、编程以及图片/视频生成提示词。[查看 Android 16 真机完整流程](docs/screenshots.md)。
|
|
190
|
+
|
|
191
|
+
使用流程:
|
|
192
|
+
|
|
193
|
+
1. 在对话框写入草稿,点击“🫧”。
|
|
194
|
+
2. 选择“通用对话、图片生成、视频生成、首尾帧视频”之一。
|
|
195
|
+
3. 点击“生成预览”。此时会调用模型,可能产生费用。
|
|
196
|
+
4. 检查结果后选择“写回输入框、复制、再优化”或“恢复原文”。Iris 不会自动发送消息。
|
|
197
|
+
|
|
198
|
+
默认路由是当前会话模型;当前会话没有选择时使用 DSH 默认模型。面板中的“JSON 配置”可以导出当前配置、导入修改后的 JSON,或恢复 Iris 内置默认值。配置单独保存在 `$DSH_HOME/iris/v1/prompt-optimizer.json`,不包含供应商 API Key,也不与 `providers.json` 混合。
|
|
199
|
+
|
|
200
|
+
导出文件格式:
|
|
201
|
+
|
|
202
|
+
```json
|
|
203
|
+
{
|
|
204
|
+
"version": 1,
|
|
205
|
+
"enabled": true,
|
|
206
|
+
"systemPrompt": "你自己的优化器系统提示词",
|
|
207
|
+
"targets": {
|
|
208
|
+
"general": "通用任务的补充要求",
|
|
209
|
+
"image": "图片提示词的补充要求",
|
|
210
|
+
"video": "视频提示词的补充要求",
|
|
211
|
+
"s2v": "首尾帧视频的补充要求"
|
|
212
|
+
},
|
|
213
|
+
"route": {
|
|
214
|
+
"mode": "session"
|
|
215
|
+
},
|
|
216
|
+
"generation": {
|
|
217
|
+
"temperature": 0.3,
|
|
218
|
+
"reasoningEffort": "off-if-supported",
|
|
219
|
+
"maxOutputTokens": 1200,
|
|
220
|
+
"timeoutMs": 45000
|
|
221
|
+
}
|
|
222
|
+
}
|
|
223
|
+
```
|
|
224
|
+
|
|
225
|
+
如需固定使用另一供应商模型,把路由改为:
|
|
226
|
+
|
|
227
|
+
```json
|
|
228
|
+
{
|
|
229
|
+
"route": {
|
|
230
|
+
"mode": "fixed",
|
|
231
|
+
"provider": "DSH 中注册的 provider id",
|
|
232
|
+
"model": "该 provider 下的 model id"
|
|
233
|
+
}
|
|
234
|
+
}
|
|
235
|
+
```
|
|
236
|
+
|
|
237
|
+
`generation.reasoningEffort` 默认是 `off-if-supported`:Iris 查询 DSH 的模型元数据,只在模型明确提供 `off`(或等价关闭档位)时关闭 thinking;不支持时回退供应商默认值。它也可设为 `provider-default`(忽略会话档位)、`inherit`(显式继承会话 High/Low)或当前模型声明的具体 effort ID。thinking token 可能与正文共用 `maxOutputTokens`,因此不建议先盲目提高上限;优先关闭 thinking,或用 `fixed` 路由选择轻量非思考模型,确有长输出需求时再调高,当前允许 64–4096。Iris 不会自动重试,避免重复计费。
|
|
238
|
+
|
|
239
|
+
导入允许局部配置,缺少的字段会补成 Iris 默认值,未知字段不会落盘。面板导出的则是完整配置。Prompt 最大 32 KiB,结果最大 16000 字符;请求无工具权限,且不会附带会话历史、附件、工作区文件或 API Key。当前版本不会改写含 `@` 或 `/` 结构化引用的草稿,以免写回时破坏引用节点。面板可单独关闭这个对话入口;关闭后 Iris 工作台、Agent 工具和任务后台仍然运行,可在“设置 → Iris 工作台 → 对话框提示词优化”重新启用。开发中若只热更新了客户端而服务端尚未重载,关闭请求可能返回 `method not allowed`;重启 DSH 并刷新浏览器即可让新接口生效,正式安装或升级后也应重启宿主。
|
|
184
240
|
|
|
185
241
|
## 任务和产物
|
|
186
242
|
|
|
187
243
|
Iris 会在会话输入区显示运行中任务,并在 Iris 工作台保留最近任务。长时间生成转入后台后,可以让 Agent 调用 `iris_task_status`,或在工作台中打开任务详情。
|
|
188
244
|
|
|
245
|
+
Task v2 将“供应商是否受理、观察是否继续、远端结果和本地交付”分开记录。观察暂停、受理/结果未知,以及生成成功但交付失败会进入“需要处理”:
|
|
246
|
+
|
|
247
|
+
- **重新观察**:只恢复已有远端任务的轮询,绝不提交新的生成请求。
|
|
248
|
+
- **重新交付**:只重新查询并下载已经成功的远端产物;同步结果没有远端任务 ID 时会拒绝伪恢复。
|
|
249
|
+
- **知情重试**:新建一次可能收费的生成任务,必须独立确认,并在新旧 Task 间记录关联。创建新任务后,原提醒自动归档为“已通过重试处理”,不会继续占用泡泡角标。当前只为能无损还原输入的文生图和文生视频提供按钮;文件输入和可能被截断的文本应从原始输入重新发起。
|
|
250
|
+
- **标为已读 / 恢复提醒**:用户可以隐藏已经理解但暂不处理的提醒,并从历史详情重新打开。已读只影响提醒队列,不会把受理未知伪造成成功、失败或未受理。
|
|
251
|
+
|
|
252
|
+
旧版任务会明确显示“旧任务 · 只读”。只有服务端明确返回 `schemaVersion=1` 才使用该标签;客户端与服务端热更新暂时不同步时,不会把字段缺失的新任务误判为旧任务。
|
|
253
|
+
|
|
189
254
|
默认数据目录:
|
|
190
255
|
|
|
191
256
|
| 路径 | 内容 |
|
|
@@ -194,6 +259,7 @@ Iris 会在会话输入区显示运行中任务,并在 Iris 工作台保留最
|
|
|
194
259
|
| `$DSH_HOME/iris/v1/uploads/` | 浏览器上传的临时输入 |
|
|
195
260
|
| `$DSH_HOME/iris/v1/tasks.json` | 任务状态与附件索引 |
|
|
196
261
|
| `$DSH_HOME/iris/v1/providers.json` | 供应商、模型池和能力分配 |
|
|
262
|
+
| `$DSH_HOME/iris/v1/prompt-optimizer.json` | 提示词优化器的用户 JSON 配置 |
|
|
197
263
|
|
|
198
264
|
音视频播放链接带随机令牌。默认只接受回环 Host。反向代理或 LAN 访问时,需要同时显式信任外部 Host,并按需设置媒体链接基址,例如:
|
|
199
265
|
|
|
@@ -203,6 +269,17 @@ IRIS_TRUSTED_HOSTS="dsh.example.com" DSH_WEB_BASE="https://dsh.example.com" dsh
|
|
|
203
269
|
|
|
204
270
|
列表用逗号分隔,可填写 `host` 或精确的 `host:port`;反向代理应保留正确的 Host。`IRIS_TRUSTED_HOSTS` 只防止意外 Host 暴露,不验证用户身份。只要服务位于公网或不可信网络,就必须由反向代理或 DSH 部署层提供 HTTPS 和认证,不能把随机媒体令牌当作登录机制。
|
|
205
271
|
|
|
272
|
+
## 离线 Doctor
|
|
273
|
+
|
|
274
|
+
运行以下命令不会启动 DSH,也不会发送任何供应商请求:
|
|
275
|
+
|
|
276
|
+
```bash
|
|
277
|
+
npx @mokuyoaxis/dsh-iris doctor
|
|
278
|
+
npx @mokuyoaxis/dsh-iris doctor --json
|
|
279
|
+
```
|
|
280
|
+
|
|
281
|
+
已安装包也可以直接运行 `dsh-iris doctor`。退出码为 `0`(正常)、`1`(警告)和 `2`(硬错误)。Doctor 会执行一个随后立即删除的本地写入探针,并检查配置、任务、能力分配、临时文件和产物引用;输出不含完整 API Key。离线模式无法检查 DSH 工具/客户端是否已经装载,也不会用付费请求验证 Provider。
|
|
282
|
+
|
|
206
283
|
## 可选依赖
|
|
207
284
|
|
|
208
285
|
视频抽帧和视频摘要依赖 PATH 中的 `ffmpeg` 与 `ffprobe`。缺少它们只会禁用这两项能力,不影响生成、看图、OCR 或语音工具。
|
|
@@ -217,6 +294,8 @@ HTML 截图依赖 DSH 提供 `dsh-builtin-browser`。截图页在离线沙箱中
|
|
|
217
294
|
dsh plugin --profile web update @mokuyoaxis/dsh-iris
|
|
218
295
|
```
|
|
219
296
|
|
|
297
|
+
从 0.1.1 升级到 0.1.2 时,插件自带 bundle 会自动使用新的唯一行 ID。如果你曾在个人 `cordis.patch.yml` 中手动覆盖 `id: dsh-iris`,需要把该覆盖改成 `id: mokuyoaxis-dsh-iris`,否则 DSH 会报告旧行未匹配。
|
|
298
|
+
|
|
220
299
|
更新后重启 DSH。卸载插件:
|
|
221
300
|
|
|
222
301
|
```bash
|
|
@@ -227,6 +306,8 @@ dsh plugin --profile web remove @mokuyoaxis/dsh-iris
|
|
|
227
306
|
|
|
228
307
|
## 常见问题
|
|
229
308
|
|
|
309
|
+
- **对话框没有“🫧”入口**:确认 Iris 客户端已加载且当前存在会话;再到“设置 → Iris 工作台 → 对话框提示词优化”检查是否被单独关闭。
|
|
310
|
+
- **提示词优化提示没有模型**:先在当前会话选择主模型,或在 JSON 中配置 `route.mode: "fixed"`。
|
|
230
311
|
- **设置中没有 Iris 工作台**:确认插件已加入 Web profile,并在安装后重启 DSH;可用 `dsh plugin --profile web list` 和 `--dump-config` 检查。
|
|
231
312
|
- **没有可用模型**:先确认供应商已启用且 Key 有效,再运行“发现模型”;不支持 `/models` 时手动添加。
|
|
232
313
|
- **OpenAI 兼容图片请求走错协议**:确认该供应商的 `mediaProtocol` 是 `openai-images`。
|