Skip to content

feat: Agent 模式支持置顶会话功能#48

Open
Afeng01 wants to merge 2 commits intoErlichLiu:mainfrom
Afeng01:feat/agent-pin-session
Open

feat: Agent 模式支持置顶会话功能#48
Afeng01 wants to merge 2 commits intoErlichLiu:mainfrom
Afeng01:feat/agent-pin-session

Conversation

@Afeng01
Copy link
Contributor

@Afeng01 Afeng01 commented Feb 26, 2026

Summary

为 Agent 模式添加置顶会话功能,与 Chat 模式保持一致的交互体验。用户可以通过右上角按钮或右键菜单置顶/取消置顶会话,置顶的会话会在侧边栏置顶区域显示,并按置顶状态优先排序。

更新:优化了置顶按钮的样式,提升视觉体验和交互反馈。

实现

功能实现

  1. 类型定义:在 AgentSessionMeta 接口中添加 pinned?: boolean 字段
  2. 服务层
    • 修改 updateAgentSessionMeta 支持更新 pinned 字段
    • 修改 listAgentSessions 排序逻辑,置顶会话优先显示
  3. IPC 通信
    • 添加 AGENT_IPC_CHANNELS.TOGGLE_PIN 通道
    • 主进程注册 togglePinAgentSession 处理器
    • Preload 层暴露 togglePinAgentSession API
  4. UI 层
    • AgentHeader:添加置顶按钮(位于右上角)
    • LeftSidebar
      • 添加置顶会话折叠区域(仅当有置顶会话时显示)
      • 日期分组列表中显示置顶图标
      • 右键菜单支持置顶/取消置顶操作
    • 确保工作区隔离(置顶状态按工作区独立管理)

样式优化

  • 优化置顶按钮的视觉样式和交互反馈
  • 改进置顶状态的视觉呈现
  • 提升整体用户体验

变更文件

  • packages/shared/src/types/agent.ts
  • apps/electron/src/main/lib/agent-session-manager.ts
  • apps/electron/src/main/ipc.ts
  • apps/electron/src/preload/index.ts
  • apps/electron/src/renderer/components/app-shell/LeftSidebar.tsx
  • apps/electron/src/renderer/components/agent/AgentHeader.tsx

Test Plan

  • 点击右上角置顶按钮,验证会话被置顶
  • 验证置顶会话在置顶会话区域显示
  • 验证置顶会话在日期分组中显示置顶图标
  • 右键菜单置顶/取消置顶,验证功能正常
  • 切换工作区,验证置顶状态按工作区隔离
  • 验证置顶会话排序优先于非置顶会话
  • 验证置顶按钮样式和交互反馈

其他

邮箱:fkufeng01@gmail.com

1、Agent 模式下添加置顶会话功能。
2、用户可以通过右键当前会话以及点击会话右上角的pin图标,将当前会话置顶。
3、置顶会话支持折叠,节省空间。
4、置顶会话采用隔离工作区的方式,不同工作区不共享置顶会话。

1. **类型定义**:在 AgentSessionMeta 中添加 `pinned?: boolean` 字段
2. **服务层**:在 agent-session-manager.ts 中支持置顶/取消置顶操作,排序时置顶项优先
3. **IPC 层**:添加 TOGGLE_PIN 通道,在 ipc.ts 和 preload/index.ts 中实现
4. **UI 层**:
   - 侧边栏添加置顶会话区域(可展开/收起)
   - 头部添加置顶按钮
   - 右键菜单支持置顶/取消置顶
   - 置顶会话按工作区隔离(从 filteredAgentSessions 而非 agentSessions 中过滤)

- packages/shared/src/types/agent.ts
- apps/electron/src/main/lib/agent-session-manager.ts
- apps/electron/src/main/ipc.ts
- apps/electron/src/preload/index.ts
- apps/electron/src/renderer/components/app-shell/LeftSidebar.tsx
- apps/electron/src/renderer/components/agent/AgentHeader.tsx

- [x] 右键会话,点击"置顶会话",会话移至置顶区域
- [x] 点击头部 Pin 按钮,当前会话置顶/取消置顶
- [x] 置顶会话在日期分组列表中显示,前面有 Pin 图标
- [x] 点击"置顶会话"标题,区域可展开/收起
- [x] 切换工作区,置顶会话按工作区隔离显示
- [x] 重启应用,置顶状态持久化保存
- [x] 右键置顶会话,点击"取消置顶",会话恢复普通状态
@Afeng01 Afeng01 force-pushed the feat/agent-pin-session branch from f864920 to fd1999c Compare February 26, 2026 01:32
@Afeng01
Copy link
Contributor Author

Afeng01 commented Feb 26, 2026

1、点击右上角置顶按钮,置顶会话在置顶会话区域显示,同时置顶会话在日期分组中显示置顶图标
image
2、右键菜单置顶/取消置顶,功能正常
image
3、切换工作区,置顶状态按照工作区隔离
image

## Summary
- 置顶会话按钮的 Pin 图标从16px调整到14px,与其他图标保持一致。
- 将"置顶会话"按钮与"新会话"按钮在视觉上进行对齐,统一界面风格。

## 实现
1. Pin 图标大小从 16px 调整为 14px,与其他图标保持一致
2. "置顶对话"和"置顶会话"按钮从 SidebarItem 组件改为独立实现
3. 图标和文字间距统一为 `gap-2`(8px),与"新会话"按钮一致
4. 移除固定宽度图标容器 \`w-[18px]\`,使用与"新会话"按钮相同的结构

## 变更文件
- apps/electron/src/renderer/components/app-shell/LeftSidebar.tsx

## Test Plan
- [x] Pin 图标大小为 14px,与 Plus 图标大小一致
- [x] "置顶会话"按钮与"新会话"按钮视觉对齐
- [x] Chat 模式和 Agent 模式的置顶按钮样式一致
- [x] 按钮 hover 效果正常
@Afeng01
Copy link
Contributor Author

Afeng01 commented Feb 26, 2026

样式优化如下:
image

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant