feat:1、subagent支持skill,mcp;2、@提及支持药丸样式;3、聊天记录滚动时用户提问自动吸顶悬浮能力;4、 Shift+Enter 换行提示#715
Closed
supreme0597 wants to merge 34 commits into
Closed
feat:1、subagent支持skill,mcp;2、@提及支持药丸样式;3、聊天记录滚动时用户提问自动吸顶悬浮能力;4、 Shift+Enter 换行提示#715supreme0597 wants to merge 34 commits into
supreme0597 wants to merge 34 commits into
Conversation
1. 重构 MessageInputComponent.vue 的 contenteditable 内容序列化算法,采用递归树深度优先遍历,智能还原由浏览器自动插入的块级包裹元素(如 DIV、P)和 BR 的折行换行符 (\n) 2. 将 AgentMessageComponent.vue 中消息气泡的 white-space 样式由 pre-line 优化为更高保真的 pre-wrap,防止多余连续空格被合并,原汁原味还原消息排版
1. 更新 AgentInputArea.vue 输入框占位符 (placeholder),明确引导用户通过 @ 提及资源,并使用 Shift + Enter 进行换行 2. 在 MessageInputComponent.vue 发送按钮上增加悬浮提示 (Tooltip),在非 Loading 状态下明示 '发送 (Enter) / 换行 (Shift + Enter)' 快捷键指南,极大提升用户体验
- 在 AgentChatComponent.vue 中引入滚动监听机制,计算并动态展示完全滚出视野的最新用户提问 - 支持点击悬浮条平滑滚动回溯定位至对应问题锚点 - 在 AgentMessageComponent.vue 中为消息框绑定 data-msg-id,确保通过消息 ID 精确查找并解决匹配比对问题 - 增加了美观的毛玻璃质感,并完美兼容自适应暗色模式样式与划入动画
- 恢复用户消息气泡动作按钮(复制、收起、折叠)为圆形实体小球样式,绝对定位悬挂在气泡外部右下角底边(bottom: -20px) - 移除 AgentChatComponent.vue 中冲突的旧全局吸顶提问条组件结构、滚动事件监听及对应 Less 规则 - 保留 props.message.id 变化时的 Observer 重连监听以解决 Vue 消息组件 patch 复用失效的问题
- 修复内容很短的单行消息在吸顶触发时误显向右收起(>)灰色浮球按钮的问题 - 限制 shrink-right-btn 的显示条件为 isStuck && isMultiLine
- 将收起小浮球(shrink-right-btn)绝对定位挂在提问气泡的左下角外面(bottom: -20px; left: 0px) - 默认隐藏(opacity: 0),只有当鼠标 hover 悬浮在提问条/气泡上时才淡入显现,与右下角的复制/控制按钮形成对称美学 - 在吸顶折叠单行模式下,收起按钮自适应平移至单行最左侧内部(left: 0px),并配套增加 message-text 的 padding-left 避让,彻底杜绝文字与按钮重叠
- 移除吸顶折叠(is-collapsed)时在框内左右侧 padding 避让机制,文字在不悬浮时完美填满单行胶囊,消灭多余的视觉空白 - 统一所有状态定位:动作小球(复制、左右收起、折叠)在吸顶折叠时也与普通状态一致,全部作为小浮球绝对定位挂在单行胶囊下的外边缘底侧(bottom: -20px) - 只有在鼠标 hover 提问条/消息气泡时,浮球动作控制栏才优雅淡入显现,保持常态视觉纯净
- 更新 AgentChatComponent.vue 的对话状态控制 - 优化 AgentMessageComponent.vue 对流式卡片与消息的处理
1. 重构输入框药丸组件(MessageInputComponent):移除大块背景色与硬边缘,重塑为无界极简皮肤。实现后缀名自动检测并渲染三色微发光的 CSS 代码迷你高亮行。彻底解决删除键空白问题,实现 Notion 级呼吸向右撑开 Hover 动效。做像素级(Pixel-perfect)垂直对齐纠偏,杜绝亚像素舍入错位。 2. 建立全局独立预览 Modal 体系(AgentFilePreviewModal):解耦原先散落各处的私有 modal 及 Blob 资源管理代码。通过 Pinia 状态建立订阅信号桥梁,实现多入口(药丸、交付件、窄屏树节点)的极致统一预览。 3. 修复关键双 Watcher 重复请求隐患(AgentPanel):添加 useInlinePreview.value 判定守卫,彻底根治宽屏下重复调用文件预览接口的 Bug。 4. 公共函数去重提取:将 Content-Disposition 文件名解析 parseDownloadFilename 提取至 file_utils.js 中达成 DRY。 5. 更新 roadmap 开发日志。
1. 将提及药丸样式完全提取并重构至独立的 mention-pill.less 样式表中 2. 彻底解决暗色模式下提及药丸不可见、对比度低的视觉缺陷,使用莫兰迪品牌主色进行响应式自适应适配 3. 彻底清除 hover 状态中各种硬编码 rgba 色彩,完全绑定至系统原生色阶(如 --color-info-50 等) 4. 增强提及机制安全防护,引入 mention.js 构建 DOM 结构,彻底防范 XSS 漏洞注入 5. 更新 roadmap.md 文档,记录提及药丸自适应与安全优化内容
…ne-pill to sync UI UX updates and resolve conflicts
…icate renderUserMessage import
# Conflicts: # docs/develop-guides/roadmap.md
# Conflicts: # docs/develop-guides/roadmap.md
- 在 mcp_service 的 get_mcp_tools 加载出口全局设置 tool.handle_tool_error = True - 在 toolkits registry 的 @tool 装饰器中对本地工具默认开启 handle_tool_error = True - 修复因 MCP/本地工具内部执行出错抛出 ToolException 时击穿流服务导致 crash 的 bug - 新增两个单元测试进行完备性验证
原因: 1. 后端接口 GET /api/system/skills 与 GET /api/system/mcp-servers 之前被权限校验拦截。 2. 前端本地在调用拉取技能和MCP服务底集的方法时,前置调用了 apiAdminGet 会在本地硬性拦截非管理员权限的用户,导致请求被掐断并静默兜底返回空数组。 修改: 1. 后端放开此二接口路由为低特权只读访问,且对 MCP 服务器的敏感连接信息(如 url、command、args、env、headers)在 user 角色拉取时执行强力脱敏过滤,并补充相关单元测试。 2. 前端将 listSkills 与 getMcpServers 从 apiAdminGet 调整为 apiGet,绕过本地硬拦截。 3. 维护 roadmap.md 进度记录。
1. 技能列表接口:普通用户返回数据通过白名单字段投影,屏蔽 dir_path 等绝对物理路径。 2. MCP 服务器列表接口:废除原 pop() 黑名单模式,升级为显式白名单准入映射。 3. 单元测试:同步升级 test_skill_router.py 和 test_mcp_router.py,强化字段脱敏性测试断言。
…dundant arguments in front-end components
…d side-panel automatic opening logic
- 移除提问气泡中冗余的 isSwitching 状态锁与同步物理预判,简化为纯净相交哨兵。 - 优化 human 气泡的 transition 为指定非高度排版属性,规避初次挂载时过渡动画引发的高度计算延迟。 - 重构 scrollToBottomStaticForce 方法,引入 nextTick、waitForLayoutStable 和双重延迟静默重试,确保切换对话后子组件异步渲染也能稳定贴底。
Contributor
Author
|
@xerrors 麻烦看看呢 |
Contributor
Author
|
算了,我还是再整理下,这样确实太乱了 |
6 tasks
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
变更描述
简要描述这个 PR 做了什么
@提及药丸样式与极客交互体验:将提及药丸升级为 100% 纯正 Token 驱动自适应深色模式,引入亚像素垂直居中对齐、字型渲染缓冲防边缘物理裁剪以及 P0 级 HTML 转义 XSS 攻击防护;优雅封装mention.js与file_utils.js统一组件逻辑。AgentFilePreviewModal.vue,打通 Pinia 响应式触发源与 Blob 内存自动销毁,精简清洗大聊天组件与交付件卡片中数百行重复代码。useInlinePreview.value内联拦截守卫,彻底解决了宽屏模式下点击药丸产生双倍 API 重复调用的严重缺陷。scrollToBottomStaticForce置底重试策略以彻底解决会话切换时因异步渲染导致无法贴底的 Bug。watchfiles级进程监控与超时强杀释放,彻底解决了原热重载死锁卡死缺陷,大幅提升代码变更的重启效率。handle_tool_error异常捕获与容错逻辑,防止因外部工具调用失败导致 Agent 运行崩溃。变更类型
测试
相关日志或者截图



说明
(可选)有什么需要特别说明的吗?
💡 提示: 提交前可以运行
make lint和make format检查代码规范