|
|
e29ccb318e
|
fix(multi-agent): 修复情况2主消息池派发链路
修复多智能体模式下主智能体空闲时收不到子智能体输出推送的一系列 bug:
1. poll_multi_agent_notifications 死锁:原实现先等所有 running 实例
退出再 drain 消息池,导致 ask_master 在 await 期间永远等不到主对话
回答。改为池优先:pool 有消息立即派发,不管 running 状态。
2. _dispatch_multi_agent_idle_messages 缺 import:调用
inject_multi_agent_master_message 但文件顶部从未导入,NameError
被外层 except 吞掉,task 永远建不起来。
3. dispatch 内调试日志引用 rec 错位:dispatch_ma_idle_sender_user_message
被放到 create_chat_task 之前,触发 UnboundLocalError,task 同样建不起来。
4. session_data['auto_user_message_payload'] / preceding_user_notices
payload 漏写 auto_message_type:前端 isMultiAgentMessage() 只认
auto_message_type.startsWith('multi_agent_'),空字符串走 fallback
通知渲染。
5. dispatch 第①步重复持久化:对包含 last 的全部消息都调
inject_multi_agent_master_message 落盘,之后 task 又在 handle_task_with_sender
再 add_conversation,导致历史里出现两条相同 user 消息(前一条多智能体渲染,
后一条通知渲染)。前置 N-1 条只持久化一次,最后一条交给后续 task 自己持久化。
6. last 赋值时机错位:last_emit_payload 在 last=parsed_messages[-1] 之前引用,
UnboundLocalError 再次吃掉后续链路。
7. handle_task_with_sender 多智能体分支漏写 visibility='chat':
_user_message_ui_defaults('sub_agent') 默认 visibility='compact',
透传到落盘 metadata 后,前端从后端加载历史时走通知渲染分支。显式
user_message_metadata['visibility']='chat' 强制走多智能体专用渲染。
|
2026-07-13 20:05:02 +08:00 |
|
|
|
fe6fba3958
|
feat(multi_agent): 提取prompt、恢复任务、优化侧边栏与sleep工具
- 将多智能体/子智能体prompt从代码提取到prompts/multi_agent/和prompts/sub_agent/
- 多智能体模式添加可用的子智能体动态prompt并冻结
- 重启后自动从conversation.json恢复多智能体idle任务
- 修复新对话侧边栏显示其他对话子智能体的问题
- 简化子智能体弹窗输出样式
- sleep工具在多智能体模式下移除wait_sub_agent_ids参数
|
2026-07-13 14:01:48 +08:00 |
|
|
|
de5160ead0
|
feat(ui): 子智能体消息 Markdown 渲染与气泡展开淡出优化
- 子智能体输出内容使用 MarkdownRenderer 渲染
- 修复多智能体气泡内 Markdown 元素底色适配气泡背景
- 修复对话区域 Markdown 行内代码与加粗样式
- 用户消息/子智能体消息气泡展开按钮增加横纵向淡出效果
- 展开/收起时按钮位置通过 margin 平滑过渡
|
2026-07-13 00:48:05 +08:00 |
|
|
|
692748d567
|
fix(multi-agent): 修复消息渲染、分类、存储与滚动抖动
- 子智能体消息渲染为左侧对话气泡
- 多智能体通知细分为进度/完成/提问三类
- 修复多智能体会话存储到 mutiagents 目录并迁移数据
- 修复 token-statistics API 支持多智能体会话
- 修复 ma_debug 未定义报错
- 移除 .message-block content-visibility 修复滚动抖动
|
2026-07-12 23:09:56 +08:00 |
|
|
|
7f2ad9144d
|
fix(multi-agent): 修复子智能体状态误判、后台任务隔离与 idle 等待异常
|
2026-07-12 18:39:21 +08:00 |
|
|
|
f652118527
|
fix(multi-agent): 跨事件循环问答、线程安全取消、任务结束汇报格式、工具参数可选
|
2026-07-12 15:09:16 +08:00 |
|
|
|
8e5d4f05d9
|
fix(multi-agent): 多智能体模式下侧边栏只加载对应模式的对话记录
后端 get_conversation_list / web_terminal / conversation路由 增加 multi_agent_mode 查询参数:
- multi_agent_mode=1 仅返回 multi_agent_mode 对话
- multi_agent_mode=0 仅返回常规对话
- 不传则不过滤
前端 loadConversationsList / loadWorkspaceConversations 根据 this.multiAgentMode 自动带参
|
2026-07-12 12:20:18 +08:00 |
|
|
|
811974d6e7
|
feat(multi-agent): 在现有架构上直接实现多智能体模式实验功能
放弃完全隔离策略,改为在现有 MainTerminal/SubAgentManager/SubAgentTask 主链路
按对话级开关 metadata.multi_agent_mode=true 增加多智能体分支。
新增模块:
- modules/multi_agent/__init__.py: 模块入口
- modules/multi_agent/role_store.py: 角色 Markdown Frontmatter 解析与归档
- modules/multi_agent/state.py: 多智能体会话状态机与消息格式化
- modules/multi_agent/prompts.py: 主智能体(Team Leader) + 子智能体提示词
- modules/multi_agent/tools.py: 9 个主智能体工具 + 4 个子智能体工具定义
- server/multi_agent.py: /multiagent/new 页面 + /api/multiagent/* 蓝图
现有代码改动:
- modules/sub_agent/task.py: 扩展 multi_agent_mode/multi_agent_state/display_name 字段,
增加 ask_master/ask_other_agent/answer_other_agent/list_active_sub_agents 工具处理逻辑,
子智能体自然结束 assistant 输出即本轮结束(不调用 finish_task),上下文保留。
- modules/sub_agent/manager.py: create_sub_agent 增加 multi_agent_mode/role_id/display_name 参数,
增加 get_or_create_multi_agent_state/get_multi_agent_state/inject_message_to_sub_agent/_on_multi_agent_task_done 方法。
- core/main_terminal_parts/tools_definition/agent_tools.py: 多智能体模式下用 modules.multi_agent.tools 替换旧版工具集。
- core/main_terminal_parts/context/messages.py: 多智能体模式下追加 Team Leader 系统提示词。
- core/main_terminal_parts/tools_execution.py: create_sub_agent handler 增加多智能体分支,新增 send_message_to_sub_agent/ask_sub_agent/answer_sub_agent_question/create_custom_agent/list_agents/list_active_sub_agents handler。
- core/web_terminal.py: load_conversation 时检测 metadata.multi_agent_mode 设置 self.multi_agent_mode。
- server/app_legacy.py: 注册 multi_agent_bp 蓝图。
前端改动:
- static/src/auth/LoginApp.vue: 登录页增加'多智能体模式(beta)'按钮
- static/src/app/methods/ui/route.ts: 识别 /multiagent/new 和 /multiagent/conv_xxx 路径,进入多智能体模式并创建带 metadata.multi_agent_mode=true 的对话
- static/src/app/state.ts: 增加 multiAgentMode 状态字段
数据:
- ~/.astrion/astrion/host/mutiagents/agents/: 4 个预置角色 ui-operator / full-stack-engineer / code-reviewer / researcher
- ~/.astrion/astrion/host/mutiagents/conversations/: 会话数据
验证:所有 Python 文件语法检查通过;冒烟测试 test.test_server_refactor_smoke 6 项全通过;前端构建通过(6.04s);模块导入与功能断言测试全部通过。
|
2026-07-12 03:26:02 +08:00 |
|
|
|
e8b857f3ae
|
docs(multi-agent): 添加多智能体模式设计文档7份
|
2026-07-12 02:28:47 +08:00 |
|
|
|
c08c4ab141
|
docs(agentskills): 更新子智能体使用指南
- 强调阻塞/后台模式的唯一判断标准是运行期间有没有别的事情要做
- 强调大范围搜索/调查前必须先自己进行浅层搜索
- 重写示例:国产开源智能体调研、程序 bug 定位
- 拆分后台模式场景:单个子智能体用阻塞,多个子智能体用后台并等待通知
|
2026-07-11 20:40:27 +08:00 |
|
|
|
3585967b40
|
fix(ui): 极简模式展开区追底改为stick-to-bottom逻辑
|
2026-07-11 20:27:07 +08:00 |
|
|
|
cc8d5817aa
|
feat(ui): 极简模式展开高度限制开关与个人空间持久化
|
2026-07-11 19:58:35 +08:00 |
|
|
|
af56de6812
|
fix(sub_agent): 修复 wait_for_completion 因 _load_state 替换 tasks 字典导致的引用失效
|
2026-07-11 19:19:41 +08:00 |
|
|
|
6618ab03dc
|
feat(personalization): 将堆叠块显示模式保存到后端 personalization.json
|
2026-07-11 11:14:48 +08:00 |
|
|
|
5244768494
|
feat(sidebar): 侧边栏按工作区/项目分组显示对话
- 新增个人化设置 group_sidebar_by_workspace / sidebar_pinned_workspaces /
sidebar_workspace_order,支持分组视图、置顶、排序
- 后端 conversation API 支持 workspace_id 参数,用于获取/创建/加载/删除
指定工作区的对话,避免切换视图时 session 漂移
- server/context.py 新增 update_session 参数,临时解析目标 terminal 时不污染
当前会话
- 前端 ConversationSidebar 实现分组折叠、运行中指示器、新建/更多操作菜单、
动画同步
- config/terminal.py 默认 TERMINAL_SANDBOX_MODE 由 docker 改为 host
|
2026-07-11 01:51:01 +08:00 |
|
|
|
6b431ed51a
|
fix(config): 修复 .env 中 ASTRION_DATA_ROOT 的 ~ 未展开导致 settings.json 未加载的问题
config/__init__.py 读取 .env 后,ASTRION_DATA_ROOT 可能为 ~/.astrion/astrion。
原代码直接用 Path(data_root) 构造 settings.json 路径,Path 不会展开 ~,
导致 settings.json 被判定不存在,env_vars(API key 等)未注入,
进而使 model_profiles 解析所有模型失败,抛出未配置可用模型。
|
2026-07-11 01:50:08 +08:00 |
|
|
|
3f3662d3a5
|
fix(chat): 修复极简模式摘要行运行动画右侧被截断的问题
|
2026-07-10 16:21:52 +08:00 |
|
|
|
8594b43d8a
|
feat(avatar): 增大工具 SVG 显示尺寸到 66px
|
2026-07-10 15:58:45 +08:00 |
|
|
|
19746e67d3
|
feat(personalization): 将回答时必须考虑的信息从条列式改为大段文字输入
|
2026-07-10 15:40:18 +08:00 |
|
|
|
b2cbe0ab5d
|
fix(minimal): 补齐极简模式摘要行中缺失的子智能体/记忆/对话分类统计
|
2026-07-10 14:30:56 +08:00 |
|
|
|
67292f9fd3
|
feat(chat): 扩展极简模式工具分类显示映射
|
2026-07-10 14:03:06 +08:00 |
|
|
|
576fbb39d8
|
fix(ui): 调整输入栏浮层高度并统一/new页手机端间距
- 将 composer-avatar 与 floating-status-row 容器高度分别调整为 45px/34px,
避免容器高度大于实际内容导致聊天区滚动高度虚增。
- 统一手机端 /new 页面输入栏上移量与欢迎语内边距为桌面端数值,
修复手机端输入栏与欢迎语间距过大的问题。
|
2026-07-10 05:20:40 +08:00 |
|
|
|
d2170567e6
|
fix(input-composer): 调整AI形象与git状态栏的对齐、间距及文字定位
|
2026-07-10 04:17:39 +08:00 |
|
|
|
cb70bc2929
|
chore(deps): 同步 package-lock.json 与 package.json
|
2026-07-10 01:45:00 +08:00 |
|
|
|
f8bba77a60
|
fix(prompt): 更新 memory_system.txt 中项目记忆路径为 .astrion/memory/
|
2026-07-10 01:32:37 +08:00 |
|
|
|
b7a535fc8f
|
fix(memory): 将项目记忆文件从 .agents/memory 迁移到 .astrion/memory 并更新提示词路径
|
2026-07-10 01:28:13 +08:00 |
|
|
|
e3c897947f
|
refactor(paths): 统一迁移运行态数据路径到 Astrion 命名空间
- 工作区内部路径 .agents/ -> .astrion/
- 默认运行态数据根 ~/.agents/agents/ -> ~/.astrion/astrion/
- 环境变量 AGENTS_DATA_ROOT -> ASTRION_DATA_ROOT(无兼容)
- 同步更新代码、测试、文档与脚本中的路径引用
- 新增 .gitignore 忽略 .astrion/ 与 .agents/ 运行态目录
|
2026-07-10 00:35:15 +08:00 |
|
|
|
6a2cb820bc
|
fix(versioning): 修复浅备份文件修改归属错误及列表/详情不一致
|
2026-07-09 18:45:40 +08:00 |
|
|
|
765196ea3c
|
feat(skills): host 模式 skill 归档目录迁移到运行态 agentskills
|
2026-07-09 18:42:42 +08:00 |
|
|
|
3db4e0beb4
|
feat(sandbox): macOS host sandbox deny-list for sensitive paths
- Add default deny_read_paths/deny_read_regexes to host_sandbox_policy.json
- Generate deny rules for ~/.ssh, ~/.aws, ~/.kube, keychains, .env, etc.
- Readonly sandbox: global read + deny sensitive + write only /dev/null
- Workspace-write sandbox: global read + deny sensitive + writable paths
- Keep workspace files readable by re-allowing workspace subpath after deny
- Backend API validates path authorization against deny list
- Path auth dialog hint explains readable paths behavior
|
2026-07-09 16:25:04 +08:00 |
|
|
|
15106e7d00
|
feat(branding): 将产品名统一为 Astrion
- 前端页面标题、登录/注册页、左侧栏、聊天头部、教程欢迎语全部改为 Astrion
- CLI 欢迎面板与状态栏改为 Astrion CLI
- 后端启动日志与 setup 向导改为 Astrion
- package.json 与 README 标题同步更新
- 主 system prompt 增加 Astrion 自我介绍,视觉模型 prompt 文件名从 qwenvl 改为 vl
- 项目记忆与 AGENTS.md/CLAUDE.md 新增产品名说明
|
2026-07-07 18:17:48 +08:00 |
|
|
|
2264a86851
|
feat(chat): 极简模式摘要行改为单行渐变+工具统计总结
|
2026-07-07 16:45:59 +08:00 |
|
|
|
478d24c4dd
|
feat(versioning): 重构版本控制为对话级浅备份 + 可选完全备份
本次变更是对版本控制功能的大范围重构,核心目标:
- 默认使用浅备份(只追踪 write_file/edit_file 实际修改的文件),避免大工作区首次初始化耗时十几秒;
- 保留可选的完全备份(git write-tree),不污染 git log;
- 回溯时统一选择范围(仅对话 / 对话+工作区)和模式(覆盖 / 复制);
- 修复复制对话、侧边栏同步、新建对话延迟、diff 统计与渲染等连锁问题。
后端改动:
- modules/shallow_versioning.py(新增)
- 实现 ShallowVersioningManager:track_edit、make_snapshot、rewind、list_snapshots。
- 基于 difflib.SequenceMatcher 计算真实 insertions/deletions,replace 场景正确显示 +N/-M。
- diff 详情使用结构化 add/remove/context 行,不再解析 unified_diff 文本。
- modules/versioning_manager.py
- 完全备份从 git commit 改为 git write-tree,字段 commit/parent_commit 改为 tree_hash/parent_tree_hash。
- 恢复改用 read-tree + checkout-index;create_checkpoint 支持 diff_summary 参数。
- get_checkpoint_detail 保留 API 字段名 last_commit/restored_commit 以兼容前端。
- core/main_terminal_parts/tools_execution.py
- write_file/edit_file 在执行前调用浅备份 track_edit,保留编辑前状态。
- server/chat_flow_task_main.py
- 消息轮次结束时根据 backup_mode 选择完全备份 create_checkpoint 或浅备份 make_snapshot。
- 浅备份模式下同时写入 ConversationVersioningManager 检查点行,让前端能统一展示。
- server/conversation.py
- restore/detail/list API 支持 shallow 模式;list/detail 对浅备份实时重新计算统计。
- 创建对话时读取 personalization 的 versioning_backup_mode,shallow 模式固定 tracking_mode 为 conversation_only。
- core/web_terminal.py
- _ensure_conversation_versioning_enabled 读取默认备份模式并写入 versioning meta。
- modules/file_manager/crud_mixin.py / replace_mixin.py
- write_file / edit_file 返回 original_file / new_file / replacement_details(真实旧行/新行)。
- modules/personalization_manager.py
- 新增 versioning_enabled_by_default、versioning_backup_mode(shallow/full)。
- utils/perf_log.py(新增)
- 创建新对话全链路性能日志,用于定位延迟瓶颈。
- utils/conversation_manager/{index,list_search,crud}_mixin.py
- 加性能日志;index_mixin 主动检查新增对话文件,修复侧边栏不同步。
前端改动:
- static/src/components/overlay/VersioningDialog.vue
- 去掉顶部管理范围下拉;底部新增回溯范围与回溯模式选择。
- diff 详情改为 div.diff-line 网格布局(marker + content),支持横向滚动,状态显示缩写 A/M/D。
- 修复 pre 标签空白黑行、容器被挤窄导致折行等问题。
- static/src/app/methods/versioning.ts
- 移除 mismatch 弹窗逻辑;支持 copy 模式;selectVersioningCheckpoint 增强错误捕获。
- static/src/components/personalization/PersonalizationDrawer.vue
- 「工作区与权限」新增版本控制默认开关与备份方式选择。
- static/src/stores/personalization.ts
- 新增 versioning_enabled_by_default、versioning_backup_mode 字段。
- static/src/components/chat/actions/ToolAction.vue / toolRenderers.ts
- edit_file / write_file 工具展示基于 result.details / result.new_file 的真实替换结果。
- static/src/app/state.ts / watchers.ts / App.vue
- 新增 versioningInitializingBackupToastId,完全备份初始化时显示 toast。
- static/src/app/methods/conversation/action.ts / message/send.ts
- host + 完全备份 + 默认开启时,创建新对话/从 /new 发送首条消息显示「正在初始化备份」toast。
验证:
- /Library/Developer/CommandLineTools/Library/Frameworks/Python3.framework/Versions/3.9/bin/python3.9 -m unittest test.test_server_refactor_smoke 通过。
- npm run build 通过。
- 宿主机与 docker 模式新建对话、编辑文件、回溯、复制对话均验证通过。
|
2026-07-07 12:07:44 +08:00 |
|
|
|
7863e497d8
|
feat(ui): restore reply-header generating hint and refine composer avatar text
|
2026-07-06 04:47:40 +08:00 |
|
|
|
01dfec4c72
|
fix(tasks): return completion notification notices
|
2026-07-05 01:44:50 +08:00 |
|
|
|
4a54d6fbb7
|
feat(ui): add status avatar interactions
|
2026-07-05 00:57:06 +08:00 |
|
|
|
359caca672
|
feat(input): support file mentions
|
2026-07-04 22:58:58 +08:00 |
|
|
|
ae5676cd30
|
feat(ui): add assistant status avatar
|
2026-07-04 22:33:00 +08:00 |
|
|
|
dd5e94b294
|
fix(frontend): smooth initial conversation rendering
|
2026-06-28 10:57:54 +08:00 |
|
|
|
2b2ff44fcd
|
Fix: user message timestamp from backend, bubble action layout
|
2026-06-28 01:48:18 +08:00 |
|
|
|
0a4c75ce45
|
Add fold/expand and hover actions to user message bubbles
|
2026-06-28 00:15:07 +08:00 |
|
|
|
5ac17cd279
|
Unify font-family for form controls in global styles
|
2026-06-27 23:43:48 +08:00 |
|
|
|
6f47221ed8
|
Enhance docker toolbox with Office, OCR, media and Node.js tooling
|
2026-06-27 23:43:39 +08:00 |
|
|
|
737c4d61a2
|
fix(chat): 修复流式代码块闪烁、复制错位及数学公式实时多行渲染
- 将聊天消息中的代码块提取为独立 Vue 组件,稳定 key 避免流式输出时重建
- 代码块复制按钮直接复制当前组件内容,全局复制逻辑改为按容器查找
- 预处理 LaTeX 公式占位符并在组件 onUpdated 中实时渲染,支持多行 49888...49888
- 公式块过长时提供横向滚动,渲染后主动追底避免滚动锁定失效
|
2026-06-27 23:11:09 +08:00 |
|
|
|
f7a4708a84
|
chore(git): 取消追踪已迁移到 .agents/skills/ 的 skills/ 目录
|
2026-06-25 13:17:39 +08:00 |
|
|
|
ed9bbeecb7
|
feat(frontend): 子智能体结果添加统计信息并规范 meta/content 分区
- create_sub_agent 增强显示增加工作时间、调用次数、工具次数
- 将统计信息与最终回复放入 tool-result-content(结果区)
- 工具参数保留在 tool-result-meta(参数区)
- 在 AGENTS.md 新增 §5.6 工具结果显示规范
|
2026-06-25 12:38:58 +08:00 |
|
|
|
38ff51416f
|
fix(mcp_client_manager): restore missing imports and dataclass decorators after split
|
2026-06-25 11:56:19 +08:00 |
|
|
|
72a49a7c8d
|
fix: 修复对话计时器持久化、子智能体工具美化与状态查询,统一后台通知池
- 新增 server/work_timer.py,在对话真正空闲(无前台任务、无后台子智能体/后台命令/压缩)时持久化 work_timer,并同步内存副本,解决刷新后计时器回退问题。
- server/chat_flow_task_main.py / chat_flow.py / tasks/models.py 在任务结束/取消时按空闲判定决定是否持久化。
- 前端 lifecycle.ts 在仍有后台任务时不提前停止计时器。
- 子智能体工具(create/terminate/get_status)渲染美化,task 参数放在顶部元信息区。
- 子智能体状态查询支持返回「已完成」「已终止」「不存在」;修复 wait_for_completion 在 final_result 就绪前返回导致的「ID 被占用」误报。
- 统一后台完成通知池 poll_completion_notifications,合并子智能体与后台 run_command 两路轮询,避免逐条触发工作循环与单工作区互斥冲突。
- 删除本次新增的各类 debug_log / notify_pool_log 调用及辅助脚本。
|
2026-06-25 04:16:44 +08:00 |
|
|
|
f3e166e258
|
feat: 上传文件/图片路径提示 + 文件树去 emoji + CSV 预览优化
|
2026-06-24 20:44:26 +08:00 |
|
|
|
d1a9a51bb8
|
fix(terminal_ops): ssh 远程命令中避免重写 /Library/Developer/CommandLineTools/Library/Frameworks/Python3.framework/Versions/3.9/bin/python3.9/pip 路径
|
2026-06-24 17:33:12 +08:00 |
|