@mokuyoaxis/dsh-iris 0.1.4 → 0.2.1

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.
Files changed (110) hide show
  1. package/.dsh/skills/iris-compose-media/SKILL.md +10 -5
  2. package/.dsh/skills/iris-compose-media/references/workflows.md +7 -1
  3. package/.dsh/skills/iris-verify-ui/SKILL.md +2 -1
  4. package/CHANGELOG.md +99 -1
  5. package/README.en.md +124 -31
  6. package/README.md +124 -31
  7. package/bin/dsh-iris.js +593 -13
  8. package/docs/AGENT_QUICKSTART.md +39 -0
  9. package/docs/ARCHITECTURE.md +87 -64
  10. package/docs/ARTIFACT_LIBRARY.md +5 -5
  11. package/docs/ARTIFACT_MANIFEST.md +60 -0
  12. package/docs/CLI_MANAGEMENT.md +181 -0
  13. package/docs/COMPOSITE_VISION.md +35 -0
  14. package/docs/CORE_RUNTIME_CONTRACT.md +84 -0
  15. package/docs/DSH_CORE_MIGRATION.md +135 -0
  16. package/docs/DSH_RC2_ADAPTATION.md +38 -0
  17. package/docs/FAULT_INJECTION.md +12 -2
  18. package/docs/HEADLESS_CLI.md +223 -0
  19. package/docs/HOST_ADAPTER_CONTRACT.md +36 -17
  20. package/docs/HOST_DOCTOR.md +4 -2
  21. package/docs/MODEL_PORT_CONTRACT.md +305 -0
  22. package/docs/OCR_MODEL.md +39 -0
  23. package/docs/PROMPT_OPTIMIZER.md +47 -0
  24. package/docs/PROVIDER_ADAPTER_CONTRACT.md +53 -10
  25. package/docs/PROVIDER_HEALTH.md +22 -5
  26. package/docs/PROVIDER_RUNTIME_HARNESS.md +33 -0
  27. package/docs/PROVIDER_SUBMISSION_CONTRACT.md +2 -2
  28. package/docs/ROADMAP.md +49 -83
  29. package/docs/SECURITY.md +8 -7
  30. package/docs/TASK_SEMANTICS.md +2 -2
  31. package/docs/VISION_CLI.md +132 -0
  32. package/docs/VISION_MODEL.md +51 -0
  33. package/docs/WORKBENCH_ARTIFACTS.md +67 -0
  34. package/docs/assets/logo/README.md +55 -0
  35. package/docs/assets/logo/iris-bubble-concept.svg +67 -0
  36. package/docs/assets/logo/iris-bubble.svg +14 -0
  37. package/docs/assets/logo/iris-interim-flower.png +0 -0
  38. package/docs/assets/logo/iris-logo-mono-inverse.svg +78 -0
  39. package/docs/assets/logo/iris-logo-mono.svg +78 -0
  40. package/docs/assets/logo/iris-logo.svg +78 -0
  41. package/docs/assets/logo/iris-mark-mono-inverse.svg +42 -0
  42. package/docs/assets/logo/iris-mark-mono.svg +42 -0
  43. package/docs/assets/logo/iris-mark.svg +42 -0
  44. package/docs/file-access-across-environments.md +8 -5
  45. package/docs/releases/0.2.0.md +48 -0
  46. package/docs/releases/0.2.1.md +56 -0
  47. package/lib/actions.js +520 -591
  48. package/lib/adapters.js +184 -36
  49. package/lib/api.js +200 -11
  50. package/lib/chromium-browser.js +117 -0
  51. package/lib/client.js +1390 -105
  52. package/lib/command-service.js +534 -0
  53. package/lib/composite-vision-routing.js +42 -0
  54. package/lib/config.js +143 -51
  55. package/lib/core-artifact-store.js +630 -0
  56. package/lib/core-artifacts.js +4 -0
  57. package/lib/core-attention.js +103 -0
  58. package/lib/core-contract.js +105 -0
  59. package/lib/core-doctor.js +41 -0
  60. package/lib/core-lease-recovery.js +170 -0
  61. package/lib/core-maintenance.js +213 -0
  62. package/lib/core-runtime.js +232 -0
  63. package/lib/core-tasks.js +567 -0
  64. package/lib/core-user-projection.js +193 -0
  65. package/lib/doctor.js +92 -33
  66. package/lib/dsh-core-adapter.js +653 -0
  67. package/lib/dsh-host-adapter.js +58 -7
  68. package/lib/dsh-text-model-adapter.js +222 -0
  69. package/lib/dsh-vision-model-adapter.js +75 -0
  70. package/lib/generation-input.js +126 -0
  71. package/lib/guard.js +3 -3
  72. package/lib/headless-vision.js +181 -0
  73. package/lib/host-runtime.js +1 -0
  74. package/lib/http-vision-model-adapter.js +187 -0
  75. package/lib/image-edit-input.js +34 -0
  76. package/lib/index.js +323 -188
  77. package/lib/locate.js +86 -28
  78. package/lib/media-probe.js +2 -1
  79. package/lib/model-call-runtime.js +45 -0
  80. package/lib/model-invoker.js +220 -0
  81. package/lib/model-port-contract.js +341 -0
  82. package/lib/models.js +105 -14
  83. package/lib/ocr-model-routing.js +26 -0
  84. package/lib/ocr.js +110 -64
  85. package/lib/prompt-optimizer-config.js +2 -1
  86. package/lib/prompt-optimizer-core.js +121 -0
  87. package/lib/prompt-optimizer.js +37 -193
  88. package/lib/provider-adapter.js +49 -23
  89. package/lib/provider-adapters.js +165 -26
  90. package/lib/provider-catalog.js +183 -0
  91. package/lib/provider-config-service.js +236 -0
  92. package/lib/provider-contract.js +74 -4
  93. package/lib/provider-health.js +80 -1
  94. package/lib/provider-protocol.js +74 -2
  95. package/lib/provider-task-runner.js +370 -0
  96. package/lib/summarize.js +31 -20
  97. package/lib/summary-input.js +52 -0
  98. package/lib/task-wait.js +40 -0
  99. package/lib/tasks.js +16 -4
  100. package/lib/video-input.js +30 -0
  101. package/lib/vision-core.js +42 -0
  102. package/lib/vision-image-input.js +83 -0
  103. package/lib/vision-input.js +31 -0
  104. package/lib/vision-model-routing.js +180 -0
  105. package/lib/vision.js +31 -9
  106. package/lib/workbench-artifacts.js +52 -0
  107. package/lib/workbench-management.js +151 -0
  108. package/lib/workbench-zip.js +39 -0
  109. package/package.json +8 -8
  110. package/user_guide.md +71 -26
