Repository navigation
Multi-Agent Studio v1.7.7
中文
新增
- 会话导出 / 导入(跨版本、跨存储后端):在会话选择页勾选会话 →「导出会话」,后端弹出系统保存对话框,把「该会话所属 multi-agent 的完整配置 + 每个会话的全部 checkpoint(主图 + 各子 agent)+ 一份可读的
conversation.md」打包成一个 zip;可选用密码加密(AES-256-GCM + scrypt/PBKDF2,文件头用AESGCM魔法字样识别,加密文件后缀.zip.enc)。在另一台机器 / 另一个版本上「导入会话」即可续上历史,普通版 ↔ Lite、PostgreSQL ↔ SQLite 四象限互通。导入支持两种语义:「并入已有配置」或「永远新建一个配置」(跨机器导入会用本机连接设置重算连接串)。 - 快照内编辑:快照浏览页接上与聊天页完全同源的编辑模式(共用同一个
createHistoryEditor,两视图只注入「取数 / 写回 / 重拉」三件事),编辑只改快照 JSON 并按快照里固化的渲染设置重渲染被改通道,不跑图、不碰会话数据库、不改文件名里的条数。 - 聊天身份自定义:设置新增「聊天图标与称谓」,可自定义用户 / 助手的称谓与图标、思考过程图标(约 160 个 emoji 选择器),前端流式与编辑态、后端历史渲染(含快照)都能一致生效。
改进
- 主界面 / 会话页 UI 打磨:卡片改为纵向 flex + 按钮
margin-top:auto,四个按钮在任意窗口宽度下都对齐一行;快照支持重命名(只改会话名,日期 / 时间 / 条数序号保留,快照文件同时改名并持久化snapshot_name);流式输出切换成渲染历史时改用语义文本锚点而非像素scrollTop保持阅读位置,原本在底部则继续跟随底部。 - 记忆库弹窗去掉误导性的刷新按钮。
requirements.txt显式锁定cryptography(加密导出用;原本会随其它依赖装进来,锁定是为了避免依赖链变化让加密导出在客户机上失效)。
修复
- 模型连不上时只看到英文
Connection error.:运行期把连接类异常(超时、断连、DNS、TLS 等,含被包了一层的网络错误)与「步数超限」转成人话,并带上模型来源;同时写入logs/server.log(此前这条路径只把异常字符串吐给前端、不打日志,事后无从排查)。非网络类错误保持原文,不吞信息。 - 失败 / 中断后的「✓ 回填」点了没反应:一次运行会活过当前视图,回填挂起项原先放在
renderChatView的闭包里,视图重渲染后气泡能弹出但回填不生效。挂起项改为模块级并按「所属会话」绑定,元素一律现查 DOM;可回填的消息不会因切换会话被静默丢弃(回到该会话时会补显)。 - 浏览器面板句柄误判(BID110):面板句柄活性判据兼容 BID055 的离场钩子,「节点可见」不再等于「面板还开着」,
panel.state不会再对已关闭面板报open。 - 自定义称谓后所有会话变成「(无历史)」:
settings字典是作为**kwargs转发的,threads.get_thread_history_markdown/get_subgraph_history_by_node的显式关键字参数列表必须接收它,否则/history直接 500。
注意
- 快照格式升到 v2(多存一份可编辑的原始消息数组 + 固化的渲染设置)。旧快照仍可正常浏览,只是按「没有原始消息数组」判定为不可编辑,前端隐藏「进入编辑模式」按钮,不做任何数据迁移。
- 本次不涉及配置或数据库结构迁移;新增的
cryptography依赖由setup.bat自动安装。 - 升级方式不变(见 README「版本迁移」):覆盖文件后务必重跑
setup.bat重新生成MultiAgentStudio.exe,不要沿用旧 exe。
English
Added
- Session export / import (cross-version, cross-storage-backend): on the sessions screen, tick the sessions you want and hit "Export sessions". The backend opens the native save dialog and packs the full multi-agent config the sessions belong to + every session's checkpoints (main graph and each sub-agent) + a human-readable
conversation.mdinto one zip. Optionally encrypted with a password (AES-256-GCM + scrypt/PBKDF2, detected by anAESGCMmagic header, encrypted files get the.zip.encsuffix). Importing on another machine or an older/newer version resumes the history, and standard ↔ Lite, PostgreSQL ↔ SQLite all four combinations interoperate. Import offers two explicit semantics: "merge into an existing config" or "always create a new config" (a cross-machine import recomputes the connection string from local settings). - In-snapshot message editing: the snapshot viewer now has the same edit mode as the chat page (both share one
createHistoryEditor; each view only injects "fetch / write back / reload"). Editing rewrites the snapshot JSON only and re-renders just the edited channel using the render settings frozen into that snapshot — no graph run, no session database writes, no change to the message count in the file name. - Custom chat identity: a new settings submenu lets you customize the user/assistant labels and icons plus the reasoning icon (a ~160 emoji picker). It applies consistently to the frontend streaming and edit views and to backend-rendered history (including snapshots).
Improved
- UI polish on the main/session screens: cards are now a flex column with
margin-top:autoon the actions row, so the four buttons stay aligned in one row at any window width; snapshots can be renamed (only the session name changes — the date/time/count serial is kept, the snapshot file is renamed too andsnapshot_namepersisted); switching from streaming output to rendered history now anchors on semantic text anchors instead of a pixelscrollTop, and keeps following the bottom when you were already there. - The memory-store modal no longer shows a misleading refresh button.
requirements.txtnow pinscryptographyexplicitly (used by encrypted export; it was already pulled in transitively, the pin prevents a dependency-chain change from breaking encrypted export on customer machines).
Fixed
- A bare English
Connection error.when the model is unreachable: runtime connection-class exceptions (timeouts, disconnects, DNS, TLS — including network errors wrapped in another exception) and "step limit exceeded" are now humanized and include the model provider; they are also written tologs/server.log(previously this path only emitted the exception string to the frontend and logged nothing, leaving no trace to debug). Non-network errors keep their original text. - "✓ Refill" after a failed/interrupted send did nothing: a run can outlive the current view, and the pending refill used to live in
renderChatView's closure — after a re-render the bubble appeared but refilling silently failed. The pending item is now module-level and bound to its owning session, with DOM elements looked up on demand; a refillable message is no longer silently dropped when you switch sessions (it reappears when you return). - Browser panel-handle misjudgement (BID110): the panel handle liveness check now honours BID055's leave hook, so "node is visible" no longer means "the panel is still open", and
panel.stateno longer reportsopenfor a closed panel. - Every session showing "(no history)" after customizing labels: the settings dict is forwarded as
**kwargs, so the explicit keyword lists inthreads.get_thread_history_markdown/get_subgraph_history_by_nodemust accept it — otherwise/historyreturns 500.
Notes
- The snapshot format is now v2 (it additionally stores the original message array plus frozen render settings). Old snapshots still display normally, but are marked non-editable ("no original messages") and the "Enter edit mode" button is hidden for them. No data migration is performed.
- No config or database-schema migration in this release; the new
cryptographydependency is installed automatically bysetup.bat. - Upgrading is unchanged (see README "Version migration"): after copying the files, re-run
setup.batto rebuildMultiAgentStudio.exerather than reusing the old exe.