@mokuyoaxis/dsh-iris 0.1.0 → 0.1.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 +72 -1
- package/README.en.md +245 -0
- package/README.md +81 -13
- package/cordis.patch.yml +1 -1
- package/docs/ROADMAP.md +49 -21
- 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.1.md +51 -0
- package/docs/releases/0.1.2.md +26 -0
- package/docs/screenshots.md +34 -0
- package/lib/actions.js +33 -27
- package/lib/adapters.js +42 -26
- package/lib/api.js +73 -20
- package/lib/bundled-skills.js +62 -0
- package/lib/capability.js +1 -1
- package/lib/client.js +378 -26
- package/lib/config.js +56 -22
- package/lib/guard.js +37 -24
- package/lib/index.js +21 -9
- package/lib/locate.js +1 -1
- package/lib/media-probe.js +4 -4
- package/lib/media.js +1 -1
- package/lib/private-storage.js +77 -0
- package/lib/prompt-optimizer-config.js +170 -0
- package/lib/prompt-optimizer.js +244 -0
- package/lib/provider-protocol.js +25 -0
- package/lib/render.js +3 -2
- package/lib/tasks.js +21 -13
- package/lib/vision.js +2 -2
- package/package.json +25 -17
- package/screenshots.json +6 -0
- package/user_guide.md +97 -11
package/user_guide.md
CHANGED
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
|
|
5
5
|
## 安装
|
|
6
6
|
|
|
7
|
-
|
|
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
|
|
@@ -20,7 +22,7 @@ dsh plugin --profile web add .
|
|
|
20
22
|
dsh web
|
|
21
23
|
```
|
|
22
24
|
|
|
23
|
-
浏览器默认打开 `http://127.0.0.1:3080`。插件安装后只会在下一次 DSH 启动时装载;如果 DSH
|
|
25
|
+
浏览器默认打开 `http://127.0.0.1:3080`。插件安装后只会在下一次 DSH 启动时装载;如果 DSH 已经运行,请先停止再启动。启动输出包含一次性认证参数时,必须完整打开该 URL,不能只输入裸地址。
|
|
24
26
|
|
|
25
27
|
可以在启动前检查组合配置:
|
|
26
28
|
|
|
@@ -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
|
|
|
@@ -50,10 +52,10 @@ Iris 当前支持两类调用路径:
|
|
|
50
52
|
|
|
51
53
|
| 路径 | 可用能力 | 说明 |
|
|
52
54
|
|---|---|---|
|
|
53
|
-
| DashScope 百炼 | 图片、视频、TTS、转写、视觉 |
|
|
55
|
+
| DashScope 百炼 | 图片、视频、TTS、转写、视觉 | 覆盖最完整;媒体请求只允许阿里云官方 HTTPS 域名 |
|
|
54
56
|
| OpenAI 兼容 | Images 图片生成、Chat Completions 视觉 | 具体模型和能力取决于兼容服务 |
|
|
55
57
|
|
|
56
|
-
|
|
58
|
+
工作台新增供应商时会按 Base URL 安全推断媒体协议:阿里云官方 DashScope HTTPS 域名使用 `dashscope`,其他地址使用 `openai-images`,也可以在供应商卡片中明确选择。即使配置被误标为 `dashscope`,Iris 也会在 fetch 前拒绝向非官方地址发送 DashScope API Key。
|
|
57
59
|
|
|
58
60
|
同一个 OpenAI 兼容 Base URL 只有在实际提供相应接口时才能承担对应能力:图片生成需要 Images 接口,视觉理解需要支持图片输入的 Chat Completions 接口。通用 OpenAI 兼容端点目前不能替代 Iris 的 DashScope 视频、TTS 或转写协议。
|
|
59
61
|
|
|
@@ -73,12 +75,12 @@ Iris 当前支持两类调用路径:
|
|
|
73
75
|
|
|
74
76
|
没有 `/models` 接口时,可以在供应商的模型池中手动添加模型名。Iris 能识别常见的 wan、qwen-vl、qwen-tts、qwen-audio ASR Filetrans、Fun-ASR、paraformer、gpt-image、dall-e 和 Gemini 命名;无法识别的模型需要在高级配置中显式填写 `capabilities`。
|
|
75
77
|
|
|
76
|
-
|
|
78
|
+
点击模型旁单项能力标记会进行验证。视觉、图片和 TTS 会先显示确认框,再发起真实供应商请求,不是本地校验:
|
|
77
79
|
|
|
78
80
|
- 视觉测试会发送一张最小测试图;
|
|
79
81
|
- 图片和 TTS 测试会生成真实产物;
|
|
80
|
-
-
|
|
81
|
-
-
|
|
82
|
+
- 视频不会自动提交探针,因为“只确认受理”也可能创建计费任务;应通过“视频生成”操作验证。
|
|
83
|
+
- 转写不使用空样本探针,应通过“音频转写”操作用真实音频验证。
|
|
82
84
|
|
|
83
85
|
模型不必经过“测”才能使用。这个标记只记录人工触发的实测结果。
|
|
84
86
|
|
|
@@ -93,6 +95,24 @@ Iris 当前支持两类调用路径:
|
|
|
93
95
|
|
|
94
96
|
生成类故障转移只覆盖上传、提交和同步生成阶段。远端一旦受理异步任务,Iris 就会继续跟踪这个任务,不会因轮询或下载失败自动重提,以免重复生成和计费。
|
|
95
97
|
|
|
98
|
+
## 从旧工作台显式导入
|
|
99
|
+
|
|
100
|
+
`ai-paint` 是 Iris 维护者本机未公开的前身项目,不是公开依赖。普通用户不需要、也不应该为了使用 Iris 去下载、安装或自行创建 ai-paint 目录;直接在 Iris 工作台添加供应商即可。
|
|
101
|
+
|
|
102
|
+
旧版读取路径同时承担了本机迁移和密钥保护作用:由运行 DSH 的宿主进程直接读取维护者已有的本地配置,可以避免为了迁移把 API Key 重新粘贴到 Agent 会话、命令行参数或文档中。它不是一个配置服务,也不意味着 Iris 运行时应该长期依赖另一个项目。
|
|
103
|
+
|
|
104
|
+
从 0.1.1 起,Iris 独立保存供应商、密钥、模型池和能力分配,位置为 `$DSH_HOME/iris/v1/providers.json`(未设置 `DSH_HOME` 时使用用户目录下的 `.dsh`)。修改 Iris 配置不会影响 ai-paint,反之亦然。
|
|
105
|
+
|
|
106
|
+
默认启动不会扫描 ai-paint 或其他项目。推荐通过工作台手动添加供应商;需要迁移旧 ai-paint 配置时,先停止目标 DSH 实例并备份其 Iris 配置,再显式指定来源文件的绝对路径。Bash 示例:
|
|
107
|
+
|
|
108
|
+
```bash
|
|
109
|
+
IRIS_IMPORT_WORKBENCH_CONFIG="/absolute/path/ai-paint/data/config.json" dsh web
|
|
110
|
+
```
|
|
111
|
+
|
|
112
|
+
其他 Shell 请使用其环境变量设置方式。`IRIS_IMPORT_WORKBENCH_CONFIG` 的值只是来源配置文件的路径,不包含 API Key;该变量属于运行 DSH 的进程,目标仍由该进程的 `DSH_HOME` 决定。导入仅在 Iris 没有供应商时执行,复制供应商基本信息和凭据,不修改来源文件、不合并覆盖已有供应商,也不迁移模型池或能力分配。之后应在工作台检查协议并重新分配模型,后续启动不再设置此变量。
|
|
113
|
+
|
|
114
|
+
变量未设置时不进行导入;相对路径会被拒绝。文件不可读、JSON 无效或没有有效供应商时会给出提示,不输出密钥。导入后的密钥写入 Iris 自己的配置文件,权限设为仅当前用户可读写;工作台和接口只返回密钥提示,不返回完整值。该操作不发送模型请求。
|
|
115
|
+
|
|
96
116
|
## 高级配置文件
|
|
97
117
|
|
|
98
118
|
一般应使用 Iris 工作台。只有在配置工作台尚未覆盖的协议或模型能力时,才需要直接编辑:
|
|
@@ -132,7 +152,7 @@ $DSH_HOME/iris/v1/providers.json
|
|
|
132
152
|
|
|
133
153
|
`assignments` 可以省略;省略后使用模型池顺序。包含特殊字符的 provider 或模型引用会经过 URL 编码,复杂引用建议在工作台中生成,不要手写。
|
|
134
154
|
|
|
135
|
-
API Key 以明文保存在宿主侧的 `providers.json`
|
|
155
|
+
API Key 以明文保存在宿主侧的 `providers.json` 中。POSIX 上 Iris 目录为 `0700`、文件为 `0600`,0.1.1 首次启动会收紧既有 Iris 树但不修改内容或跟随符号链接;Windows 的 mode 不能替代 ACL。状态接口和界面只返回掩码,不会显示完整 Key。不要把这个文件提交到版本库或发给他人。
|
|
136
156
|
|
|
137
157
|
## 文件输入
|
|
138
158
|
|
|
@@ -162,7 +182,61 @@ Iris 工作台中的文件字段提供三种方式:
|
|
|
162
182
|
|
|
163
183
|
直接写工具名最明确;自然语言也可以,由 Agent 判断需要调用哪个 Iris 工具。视频、图片和语音生成可能产生供应商费用。
|
|
164
184
|
|
|
165
|
-
|
|
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 并刷新浏览器即可让新接口生效,正式安装或升级后也应重启宿主。
|
|
166
240
|
|
|
167
241
|
## 任务和产物
|
|
168
242
|
|
|
@@ -176,8 +250,15 @@ Iris 会在会话输入区显示运行中任务,并在 Iris 工作台保留最
|
|
|
176
250
|
| `$DSH_HOME/iris/v1/uploads/` | 浏览器上传的临时输入 |
|
|
177
251
|
| `$DSH_HOME/iris/v1/tasks.json` | 任务状态与附件索引 |
|
|
178
252
|
| `$DSH_HOME/iris/v1/providers.json` | 供应商、模型池和能力分配 |
|
|
253
|
+
| `$DSH_HOME/iris/v1/prompt-optimizer.json` | 提示词优化器的用户 JSON 配置 |
|
|
179
254
|
|
|
180
|
-
|
|
255
|
+
音视频播放链接带随机令牌。默认只接受回环 Host。反向代理或 LAN 访问时,需要同时显式信任外部 Host,并按需设置媒体链接基址,例如:
|
|
256
|
+
|
|
257
|
+
```bash
|
|
258
|
+
IRIS_TRUSTED_HOSTS="dsh.example.com" DSH_WEB_BASE="https://dsh.example.com" dsh web
|
|
259
|
+
```
|
|
260
|
+
|
|
261
|
+
列表用逗号分隔,可填写 `host` 或精确的 `host:port`;反向代理应保留正确的 Host。`IRIS_TRUSTED_HOSTS` 只防止意外 Host 暴露,不验证用户身份。只要服务位于公网或不可信网络,就必须由反向代理或 DSH 部署层提供 HTTPS 和认证,不能把随机媒体令牌当作登录机制。
|
|
181
262
|
|
|
182
263
|
## 可选依赖
|
|
183
264
|
|
|
@@ -193,6 +274,8 @@ HTML 截图依赖 DSH 提供 `dsh-builtin-browser`。截图页在离线沙箱中
|
|
|
193
274
|
dsh plugin --profile web update @mokuyoaxis/dsh-iris
|
|
194
275
|
```
|
|
195
276
|
|
|
277
|
+
从 0.1.1 升级到 0.1.2 时,插件自带 bundle 会自动使用新的唯一行 ID。如果你曾在个人 `cordis.patch.yml` 中手动覆盖 `id: dsh-iris`,需要把该覆盖改成 `id: mokuyoaxis-dsh-iris`,否则 DSH 会报告旧行未匹配。
|
|
278
|
+
|
|
196
279
|
更新后重启 DSH。卸载插件:
|
|
197
280
|
|
|
198
281
|
```bash
|
|
@@ -203,9 +286,12 @@ dsh plugin --profile web remove @mokuyoaxis/dsh-iris
|
|
|
203
286
|
|
|
204
287
|
## 常见问题
|
|
205
288
|
|
|
289
|
+
- **对话框没有“🫧”入口**:确认 Iris 客户端已加载且当前存在会话;再到“设置 → Iris 工作台 → 对话框提示词优化”检查是否被单独关闭。
|
|
290
|
+
- **提示词优化提示没有模型**:先在当前会话选择主模型,或在 JSON 中配置 `route.mode: "fixed"`。
|
|
206
291
|
- **设置中没有 Iris 工作台**:确认插件已加入 Web profile,并在安装后重启 DSH;可用 `dsh plugin --profile web list` 和 `--dump-config` 检查。
|
|
207
292
|
- **没有可用模型**:先确认供应商已启用且 Key 有效,再运行“发现模型”;不支持 `/models` 时手动添加。
|
|
208
293
|
- **OpenAI 兼容图片请求走错协议**:确认该供应商的 `mediaProtocol` 是 `openai-images`。
|
|
294
|
+
- **反向代理访问返回 `untrusted host`**:把浏览器实际使用的域名或 `host:port` 加入 `IRIS_TRUSTED_HOSTS`,保留 Host,并确认代理层已经启用认证。
|
|
209
295
|
- **看图可用但 Iris 模型池显示为空**:Agent 视觉工具可以回退到 DSH 全局视觉模型;需要在工作台操作时仍建议配置 Iris 的 `vision` 模型。
|
|
210
296
|
- **视频摘要提示 ffmpeg 不可用**:安装系统级 `ffmpeg` 和 `ffprobe`,并确保 DSH 进程的 PATH 能找到它们。
|
|
211
297
|
- **本地文件不存在**:这里的“本地”指 DSH 宿主,不一定是浏览器所在设备;优先用“上传文件”。
|