package/README.md CHANGED
@@ -3,22 +3,22 @@
3
3
  </p>
4
4
 
5
5
  <p align="center">
6
- <img src="docs/assets/iris-wordmark.svg" width="520" alt="IRIS 彩色字标">
6
+ <img src="docs/assets/logo/iris-interim-flower.png" width="400" alt="IRIS 线稿鸢尾花(临时标志)">
7
7
  </p>
8
8
 
9
9
  <h1 align="center">Iris Media for DSH</h1>
10
10
 
11
- <p align="center"><strong>Iris 多模态生产运行时 · 当前通过 DeepSeek Harness 插件使用</strong></p>
11
+ <p align="center"><strong>Iris 多模态生产运行时 · DSH 插件与独立 CLI</strong></p>
12
12
 
13
13
  <p align="center">
14
14
  <a href="#deepseek-harness-适配"><img alt="DeepSeek Harness compatible" src="https://img.shields.io/badge/DeepSeek%20Harness-compatible-4D6BFE.svg?style=flat-square"></a>
15
15
  <a href="https://www.npmjs.com/package/@mokuyoaxis/dsh-iris"><img alt="npm version" src="https://img.shields.io/npm/v/%40mokuyoaxis%2Fdsh-iris.svg?style=flat-square"></a>
16
- <a href="https://nodejs.org/"><img alt="Node.js 20.10 or newer" src="https://img.shields.io/badge/Node.js-%3E%3D20.10-339933.svg?style=flat-square&amp;logo=nodedotjs&amp;logoColor=white"></a>
16
+ <a href="https://nodejs.org/"><img alt="Node.js 22 or newer" src="https://img.shields.io/badge/Node.js-%3E%3D22-339933.svg?style=flat-square&amp;logo=nodedotjs&amp;logoColor=white"></a>
17
17
  <a href="https://github.com/mokuyoaxis/dsh-iris/actions/workflows/ci.yml"><img alt="CI" src="https://github.com/mokuyoaxis/dsh-iris/actions/workflows/ci.yml/badge.svg"></a>
18
18
  <a href="LICENSE"><img alt="MIT License" src="https://img.shields.io/badge/license-MIT-1689FF.svg?style=flat-square"></a>
19
19
  </p>
20
20
 
21
- dsh-iris 为 Agent 和 Iris 工作台提供图像、视频、语音与视觉理解能力,也能直接优化 DSH 对话框中的任意提示词。它可以连接 DashScope 百炼及 OpenAI Images 兼容服务;完整配置和任务管理集中在 Iris 工作台,右下角的 Iris 泡泡提供快捷入口。
21
+ dsh-iris 为 Agent、Iris 工作台和独立 CLI 提供图像、视频、语音与视觉理解能力。图片模型可分别连接 DashScope、OpenAI Images、聊天生图或 Responses 接口;生成作品由共享 Core 管理,可按 Artifact ID 看图、OCR 和聊天改图。DSH 工作台集中配置与任务管理,🫧 泡泡提供对话草稿优化入口。
22
22
 
23
23
  ## 实际生成示例
24
24
 
@@ -44,7 +44,39 @@ dsh-iris 为 Agent 和 Iris 工作台提供图像、视频、语音与视觉理
44
44
 
45
45
  项目目前处于早期版本,接口和配置格式仍可能随版本迭代调整。
46
46
 
