@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.
Files changed (44) hide show
  1. package/CHANGELOG.md +75 -1
  2. package/README.en.md +259 -0
  3. package/README.md +70 -7
  4. package/bin/dsh-iris.js +23 -0
  5. package/cordis.patch.yml +1 -1
  6. package/docs/ARCHITECTURE.md +81 -0
  7. package/docs/FAULT_INJECTION.md +26 -0
  8. package/docs/PROVIDER_SUBMISSION_CONTRACT.md +60 -0
  9. package/docs/ROADMAP.md +25 -8
  10. package/docs/SECURITY.md +53 -0
  11. package/docs/TASK_SEMANTICS.md +147 -0
  12. package/docs/assets/diagrams/iris-architecture.drawio +1 -0
  13. package/docs/assets/diagrams/iris-architecture.png +0 -0
  14. package/docs/assets/diagrams/iris-architecture.svg +63 -0
  15. package/docs/assets/diagrams/iris-task-lifecycle.drawio +1 -0
  16. package/docs/assets/diagrams/iris-task-lifecycle.png +0 -0
  17. package/docs/assets/diagrams/iris-task-lifecycle.svg +64 -0
  18. package/docs/assets/diagrams/iris-workflow-compose.drawio +1 -0
  19. package/docs/assets/diagrams/iris-workflow-compose.png +0 -0
  20. package/docs/assets/diagrams/iris-workflow-compose.svg +41 -0
  21. package/docs/assets/examples/iris-flower-generated.webp +0 -0
  22. package/docs/assets/screenshots/image-task-succeeded.webp +0 -0
  23. package/docs/assets/screenshots/prompt-general-after.webp +0 -0
  24. package/docs/assets/screenshots/prompt-general-before.webp +0 -0
  25. package/docs/assets/screenshots/prompt-general-preview.webp +0 -0
  26. package/docs/assets/screenshots/prompt-image-before.webp +0 -0
  27. package/docs/assets/screenshots/prompt-image-preview.webp +0 -0
  28. package/docs/releases/0.1.2.md +26 -0
  29. package/docs/releases/0.1.3.md +30 -0
  30. package/docs/screenshots.md +34 -0
  31. package/lib/actions.js +609 -175
  32. package/lib/api.js +122 -18
  33. package/lib/bundled-skills.js +62 -0
  34. package/lib/client.js +460 -22
  35. package/lib/doctor.js +243 -0
  36. package/lib/index.js +57 -46
  37. package/lib/prompt-optimizer-config.js +170 -0
  38. package/lib/prompt-optimizer.js +244 -0
  39. package/lib/provider-contract.js +234 -0
  40. package/lib/task-semantics.js +209 -0
  41. package/lib/tasks.js +473 -29
  42. package/package.json +13 -4
  43. package/screenshots.json +6 -0
  44. package/user_guide.md +84 -3
