Files
eaiadmin 90031b75f3 docs: 重构仓库文档目录并迁移训练素材
按当前架构重组 docs 目录,统一中文命名与目录分层,并将训练原材料迁移到独立目录以保持架构文档边界清晰。
2026-09-22 23:23:16 +08:00

502 lines
14 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# AI 角色与工具统一交互设计
> 落盘日期:2026-09-16
> 状态:**部分采纳的设计稿 —— 阅读前先看下面的「采纳与废弃」**
> ## ⚠️ 采纳与废弃(2026-09-17 补注)
>
> 本文包含**已采纳**与**已废弃**两部分结论。请按下表取用,**不要整篇照做**。
>
> ### 已采纳(现已是实现方向)
>
> | 本文结论 | 现落点 |
> |----------|--------|
> | 对象不跳页,都在同一工作面里挂载 | `AR05_工作台架构约定.md` |
> | 专员 / 工具不应该是独立 Vue 页面 | 已实现:`views/workbench/` 无独立工具页 |
> | `+` 菜单作为统一的对象选择入口 | 已实现:`components/chat/PlusMenu.vue` |
> | 切换对象 = 更新任务上下文,不跳路由 | 已实现:`store/taskRuntime.js` |
>
> ### 已废弃(不要照做)
>
> | 本文结论 | 废弃原因 |
> |----------|----------|
> | 「**数字技术员**」作为第三类对象,与专员 / 工具并列(§2.1、§5.2) | `SY21` §2.2 已明确**不再把 `tool` 作为正式命名**,对内统一 `expert / skill / app`,对外统一「专家 + 技能」。**没有「技术员」这一类。** |
> | 「通用助手 = 默认专员」这一等式(§5.4) | `SY23` 确认通用助手是**未挂专员时的兜底**,不是一种专员 |
> | §14「后续如有实现与本稿冲突,**以本稿为准**」 | 该自我授权已失效。当前收口文档是 `SY21` / `SY22`,专员改造以 `SY23_Specialist_Rule_File_And_Skill_Binding_Plan.md` 为准 |
>
> 一句话:**当前有效结论是“对象在同一工作面挂载”;“数字技术员”命名已退出现行架构。**
---
## 1. 结论先行
当前前端的核心问题是**对象建模需要统一收敛**:
- **数字专员**不应该是独立业务页面
- **工具**也不应该是一组独立 Vue 页面
- **对话主界面**才应该是唯一主工作面
新的统一模型应是:
- **通用助手** = 默认专员
- **数字专员** = 多步任务编排者,类似企业里的项目经理
- **数字技术员** = 单点技术能力执行者,可被专员调用
- **工具** = 数字技术员的一种表现形式,不再等于页面
也就是说:
**前端在同一个对话工作面里切换当前挂载对象。**
---
## 2. 统一对象模型
### 2.1 三类对象
| 类别 | 本质 | 典型职责 | 是否有独立完整页面 |
|------|------|----------|--------------------|
| 通用助手 | 默认专员 | 通用问答、兜底处理、把任务转交给更合适对象 | 否 |
| 数字专员 | 编排型角色 | 拆任务、排步骤、调用技术员、汇总产物 | 否 |
| 数字技术员 | 执行型角色 | 文档翻译、语音转写、批量提取、合同条款分析等单点能力 | 否 |
### 2.2 用户感知
对用户来说,当前心智应为:
`我正在一条任务里,这条任务当前挂了哪个专员 / 哪个技术员`
### 2.3 当前对象的展示规则
无论选中的是专员还是技术员,都应该出现在输入框左下区域:
`[+] [当前对象 chip]`
其中:
- 选了专员,显示专员 chip
- 选了工具,显示工具 chip
- 两者都没有时,默认显示“通用助手”
- 输入区显性对象始终互斥:`+` 右边一次只显示一个当前对象
- 专员内部调用技术员属于执行链,不升格为第二个显性 chip
这一点非常关键,因为它把“当前上下文”从隐藏状态变成了**持续可见状态**。
---
## 3. 原工具页架构为何需要收敛
### 3.1 错误的建模方式
原有建模方式是:
`一个工具 = 一个完整页面`
例如以前会把工具理解成这些独立页:
- `/tools/document-translate`
- `/tools/copy-proofreading`
- `/tools/audio-transcribe`
- `/tools/batch-extract`
当前这些独立执行页已经退出,工具统一通过 `/home` 工作台挂载。
这会让前端把“工具”理解成独立使用入口。
### 3.2 工具采用工作面承载
工具真正有差异的地方只有 3 块:
1. **输入要求**
2. **设置条**
3. **右栏中的工作流与产物**
除此之外,绝大多数前端骨架都是一样的:
- 还是同一个聊天区
- 还是同一个输入框
- 还是同一个附件入口
- 还是同一个右栏容器
所以把每个工具做成完整页面,会产生大量无意义分叉:
- 路由分叉
- 状态分叉
- 组件分叉
- 页面骨架重复
### 3.3 正确的建模方式
应收敛为:
`一个工具 = 一份能力定义 + 一份设置定义 + 一份工作流定义`
---
## 4. 新的前端总架构
### 4.1 唯一主工作面
系统只保留一个主交互工作面:
`Chat Workspace`
结构如下:
```text
┌────────────────────────────────────────────────────────────┐
│ 左侧导航 │
├────────────────────────────────────────────────────────────┤
│ 中间:对话主画面 │ 右侧:上下文面板 │
│ │ │
│ 消息流 │ [工作流] [产物] │
│ │ │
│ │ 当前对象的执行进度 │
│ │ 当前对象的产物列表 │
├────────────────────────────────────────────────────────────┤
│ [+] [当前对象 chip] [附件] [输入框................] [发送] │
└────────────────────────────────────────────────────────────┘
```
### 4.2 对象切换方式
所有对象的选择,都从 `+` 打开:
- 模式:快速 / 专家
- 专员
- 技术员
- 连接器或其它补充入口
选择结果不再跳页面,而是**更新当前任务上下文**。
### 4.3 页面跳转原则
默认原则:
- **切换对象,不跳页**
- **切换能力,不跳页**
- **切换任务,才可能切上下文**
只有管理、配置、市场、控制台这类后台页面,才保留独立路由。
---
## 5. 专员与技术员的职责分层
### 5.1 数字专员
数字专员对应企业中的项目经理,负责:
- 接收用户目标
- 把目标拆成多步任务
- 决定调用哪些技术员
- 汇总技术员的结果
- 输出最终交付物
### 5.2 数字技术员
数字技术员对应企业中的专业执行者,负责:
- 完成单个技术动作
- 处理特定格式输入
- 产出特定类型结果
- 把结果返回给专员或直接返回给用户
### 5.3 调用关系
```text
用户
→ 数字专员
→ 调用数字技术员 A
→ 调用数字技术员 B
→ 调用数字技术员 C
→ 汇总结果
→ 输出最终产物
```
### 5.4 通用助手的定位
通用助手的当前定位是:
- 默认专员
- 未选择任何专员或技术员时的兜底对象
- 帮用户判断应不应该切到某个专员或技术员
---
## 6. 工具的新定义
### 6.1 工具不再是页面
未来的“工具”只是技术员目录里的一个对象类别。
例如:
| 旧叫法 | 新理解 |
|--------|--------|
| 文档翻译工具 | 文档翻译技术员 |
| 文案校对工具 | 文案校对技术员 |
| 语音转写工具 | 语音转写技术员 |
| 批量提取工具 | 批量提取技术员 |
| 合同审查工具 | 合同条款分析技术员或合同审查专员的下游技术员 |
| 报告生成工具 | 报告生成技术员 |
### 6.2 工具在前端的可变部分
一个技术员/工具在前端只允许有 4 类差异:
1. **对象 chip**
2. **输入提示与输入校验**
3. **设置条**
4. **右栏工作流与产物**
除此之外,不再允许复制一整页聊天页。
### 6.3 工具定义应沉淀为 schema
每个技术员建议定义如下结构:
```ts
type TechnicianDefinition = {
key: string
label: string
summary: string
inputSchema: object
settingsSchema: object[]
workflowSchema: object[]
artifactSchema: object[]
emptyState?: {
title: string
description: string
presets?: string[]
}
}
```
也就是说,新增长一个工具,不应该先想“新建哪个 Vue 文件”,而应该先想“补哪份定义”。
---
## 7. 统一 UI 规则
### 7.1 输入区
输入区固定包含:
- `+`:选择模式 / 专员 / 技术员
- `当前对象 chip`
- `附件`
- `输入框`
- `发送`
### 7.2 当前对象 chip
当前对象 chip 的规则:
- 位置固定在 `+` 右边
- 支持专员与技术员两种样式,但结构统一
- 只负责展示“当前挂了谁”
- 一次只展示一个当前对象,不并排显示“专员 + 技术员”
- 点击 chip 可展开对象详情,或跳到对应配置页
### 7.3 设置条
设置条是工具差异的第一承载位。
原则:
- 只在当前对象有设置时显示
- 位置在消息列表顶部
- 形式统一为一条 sticky 条
- 设置变更默认从**下一条消息**开始生效
- 当前对象是专员时,默认不再额外显示技能设置条
设置条里的内容由对象定义驱动,而不是写死在某个页面里。
### 7.4 右栏
右栏固定 2 个 tab:
- **工作流**
- **产物**
#### 工作流 tab
显示当前对象的:
- 执行步骤
- 进度状态
- 当前节点
- 子任务或检查点
#### 产物 tab
显示当前对象的:
- 文件产物
- 结构化结果
- 中间输出
- 状态标签
### 7.5 空态
空态不再按“工具页”设计,而按“当前对象”设计:
- 默认通用助手有自己的门厅
- 技术员被选中但还没发送第一条消息时,显示该技术员自己的空态说明
- 专员被选中但还没发送第一条消息时,显示该专员的工作流模板预览
---
## 8. 导航的重新定位
### 8.1 一级导航不再承担“使用工具”的职责
一级导航中的:
`专员 / 工具 / 连接器`
应该只承担**浏览配置与管理入口**的职责,而不是使用入口。
### 8.2 使用入口只有一个
真正的使用入口应该只有:
- `新建任务`
- `打开已有任务`
进入任务后,一切对象切换都在对话区完成。
### 8.3 目录页的意义
目录页只做这些事:
- 浏览有哪些专员
- 浏览有哪些技术员
- 浏览有哪些连接器
- 查看其配置摘要
- 进入配置详情
而不是“点卡片后进入某个独立工具页”。
---
## 9. 现有代码应如何收敛
### 9.1 应保留的骨架
这些方向是对的,应保留:
- `ChatLayout`
- `ChatInputBar`
- `PlusMenu`
- `SkillStrip`
- 右栏 `SpecialistPanel` 的工作流 / 产物思路
- “新建任务”作为唯一对话起点
### 9.2 应逐步废弃的结构
这些应视为过渡结构:
- 每个工具一张独立完整 Vue 页
- 每个专员一个独立业务工作台页
- 通过 object entry 切工具
- 通过 object entry 切专员执行面
### 9.3 收敛目标
最终应收成:
| 层级 | 目标 |
|------|------|
| 页面层 | 一个主对话工作面 + 少量管理页 |
| 组件层 | 一套通用聊天骨架 + 一套右栏骨架 |
| 配置层 | 专员定义 / 技术员定义 / 工作流定义 / 设置定义 |
| 数据层 | 当前任务挂载哪个对象,由任务状态驱动 |
---
## 10. 重构原则清单
1. **页面不是能力,页面只是容器。**
2. **能力切换不应导致页面跳转。**
3. **当前上下文必须持续可见。**
4. **专员与技术员共享同一套交互语言。**
5. **工具差异只放在设置条、输入要求、工作流、产物。**
6. **新增能力优先补 schema,不优先建新页面。**
7. **导航页负责浏览与管理,不负责承载使用流。**
8. **任务是主线,对象是挂件。**
9. **右栏始终是执行透明化窗口。**
10. **默认入口只有一个:对话。**
---
## 11. 前端收敛方案
### Phase 1:先统一心智
- 把“工具”统一重新命名为“数字技术员”或在内部按技术员建模
- 明确通用助手 = 默认专员
- 明确 object entry 不再代表能力本体
### Phase 2:统一输入区
- 在 `ChatInputBar` 中把当前对象 chip 收成标准能力
- 专员 chip 与技术员 chip 使用统一插槽或统一组件
- `+` 只负责选对象,不再负责跳到独立工具页
### Phase 3:统一设置条
- 把各工具页差异抽到 `settingsSchema`
- `SkillStrip` 改成真正的对象驱动渲染
- 设置条与当前对象强绑定,不再与路由强绑定
### Phase 4:统一右栏
- 右栏根据当前对象的 `workflowSchema` 和 `artifactSchema` 渲染
- 专员右栏强调多步编排
- 技术员右栏强调执行步骤
### Phase 5:清退独立工具页
- 保留旧工具页一段时间做兼容
- 新能力一律不再新建完整工具页
- 旧工具页逐步收敛为配置详情页或兼容跳板页
---
## 12. 对当前项目最重要的影响
这次调整会改变整个前端边界:
- `availableSkills` 不再等于“可跳转的页面列表”
- `businessApps` 不再等于“专员工作台页面列表”
- 路由将从“能力入口”退回成“管理入口 / 兼容入口”
- 真正的执行入口会统一收敛到任务对话面
换句话说:
**我们做的是“一个任务工作面,里面动态挂很多 AI 对象”。**
---
## 13. 未决问题
1. 对外文案最终叫“工具”还是“数字技术员”,是否区分用户可见名和内部模型名
2. 一个任务内部可以有多个技术员执行记录,但输入区始终只显示一个当前对象
3. 专员调用技术员时,只在右栏和执行链里显示下游执行,不在输入区显性双挂
4. 旧工具页是否全部保留兼容路由,还是只保留极少数重度场景
5. 目录页中的“浏览配置”应展示到什么深度,是否允许直接预览 workflow schema
---
## 14. 本稿的用途
这份文档用于后续所有相关改造的判断标准:
- 评估某个页面要不要保留
- 判断某个新能力该不该新建页面
- 判断当前对象该不该在输入区可见
- 判断导航页与使用页的边界
后续如有实现与本稿冲突,以现行收口文档为准,并同步修订本文。