47
- Iris 的长期方向是可独立运行、可接入不同 Agent 宿主的媒体生产核心。DeepSeek Harness 是首个受支持宿主;当前版本仍需要 DSH,独立 Core、CLI 和工作台属于后续路线,尚未提供。
47
+ Iris 0.2.1 同时提供 DSH 插件与无 DSH 的 CLI,共用任务、产物和模型路由,完成 OpenAI 兼容图片与视觉工作流。Core 内部接口尚未冻结为公共 SDK。
48
+
49
+ > 版本支持:Iris `0.2.x` 要求 Node.js `>=22.0.0`,DSH 插件仅支持准确版本 `0.2.0-rc.2`。旧 DSH 使用下文列出的 `@mokuyoaxis/dsh-iris@0.1.4`,不要直接跟随 npm latest 更新。Iris 与 DSH 的版本号独立。
50
+
51
+ ## 0.2.1 更新重点
52
+
53
+ **完成 OpenAI 兼容图片与视觉工作流**:生成图片 → Core Artifact → 按 ID 看图/OCR → 聊天改图 → 新 Artifact,CLI 与 DSH 工作台共用同一链路。
54
+
55
+ - **模型与协议**:发现模型并分类能力,按模型选择图片协议;同账号的不同模型可使用 Images、聊天或 Responses 接口。
56
+ - **图片交付**:PNG/JPEG/WebP 按真实字节交付,修复大图 base64 校验。
57
+ - **Artifact 改图**:从 Core 图片卡、`iris_edit_image` 或 CLI 发起聊天编辑,新作品关联原图,原图保留。
58
+ - **独立视觉 CLI**:看图、定位、OCR 和视频摘要支持显式模型选择;图片与帧可直接按 Artifact ID 读取。
59
+ - **视觉输入预算**:账号/模型可设置发送大小与最长边,只处理发送副本;OCR 提示细字风险,定位坐标映射回原图。
60
+ - **作品与 CLI 管理**:统一分页过滤、跨页选择、ZIP 下载、Core 回收与恢复;CLI 补齐 S2V、HTML 截图、配置和有界等待。
61
+ - **模型恢复规则**:短时 429 显示琥珀冷却,明确额度或预算耗尽显示红色停用,需手动实测成功恢复。
62
+
63
+ 完整变化和发布前待验项见 [0.2.1 发布说明](docs/releases/0.2.1.md) 与 [CHANGELOG](CHANGELOG.md)。
64
+
65
+ 后续计划继续适配其他协议,并增加 **Music 音乐生成**功能,详见 [路线图](docs/ROADMAP.md#后续功能方向)。
66
+
67
+ ## 两条使用路径
68
+
69
+ | | 路径 A:DSH 插件 | 路径 B:Headless CLI |
70
+ |---|---|---|
71
+ | 适合谁 | 已在使用 DeepSeek Harness,想要 Agent 工具、工作台和对话内提示词优化 | 想在无 DSH 环境用命令行完成媒体生成、任务跟踪和作品导出 |
72
+ | 入口 | 按下文「最快开始」选择固定版本 | `dsh-iris run ...`,见 [Headless CLI](docs/HEADLESS_CLI.md) |
73
+ | 数据位置 | `$DSH_HOME/iris/v1/`(Core 数据根 `core-v0`) | 显式 `--data-root` 指定的任意绝对路径 |
74
+ | 自动观察 | 有(DSH Host 有界节拍 + 重启接管) | 显式 `task observe`;0.2.1 另提供有界 `task wait` |
75
+ | 依赖 | DSH `0.2.0-rc.2`、Node.js ≥ 22 | 仅 Node.js ≥ 22 与 `sharp`(视频抽帧另需 `ffmpeg`) |
76
+
77
+ 两条路径读写同一份 Core Task/Artifact 事实:CLI 指向 DSH profile 的 `core-v0` 数据根即可 inspect/export DSH 生成的作品,反之亦然。同一数据根只允许一个写者。
78
+
79
+ > 安装体积提示:图像处理依赖 `sharp` 及其预编译二进制(约 27MB)。冷门平台(如部分 ARM proot 环境)安装失败时 `dsh-iris doctor` 可检出,图像类动作不可用,其余能力不受影响。
48
80
 
49
81
  ## 与 ai-paint 的关系
50
82
 
@@ -54,18 +86,58 @@ Iris 的长期方向是可独立运行、可接入不同 Agent 宿主的媒体
54
86
 
55
87
  ## 最快开始
56
88
 
57
- 已经安装受支持的 DeepSeek Harness(`>=0.1.2-rc.1 <0.1.3-0` 或 `0.1.5-rc.1`)且 `pnpm` 在 PATH 中时,把 Iris 加入 Web profile:
89
+ 先用 `dsh --version` 核对宿主版本,并确认 `pnpm` 在 PATH 中。Iris 版本与 DSH 版本独立,按以下组合选择:
90
+
91
+ | 你的 DSH | Iris 选择 | 安装来源 |
92
+ |---|---|---|
93
+ | `0.2.0-rc.2` | `0.2.1` | 固定 npm 版本 |
94
+ | `>=0.1.2-rc.1 <0.1.3-0` 或 `0.1.5-rc.1` | 稳定版 `0.1.4` | 固定 npm 版本 |
95
+ | 其他版本 | 暂无当前支持声明 | 先核对宿主适配,不能按相邻版本推定兼容 |
96
+
97
+ ### 旧 DSH:安装稳定版 0.1.4
98
+
99
+ 在上述旧 DSH 范围内,将固定版本加入 Web profile:
58
100
 
59
101
  ```bash
60
- dsh plugin --profile web add @mokuyoaxis/dsh-iris
102
+ dsh plugin --profile web add @mokuyoaxis/dsh-iris@0.1.4
61
103
  dsh web
62
104
  ```
63
105
 
64
- > npm 上无 scope 的 `dsh-iris` 属于另一款插件。安装和更新 Iris Media 时必须保留完整包名 `@mokuyoaxis/dsh-iris`。
106
+ 需要单独下载 npm 发布包时:
107
+
108
+ ```bash
109
+ npm pack @mokuyoaxis/dsh-iris@0.1.4
110
+ ```
111
+
112
+ 命令会在当前目录生成 `.tgz`。只需安装为普通 npm 依赖时可使用 `npm install @mokuyoaxis/dsh-iris@0.1.4`;这不会自动把插件加入 DSH profile。固定 `@0.1.4` 可在 latest 更新后继续取得旧稳定版本,见 [npm pack 文档](https://docs.npmjs.com/cli/v11/commands/npm-pack/)。0.1.4 不包含 0.2.0 的 Core 媒体 CLI,也不包含 DSH rc.2 的后续适配。
113
+
114
+ ### DSH 0.2.0-rc.2:安装 0.2.1
115
+
116
+ 安装固定版本到 Web profile:
65
117
 
66
- 从当前源码目录试用时,把第一条命令中的 `@mokuyoaxis/dsh-iris` 换成 `.`。插件会在下一次 DSH 启动时装载,Web UI 默认位于 `http://127.0.0.1:3080`。
118
+ ```bash
119
+ dsh plugin --profile web add @mokuyoaxis/dsh-iris@0.2.1
120
+ dsh web
121
+ ```
122
+
123
+ 插件在下一次 DSH 启动时装载。Web UI 默认位于 `http://127.0.0.1:3080`;启动输出带认证参数时请打开完整 URL。更新后需重新加载后端并刷新客户端。
124
+
125
+ ### 独立 CLI:安装 0.2.1
126
+
127
+ 在自己的项目中安装,无需 DSH:
128
+
129
+ ```bash
130
+ npm install @mokuyoaxis/dsh-iris@0.2.1
131
+ npx dsh-iris --help
132
+ ```
133
+
134
+ ### dsh-market 安装时的版本选择
67
135
 
68
- 首次启动后,打开“设置 → Iris 工作台 → + 添加供应商”,填入 DashScope Base URL 和 API Key,再点“发现模型”。单供应商可以先使用自动能力分配。完整步骤、OpenAI Images 兼容配置和故障转移说明见[用户指南](user_guide.md)。
136
+ 市场条目应对应完整包名 `@mokuyoaxis/dsh-iris`。安装前同时核对市场显示的 Iris 版本与本机 `dsh --version`:0.2.1 仅用于 DSH rc.2;旧宿主使用上面的固定 `@0.1.4` 命令。市场目录与 npm 信息可能有缓存,以实际 npm 包的 `dsh.engines.dsh` 和 Node engines 为准;市场中可见不代表任意 DSH 版本兼容。
137
+
138
+ > npm 上无 scope 的 `dsh-iris` 属于另一款插件。安装和更新 Iris Media 时必须保留完整包名 `@mokuyoaxis/dsh-iris`。
139
+
140
+ 首次启动后,打开“设置 → Iris 工作台 → + 添加供应商”,填入供应商 Base URL 和 API Key,再点“发现模型”。单供应商可以先使用自动能力分配。完整步骤、图片协议选择和故障转移说明见[用户指南](user_guide.md)。
69
141
 
70
142
  配置完成后,最小指令可以是:
71
143
 
@@ -77,6 +149,8 @@ dsh web
77
149
 
78
150
  DSH 的 profile 与插件命令由[官方安装说明](https://github.com/deepseek-ai/deepseek-harness/blob/master/docs/user/develop/basic/publish.md)定义。生成图片、视频或语音可能产生供应商费用。
79
151
 
152
+ 给 AI Agent 的可复制安装与使用提示见 [Agent 简要 Prompt](docs/AGENT_QUICKSTART.md)。
153
+
80
154
  ## 功能概览
81
155
 
82
156
  ![Iris 架构总览](docs/assets/diagrams/iris-architecture.png)
@@ -93,20 +167,29 @@ DSH 的 profile 与插件命令由[官方安装说明](https://github.com/deepse
93
167
 
94
168
  ## 使用前准备
95
169
 
96
- - 满足所用 DeepSeek Harness 版本要求的 Node.js;dsh-iris 自身最低为 20.10
170
+ - 满足所用 DeepSeek Harness 版本要求的 Node.js;Iris 0.2.1 最低为 22.0.0,旧 npm 0.1.4 的历史要求为 20.10.0
97
171
  - 一个可用的 DeepSeek Harness 环境,以及 PATH 中的 `pnpm`
98
172
  - 至少一个受支持的媒体或视觉服务供应商
99
- - 使用视频抽帧和视频摘要时,需要系统提供 `ffmpeg` 与 `ffprobe`
173
+ - 从视频文件抽帧或摘要时,需要系统提供 `ffmpeg` 与 `ffprobe`;复用 Core 帧摘要无需这两个工具
100
174
 
101
175
  安装插件后,在 Iris 工作台中添加供应商并为所需能力分配模型。供应商密钥保存在宿主侧的 Iris 配置中;POSIX 系统上 Iris 自有目录和文件分别收紧为 `0700` 与 `0600`,界面和接口不会返回完整密钥。Windows 的 mode 不等同于 ACL,仍需依赖当前用户目录和系统账户权限。
102
176
 
103
177
  ## DeepSeek Harness 适配
104
178
 
105
- dsh-iris 按 DeepSeek Harness 插件形态提供服务端与 Web 客户端入口:服务端注册 14 个 Agent 工具,并复用宿主的工具、路由和生命周期服务;客户端通过 DSH 模块加载器接入设置页、会话输入区和全局悬浮层。插件不会启动独立服务或额外监听端口。
179
+ dsh-iris 仍按 DSH 原生插件装载。0.2.1 服务端注册 15 个 Agent 工具(含改图),并使用宿主提供的路由、附件、模型和生命周期能力;Web 客户端接入设置页、会话输入区与全局悬浮层。插件不会启动额外服务或监听端口。
180
+
181
+ | Iris 范围 | DSH 范围 | 验证记录 |
182
+ |---|---|---|
183
+ | 已发布稳定版 `0.1.4` | `>=0.1.2-rc.1 <0.1.3-0` | 历史 Linux ARM64 干净与日常 Web profile 验收 |
184
+ | 已发布稳定版 `0.1.4` | `0.1.5-rc.1` | 历史 Android/Linux 日常 profile 验收 |
185
+ | `0.2.0` | 仅 `0.2.0-rc.2` | 真实安装服务隔离验收、Core diff 与 SlotRegistry;已有用户实机演示反馈,逐项浏览器操作与异步重启/回退继续验收 |
186
+ | `0.2.1` | 仅 `0.2.0-rc.2` | 真实安装服务隔离检查覆盖 15 个工具与 31 项边界;完整浏览器/移动端及真实异步重启验收仍待完成 |
106
187
 
107
- 当前自动化测试覆盖插件装载、工具注册、客户端槽位和路由行为。0.1.1 已在 Linux ARM64 的干净与真实 Web profile 中,使用 DSH `0.1.2-rc.1`、Node.js `22.23.2` 完成宿主烟测;浏览器启动图、完整组合 bundle、Iris 客户端工厂和当时的三个 UI 座位均已验证。0.1.2 新增的第四个提示词优化座位已在 Android 浏览器真机确认渲染,配置读取、真实会话模型优化(实际 thinking `off`)、预览写回、独立关闭与重新启用,以及从短草稿到图片生成任务成功的闭环均已验证;浏览器端取消和 JSON 操作已有自动化 HTTP/配置覆盖,尚待补充真机逐项记录。Iris 自身仍以 Node.js `>=20.10` 为最低基线。0.1.4 另在 Android/Linux 日常 DSH `0.1.5-rc.1` 上完成 14 工具、2 项 Skill、4 组路由与 4 个 UI Slot 的实机装载验证。
188
+ rc.2 修正与验证范围见[适配说明](docs/DSH_RC2_ADAPTATION.md);已发布 npm 0.1.4 包不包含这项后续适配。
108
189
 
109
- Iris 0.1.4 明确支持 DSH `>=0.1.2-rc.1 <0.1.3-0` 与 `0.1.5-rc.1` 这两个已实测窗口,不再兼容 0.1.0/0.1.1 的旧客户端 Runtime。其余预览版未经宿主 canary,不宣称兼容,验证通过后再扩大范围;兼容徽章不代表官方认证。若 DSH 要求更高 Node 版本,以 DSH 为准。
190
+ Iris 0.2.x 不再声明支持旧 DSH;旧版的历史验收不自动覆盖当前版本。DSH `0.2.0` 正式版及其他 rc 同样未列入支持范围。自动化测试分别检查服务端装载、工具与 Skill 注册、路由、客户端 bundle 和 Slot;其中一层失效时,Doctor 应指出具体边界。
191
+
192
+ Core 与 DSH Adapter 正在分离,DSH 继续加载同一个 npm 包,Adapter 把宿主能力映射给 Core。若 DSH 修改 API,修复应限制在 Adapter 和客户端桥接;Core 的任务和产物语义不随宿主版本改变。0.2.0 已提供无 DSH CLI;第二个真实 Host Adapter 完成并验收后再移除名称中的 `dsh` 前缀,届时发布新的 npm 包,见[路线图](docs/ROADMAP.md)。
110
193
 
111
194
  ## 工具
112
195
 
@@ -115,6 +198,7 @@ Iris 0.1.4 明确支持 DSH `>=0.1.2-rc.1 <0.1.3-0` 与 `0.1.5-rc.1` 这两个
115
198
  | 工具 | 用途 |
116
199
  |---|---|
117
200
  | `iris_draw_image` | 根据提示词生成图片 |
201
+ | `iris_edit_image` | 按原图 Artifact ID 和修改指令创建关联来源的新图片(聊天生图模型) |
118
202
  | `iris_generate_video` | 生成文生视频、图生视频或 S2V 数字人视频 |
119
203
  | `iris_speak_text` | 将文本合成为语音 |
120
204
  | `iris_transcribe_audio` | 将音频转写为文本 |
@@ -141,6 +225,12 @@ Iris 0.1.4 明确支持 DSH `>=0.1.2-rc.1 <0.1.3-0` 与 `0.1.5-rc.1` 这两个
141
225
 
142
226
  ## 文件输入
143
227
 
228
+ 看图、定位和 OCR 可使用本地路径、会话附件或 Core 图片 `artifact_id`;摘要可直接复用 `frame_artifact_ids`。Artifact 输入只读核验 MIME 与内容哈希,无需原文件或临时导出,PNG/JPEG/WebP 不需要用户先转成 JPG。命令示例见 [视觉 CLI](docs/VISION_CLI.md)。
229
+
230
+ 看图、OCR 每块、定位和聊天改图按账号/模型预算准备发送副本,默认 8 MiB,可调整大小与最长边;Core 原图、下载尺寸和哈希保持不变。OCR 标明缩小后的实际尺寸与细字风险,定位返回原图像素坐标。详见 [视觉输入预算](docs/CLI_MANAGEMENT.md#看图输入预算)。
231
+
232
+ Core 图片改图直接使用来源 ID,修改版另存为新作品;[聊天改图](docs/CLI_MANAGEMENT.md#artifact-聊天改图)仅支持配置了聊天生图协议的模型。作品分页、过滤、跨页选择、下载与回收操作见 [工作台作品管理](docs/WORKBENCH_ARTIFACTS.md)。
233
+
144
234
  Iris 支持三种文件来源,推荐顺序如下:
145
235
 
146
236
  1. **浏览器上传**:适合本地文件和跨环境访问,单文件上限为 64 MB。
@@ -151,15 +241,17 @@ Iris 支持三种文件来源,推荐顺序如下:
151
241
 
152
242
  ## 对话框提示词优化
153
243
 
244
+ 0.2.1 增加本次规则、只组装和可编辑对照预览;规则不持久化,也未新增独立提示词 CLI。功能及边界见 [提示词优化系统](docs/PROMPT_OPTIMIZER.md)。
245
+
154
246
  Iris 会在 DSH 对话输入区提供一个无边框、无文字的“🫧”入口,不需要打开 Iris 工作台。点击后打开带背景模糊、半透明层次和柔和光影的玻璃悬浮窗;桌面端靠近输入区显示,窄屏与 Android 浏览器自动切换为带安全区和内部滚动的底部面板,避免遮挡、溢出或控件挤叠。它只读取当前未发送的纯文本草稿,并提供通用、图片、视频和首尾帧视频四种目标模板;结果先预览,用户确认后才写回输入框,不会自动发送。含 `@` 或 `/` 结构化引用的草稿暂不改写,以免引用身份丢失。
155
247
 
156
248
  默认使用当前会话选中的主模型;会话尚未选定模型时回退到 DSH 默认模型。优化请求不携带聊天历史、工具、附件或工作区,只发送当前草稿与目标模板。为避免推理模型在正文前耗尽生成预算,默认 `generation.reasoningEffort` 为 `off-if-supported`:仅在 DSH 模型元数据明确支持关闭 thinking 时禁用推理,否则使用供应商默认值,并且不再继承主会话的 High/Low 档位。可在 JSON 中改为 `provider-default`、`inherit` 或模型声明的具体 effort ID;成本与稳定性优先时,建议使用 `fixed` 路由指定轻量非思考模型。用户也可以导出 `prompt-optimizer.json`,将 `route.mode` 改为 `fixed` 并指定其他已在 DSH 注册的 `provider` 与 `model`,然后从面板重新导入。面板提供“恢复默认”,可还原 Iris 内置 Prompt、目标模板、会话模型路由和生成参数。该对话入口可以单独关闭,并从 Iris 工作台重新启用;关闭不会停用工作台、Agent 工具或任务后台。优化调用可能产生对应文本模型的费用。
157
249
 
158
250
  ## 模型分配与故障转移
159
251
 
160
- 能力分配使用 `providerId::modelId` 作为模型身份。同名模型如果来自不同供应商或不同账号,会被视为两个独立选项。
252
+ 能力分配使用 `providerId::modelId` 作为模型身份。同名模型如果来自不同供应商或不同账号,会被视为两个独立选项。模型发现优先采用供应商返回的能力元数据,名称规则只作兜底,用户手工标注最终生效;阿里云百炼可为媒体请求单独配置 Workspace `mediaBaseUrl`。
161
253
 
162
- 生成类能力可以配置多个候选模型。Iris 只有在供应商明确证明未受理时才会尝试下一个候选;500、超时、断网、响应缺失、轮询失败和本地落盘失败都不会授权自动重提。远端服务一旦受理任务,Iris 只会恢复观察或交付,以免产生重复任务或重复计费。
254
+ 生成类能力可以配置多个候选模型。每次请求都从有序列表首项开始,并非 round-robin;Iris 只有在供应商明确证明未受理时才会尝试下一个候选;500、超时、断网、响应缺失、轮询失败和本地落盘失败都不会授权自动重提。远端服务一旦受理任务,Iris 只会恢复观察或交付,以免产生重复任务或重复计费。
163
255
 
164
256
  工作台把观察暂停、受理/结果未知和生成成功但交付失败单列为“需要处理”。“重新观察”不会提交;“重新交付”不会重新生成;“标为已读/恢复提醒”只改变本地提醒队列;只有“知情重试”会创建新任务,并要求用户逐次确认潜在重复费用。新任务创建后,原提醒自动归档但保留未知事实和新旧任务关联。任务语义、架构、安全边界与故障证据分别见 [`TASK_SEMANTICS.md`](docs/TASK_SEMANTICS.md)、[`ARCHITECTURE.md`](docs/ARCHITECTURE.md)、[`SECURITY.md`](docs/SECURITY.md) 和 [`FAULT_INJECTION.md`](docs/FAULT_INJECTION.md)。
165
257
 
@@ -169,9 +261,9 @@ Iris 会在 DSH 对话输入区提供一个无边框、无文字的“🫧”入
169
261
 
170
262
  ## 能力健康与模型验证
171
263
 
172
- 工作台与主泡泡使用四色健康状态:灰色表示未配置,蓝色表示已配置但尚未验证或成功证据已超过 7 天,绿色表示对应“供应商 × 模型 × 能力”近期实测或真实任务成功,暗红色只表示明确的 401/403 或认证/权限失败。界面同时显示文字和证据时间;关键供应商配置变化会使旧证据失效。
264
+ 工作台与主泡泡用颜色和文字显示健康状态:灰色未配置,蓝色待验证,绿色表示对应“供应商 × 模型 × 能力”7 天内成功,暗红色表示明确认证/权限失败。0.2.1 另以琥珀色显示短时 429 冷却,红色显示已确认额度或预算耗尽,并给出原因和恢复条件。
173
265
 
174
- Iris 不做后台探测。429、网络、5xx、内容安全、取消和受理未知不会把近期绿色改成红色,也不会触发隐形重试或费用。模型池可逐项实测视觉、图片和 TTS;视频与转写必须用真实任务验证。Host Doctor 只核验 DSH/Iris 的装载与 Host Port,不会验证供应商或模型。完整状态、failover 汇总和安全规则见 [Provider 与能力健康状态](docs/PROVIDER_HEALTH.md)。
266
+ Iris 不做后台探测。短时 429 遵从 `Retry-After`,缺失时冷却 60 秒;到期恢复候选资格,不自动调用验证。明确免费额度或预算耗尽则停用至手动实测成功,重启后仍跳过;实测按钮保持可用。模型池可逐项实测视觉、图片和 TTS,视频与转写可用 CLI 实测命令提供真实素材。网络、5xx、内容安全、取消和受理未知不覆盖近期成功。Host Doctor 只核验装载与 Host Port。完整规则见 [Provider 与能力健康状态](docs/PROVIDER_HEALTH.md)。
175
267
 
176
268
  ## 离线诊断
177
269
 
@@ -184,7 +276,7 @@ npx @mokuyoaxis/dsh-iris doctor --json
184
276
 
185
277
  安装后的二进制名是 `dsh-iris`。退出码 `0` 表示正常、`1` 表示有警告、`2` 表示有硬错误。离线 Doctor 检查 Node、sharp、ffmpeg/ffprobe、数据目录真实写入、配置、模型/分配、任务语义、临时文件和孤儿/缺失产物。
186
278
 
187
- 运行中的 DSH 另在 Iris 工作台提供“宿主诊断”卡片,并公开已认证的 `/iris/api/doctor` JSON:检查 DSH 版本、插件、14 个工具、两项 Skill、四组路由、Browser/附件/模型能力、客户端版本和四个 UI Slot。它只读取安全快照与注册证据,不调用 Browser、模型或 Provider;详见 [Host Doctor](docs/HOST_DOCTOR.md)。
279
+ 运行中的 DSH 另在 Iris 工作台提供“宿主诊断”卡片,并公开已认证的 `/iris/api/doctor` JSON:检查 DSH 版本、插件、当前工具、两项 Skill、四组路由、Browser/附件/模型能力、客户端版本和四个 UI Slot。它只读取安全快照与注册证据,不调用 Browser、模型或 Provider;详见 [Host Doctor](docs/HOST_DOCTOR.md)。
188
280
 
189
281
  ## 组合工作流示例
190
282
 
@@ -202,34 +294,35 @@ Iris 自带两个 Agent Skills(`iris-verify-ui` 与 `iris-compose-media`),
202
294
  |---|---|
203
295
  | `providers.json` | 供应商、能力分配和脱敏健康证据,文件权限为 0600 |
204
296
  | `prompt-optimizer.json` | 用户导入的优化 Prompt、目标模板、模型路由和生成参数,文件权限为 0600 |
205
- | `tasks.json` | 任务元数据和附件索引,最多保留 500 条 |
206
- | `artifacts.json` | 作品库最小索引与随机访问令牌,不含 Prompt、Provider 或任务关系 |
207
- | `outputs/` | 生成和处理后的媒体文件 |
297
+ | `core-v0/` | 新任务、Attempt、Artifact 对象、Manifest 与可恢复隔离事务 |
298
+ | `tasks.json` | 旧版任务元数据和附件索引,最多保留 500 条 |
299
+ | `artifacts.json` | 旧版作品库最小索引与随机访问令牌,不含 Prompt、Provider 或任务关系 |
300
+ | `outputs/` | 旧版生成和处理后的媒体文件 |
208
301
  | `uploads/` | 浏览器上传的临时输入副本 |
209
302
 
210
303
  0.1.1 首次装载时会收紧既有 `$DSH_HOME/iris/v1/` 树的 POSIX 权限,不修改文件内容,也不跟随符号链接。大媒体下载采用流式私有临时文件与原子替换,不再把整段视频载入内存。
211
304
 
212
305
  异步任务会在后台轮询。插件重启后,可以继续接管仍在远端执行的任务。取消信号会传递到本地等待与轮询流程;是否能取消远端计算,取决于供应商接口。
213
306
 
214
- 作品库与任务历史相互独立:清理终态任务不会删除作品,新旧媒体可在工作台分页浏览,也可用“找回本地作品”重新扫描 `outputs/`。删除作品或清空作品库会删除实际文件并单独确认;详见[作品库 v0](docs/ARTIFACT_LIBRARY.md)。收藏、标签和搜索留待完整 Artifact Manifest。
307
+ 作品库与任务历史相互独立:清理终态任务不会删除作品,新旧媒体可在工作台分页浏览,也可用“找回本地作品”重新扫描 `outputs/`。旧版作品删除会删除实际文件并单独确认,见 [作品库 v0](docs/ARTIFACT_LIBRARY.md);Core 作品先预览,再移入可恢复回收区,见 [作品管理](docs/WORKBENCH_ARTIFACTS.md)。收藏、标签和搜索仍为后续功能。
215
308
 
216
- 音频和视频通过带随机令牌的 Iris 媒体链接访问。图片会尽量转存为 DSH 持久附件,方便在会话中继续使用。
309
+ 旧版媒体通过带随机令牌的链接访问;Core 媒体以随机 Artifact ID 读取,受宿主与浏览器来源守卫保护。图片会尽量转存为 DSH 持久附件,方便在会话中继续使用。
217
310
 
218
311
  ## 安全说明
219
312
 
220
313
  - 供应商密钥不会通过状态接口返回。
221
- - DashScope 媒体协议只允许把密钥发送到阿里云官方 HTTPS 域名;其他 Base URL 默认推断为 OpenAI Images 兼容协议。
314
+ - DashScope 媒体协议只允许把密钥发送到阿里云官方 HTTPS、地域或 Workspace 域名;可用独立 `mediaBaseUrl` 与视觉/对话端点分流,其他地址默认推断为 OpenAI Images 兼容协议。
222
315
  - `/iris/*` 默认只接受回环 Host;LAN 或反向代理必须显式设置 `IRIS_TRUSTED_HOSTS`,修改状态的请求还会检查跨站来源。
223
316
  - `IRIS_TRUSTED_HOSTS` 不是认证机制。对公网或不可信网络开放 DSH 时,必须在反向代理或宿主层配置身份认证与 HTTPS。
224
317
  - 模型实测只按单项能力运行,并在真实供应商调用前确认;视频和转写不会用空样本自动提交付费探针。
225
318
  - HTML 截图在不具备同源权限的沙箱页面中渲染,脚本和外部网络默认不可用。
226
- - 媒体链接使用随机能力令牌,文件路径只从任务记录或最小作品索引解析。
319
+ - 旧版媒体链接使用随机能力令牌,Core 媒体按 Artifact ID 核验内容哈希;宿主 allowlist 不替代用户认证。
227
320
  - Iris 不提供独立账号体系,多用户隔离和访问控制由 DeepSeek Harness 部署负责。
228
321
 
229
322
  ## 已知限制
230
323
 
231
324
  - `sharp` 包含原生组件;主要支持 glibc Linux、Windows 和 macOS。裸 Termux 等非标准运行环境可能需要额外处理。
232
- - 视频抽帧和视频摘要依赖系统安装的 `ffmpeg` 与 `ffprobe`。
325
+ - 视频文件抽帧和摘要依赖系统安装的 `ffmpeg` 与 `ffprobe`;复用 Core 帧无需这两个工具。
233
326
  - HTML 截图不加载远程脚本、字体或图片;需要的资源应先内联。
234
327
  - WSL、容器和远程部署中,浏览器路径通常不能直接交给宿主读取,请优先上传文件。
235
328
  - 供应商返回的模型清单只是候选集合,模型是否真正支持某项能力仍以实际调用为准。
@@ -243,7 +336,7 @@ Iris 自带两个 Agent Skills(`iris-verify-ui` 与 `iris-compose-media`),
243
336
  | [`iris-verify-ui`](.dsh/skills/iris-verify-ui/SKILL.md) | 组合截图、语义检查、元素定位、裁剪和像素比较,完成有证据的 UI 验收 |
244
337
  | [`iris-compose-media`](.dsh/skills/iris-compose-media/SKILL.md) | 组合两个以上 Iris 工具,完成看图后绘图、图片转视频、视频总结配旁白或 S2V 等媒体工作流 |
245
338
 
246
- 从 0.1.2 起,只要宿主提供 DSH Skill registry,普通 npm 安装用户在任意项目目录中都能发现并加载它们,不需要克隆本仓库或另外配置 Skill 搜索目录。项目目录中存在同名 Skill 时,仍按 DSH 原生优先级使用项目版本;Skill registry 不可用时,14 个 Iris 工具仍可独立装载。
339
+ 从 0.1.2 起,只要宿主提供 DSH Skill registry,普通 npm 安装用户在任意项目目录中都能发现并加载它们,不需要克隆本仓库或另外配置 Skill 搜索目录。项目目录中存在同名 Skill 时,仍按 DSH 原生优先级使用项目版本;Skill registry 不可用时,Iris 工具仍可独立装载。
247
340
 
248
341
  用户想稳定指定方法时,可直接用 DSH 的 `/name` 形式:
249
342
 
@@ -263,9 +356,9 @@ Iris 自带两个 Agent Skills(`iris-verify-ui` 与 `iris-compose-media`),
263
356
 
264
357
  测试覆盖配置合并、模型身份、任务生命周期、生成动作、HTTP/SSE 路由、客户端交互和安全边界。项目采用 ES Modules,不需要构建步骤。
265
358
 
266
- 测试调度使用 Node.js,逐文件启动独立进程,首个失败即停止,不依赖 Bash;临时目录使用系统 API 并在退出时清理。GitHub Actions 定义 Linux/Windows × Node.js 20.10/22 矩阵,发布前钩子会重新运行完整测试。原生 Windows/WSL 的 DSH 宿主烟测仍待实机验证。
359
+ 测试调度使用 Node.js,逐文件启动独立进程,首个失败即停止,不依赖 Bash;临时目录使用系统 API 并在退出时清理。GitHub Actions 定义 Linux/Windows × Node.js 22.0.0/最新 22.x 矩阵,并在最低版本重复检查进程自然退出;发布前钩子会重新运行完整测试。原生 Windows/WSL 的 DSH 宿主烟测仍待实机验证。
267
360
 
268
- 发布由 `v*` 标签触发 `.github/workflows/release.yml`:跑完整测试后打包,用工作流内置 `GITHUB_TOKEN` 创建 GitHub Release(附 tarball,发布说明取自 CHANGELOG 对应章节),并在配置了 `NPM_TOKEN` secret 时发布到 npm。本机无需任何 GitHub 凭据。
361
+ 发布由 `v*` 标签触发 `.github/workflows/release.yml`:跑完整测试后打包,用工作流内置 `GITHUB_TOKEN` 创建 GitHub Release(附 tarball,发布说明优先取自 `docs/releases/<版本>.md`,否则取 CHANGELOG 对应章节),并在配置了 `NPM_TOKEN` secret 时发布到 npm。本机无需任何 GitHub 凭据。
269
362
 
270
363
  ## 文档
271
364