# 技能 / 指令管理入口迁移至设置页 — 技术方案 - 日期:2026-09-20 - 范围:desktop 前端(Electron / Web / 安卓共用 UI),无后端改动 - 状态:已与需求方确认,待开发 ## 1. 需求背景 当前用户管理「我的技能」「我的指令」的唯一入口位于工作台顶部栏(`TopNav.vue` 两个图标按钮),点击后分别打开 `SkillDrawer.vue`、`CommandDrawer.vue` 两个 420px 侧滑抽屉。随着设置页模块不断增多(个人信息、服务器、使用记录、Git 凭证、消息通知、微信Bot、飞书机器人、MCP 服务器、定时任务),个人内容管理类功能仍散落在顶部栏,入口不统一、顶部栏拥挤,用户难以发现管理能力。 本次需求:将「我的技能」「我的指令」两个管理模块迁移到设置页面,作为与「MCP 服务器」「定时任务」同级的一等模块,并移除顶部栏入口,使个人内容管理与系统配置类模块在设置页统一收敛。 ## 2. 需求描述(已确认的决策) | # | 决策点 | 结论 | |---|--------|------| | 1 | 顶部栏入口 | 彻底移除「我的技能」「我的指令」两个按钮,不保留任何形式的顶部入口 | | 2 | 设置页组织 | 新增两个独立导航项:**我的技能**(`/settings/skills`)、**我的指令**(`/settings/commands`),各对应独立路由页面 | | 3 | 导航位置 | 两个导航项放在「MCP 服务器」之后、「定时任务」之前 | | 4 | 内容实现方式 | 将两个抽屉的内部内容抽取为可复用管理组件,设置页直接嵌入;不拷贝代码 | | 5 | 聊天「添加到我的指令」 | 现有 CommandDrawer 承担聊天消息预填创建指令的职责;迁移后聊天侧改为弹出独立的「新建指令」编辑弹窗(从原抽屉中抽取的 dialog 组件),彻底删除 CommandDrawer 抽屉外壳 | | 6 | 预填保存后行为 | 保存成功即关闭弹窗并 toast 提示,不额外引导到设置页 | | 7 | 功能与交互 | 与现有抽屉完全一致(技能:上传/查看/删除/本地技能/系统 Tab;指令:CRUD/系统 Tab/确认删除),不新增不删减 | | 8 | 安卓端 | 不做专项适配,沿用设置页已有响应式布局(窄屏侧边栏横排、内容区自适应);原抽屉的安卓专用样式随抽屉删除一并清理 | ## 3. 明确不做(Non-Goals) - 不改动任何后端接口与表结构(`/user-skills`、`/skill-docs`、`/user-commands`、`/user-commands/system` 原样使用)。 - 不删除管理后台的「Skills 管理」模块,两者互不相干。 - 不改动 `QuickCommandPanel`(聊天输入区的快捷指令面板),它只消费指令列表数据,不依赖被删除的抽屉。 - 不为技能/指令管理新增搜索、排序、批量操作等原抽屉没有的功能。 - 不改 `agent-cli`、admin、android 原生壳(`android/android/app/`)任何代码。 - 不做 LOCAL 模式、工具审批等范围外事项。 - 不保留 `useSkillDrawer` composable(唯一调用方是 TopNav,随顶部入口一起删除)。 ## 4. 技术选型 沿用项目现有技术栈,无新增依赖: - Vue 3 `