@@ -0,0 +1 @@
1
+ <mxfile host="iris-docs"><diagram id="iris-workflow-compose" name="页 1"><mxGraphModel dx="1000" dy="700" grid="0" gridSize="10" guides="1" tooltips="1" connect="1" arrows="1" fold="1" page="1" pageScale="1" pageWidth="1150" pageHeight="500" math="0" shadow="0"><root><mxCell id="0"/><mxCell id="1" parent="0"/><mxCell id="src" value="源图片&lt;br&gt;宿主路径 / 会话附件" style="rounded=1;arcSize=50;whiteSpace=wrap;html=1;fillColor=#f5f6f8;strokeColor=#b9c2ce;fontColor=#1f2328;fontSize=12;strokeWidth=1.5;" vertex="1" parent="1"><mxGeometry x="40" y="116" width="190" height="66" as="geometry"/></mxCell><mxCell id="look" value="iris_look_at_image&lt;br&gt;结构化观察:主体 · 构图 · 色彩 · 文字" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#eef3ff;strokeColor=#4d6bfe;fontColor=#1f2328;fontSize=12;strokeWidth=1.5;" vertex="1" parent="1"><mxGeometry x="280" y="116" width="250" height="66" as="geometry"/></mxCell><mxCell id="prompt" value="生成自包含提示词&lt;br&gt;区分原图事实与本次改动要求" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#eef3ff;strokeColor=#4d6bfe;fontColor=#1f2328;fontSize=12;strokeWidth=1.5;" vertex="1" parent="1"><mxGeometry x="580" y="116" width="250" height="66" as="geometry"/></mxCell><mxCell id="draw" value="iris_draw_image&lt;br&gt;付费步骤 · 按产物数计" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#fff6e5;strokeColor=#c98a1b;fontColor=#1f2328;fontSize=12;strokeWidth=1.5;" vertex="1" parent="1"><mxGeometry x="880" y="116" width="230" height="66" as="geometry"/></mxCell><mxCell id="review" value="iris_relook_attachment&lt;br&gt;对照原始需求逐项复核" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#eef3ff;strokeColor=#4d6bfe;fontColor=#1f2328;fontSize=12;strokeWidth=1.5;" vertex="1" parent="1"><mxGeometry x="880" y="286" width="230" height="66" as="geometry"/></mxCell><mxCell id="decide" value="与需求一致?" style="rhombus;whiteSpace=wrap;html=1;fillColor=#eef3ff;strokeColor=#4d6bfe;fontColor=#1f2328;fontSize=12;strokeWidth=1.5;" vertex="1" parent="1"><mxGeometry x="600" y="272" width="180" height="94" as="geometry"/></mxCell><mxCell id="deliver" value="交付产物&lt;br&gt;attachment id + 任务记录 + 媒体链接" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#eaf7ef;strokeColor=#2e9e5b;fontColor=#1f2328;fontSize=12;strokeWidth=1.5;" vertex="1" parent="1"><mxGeometry x="320" y="278" width="220" height="82" as="geometry"/></mxCell><mxCell id="note1" value="纪律:只在缺失会改变结果时提问;复核不通过才重绘;生成前明确用途与比例;保留 attachment id 与任务记录供后续步骤复用" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#ffffff;strokeColor=#b9c2ce;fontColor=#5b6472;fontSize=11;dashed=1;" vertex="1" parent="1"><mxGeometry x="40" y="408" width="1070" height="40" as="geometry"/></mxCell><mxCell id="c1" value="" style="edgeStyle=orthogonalEdgeStyle;rounded=1;html=1;strokeColor=#6b7686;strokeWidth=1.5;fontColor=#5b6472;fontSize=11;labelBackgroundColor=#ffffff;exitX=1;exitY=0.5;entryX=0;entryY=0.5;exitDx=0;exitDy=0;entryDx=0;entryDy=0;" edge="1" parent="1" source="src" target="look"><mxGeometry relative="1" as="geometry"/></mxCell><mxCell id="c2" value="" style="edgeStyle=orthogonalEdgeStyle;rounded=1;html=1;strokeColor=#6b7686;strokeWidth=1.5;fontColor=#5b6472;fontSize=11;labelBackgroundColor=#ffffff;exitX=1;exitY=0.5;entryX=0;entryY=0.5;exitDx=0;exitDy=0;entryDx=0;entryDy=0;" edge="1" parent="1" source="look" target="prompt"><mxGeometry relative="1" as="geometry"/></mxCell><mxCell id="c3" value="" style="edgeStyle=orthogonalEdgeStyle;rounded=1;html=1;strokeColor=#6b7686;strokeWidth=1.5;fontColor=#5b6472;fontSize=11;labelBackgroundColor=#ffffff;exitX=1;exitY=0.5;entryX=0;entryY=0.5;exitDx=0;exitDy=0;entryDx=0;entryDy=0;" edge="1" parent="1" source="prompt" target="draw"><mxGeometry relative="1" as="geometry"/></mxCell><mxCell id="c4" value="需要复核" style="edgeStyle=orthogonalEdgeStyle;rounded=1;html=1;strokeColor=#6b7686;strokeWidth=1.5;fontColor=#5b6472;fontSize=11;labelBackgroundColor=#ffffff;exitX=0.5;exitY=1;entryX=0.5;entryY=0;exitDx=0;exitDy=0;entryDx=0;entryDy=0;" edge="1" parent="1" source="draw" target="review"><mxGeometry relative="1" as="geometry"/></mxCell><mxCell id="c5" value="" style="edgeStyle=orthogonalEdgeStyle;rounded=1;html=1;strokeColor=#6b7686;strokeWidth=1.5;fontColor=#5b6472;fontSize=11;labelBackgroundColor=#ffffff;exitX=0;exitY=0.5;entryX=1;entryY=0.5;exitDx=0;exitDy=0;entryDx=0;entryDy=0;" edge="1" parent="1" source="review" target="decide"><mxGeometry relative="1" as="geometry"/></mxCell><mxCell id="c6" value="一致" style="edgeStyle=orthogonalEdgeStyle;rounded=1;html=1;strokeColor=#6b7686;strokeWidth=1.5;fontColor=#5b6472;fontSize=11;labelBackgroundColor=#ffffff;exitX=0;exitY=0.5;entryX=1;entryY=0.5;exitDx=0;exitDy=0;entryDx=0;entryDy=0;" edge="1" parent="1" source="decide" target="deliver"><mxGeometry relative="1" as="geometry"/></mxCell><mxCell id="c7" value="不一致 · 仅针对具体偏差重生成" style="edgeStyle=orthogonalEdgeStyle;rounded=1;html=1;strokeColor=#6b7686;strokeWidth=1.5;fontColor=#5b6472;fontSize=11;labelBackgroundColor=#ffffff;dashed=1;exitX=0.5;exitY=0;entryX=0.5;entryY=1;exitDx=0;exitDy=0;entryDx=0;entryDy=0;" edge="1" parent="1" source="decide" target="prompt"><mxGeometry relative="1" as="geometry"><Array as="points"><mxPoint x="690" y="232"/><mxPoint x="705" y="232"/></Array></mxGeometry></mxCell></root></mxGraphModel></diagram></mxfile>
@@ -0,0 +1,41 @@
1
+ <svg xmlns="http://www.w3.org/2000/svg" width="1150" height="500" viewBox="0 0 1150 500" role="img" aria-label="组合工作流示例:看图 → 重绘 → 自检">
2
+ <defs><marker id="arr" viewBox="0 0 10 10" refX="9" refY="5" markerWidth="7" markerHeight="7" orient="auto-start-reverse"><path d="M0,0 L10,5 L0,10 z" fill="#6b7686"/></marker></defs>
3
+ <rect width="1150" height="500" fill="#ffffff"/>
4
+ <text x="48" y="52" font-family="'PingFang SC','Hiragino Sans GB','Noto Sans CJK SC','Noto Sans SC','Microsoft YaHei',sans-serif" font-size="21" font-weight="700" fill="#1f2328">组合工作流示例:看图 → 重绘 → 自检</text>
5
+ <text x="48" y="78" font-family="'PingFang SC','Hiragino Sans GB','Noto Sans CJK SC','Noto Sans SC','Microsoft YaHei',sans-serif" font-size="13" fill="#5b6472">来自随包 Skill「iris-compose-media」:先理解,再生成,复核针对具体偏差,重试有界</text>
6
+ <path d="M230,149 L280,149" fill="none" stroke="#6b7686" stroke-width="1.6" marker-end="url(#arr)"/>
7
+ <path d="M530,149 L580,149" fill="none" stroke="#6b7686" stroke-width="1.6" marker-end="url(#arr)"/>
8
+ <path d="M830,149 L880,149" fill="none" stroke="#6b7686" stroke-width="1.6" marker-end="url(#arr)"/>
9
+ <path d="M995,182 L995,286" fill="none" stroke="#6b7686" stroke-width="1.6" marker-end="url(#arr)"/>
10
+ <rect x="966" y="224.5" width="58" height="19" rx="4" fill="#ffffff"/>
11
+ <text x="995" y="238" text-anchor="middle" font-family="'PingFang SC','Hiragino Sans GB','Noto Sans CJK SC','Noto Sans SC','Microsoft YaHei',sans-serif" font-size="12" fill="#5b6472">需要复核</text>
12
+ <path d="M880,319 L780,319" fill="none" stroke="#6b7686" stroke-width="1.6" marker-end="url(#arr)"/>
13
+ <path d="M600,319 L540,319" fill="none" stroke="#6b7686" stroke-width="1.6" marker-end="url(#arr)"/>
14
+ <rect x="553" y="309.5" width="34" height="19" rx="4" fill="#ffffff"/>
15
+ <text x="570" y="323" text-anchor="middle" font-family="'PingFang SC','Hiragino Sans GB','Noto Sans CJK SC','Noto Sans SC','Microsoft YaHei',sans-serif" font-size="12" fill="#5b6472">一致</text>
16
+ <path d="M690,272 L690,232 L705,232 L705,182" fill="none" stroke="#6b7686" stroke-width="1.6" stroke-dasharray="5 4" marker-end="url(#arr)"/>
17
+ <rect x="606.92" y="222.5" width="186.16" height="19" rx="4" fill="#ffffff"/>
18
+ <text x="700" y="236" text-anchor="middle" font-family="'PingFang SC','Hiragino Sans GB','Noto Sans CJK SC','Noto Sans SC','Microsoft YaHei',sans-serif" font-size="12" fill="#5b6472">不一致 · 仅针对具体偏差重生成</text>
19
+ <rect x="40" y="116" width="190" height="66" rx="33" fill="#eef3ff" stroke="#4d6bfe" stroke-width="1.6"/>
20
+ <text x="135" y="145" text-anchor="middle" font-family="'PingFang SC','Hiragino Sans GB','Noto Sans CJK SC','Noto Sans SC','Microsoft YaHei',sans-serif" font-size="14.5" font-weight="600" fill="#1f2328">源图片</text>
21
+ <text x="135" y="165.5" text-anchor="middle" font-family="'PingFang SC','Hiragino Sans GB','Noto Sans CJK SC','Noto Sans SC','Microsoft YaHei',sans-serif" font-size="12" font-weight="400" fill="#5b6472">宿主路径 / 会话附件</text>
22
+ <rect x="280" y="116" width="250" height="66" rx="9" fill="#eef3ff" stroke="#4d6bfe" stroke-width="1.6"/>
23
+ <text x="405" y="145" text-anchor="middle" font-family="'PingFang SC','Hiragino Sans GB','Noto Sans CJK SC','Noto Sans SC','Microsoft YaHei',sans-serif" font-size="14.5" font-weight="600" fill="#1f2328">iris_look_at_image</text>
24
+ <text x="405" y="165.5" text-anchor="middle" font-family="'PingFang SC','Hiragino Sans GB','Noto Sans CJK SC','Noto Sans SC','Microsoft YaHei',sans-serif" font-size="12" font-weight="400" fill="#5b6472">结构化观察:主体 · 构图 · 色彩 · 文字</text>
25
+ <rect x="580" y="116" width="250" height="66" rx="9" fill="#eef3ff" stroke="#4d6bfe" stroke-width="1.6"/>
26
+ <text x="705" y="145" text-anchor="middle" font-family="'PingFang SC','Hiragino Sans GB','Noto Sans CJK SC','Noto Sans SC','Microsoft YaHei',sans-serif" font-size="14.5" font-weight="600" fill="#1f2328">生成自包含提示词</text>
27
+ <text x="705" y="165.5" text-anchor="middle" font-family="'PingFang SC','Hiragino Sans GB','Noto Sans CJK SC','Noto Sans SC','Microsoft YaHei',sans-serif" font-size="12" font-weight="400" fill="#5b6472">区分原图事实与本次改动要求</text>
28
+ <rect x="880" y="116" width="230" height="66" rx="9" fill="#fff6e5" stroke="#c98a1b" stroke-width="1.6"/>
29
+ <text x="995" y="145" text-anchor="middle" font-family="'PingFang SC','Hiragino Sans GB','Noto Sans CJK SC','Noto Sans SC','Microsoft YaHei',sans-serif" font-size="14.5" font-weight="600" fill="#1f2328">iris_draw_image</text>
30
+ <text x="995" y="165.5" text-anchor="middle" font-family="'PingFang SC','Hiragino Sans GB','Noto Sans CJK SC','Noto Sans SC','Microsoft YaHei',sans-serif" font-size="12" font-weight="400" fill="#5b6472">付费步骤 · 按产物数计</text>
31
+ <rect x="880" y="286" width="230" height="66" rx="9" fill="#eef3ff" stroke="#4d6bfe" stroke-width="1.6"/>
32
+ <text x="995" y="315" text-anchor="middle" font-family="'PingFang SC','Hiragino Sans GB','Noto Sans CJK SC','Noto Sans SC','Microsoft YaHei',sans-serif" font-size="14.5" font-weight="600" fill="#1f2328">iris_relook_attachment</text>
33
+ <text x="995" y="335.5" text-anchor="middle" font-family="'PingFang SC','Hiragino Sans GB','Noto Sans CJK SC','Noto Sans SC','Microsoft YaHei',sans-serif" font-size="12" font-weight="400" fill="#5b6472">对照原始需求逐项复核</text>
34
+ <path d="M690,272 L780,319 L690,366 L600,319 Z" fill="#eef3ff" stroke="#4d6bfe" stroke-width="1.6"/>
35
+ <text x="690" y="324.25" text-anchor="middle" font-family="'PingFang SC','Hiragino Sans GB','Noto Sans CJK SC','Noto Sans SC','Microsoft YaHei',sans-serif" font-size="14.5" font-weight="600" fill="#1f2328">与需求一致?</text>
36
+ <rect x="320" y="278" width="220" height="82" rx="9" fill="#eaf7ef" stroke="#2e9e5b" stroke-width="1.6"/>
37
+ <text x="430" y="315" text-anchor="middle" font-family="'PingFang SC','Hiragino Sans GB','Noto Sans CJK SC','Noto Sans SC','Microsoft YaHei',sans-serif" font-size="14.5" font-weight="600" fill="#1f2328">交付产物</text>
38
+ <text x="430" y="335.5" text-anchor="middle" font-family="'PingFang SC','Hiragino Sans GB','Noto Sans CJK SC','Noto Sans SC','Microsoft YaHei',sans-serif" font-size="12" font-weight="400" fill="#5b6472">attachment id + 任务记录 + 媒体链接</text>
39
+ <rect x="40" y="408" width="1070" height="40" rx="8" fill="#ffffff" stroke="#b9c2ce" stroke-width="1.3" stroke-dasharray="5 4"/>
40
+ <text x="575" y="433.25" text-anchor="middle" font-family="'PingFang SC','Hiragino Sans GB','Noto Sans CJK SC','Noto Sans SC','Microsoft YaHei',sans-serif" font-size="14.5" font-weight="600" fill="#1f2328">纪律:只在缺失会改变结果时提问;复核不通过才重绘;生成前明确用途与比例;保留 attachment id 与任务记录供后续步骤复用</text>
41
+ </svg>
@@ -0,0 +1,26 @@
1
+ # Iris Media for DSH v0.1.2
2
+
3
+ This release makes Iris easier to discover and use from a normal DSH installation, while giving prompt optimization a first-class place in the conversation composer.
4
+
5
+ ## Highlights
6
+
7
+ - Adds a borderless 🫧 prompt-optimization control to the DSH composer. It supports general, image, video, and S2V prompts; previews before write-back; never sends automatically; and uses a glass, mobile-safe panel.
8
+ - Adds an independent, private JSON configuration for optimizer prompts, target templates, model routing, reasoning strategy, and output budget, with import, export, reset, disable, and re-enable controls.
9
+ - Defaults optimizer reasoning to `off-if-supported`, using DSH model metadata instead of inheriting the session's High/Low setting and consuming the visible output budget.
10
+ - Registers the bundled `iris-verify-ui` and `iris-compose-media` Skills when the plugin starts, so npm users can discover them outside this repository.
11
+ - Uses the unique Cordis row ID `mokuyoaxis-dsh-iris`, avoiding collision with the unrelated unscoped `dsh-iris` package.
12
+ - Adds an English README, architecture and workflow diagrams, an Android 16 screenshot gallery, and a real Iris image generated through the documented prompt-to-artifact loop.
13
+ - Keeps the floating quick panel focused on running tasks and recent successful artifacts; failed and canceled history remains available in the full workbench.
14
+ - Makes capability indicators immediately reflect configured providers without requiring every action card to be opened first; an action error dims its indicator.
15
+
16
+ ## Compatibility
17
+
18
+ - DeepSeek Harness: `>=0.1.2-rc.1 <0.1.3-0`
19
+ - Node.js: `>=20.10.0`
20
+ - Verified locally on Linux ARM64 under Android 16 Termux/PRoot Debian with Node.js 22.23.2 and DSH 0.1.2-rc.1.
21
+
22
+ ## Upgrade note
23
+
24
+ Normal plugin upgrades need no manual migration. If a personal `cordis.patch.yml` explicitly overrides the old row ID `dsh-iris`, change that override to `mokuyoaxis-dsh-iris`.
25
+
26
+ The npm package remains `@mokuyoaxis/dsh-iris`; the unscoped `dsh-iris` name belongs to another project.
@@ -0,0 +1,30 @@
1
+ ## Iris Media for DSH 0.1.3
2
+
3
+ Version 0.1.3 makes media tasks safer to recover and much harder to accidentally submit twice. It is a reliability release: no new media provider is added.
4
+
5
+ ### Highlights
6
+
7
+ - Introduces Task/Attempt v2 across image, video, transcription, and TTS generation. One user intent owns one Task, while provider/model candidates become auditable Attempts.
8
+ - Records every Attempt before a potentially billable request. Automatic failover is allowed only after an explicit `not_accepted` result; timeouts, 5xx responses, disconnects, missing responses, and local persistence failures stop conservatively.
9
+ - Separates remote generation outcome from local artifact delivery. A download or filesystem failure no longer rewrites a successful generation as failed.
10
+ - Adds stable workbench states for paused observation, unknown acceptance/outcome, and unavailable artifacts, with a dedicated “Needs attention” section on desktop and mobile.
11
+ - Adds re-observe and re-deliver controls that never submit a new generation request. Informed retry requires a separate duplicate-charge confirmation, creates a linked new Task, and archives the original reminder so it is not counted twice.
12
+ - Adds acknowledge/restore controls for attention items. Acknowledgement only changes local reminder metadata; it never rewrites unknown provider facts. Legacy read-only labels now require an explicit Task v1 marker, avoiding false labels during hot-update version skew.
13
+ - Adds process-scoped state epochs/revisions and SSE backpressure coalescing so delayed snapshots and slow clients cannot roll the UI backwards.
14
+ - Adds an offline, zero-network Doctor API and CLI: `dsh-iris doctor [--json]`, also available through `npx @mokuyoaxis/dsh-iris doctor`. Exit codes are 0 for healthy, 1 for warnings, and 2 for hard errors.
15
+ - Publishes architecture, security-boundary, provider-submission, task-semantics, and fault-injection documentation.
16
+
17
+ ### Safety notes
18
+
19
+ - Re-observe only polls an already accepted remote task.
20
+ - Re-deliver only queries and downloads an already successful result.
21
+ - Informed retry may duplicate a still-running remote job and may incur another charge. Iris requires explicit confirmation and currently exposes it only when the original text input can be reconstructed safely.
22
+ - The offline Doctor does not start DSH, contact providers, print API keys, or claim that browser/tool registration is healthy.
23
+
24
+ ### Compatibility
25
+
26
+ - DeepSeek Harness: `>=0.1.2-rc.1 <0.1.3-0`
27
+ - Node.js: `>=20.10.0`
28
+ - Package: `@mokuyoaxis/dsh-iris`
29
+
30
+ This release was developed and locally validated on Linux ARM64 under Android 16 Termux/PRoot Debian with DSH `0.1.2-rc.1`. Cross-platform CI results should be confirmed from the release commit before publishing.
@@ -0,0 +1,34 @@
1
+ # Iris Android 真机截图 / Android screenshots
2
+
3
+ 这些画面来自 Android 16 浏览器,访问运行在 Termux/PRoot Debian ARM64 中的 DSH;界面使用 DSH 默认皮肤。截图与生成图均为 2026-09-06 的真实操作结果,公开副本已重新编码并移除 EXIF、XMP 与 IPTC 元数据。
4
+
5
+ These captures were taken in an Android 16 browser connected to DSH running under Termux/PRoot Debian ARM64, with the default DSH skin. They show real interactions from 2026-09-06. Public copies were re-encoded without EXIF, XMP, or IPTC metadata.
6
+
7
+ ## 通用提示词优化 / General prompt optimization
8
+
9
+ | 优化前 / Before | 优化预览 / Preview |
10
+ |---|---|
11
+ | ![通用提示词优化前](assets/screenshots/prompt-general-before.webp) | ![通用提示词优化预览,显示实际模型与 off 思考档位](assets/screenshots/prompt-general-preview.webp) |
12
+
13
+ 优化结果只会先进入预览。点击“写回输入框”后,Iris 更新当前草稿,但不会自动发送消息。
14
+
15
+ ![通用提示词优化结果写回输入框](assets/screenshots/prompt-general-after.webp)
16
+
17
+ ## 图片生成闭环 / Image-generation loop
18
+
19
+ | 一句话草稿 / Short draft | 图片 Prompt 预览 / Image prompt preview |
20
+ |---|---|
21
+ | ![输入鸢尾花作为图片生成草稿](assets/screenshots/prompt-image-before.webp) | ![由 Iris 优化的鸢尾花图片生成提示词](assets/screenshots/prompt-image-preview.webp) |
22
+
23
+ 优化后的 Prompt 写回输入框并交给 DSH Agent 后,Iris 使用阿里云百炼的 `qwen-image-3.0-pro` 完成生成任务。任务详情和实际产物如下。
24
+
25
+ | 成功任务 / Succeeded task | 实际产物 / Generated artifact |
26
+ |---|---|
27
+ | ![Iris 图片生成任务成功详情](assets/screenshots/image-task-succeeded.webp) | ![Iris 生成的蓝紫色鸢尾花](assets/examples/iris-flower-generated.webp) |
28
+
29
+ 原始草稿:`鸢尾花`
30
+
31
+ 提示词优化模型:`deepseek-official / deepseek-v4-flash`,实际思考档位 `off`
32
+ 图片生成供应商与模型:阿里云百炼 / `qwen-image-3.0-pro`
33
+
34
+ 截图中的任务 ID 是本地任务标识,不是媒体访问令牌;画面不包含 API Key、账户信息、私有绝对路径或认证 URL。