Files
DemonGatanjieu-Anomalous_Mo…/docs/architecture/ui-flows.md
T
DemonGatanjieuandClaude Opus 5.5 b220fc8a31 Call a saved workflow a workflow on screen, not a recipe
- The 54 screen words that said 配方 / recipe for a saved workflow say 工作流 / workflow
  (the Workflows page, saving and exporting, the activity log, backups, the gallery's keep);
  配方包 / recipe package stays the .zip given to others. README and the MCP guide too.
- The Workflows page's empty guide drops its fallback texts: translate() returns the key
  when a word is missing, so they were never shown and still said 配方.
- The glossary retires 配方 and recipe; a retired name may list where it is not that name
  ("配方(配方包、搭配方案除外)"), and {placeholders} do not count.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-25 13:52:08 +08:00

9.2 KiB
Raw Blame History

界面地图:点哪里、去哪里、为什么

这份是界面地图的手写部分,只写代码里看不出来的东西:每一块是干什么的、点了以后发生什么、为什么这样设计、同一个东西统一叫什么。 具体在哪个文件、哪一行、调哪个接口,不要在这里找,直接问代码(永远是最新的):

node tools/ui_map.mjs find 屏幕上的字      比如 find AI 改副本:哪个文件画的、样式在哪、调哪个接口、后端哪个函数
node tools/ui_map.mjs find /anomalous/ai_tasks    这个接口由谁处理、前端谁在调
node tools/ui_map.mjs find ui_ai_marker.js        这个文件显示哪些字、调哪些接口、被谁用
node tools/ui_map.mjs build                写出 docs/ui-map.md:按页面列出全部文件、文字和接口(不进版本库)

写这份文档的规矩(node tools/check_structure.mjs 会检查):

  • 「」 里只放屏幕上的原字(中文界面),一个字都不能差;太长的句子可以只写开头,结尾加 …。界面改了字,检查就会报错,提醒你回来改这里。
  • 文件名和接口用反引号,比如 ui_ai_task_canvas.js、/anomalous/ai_tasks/{task_id};不存在了检查也会报错。
  • 最后的“统一叫法”表:一个东西只用一个名字。表里“不再用”的词,只要还出现在界面文字里,检查就报错。

AI 工作台

三栏:左边任务列表,中间一个任务的时间线,右边侧栏。窗口窄时左边和中间轮流显示,右边变成标签页。

左栏:任务列表(ui_ai_task_list.js)

看到的 点了以后 后端
「新任务」 写一句要 AI 做什么(可以空着),任务显示“等 AI 接手”;下一个来调用的 AI 直接接手它,不会接在旧任务后面 POST /anomalous/ai_tasks
「连接 AI」 弹出连接说明:地址、复制给 AI 的那句话、各个软件怎么加(ui_ai_connect.js) 无
「关卡」 AI 做哪些事要先问你(改画布、用显卡、下载……),还有给 AI 的工具集(ui_ai_gate.js) /anomalous/ai_gates
「全部」「进行中」「等你回答」「出错」 只筛这一栏,不改任何东西 无
一个任务 中间显示它。看过的、鼠标停过的马上出来,再悄悄补上最新内容(ai_task_cache.js) GET /anomalous/ai_tasks/{task_id}

收起:标题栏最左边的按钮(「收起 / 展开任务列表…」)。收起后列表仍在左边排好、藏起来,鼠标碰到这个按钮、或者从页面往左移到最左边缘,下一帧就滑出来;离开后 0.35 秒收回,点了任务马上收回。

为什么:列表每 5 秒刷新一次,只重画变了的行(sync_rows.js),所以滚动位置不会跳、鼠标下面的行不会闪。

中间:任务的标题栏

看到的 点了以后 后端
「AI 改副本」 / 「AI 改当前画布」 打开二选一:「改副本」(先把当前工作流复制到新标签页,AI 只改副本)或「改当前画布」。点开才换,不会点一下就悄悄切换 POST /anomalous/ai_tasks/{task_id}(canvas)
「切到副本」 切到这个任务的副本标签页,并显示画布(mcp_task_tab.js) 无
「撤销画布上的改动」 按操作记录把 AI 在画布上的改动一步步撤销(canvas_undo.js) 无
「改名」 / 「从列表移除」 移除只删这条记录,图、画布、工作流都不动 POST /anomalous/ai_tasks/{task_id}
「接着哪个任务…」 把这个任务接在另一个后面,两边都显示链接(ui_ai_task_links.js) POST /anomalous/ai_tasks/{task_id}(from)

标题栏右上角的一排是侧栏的开关:「展台」「节点结构」「决策」「素材」「成果」(ui_ai_side_views.js),同一时间只开一个。

中间:时间线

  • 从上往下读,编号 1、2、3……;AI 连着查资料、连着改画布的几步折成一行(ui_ai_chain.js),点开看每一步。
  • 每一步下面写它做了什么(ui_ai_step_body.js),出的东西能直接去:图片进看图器、模型进模型页、画布改动能定位和撤销(ui_ai_results.js)。
  • 图片上鼠标移上去有工具(ui_ai_images.js):「图片与参数」、「保存为…」、勾两张对比,还有 ✎ 标注。
  • 时间线和展台里的图先用缩略图(/anomalous/output_thumbnail),显示得比缩略图大时才换原图,打开任务不用等大图。

标注:「标给 AI 看:哪里要改」(ui_ai_marker.js)

框、圈、箭头、画笔,每个标记写一句要怎么改;右边选「怎么改」:

  • 「交给 AI 判断」:AI 看说明自己决定。
  • 「只改标出的地方」:其余保持原样,框、圈、画笔和涂抹的地方做成遮罩放进 input 文件夹,AI 只重绘这些地方。用「涂重绘区」时自动选上。
  • 「整张重新出图」:按说明整张重画,不做局部重绘。

「发给 AI」以后(POST /anomalous/ai_tasks/{task_id}/marks),AI 下一步收到的第一句就是你选的改法,写明是你的要求(ai_marks.py)。时间线里这条标注写着「改法:{mode}」,方便核对 AI 有没有照做。

中间最下面:留言框(ui_ai_message.js)

  • 「给 AI 留言,比如:背景再亮一点。…」:Enter 发送(POST /anomalous/ai_tasks/{task_id}/message)。
  • 打 @ 提到素材和图(ui_ai_mention.js),开头打 / 是快捷指令(ui_ai_commands.js):/停止、/撤销、/展台、/节点结构、/素材、/副本、/当前画布 马上生效;/重跑、/解释、/继续 帮你写好一句话。
  • 「从图库选图给 AI」(ui_ai_gallery_pick.js),拖进来或粘贴截图(ui_ai_drop.js,存进输出文件夹的 ai_inbox)。
  • 留言框上面的一条(ui_ai_now.js):正在出图的进度、要你允许的事、AI 问你的问题;AI 停下时给出可以复制给它的句子,比如「继续」(ui_ai_call.js)。

为什么:AMB 不能主动叫醒外部的 AI。发出去的留言会等着,AI 下一次调用任何工具时一起收到(ai_panels.py 的 attach_pending),或者它来读回答时收到。AI 已经停了,就要你回 AI 软件里说一句,所以那里总有一句可以复制的话。

右栏:侧栏

开关 里面是什么 主要文件
「展台」 AI 画的面板,从上往下排,旧的在上、新的在下;要你回答的在这里回答(POST /anomalous/ai_tasks/{task_id}/answer)。来了新面板而你在往上看时,出现「↓ 查看最新」 ui_ai_side.js、ui_ai_panel.js、ui_ai_stage.js
「节点结构」 这次运行实际用的节点、和上次比改了什么 ui_ai_run_map.js
「决策」 你在面板上的选择、允许和拒绝、AI 记下的关键决定 ui_ai_decisions.js
「素材」 「给 AI 的素材」:挑模型、节点、搭配、工作流、提示词交给 AI;「来源」列表里鼠标所在的行会亮,选中的打勾 ui_ai_toolbox.js、ui_ai_facet_menu.js
「成果」 这个任务出的图、工作流、搭配、提示词、音频,按步骤排 ui_ai_outputs.js

设计上的固定做法

  • 从上往下读:时间线、展台都是旧的在上、新的在下;看最新的时候自动跟着往下,往上翻着看时不打断,只出现“去最新”的按钮。
  • 重画只重做变了的部分:工作台随时在刷新,滚动位置、打了一半的字、展开的东西都不能丢。
  • 会改东西的地方说清楚后果:二选一要写每一种是什么意思;删除写明删的是什么、不删什么。
  • 鼠标移上去要有反馈:列表行、菜单项悬停变亮,当前选中的有底色或打勾。
  • AI 改画布默认改副本:你正开着的工作流不被 AI 动。

统一叫法

说法 English 不再用 不再用(English)
副本(AI 改的那份工作流) copy 专用标签页、自己的标签页、新开标签页 own tab
素材(交给 AI 的模型、节点……) materials 材料 —
留言(你写给 AI 的话) message 消息 —
节点结构 node map 结构图、运行结构 node structure
连接 AI connect an AI 最近接入、接入过 —
撤销 undo 撤回 —
展台 stage 画板、舞台 —
成果 results 产出 —
关卡 gates 闸门 —
工作流(存下的整套工作流,“工作流”页的卡片) workflow 配方(配方包、搭配方案除外) recipe(recipe package 除外)、recipes
配方包(把一个工作流打包发给别人的 .zip) recipe package — —
搭配(主模型 + LoRA + 提示词) combo — —

“不再用”里可以写例外,比如“配方(配方包、搭配方案除外)”:这两个词里的“配方”不算。{recipe} 这样的占位符也不算。

还没统一的

  • node tools/ui_map.mjs build 的最后一节列出没有文件用到的文字(目前 33 条),清理前先确认不是拼出来的 key。