|
|
e4f8f91ff9
|
docs: 沙箱平台口径更新——macOS/Windows 已实测,Linux 未测试未适配暂不可用
Co-authored-by: Astrion powered by Kimi-K3 <astrion-agent@users.noreply.github.com>
|
2026-09-04 10:57:04 +08:00 |
|
|
|
1e3e6e2f6c
|
chore: 官网内容移出本仓库(website-design/、website-content/ 停止追踪)
官网已独立为 astrion-website 仓库(git.cyjai.com/JOJO/astrion-website),
线上 https://astrion.cyjai.com。本仓库不再维护官网内容。
Co-authored-by: Astrion powered by Kimi-K3 <astrion-agent@users.noreply.github.com>
|
2026-09-04 08:50:07 +08:00 |
|
|
|
fe7896e29f
|
feat(settings): 默认权限模式改为批准、消息流默认极简模式
- personalization_manager:default_permission_mode 默认与 sanitize 兜底 → approval;block_display_mode → minimal
- stores/personalization.ts:同步默认值、缓存加载兜底与一次性迁移条件
- 快速模式描述「低思考」→「无思考」(中英 appCore 同步)
Co-authored-by: Astrion powered by Kimi-K3 <astrion-agent@users.noreply.github.com>
|
2026-09-04 03:02:31 +08:00 |
|
|
|
a1c9ac565b
|
fix(config): 补导出 MAX_MESSAGE_CHARS,修复创建任务 ImportError
1a4e5baa 新增该常量及两处 from config import 引用,但漏加入
config/limits.py 的 __all__,而 config/__init__.py 以 import * 聚合,
导致 /api/tasks 与 api_v1 发消息时惰性 import 必炸。
|
2026-09-02 23:58:19 +08:00 |
|
|
|
08f7adb0fd
|
fix(containers): 配额只统计 docker 句柄,修复 host 模式工作区列表 503
- ensure_container 的全局/每用户配额闸门仅在创建 docker 句柄时执行,
host 句柄(会话标识,不占容器池)不再计入任何配额,修复 host 模式
下第 4 个工作区起 GET /api/conversations 返回 503 的问题
- _has_capacity / has_capacity 全局上限计数同步只统计 docker 句柄
- MAX_ACTIVE_CONTAINERS_PER_USER 默认值 3 -> 8
- admin 面板 available_slots 展示对齐为 docker 句柄计数
|
2026-09-02 23:39:42 +08:00 |
|
|
|
0522414a6c
|
fix(security): 第二轮全量 API 审计修复(角色穿越/宿主 GUI/限流收口)
背景:对全部 206 个 HTTP 路由 + SocketIO 事件逐个排查(主审 + 2 个子
智能体初筛后复核),另按用户要求专项审计前端渲染面(无新发现)。
完整报告见 _experiments/security_audit_2026-09-02/REPORT.md 第八章。
新漏洞修复:
- 多智能体角色 role_id 路径穿越(高):save_custom_role 直接拼接
"{role_id}.md",POST body 的 role_id 无任何校验,可 ../ 穿越覆盖
其他用户角色文件(跨用户提示词注入),本地已复现写入成功。
修复:新增 validate_role_id 白名单(^[a-z0-9][a-z0-9_-]{0,63}$),
role_store 存储层 + multi_agent API 层(POST/PUT/DELETE)双保险
- open-in-file-manager 漏 _is_host_mode_request 检查(同文件其余三个
端点都有):docker 模式下任意登录用户可触发宿主 GUI 弹窗+探测路径。
修复:补 host 检查,docker 下 403
- /api/admin/secondary/verify 无限流且 CSRF 豁免:admin 会话前提下
可在线爆破二级密码(纵深防御缺失)。修复:5 次/300s 用户维度限流
- WS client_chunk_log / client_stream_debug_log 无连接认证检查且
无限流(日志写盘放大面)。修复:必须已认证连接 + 30 次/60s 滑窗
+ 桶表万级上限回收
- _get_conversation_file_path 直接拼 "{id}.json"(conv_ 前缀恰好阻碍
直接穿越,属防御深度缺失)。修复:^conv_[A-Za-z0-9_-]+$ 白名单,
已核验全部 5 个调用点与 temp_ 前缀排除路径不受影响
- /api/conversations/media/<id> 采信 entry mime_type 并 inline 返回。
修复:text/html、image/svg+xml、xhtml 强制 octet-stream + attachment
(与 file/content 的 SVG 策略对齐,防存储型 XSS 一致性收口)
- /api/status 每次心跳返回宿主绝对 project_path(泄露系统用户名与
目录布局)。修复:docker 模式脱敏为容器视角 /workspace,host 不变
LLM 成本攻击止血(第一轮发现 5 的端点级落地):
- POST /api/tasks(GUI 发消息主入口):30 次/60s/user
- POST /api/conversations/<id>/compress(调 api_client.chat 做摘要):
5 次/300s/user
- 注:对话回顾 review 端点实为纯本地 Markdown 生成(不调 LLM),
其「发送给模型」模式走 /api/tasks,已被上述限流覆盖;
按 token 计费的完整配额方案仍遗留待产品决策
验证:全部 py_compile 通过;冒烟测试 6/6;validate_role_id 8 个恶意
样本全拒 + 3 个合法样本放行 + 穿越写入拦截回归通过;conv_id 白名单
4 组样本符合预期。端点级行为待服务重启后实测。
Co-authored-by: Astrion powered by Kimi-K3 <astrion-agent@users.noreply.github.com>
|
2026-09-02 19:37:34 +08:00 |
|
|
|
bc46250ef4
|
feat(admin): admin 独立入口安装 i18n
apiMain / customToolsMain / customToolsGuideMain / main / policyMain
五个 admin 独立入口统一 installI18n,使管理后台页面接入前端多语言体系。
(存量改动随安全修复一同入库,与安全审计无关)
Co-authored-by: Astrion powered by Kimi-K3 <astrion-agent@users.noreply.github.com>
|
2026-09-02 18:31:10 +08:00 |
|
|
|
1a4e5baa23
|
fix(security): Docker 多用户模式全面安全加固(安全审计修复)
威胁模型:拥有普通账号的已登录用户攻击服务器。完整审计报告见
_experiments/security_audit_2026-09-02/(不入库),含实测复现记录。
严重/高危修复:
- 彻底移除文件夹打包下载(/api/download/folder 端点删除,gui/api_v1
目录下载分支改 410):文件型符号链接会被宿主进程解析,实测可读宿主
任意文件(含 settings.json 全部 LLM 密钥),删除比补校验更彻底
- XFF 伪造防护:get_client_ip 仅信任 ASTRION_TRUSTED_PROXIES
(默认空=不信 XFF);登录新增账号维度锁定(5 次失败锁 300s);
注册邀请码加爆破锁定;限流桶/失败表加 2 万键上限+GC 回收
- auth_debug.log 接入大小轮转;/api/client_debug_log 加限流+长度截断
- /host-login 增加 LINUX_SAFETY 检查且仅回环地址可用
容器加固:
- 默认 cpus=1 / memory=1g,新增 pids-limit=512、memory-swap、
no-new-privileges
- 新增每用户容器配额 MAX_ACTIVE_CONTAINERS_PER_USER(默认 3),
防止单用户占满全局容器池
api_v1:
- prompts/personalizations 的 name 加白名单校验(^[A-Za-z0-9_-]{1,64}$),
修复路径穿越写入;对话元数据中的引用名同步加白名单
- workspaces/conversations/messages/upload 四端点加用户维度限流
- 消息体加 MAX_MESSAGE_CHARS 上限(默认 200000,/api/tasks 同步)
- _path_within 加分隔符边界(修复 startswith 前缀碰撞)
其他:
- SVG 预览强制 application/octet-stream(修存储型 XSS 漏网)
- monitor_snapshot 缓存键加 username 维度(修跨用户快照读取)
- ensure/delete_workspace 加 workspace_id 白名单+父目录二次核验
- delete_folder 拒绝删除工作区根(crud_mixin 与容器代理同步修)
- GuiFileManager 死代码加名称校验防复活
- admin_dashboard 静态壳非 admin 访问一律 404
- /api/app/apk/latest 加登录校验+限流(原未认证可拉 133MB)
有意未修(见报告 7.3 遗留清单):容器 egress 过滤(部署层)、
--cap-drop ALL(怕破坏容器内工作流,已先上 no-new-privileges)、
API 用户/子智能体 LLM 按 token 计费(待产品决策)、str(exc) 收口、
WebSocket 限流、network_permission=restricted 容器语义。
验证:全部文件 py_compile 通过;冒烟测试 6/6 通过;关键新逻辑
(名称校验/路径边界/容器代理删除防护/限流回收)已单测级验证;
端点级行为待服务重启后实测复核(清单见报告 7.5)。
Co-authored-by: Astrion powered by Kimi-K3 <astrion-agent@users.noreply.github.com>
|
2026-09-02 18:31:00 +08:00 |
|
|
|
93628f49fc
|
chore(website): 归档官网文档内容与设计素材
- website-content/:官网 10 篇文档内容 + README
- website-design/:官网设计稿、动画实验、预览图与资源
- 根目录官网截图两张
- .gitignore 忽略 website-design/exp/static/dist 构建产物(7.1MB)
|
2026-09-02 14:38:51 +08:00 |
|
|
|
97b066d1cc
|
docs: 添加大模型应用开发学习笔记
|
2026-09-02 14:37:40 +08:00 |
|
|
|
f26e633611
|
fix(overlay): 路径授权弹窗标题补主题色,避免深色模式下不可见
|
2026-09-02 14:37:40 +08:00 |
|
|
|
e2ba0bdda0
|
feat(chat): 引用弹层多来源改为分页卡片,头部点击可打开文件
- 多引用不再显示列表,统一为单卡片渲染(标题/URL/摘要/图片/底部操作)
- 顶部右侧左右箭头+页码切换(箭头沿用个人空间展开菜单 chevron 画法)
- 打开弹层即并发预取全部文件条目摘要,切换不闪烁(in-flight 去重)
- 多引用头部点击可在侧边栏打开当前文件
|
2026-09-02 14:35:39 +08:00 |
|
|
|
4496726009
|
fix(chat): citation 图标改为字母兜底+多源竞速,修复国内网络空白
favicon 源原仅 google s2,国内被墙时请求挂起、onerror 兜底不触发,
图标长期空白。改为:
- 立即渲染域名首字母兜底,任何网络环境不留空白
- google / yandex / icon.horse 三源 2s 窗口并行探测,按可信度决策:
icon.horse 对无图标站返回 200+灰色字母占位图(不可信),仅在
可信源(google 404 / yandex 1x1 可识别)佐证成功时才采纳其高清图;
无可信源成功则保持字母
- 域名级缓存,同一域名全局只探测一次
- 移除内联 onerror 字符串拼接,顺带删除 popover 死代码 escapeText
|
2026-09-02 10:53:03 +08:00 |
|
|
|
9220f3a3e7
|
fix(personalization): 修复手机版下拉菜单不可见(transform 导致 fixed 包含块偏移)
手机端(≤760px)进入个人空间子页后,.settings-redesign-layout 的
transform: translateX(-50%) 使其成为 position:fixed 浮动菜单的包含块,
JS 按视口坐标定位的菜单被整体左移出屏幕。改为 position:relative;
left:-100% 实现等价平移,不创建 fixed 包含块,菜单恢复视口定位。
Co-authored-by: Astrion powered by DeepSeek-V4-flash <astrion-agent@users.noreply.github.com>
|
2026-09-02 08:55:48 +08:00 |
|
|
|
84c40e505e
|
feat(android): 恢复 app 源码追踪——域名构建期注入脱敏 + 应用更名 Astrion
- HOME_URL 改为构建期注入(BuildConfig):-P 参数 > local.properties > 环境变量 > 占位符
- network_security_config.xml 删除冗余 domain-config(base-config 已全局禁明文)
- README 重写:移除真实域名,补充注入方式说明
- app_name 更名为 Astrion;链接外跳系统浏览器(1.0.42)+ 1.0.43 版本
- AGENTS.md §8 补充版本检测链路说明;.gitignore 解除 android-webview-app 排除
Co-authored-by: Astrion powered by Kimi-K3 <astrion-agent@users.noreply.github.com>
|
2026-09-02 07:48:36 +08:00 |
|
|
|
92e4931408
|
fix(server): 修正宿主机免登录模式文件服务路由的工作区解析
/user_upload/ 与 /workspace/ 路由此前误用 user_manager 的
users/<user>/projects/<id> 结构,宿主机免登录模式下解析到空工作区,
导致已上传文件 404(show_image 引用上传目录图片加载失败)。
改为与 get_user_resources 同源的 host_workspaces.json 解析。
Co-authored-by: Astrion powered by Kimi-K3 <astrion-agent@users.noreply.github.com>
|
2026-09-02 01:08:31 +08:00 |
|
|
|
b3158913ef
|
feat(frontend): 内容图片全站接入灯箱预览,关闭按钮统一为 CloseButton 组件
- 新增 document 级事件委托(bootstrap.ts setupImagePreviewDelegation),
show_image 卡片 / Markdown 正文图 / view_image / ocr_image 工具结果
统一支持点击灯箱预览;可预览图片加 zoom-in 光标
- show_file 图片卡片由打开新标签页改为灯箱预览,并解除 Android 端禁用
- CitationPopover 引用缩略图支持点击预览
- renderShowFileCard 独立 app 实例补挂 i18n 插件(修复 $t 不可用隐患)
- 新建 common/CloseButton.vue(boxed 圆角方 hover 底 / bare 裸字形双变体),
替换全站 25 处形态各异的关闭按钮(圆形/圆角方/裸字符/macOS 红点等 8 种风格),
修复 ImagePicker/VideoPicker/路径授权弹窗原本无 hover 反馈的问题
- showHtmlFullscreen 顶栏按钮 CSS 对齐 boxed 形态(动态 DOM 无法复用组件)
- 清理 10+ 份散落重复的关闭按钮旧样式与 .mobile-overlay-close 死代码
Co-authored-by: Astrion powered by Kimi-K3 <astrion-agent@users.noreply.github.com>
|
2026-09-02 01:07:57 +08:00 |
|
|
|
e6d8f194d2
|
feat(chat): 行内引用胶囊(inline citations)
- 模型输出 【cite:src_xxx】/【file:相对路径】 标记,渲染为可交互来源胶囊(悬停延迟开/点击固定/滚动收起)
- 后端:modules/citations.py 注册表与落库校验(剥离幻觉 id 与不存在的文件);web_search/extract_webpage 注册来源并在工具结果带 citation 信息;assistant 消息落库时 finalize 并挂载 message.metadata.citations
- 前端:marker 输出瞬间即渲染(工具结果查表 + 文件 token 自解析),task_complete 后权威裁决与富化;弹层支持网页摘要/文件内容片段/图片预览,文件头部点击打开右侧预览面板,宿主机模式可在文件管理器中打开
- prompt:三份系统提示加入引用格式与规则(提到文件名不等于引用;图片等二进制文件同样可引用)
|
2026-09-01 22:31:37 +08:00 |
|
|
|
a3fa5e59c6
|
feat(sandbox): Docker 只读执行叠加 Landlock 进程级只读域,封死 world-writable 绕 DAC 漏洞
Co-authored-by: Astrion powered by Kimi-K3 <astrion-agent@users.noreply.github.com>
|
2026-09-01 15:17:23 +08:00 |
|
|
|
8da53635c4
|
refactor(personalization): 重新归类个人空间选项所属页签
- 数据管理页签删除,用量统计并入常规页
- 审核主动取证/续命轮数/token上限移至审核智能体页
- 使用自定义称呼移至个性化页,标题生成模型移至模型页
- 沙箱环境移至工作区与权限页
- 删除个性化页重复渲染的边线/高度开关
- 拆分撞车文案:默认思考模式(模型页)/默认工作模式(工作区页)
- 教程用量步骤锚点改指常规页
|
2026-09-01 11:53:29 +08:00 |
|
|
|
deaa1560a5
|
feat(personalization): 个人空间支持配置对话标题生成模型
新增 title_model 配置,复用子智能体模型库条目生成对话标题:
- 个人空间「常规」页签新增「标题生成模型」下拉菜单(复用子智能体
模型列表,general 页签挂载时加载)
- 标题生成改为使用所选子智能体模型 profile;未配置时回落模型库
default_model,移除 AGENT_TITLE_* 环境变量覆盖与主智能体默认
模型回退(个人空间为唯一配置来源)
- personalization 白名单注册 title_model 键(默认值 + sanitize)
|
2026-09-01 09:46:05 +08:00 |
|
|
|
55b3ee44b7
|
feat(sandbox): Windows 沙箱环境检测弹窗与一键安装向导
|
2026-09-01 01:01:09 +08:00 |
|
|
|
6c0a32330c
|
feat(stream): 流式断流「清除重来」自动重试机制
后端↔API 流式连接在输出中途断开时,旧行为直接终止任务。现改为:
- 网络类断流(status_code 为空)有接收也重试,与零接收共用 5 次
额度、间隔 10s;4xx 业务错误保持原逻辑
- 重试前发 stream_reset 事件,前端清除本轮已渲染的半截内容
(思考块含已闭合的/文本/preparing 工具条目),显示「连接中断,
正在重试(第 n/5 次)…」占位,socket 与 REST 轮询双通道生效
- 修复断流作废轮 usage 重复计数
- 子智能体同构改造:网络断流重试耗尽转 idle 汇报 Team Leader,
重试前将已推送的「正在调用」工具条目标记 cancelled
|
2026-08-31 19:58:43 +08:00 |
|
|
|
8fc2d559be
|
fix(markdown): 行内数学公式匹配改用 Pandoc 规则,避免货币 $ 误配对
开 $ 后非空白、闭 $ 前非空白、闭 $ 后不跟数字,防止 "$10 ≈ ¥72 | $5"
这类相邻货币符号被误配对成公式——配对区间若跨过表格 | 分隔符,生成的
占位 span 会被表格解析拦腰切断,显示为原始文本。
|
2026-08-31 18:47:18 +08:00 |
|
|
|
c4f5ef8c56
|
fix(ui): 手机端权限切换菜单防溢出,溢出时改为屏幕水平居中
锚点在输入栏左下而菜单较宽(250/350px),right:0 右对齐导致菜单左缘算出负数跑出屏幕外。打开时测量锚点位置与菜单宽度:右对齐不溢出屏幕左缘则保持现状;溢出则换算水平偏移让菜单相对屏幕居中,垂直方向保持锚点上方不变。仅 ≤768px 断点生效,监听 resize 重算
|
2026-08-30 23:36:08 +08:00 |
|
|
|
b55f4a811d
|
feat(security): 终端读写身份创建时钉死,权限跨界切换销毁重建
- 宿主机持久终端支持只读身份:build_host_sandbox_shell_plan 三平台(macOS Seatbelt 只读 profile / Linux ro-bind / Windows WSL 只读挂载)统一 readonly 参数;macOS 只读 profile 抽为 _macos_readonly_profile_for_workspace 与只读 run_command 共用
- docker_terminal_readonly_enabled 泛化为 terminal_readonly_enabled(docker uid 与宿主机沙箱同一判定:非 unrestricted 即只读身份)
- 权限跨界切换(受限档⇄unrestricted)销毁现有终端会话(close_all),受限档内部互切不销毁;与执行环境切换销毁策略一致
- terminal_input 工具层全面放开:只读白名单加入、审批集合移除、approval/auto_approval 命令文本分流删除;受限档终端内写入由系统 EPERM 兜底,审批写入走 run_command 两段式
|
2026-08-30 23:06:33 +08:00 |
|
|
|
8257e4d34d
|
feat(security): 沙箱只读真强制与权限模式边界收敛
- docker:只读/审批档 run_command、后台命令与持久终端改用非特权 uid(10001) 执行角色,内核 DAC 强制只读,取代文本特征识别;Dockerfile 加固(agent 用户 / git safe.directory / 去 setuid)
- macOS:只读与可写沙箱 profile 统一为白名单读模型(deny default + 系统目录/工作区/路径授权),修复 deny 顺序导致的工作区 .env 实际可读漏洞;可写 profile 白名单化后审批不再放大读取,越界读取唯一途径为路径授权
- 权限模式:受限档(readonly/approval/auto_approval)与 direct 执行环境硬互斥——进入受限档压回沙箱并记录,切回 unrestricted 恢复,存量受限+direct 对话加载自愈矫正
- 配置:路径授权来源收敛为 host_sandbox_policy.json + 环境变量两个通道(移除 settings.json 映射)
- 修复:新建对话权限模式被个性化默认值覆盖、/new 切只读后回落无限制的继承 bug
- 原生文件工具读边界与沙箱白名单同源对齐
|
2026-08-30 22:07:14 +08:00 |
|
|
|
f51a46bf9b
|
fix(ui): 工作区切换器层级提升至遮罩之上,直板机窄屏居中悬浮
- ws-switcher/ws-menu-floating 均为 Teleport 到 body 的 fixed 浮层,
z-index 1500/1600 低于移动端侧边栏遮罩 mobile-panel-overlay(2000,
带 backdrop-filter 模糊),手机端在侧边栏打开切换器被压在模糊层下;
提升至 2300/2400(与对话项菜单同级、二级菜单高于父面板)
- 视口 < 480px(直板机竖屏)时面板右侧与入口下方均无合适空间,
改为屏幕居中悬浮;加 max-width: calc(100vw - 16px) 防极端窄屏溢出
Co-authored-by: Astrion powered by Kimi-K3 <astrion-agent@users.noreply.github.com>
|
2026-08-30 10:59:45 +08:00 |
|
|
|
395a9467ec
|
fix(ui): 移动端顶栏留白挪到滚动容器,根治 backdrop-filter 无内容可模糊
- chat-container--mobile 的 padding-top 会把滚动区整体下推(父容器 overflow:hidden),
fixed 顶栏的三级模糊条带背后只剩纯色背景,移动端模糊失效只剩颜色渐隐层
- 留白改到 .chat-container--mobile .messages-area(52px=44 顶栏+8 间距),
与桌面端 has-title-ribbon 机制对齐,消息滚动时可进入顶栏背后
- monitor 模式无滚动区,保留容器级留白防面板被顶栏遮盖
- 顺带清理媒体查询外永不生效的 52px 死代码(断点与 isMobileViewport 同源)
Co-authored-by: Astrion powered by Kimi-K3 <astrion-agent@users.noreply.github.com>
|
2026-08-30 10:03:54 +08:00 |
|
|
|
db2c375412
|
fix(ui): 顶栏模糊改三级渐进条带,根治新版内核 mask+backdrop-filter 同元素失效
- mask-image 与 backdrop-filter 同元素时模糊被新版浏览器内核静默丢弃(实测确认)
- 桌面 conversation-ribbon / 移动 mobile-panel-topbar 各加 __blur 元素:
本体 blur(14px) + ::before blur(5px) + ::after blur(1.2px) 三级递减,
模拟原 mask 渐隐模糊,无可见下边界
- 原 ::after 颜色渐隐层保持不变,盖在最上溶掉条带阶梯感
Co-authored-by: Astrion powered by Kimi-K3 <astrion-agent@users.noreply.github.com>
|
2026-08-30 01:34:41 +08:00 |
|
|
|
d08cc693b3
|
fix(ui): MarkdownRenderer 内建列表样式,根治非聊天容器列表偏左
- 删除 _resource-panel.scss 中仅绑定 .text-content 容器的列表样式补丁
- 列表样式(padding-left 缩进/list-style)迁移至 MarkdownRenderer 自身,任何容器(聊天/批准弹窗/预览等)渲染一致
- 解决计划批准弹窗等非 .text-content 容器内列表 marker 贴左、文字无缩进的问题
|
2026-08-30 00:33:54 +08:00 |
|
|
|
a30b03fb93
|
fix(i18n): 未登录 401 返回双语文案「登录状态已过期,请重新登录」
- auth_helpers.py / app_legacy.py 的 api_login_required 401 响应改用 tr('auth.session_expired')
- 新增 i18n key:zh 登录状态已过期,请重新登录 / en Your login session has expired. Please log in again.
|
2026-08-30 00:33:43 +08:00 |
|
|
|
4c3d8cedc7
|
feat(ui): 计划批准弹窗支持最小化关闭,状态栏可恢复处理
- PlanApprovalDialog windowbar 新增关闭(X)按钮,点击后弹窗收起不打扰
- InputComposer 底部状态栏新增「有待批准的计划」按钮(对齐等待回答问题交互),点击恢复弹窗
- floatingStatusVisible 可见性判断纳入计划批准最小化状态,修复弹窗收起后浮栏不渲染的问题
- 批准解决后自动复位最小化状态,避免按钮残留
|
2026-08-30 00:33:34 +08:00 |
|
|
|
89bcca744d
|
feat(sub_agent): skill 与提示词允许按任务边界修改核心代码
原「严格禁止子智能体修改代码」改为视情况而定:大规模、重复性高、边界与任务明确的修改可由子智能体承担,需明确工作范围防冲突,最终由主智能体验证。同步更新运行态 skill 副本。
Co-authored-by: Astrion powered by DeepSeek-V4-Flash <astrion-agent@users.noreply.github.com>
|
2026-08-29 23:12:15 +08:00 |
|
|
|
af01030424
|
feat(quickdock): 子智能体时间线支持压缩提示与状态图标右置
上下文压缩发生时在时间线对应位置显示提示条(layers 图标 + 轮次);工具栏去掉右侧完成/进行中文字,状态图标(转圈/对勾/叉)移至行尾。
Co-authored-by: Astrion powered by DeepSeek-V4-Flash <astrion-agent@users.noreply.github.com>
|
2026-08-29 23:12:05 +08:00 |
|
|
|
10a2763f00
|
feat(sub_agent): 交付目录改为可选,未指定时自动创建
deliverables_dir 移出必填:留空时自动在 .astrion/sub_agent_results/ 下创建(撞名自动加后缀),最终路径作为工具结果返回;显式传入已存在目录仍报错。
Co-authored-by: Astrion powered by DeepSeek-V4-Flash <astrion-agent@users.noreply.github.com>
|
2026-08-29 23:11:54 +08:00 |
|
|
|
04770e0af9
|
fix(sub_agent): finish_task 补终态进度事件,修复活动窗口永久转圈
finish_task 在模型流式阶段会 emit「calling」进度事件,但执行分支直接收尾不补终态,导致前端活动窗口该条目永远停留在调用中。现在补 emit status=completed。
Co-authored-by: Astrion powered by DeepSeek-V4-Flash <astrion-agent@users.noreply.github.com>
|
2026-08-29 23:11:45 +08:00 |
|
|
|
f5bfab4056
|
feat(settings): 个人空间重构为紧凑窄版布局,完善移动端适配
- 卡片窄化至 648px、圆角 14px、侧栏 184px,控件行高紧凑化
- 4429 行主文件拆分为 13 个 tab 子组件 + 共享样式表
- 移动端(≤760px)改为 iOS 设置式「列表→子页」导航
- 修复内容区缺 flex:1 导致设置行无法占满
- 修复交流语气行 label 被 grid auto 列挤压成竖排
- 修复移动端弹窗顶栏被主界面顶栏(z-index 1500)遮挡
- 窄屏禁用选项 hover/active 视觉态与 tab 切换过渡动画
- 修复上下文图标 28 viewBox/1.7 描边导致的视觉偏小偏细
|
2026-08-29 21:58:53 +08:00 |
|
|
|
1ca5e15f8e
|
fix(ui): 末条消息复制/分支按钮加桥接热区,修复鼠标滑向按钮时 hover 断链收回
Co-authored-by: Astrion powered by DeepSeek-V4-Flash <astrion-agent@users.noreply.github.com>
|
2026-08-29 15:28:07 +08:00 |
|
|
|
bc8337ab09
|
feat(ui): 编辑摘要弹窗位置钉死、外部滚动与窗口缩放即关、hover 延迟 600ms 且打开后瞬间切换
Co-authored-by: Astrion powered by DeepSeek-V4-Flash <astrion-agent@users.noreply.github.com>
|
2026-08-29 15:26:39 +08:00 |
|
|
|
2a870c5a35
|
fix(multi-agent): 多智能体对话创建继承 work_mode,/new 切换后新建对话不再回落默认
Co-authored-by: Astrion powered by DeepSeek-V4-Flash <astrion-agent@users.noreply.github.com>
|
2026-08-29 15:26:39 +08:00 |
|
|
|
69c5953fe7
|
fix(i18n): slash 子菜单选项改用 labelKey 渲染,修复显示空白
4aac18f7 将选项结构改为 labelKey/descriptionKey 后,slash 菜单的
工作模式/权限/执行环境/网络四个子菜单仍读取已不存在的 label/description
字段,导致菜单项标签与描述渲染为空。统一改为 t(labelKey)/t(descriptionKey)。
|
2026-08-29 12:43:14 +08:00 |
|
|
|
0b3d98d91b
|
feat(stats): token 统计新增缓存命中追踪与命中率展示
- utils/token_usage.py:usage 归一化补全缓存命中字段提取,覆盖
prompt_tokens_details/input_tokens_details.cached_tokens(OpenAI 系)、
顶层 prompt_cache_hit_tokens(DeepSeek)、顶层 cached_tokens(Kimi/Step)、
cache_read_input_tokens(Anthropic 系)、cachedContentTokenCount(Gemini);
Anthropic 语义下把缓存读/写加回总输入以统一口径,normalize 保持幂等
- 对话级统计新增 total_cached_input_tokens 与 cache_exempt_input_tokens
(首轮/深度压缩后首轮未命中缓存的输入视为冷启动成本,豁免出命中率分母;
压缩通过 cache_cold_start_pending 标记在下一次真实调用时判定)
- token_update 广播与 token-statistics 接口同步携带新字段
- TokenDrawer 面板新增「累积缓存输入」「缓存命中率」(前端按 缓存/(总输入-豁免) 换算)
- 深色模式下「当前上下文」数字由灰色 --accent 改为 --text-primary(白)
- 附 cache_research/ 各厂商缓存字段调研文档(代码注释引用)
|
2026-08-29 12:43:14 +08:00 |
|
|
|
e4fdc82319
|
fix(i18n): 子智能体统计与工具结果摘要补齐 tr() 双语,根治漏网硬编码中文
sub_agent/stats.py 的统计摘要(调用/读写/搜索/网页/指令次数、运行时长、交付目录)与 tool_result_formatter/agent_context.py 的子智能体相关格式化函数此前仍是硬编码中文,英文界面显示中文。新增 sub_agent_stats.* 9 个 key、扩展 fmt_agent2.* 30 个 key;补齐后引用完整性 0 缺失、0 占位符漂移,冒烟 6/6,中英双语自检通过。
|
2026-08-29 10:09:19 +08:00 |
|
|
|
4aac18f7bb
|
fix(i18n): 运行模式/权限/沙箱菜单选项改用 labelKey 动态渲染,切语言即时生效
state.ts 四个选项数组此前在模块顶层用 t() 固化翻译字符串,切换语言后不更新、需刷新页面。改为存 labelKey/descriptionKey,渲染处动态求值(模板 $t / computed t(matched.labelKey)),与 PersonalizationDrawer 既有规范模式对齐。tsc/build/i18n 审计均通过。
|
2026-08-29 10:09:08 +08:00 |
|
|
|
a2cf547400
|
feat(i18n): 后端用户可见消息国际化(zh/en 双语 + ui_locale 偏好持久化)
- 新增 modules/i18n.py:tr() + 进程级语言缓存 + modules/i18n_messages/ 域文案包自动聚合
- 新增 29 个域文案包,共 1153 条双语 key;90+ 源文件 1146 处用户可见消息 tr 化
- ui_locale 存入 personalization.json(用户级共享),前后端双向同步
- 前端匹配点双语兼容(history/shared/ChatArea/taskPolling/upload 等正则)
- 修复语言判等陷阱:审批等待加稳定 code 字段;conversation.py 不存在判等改双语 helper
- 边界:日志/prompt 注入/子智能体工具回填/容器内嵌脚本不迁移
|
2026-08-29 07:58:29 +08:00 |
|
|
|
a92ecfc246
|
feat(i18n): 前端多语言第二波迁移(128 存量文件清零)与体系加固
- 第二波迁移:app/methods、stores、chat、overlay、workflow、shell、
sidebar、auth、composables、utils 等 128 个 baseline 文件全部迁入文案包
- 新增 13 个命名空间:appMessages/appTasks/appUi/appCore/chat/chatActions/
quickdock/stores/overlay/shell/sidebar/auth/utils(zh/en 双侧,DeepString 强校验)
- fix: 个性化「模型与思考」模型下拉误用 $t(option.labelKey) 导致 SyntaxError: 17
(动态 API 数据无 labelKey 字段,改回 option.label 直接渲染)
- 功能性中文(后端消息匹配正则/默认标题判等)统一 \u 转义 + 注释约定,
保持运行时行为不变并通过审计
- common 归并相对时间族(chat/adminApi 重复定义合并,插值参数统一 {n})
- 审计栏杆:LOG_LINE_RE 豁免 socketLog 日志函数
- baseline 清零:此后任何文件新增裸中文直接被 lint 链首拦截
|
2026-08-28 23:47:32 +08:00 |
|
|
|
e04b56d967
|
fix(sub-agent): 深度压缩重建 system 消息包装为 dict,根治压缩后首次模型调用必崩
- _deep_compress_messages 此前把 _rebuild_system_prompt 返回的裸字符串直接
作为 messages[0],压缩后首次模型调用在 _merge_system_messages 的
msg.get("role") 处崩溃('str' object has no attribute 'get'),
任何触发 150k tokens 压缩阈值的子智能体 100% 必崩
- _merge_system_messages 入口增加非 dict 归一防御(包装为 system 消息),
同时避免下游 sanitizer 静默丢弃导致 system prompt 内容丢失
|
2026-08-28 20:12:44 +08:00 |
|
|
|
f9f9032ce5
|
fix(tasks): 用户取消的主任务统一以 stopped 收尾,根治死任务事件重放导致的显示回退
- 收尾不再按 has_bg 分流保持 cancel_requested 等待已废弃的「第二下点击」,
cancel_requested 退化为 cancel_task 到收尾之间的秒级瞬态
- 此前有后台任务时按下停止,任务永久卡在活跃集合,被 bootstrap/running-status
当作最新活跃主任务,前端对账每 2.5s 从事件 0 全量重放死任务事件流,
表现为回复完成瞬间显示回退到旧回复、刷新空白卡死且无效
- cleanup_old_tasks 清理集修正:"canceled" 是从未被赋值的拼写(实际终态为
stopped),改为 {succeeded,failed,stopped,canceled,cancel_requested} 兜底
|
2026-08-28 20:12:20 +08:00 |
|
|
|
7c7201a574
|
feat(i18n): 前端多语言基建(vue-i18n 文案 token 体系 + 审计栏杆)与第一波迁移
- 基建:static/src/locales/ 11 个命名空间×中英双语,zh 为源语言;
en-US 聚合器 DeepString 强校验 key 奇偶;installI18n/useLocale 复刻 theme.ts 模式
- 语言切换:个人空间→外观→界面语言(默认 zh-CN,localStorage 持久化)
- 防回退栏杆:scripts/i18n_audit.mjs(字符级注释剥离状态机)+ baseline 豁免清单,
挂入 npm run lint 链首与独立 lint:text;规范见 doc/frontend/i18n_spec.md(本地)
- 第一波迁移 13 文件约 1400 条:PersonalizationDrawer/toolRenderers/chatDisplay/
InputComposer/admin 全部 6 应用/tutorial/MonitorDirector/WorkflowEditorView
- common 公共词归并:刷新中/保存中/暂无数据/未运行 单一来源
- AGENTS.md 新增 §5.8 文案规范
|
2026-08-28 12:07:03 +08:00 |
|