ccdc101192
chore(terminal): 删除无调用的 _derive_pip_from_python 死代码
2026-07-20 15:53:16 +08:00
bfc039a9a9
fix(terminal): 移除命令执行前的 python/pip 路径重写,按用户原始命令执行
...
run_command 与后台 run_command 此前会把命令中的 python/python3/pip/pip3 正则替换为解析出的容器或本地解释器路径,删除该重写逻辑后命令按原样执行。
2026-07-20 15:51:21 +08:00
a4eb688814
feat(server,static): 对话运行状态 REST 对账与 conversation 级 WebTerminal 隔离
...
议题1 运行状态对账:
- 后端新增 GET /api/conversations/<id>/running-status 聚合主任务/子智能体/
后台命令/多智能体四类运行状态
- 前端 3 个 1s probe 收敛为单个 2.5s 对账循环,事件为主、对账纠偏,
清理方向连续 2 次确认,恢复方向立即接管,修复轮询 404 卡死
议题4 conversation 级隔离:
- terminal 缓存键改为 username::workspace::conversation 三段,
每个对话独立 WebTerminal/文件管理/终端/子智能体
- 同工作区多对话可并行运行,互斥维度从工作区改为同对话
- socket 终端面板按对话过滤广播,terminal 工具每对话最多 3 个
- 常驻内存 + 24h TTL 回收器(无活动且无运行任务才回收)
- 子智能体 restore 按 owner_conversation_id 过滤,避免多 manager 重复恢复
2026-07-20 01:05:17 +08:00
c414d268b3
fix(sub-agent): 修复运行中快照被误判 failed 及错误信息落盘
...
- output.json 停留在 running/idle 快照(success 为 None)时一律先走存活判定,
任何模式下都不把仍在运行的子智能体误判为 failed
- 本进程 asyncio 句柄已结束但快照未更新:判 failed 并保留真实异常信息
- 传统模式无句柄(进程重启):快照 600s 内未更新才按僵尸任务判 failed
- _finalize_task 支持 error 字段,失败/超时/异常退出均落盘可读错误信息
2026-07-20 01:04:38 +08:00
1d0a7e95fa
feat(multi-agent): 扩展 sleep 工具模式并修复 /new 模式切换状态继承
...
- sleep 工具支持 wait_sub_agent_output / wait_sub_agent_ids / wait_runcommand_id 模式
- 多智能体工具移除 ask_sub_agent,新增 stop_sub_agent
- 前后端补齐对应 formatter、渲染与工具执行分支
- 修复从多智能体模式切回 /new 后,新对话继承 terminal.multi_agent_mode 导致实际运行在多智能体模式的问题
2026-07-17 22:51:04 +08:00
d4c3e73134
fix(sub_agent): 移除 search_workspace 工具并清理内存调试代码
...
- 删除子智能体 search_workspace 工具定义、路由、formatter 与测试
- 传统/多智能体模式共用 SUB_AGENT_TOOLS,一处删除同时生效
- 老对话恢复后再调用 search_workspace 会返回 未知工具 错误
- 清理多智能体排查期间加入的 memory_debug 模块及所有调用点
(modules/memory_debug.py 删除,server/ core/ utils/ modules/sub_agent/ 中相关埋点全部移除)
- 顺手删除 SubAgentActivityDialog 中 search_workspace 的历史显示文案
2026-07-17 14:05:35 +08:00
2b131de702
perf(debug): 内存监控增强为 100ms 采样 + 多维度指标
...
- 采样间隔从 1s 降到 100ms,spike 阈值降到 50MB
- 增加 uss/shared/private/data/dirty/compressed 等指标
- 更贴近 macOS 活动监视器'内存'列的统计口径
2026-07-17 12:16:16 +08:00
faef998a9a
perf(debug): 增强内存监控:每秒采样 + 更多关键路径埋点
...
- 改用 psutil 实时 RSS 取代历史最大 ru_maxrss
- 新增后台每秒采样线程,检测到 >100MB/s 增长立即记录
- WebTerminal 初始化时自动启动采样
- 增加子智能体恢复加载 conversation.json、httpx 流式/非流式响应、
工具返回结果、模型输出组装等埋点
2026-07-15 17:33:47 +08:00
248f5a4b1a
fix(debug): 修正 macOS 内存单位换算
2026-07-15 17:26:09 +08:00
310d82f4b8
perf(debug): 添加多智能体模式内存监控埋点
...
- 新增 modules/memory_debug.py 统一内存监控模块
- 在子智能体任务、主对话 build_messages、多智能体消息注入、
API 请求准备、深压缩等关键路径记录 RSS/VMS 和消息规模
- 日志输出到 ~/.astrion/astrion/host/logs/memory_debug.log
2026-07-15 17:02:33 +08:00
3138d23687
feat(multi-agent): 重构 Team Leader 提示词分工策略并新增 sleep wait_sub_agent_output_ids
2026-07-15 14:55:14 +08:00
ce92697181
feat(multi_agent): add formatters and structured rendering for multi-agent tools
2026-07-14 22:14:55 +08:00
571ed6c81f
fix(sub-agent): 修复传统模式 terminate 后子智能体仍继续调用工具的问题
...
- _call_model 中硬取消时直接抛出 CancelledError,避免返回半成品 tool_calls
- 软停止时仍优雅 break,后续由 _run_loop 丢弃半成品并进入 idle
- 保持 _mark_task_done 不覆盖 terminated 状态
- 侧边栏当前对话运行态标记修复保留
2026-07-14 20:37:57 +08:00
ae70e4902e
refactor(stop-button): 拆分停止按钮和后台任务控制
...
停止按钮现在只停主智能体,与后台任务无关。
- 后端 cancel_task 简化:移除两段式判断、force_stop参数、is_ma_mode分支
- 删除 _force_stop_multi_agent 方法
- 新增 /api/sub_agents/stop_all 接口(mode=terminate/soft_stop)
- 前端 stopTask 移除 forceStop 概念,只取消主智能体
- 取消期间不再二次点击终结子智能体
子智能体停止按钮:
- InputComposer state bar 加'x个子智能体运行中'按钮
- 独立浮层显示,不依赖 git 栏(参考 askuser 方案)
- 点击传统模式弹窗终结;多智能体弹窗软停止
- App.vue 新增 handleStopAllSubAgents 调 ui.confirmDialog
后台指令停止按钮:
- LeftPanel 后台指令标签右边加停止按钮
- 仅当 panelMode=backgroundCommands 且存在运行中后台指令时显示
- 调 backgroundCommandStore.stopAllCommands 无二次确认
showStopIcon 只看主对话 streaming 状态:
- 后台任务在跑但主对话空闲时显示发送按钮
- 多智能体 / 传统模式统一处理
子智能体 store 加 stopAllAgents(mode) action 调新 API
useLegacySocket task_stopped handler 简化:
- 移除 multi_agent_reloaded 重载
- 移除'再次按下停止按钮以结束后台任务'提示
- 保留 has_running_multi_agent/sub_agents 用于 taskInProgress 判定
清理调试日志:[TaskCancel][stop_debug], [STOP_DEBUG] 全部去掉
保留 ma_debug 框架用于多智能体调试
2026-07-14 18:34:56 +08:00
30bfb79cbd
wip(multi-agent): 停止按钮软停止链路调试日志+对话切换500修复+子智能体进度面板+多智能体软停止机制
2026-07-14 17:50:15 +08:00
4fcd0ccc4d
feat(multi-agent): 子智能体系统升级
...
- prompt改造:子智能体注入AGENTS.md/执行环境/工作区信息/skills/项目记忆
- 工具增加:read_skill/recall_project_memory/todo_create/todo_update_task/save_webpage
- 上下文压缩:深度压缩机制,记录current_context_tokens,默认150k阈值可配置
- 模型升级:sub_agent_models.json支持thinkmode_status/extra_parameter,与主智能体对齐
- 角色管理三层结构:源码树预设multi_agent_roles/ + 运行态host/web预设 + web按用户隔离
- 启动同步:initialize_system调用sync_preset_roles同步预设到host和web运行态
- 模式判断:API用session.host_mode,工具用data_dir路径判断,不依赖IS_HOST_MODE
- 前端:个人空间新增子智能体管理页(角色CRUD/压缩阈值/模型选择),复用个人空间样式
- 入口改造:登录页移除多智能体按钮,QuickMenu加模式切换项,运行中对话禁止切换
- 工具调整:多智能体模式create_sub_agent去掉timeout/deliverables_dir参数
- skill禁止:sub-agent-guide在多智能体模式下禁止阅读
- .agents/统一为.astrion/路径修复
2026-07-14 02:28:45 +08:00
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
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
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
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
19746e67d3
feat(personalization): 将回答时必须考虑的信息从条列式改为大段文字输入
2026-07-10 15:40:18 +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
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
ae5676cd30
feat(ui): add assistant status avatar
2026-07-04 22:33:00 +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
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
e90610ed05
fix(frontend): 修复刷新后AI等待提示与终端侧边栏重复问题
...
- 修复模型调用工具后刷新页面,AI回复头部等待提示文字再次出现的bug
- restoreTaskState 根据 hasAssistantContentEvent 精确设置 awaitingFirstContent
- handleAiMessageStart 从头重建时保留 restoreTaskState 的设置
- handleToolStart 兜底清除 awaitingFirstContent
- 修复刷新页面后终端侧边栏已有内容重复显示绿色箭头与输入内容的bug
- 后端 get_snapshot/get_terminal_output 返回 last_event_time
- 前端 TerminalPanel 基于 last_event_time 对 terminal_output 事件去重
2026-06-22 20:35:00 +08:00
f44c09a7ce
fix(search): 移除 web_search 的 Tavily AI 摘要
2026-06-22 00:18:29 +08:00
b76708de13
fix(sub_agent): add missing datetime import in toolkit.py
2026-06-21 01:50:55 +08:00
f661dc6456
refactor(server,modules,utils,frontend): split oversized modules into packages and fix regressions
...
- Split server/chat.py, server/status.py, server/tasks.py into sub-packages
- Split utils/context_manager.py, utils/conversation_manager.py into mixin packages
- Split modules/file_manager.py, persistent_terminal.py, terminal_ops.py, mcp_client_manager.py into packages
- Split core/main_terminal_parts/context.py into base + mixins
- Split static/src/app/methods/{ui,message,upload,taskPolling,conversation} into sub-modules
- Fix flattened method exports, dynamic import paths, missing cross-module imports
- Add missing permission/network/execution mode constants and _PERMISSION_MODE_LABEL
- Update AGENTS.md, CLAUDE.md and project memories to reflect new structure
2026-06-20 15:54:48 +08:00
7b683ab390
fix(sub_agent): export TERMINAL_STATUSES in package __init__
...
fix(api_client): classify httpx.RemoteProtocolError as connection_error
2026-06-20 12:15:18 +08:00
9ed956518c
refactor(sub_agent): 子智能体从 Node.js 子进程改为主进程内 Python 协程
...
- 重写子智能体执行核心,不再启动 easyagent Node.js 子进程
- 新增 modules/sub_agent/ 包集中管理子智能体逻辑
- 工具调用复用主进程 WebTerminal.handle_tool_call,自然经过沙箱/容器链路
- 子智能体模型独立读取 ~/.agents/<mode>/config/sub_agent_models.json
- 支持 8 个工具:read_file/write_file/edit_file(replacements+replace_all)/run_command/web_search/extract_webpage/search_workspace/read_mediafile
- 修复子智能体进度弹窗:标题颜色、write_file 显示、过滤非 progress 条目、统一滚动条样式
- 更新 AGENTS.md / CLAUDE.md 子智能体描述
- 新增 test/test_sub_agent_regression.py 回归测试
2026-06-20 00:26:45 +08:00
a212a0076c
feat: support setting default workspace/project from frontend
...
- Add set_default_host_workspace() and /api/host/workspaces/set-default
- Add default_workspace_id persistence in UserManager and /api/projects/set-default
- Add 'Set as default' button in HostWorkspaceManageDialog
- Sync default badge in LeftPanel workspace list
- Update all workspace/project APIs to return real default_workspace_id
2026-06-19 21:48:24 +08:00
2766a8ab57
fix(sub-agent): 修复网络受限时无法创建子智能体,并修复详情页只显示最近一次工具调用的问题
2026-06-19 20:23:44 +08:00
9e4b0bdb97
fix: allow WebTerminal init without OCR API key (openai>=2.40 requires key)
2026-06-19 01:35:39 +08:00
c2d460a706
feat: 宿主机模式网络沙箱
...
- macOS sandbox-exec profile 支持 network_permission 参数 (restricted/full/none)
- backend: 透传网络权限至 run_command / terminal_session / sub_agent / background_command
- 后台 run_command 接入沙箱执行
- 自动审核模式兼容网络权限报错 markers
- 运行时切换网络权限通过 pending 机制 + user 消息通知
- 提示词注入网络状态 (仅沙箱模式)
- 前端权限菜单新增网络权限组 (受限/完全开放)
- direct 模式下网络权限组变灰禁用
- settings.json 默认 HOST_SANDBOX_NETWORK_PERMISSION=restricted
2026-06-19 00:22:30 +08:00
f31f8d6fd7
feat(host): host 模式同时加载 host/ 和 web/ 用户数据
...
- paths.py: 新增 IS_HOST_MODE / WEB_DATA_DIR / WEB_USER_SPACE_DIR
- user_manager.py: host 模式合并两处用户列表与工作区
- 已有 web 工作区直接复用,新数据写入 host/
- 更新 AGENTS.md / CLAUDE.md 文档
2026-06-16 22:39:32 +08:00
f43025047e
refactor(config): 统一配置源,迁移数据到 ~/.agents/agents/
...
- config/paths.py: data_root 改为 ~/.agents/agents,config/ 提至根目录共享
- config/__init__.py: 统一加载 .env + settings.json,注入 legacy 环境变量
- 移除 4 处独立 .env 读取 (auth/model_profiles/api_client/chat_flow/balance)
- 新增 docs/config_refactor_plan.md 完整改造计划
- 数据已从 ~/.agents/host/ 迁移至 ~/.agents/agents/
2026-06-13 21:37:02 +08:00
dcb25dfe89
fix: 堆叠块深色hover不可见 & 底部块高度偏差 & 新增隐藏边线开关
...
- 深色模式 hover 修复:用 !important 覆盖 _overlays 中的 surface-panel 规则,使用 --hover-bg(6%白) 对齐对话列表 hover
- 底部块高度修正:shellHeight = targetShell + 2 补偿 border-box 下内容区裁剪
- 深色模式运行横条改为白色(var(--text-primary))
- 新增隐藏边线开关:后端 PersonalForm 持久化 stacked_hide_borders,前端条件渲染开关(仅堆叠模式可见)
2026-06-10 19:18:29 +08:00
3abbf30422
feat(admin): 管理员密码管理功能,支持搜索用户名/邮箱重置密码
2026-06-10 17:41:21 +08:00