# #3086 umaygpt-改进意见汇总

来源：https://gitlab.parsec.com.cn/umay/doc-and-issues/-/issues/3086

读取时间：2026-10-01T14:06:53.854019+00:00；当前更新时间：2026-09-28T09:47:45.762Z。

> 当前内容快照，非历史版本。身份提及、电话示例和订单编号经最小化处理；不据此认定需求已实现。

## 当前描述

- [x] 1	快捷按钮只显示短标签，完整提示词不给用户看
- [x] 2	快捷场景可在后台改标题、提示词、排序、状态、图标（需后端支持 [提及已隐藏] ）
- [ ] 3	移动端操作靠近拇指热区，收空白、补齐图标
- [ ] 4	缩小气泡和周围间距，把回答区留出来
- [ ] 5	去掉分割线，收紧键盘与输出区的空隙
- [ ] 6	去掉粗边、双线和输入框上的硬线，只留浅灰细分隔
- [ ] 7	回复平滑出现，流式文字和商品卡不要把页面顶跳

## 同期可观察评论（当前正文）

### 评论 231612

创建：2026-09-24T02:26:58.283Z；更新：2026-09-24T02:26:58.283Z。

[原评论](https://gitlab.parsec.com.cn/umay/doc-and-issues/-/issues/3086#note_231612)

[提及已隐藏] [提及已隐藏] 关于socket参数优化

# 通用聊天参数与模式展示

增肌以下参数

```ts
interface ChatExtensions {
  toolParams?: Record<string, unknown>;
  chatMode?: { key: string; title: string };
}
```

## 前端请求

`query` 是实际交给模型的文本，不能替换成展示标题，也不再拼接 `---JSON`。

```ts
// setting 来自 babelSettingUserPrompt(language: ...)。
const toolParams: Record<string, unknown> = {};
if (
  setting.actionType === 'SEARCH_PRODUCT_CATEGORY' &&
  setting.categoryId != null
) {
  // 当前 searchProducts 的 categoryId 是 string；后端不自动转换类型。
  toolParams.categoryId = String(setting.categoryId);
}
if (setting.actionType === 'RECOMMEND_TOPIC' && setting.topicId != null) {
  toolParams.topicId = setting.topicId;
}

const request = {
  query: setting.query,
  toolParams,
  chatMode: {
    key: `babel:${setting.actionType}`,
    title: setting.chipLabel,
  },
};

const params = new URLSearchParams({
  agent: currentAgent,
  threadId,
  query: request.query,
  toolParams: JSON.stringify(request.toolParams),
  chatMode: JSON.stringify(request.chatMode),
});
// 使用现有的鉴权/SSE 客户端发送 params，不要重复手动 encodeURIComponent。
```

`topicId` 不会被后端猜测转换成 `articleId`。前端应根据目标工具的业务含义显式映射；未声明该字段的工具不会自动收到它。此改动不新增专题搜索能力。

支持已有 `/web/agent`、`/app/agent` 下的 `sse-all-in-one`、`sse`、`sse-chat`，以及 Socket `chat` 的 ASK_AI 路径。Socket 可以直接发送对象；SSE GET 使用上述 JSON 字符串。独立任务与调试接口不扩展。

字段可省略；`toolParams` 必须是对象，`chatMode.key/title` 必须是非空字符串。非法新参数在 SSE 建立前返回 HTTP 400。服务端也校验 Socket 所用的聊天服务入口。`chatMode` 的其他字段不会被保存。


## 展示与持久化

用户消息保存原始正文，并通过既有消息 metadata 保存 `chatMode`。历史记录新增可选 `chatMode`，artifact 在既有 JSON 内容中新增可选 `content.chatMode`。

```ts
// 即时用户消息：用本次 request.chatMode。
// 加载历史后：用 historyMessage.chatMode。
const displayText = historyMessage.chatMode?.title ?? historyMessage.content;
const artifactTitle =
  artifact.content.chatMode?.title ?? artifact.content.query;
```

标题是发送当时的快照，修改/删除预设不会改变旧消息。artifact 原有 `query` 保持实际搜索含义，不用标题覆盖。`toolParams` 不额外写入 metadata 或 artifact。GraphQL 可查询 `chatMode { key title }`，无需数据库迁移。

## 渐进切换

`babelSettingUserPrompt` 保留旧 `userPrompt`（可能含拼接后缀），新增 `query`、`categoryId`、`topicId`。旧客户端继续使用旧字段，新客户端切换到结构化参数；不要同时发送旧拼接文本和新参数。

普通文本中的 Markdown `---` 不再被无条件截断。仅旧请求的小模型分类兼容明确的 `---{"categoryId":数字}` / `---{"topicId":数字}` 结尾；新参数请求保持 query 完整。已有历史数据不回填。

### 评论 231693

创建：2026-09-28T07:06:09.344Z；更新：2026-09-28T08:19:17.984Z。

[原评论](https://gitlab.parsec.com.cn/umay/doc-and-issues/-/issues/3086#note_231693)

APP 处理情况：

- 第 4 点，缩小气泡 UI 已处理  
[图片/视频引用：image](https://gitlab.parsec.com.cn/umay/doc-and-issues/uploads/d386ad03b4e127c952b3dcb202dd3543/image.png)

- 第 5 点，键盘打开时，缩小输入框和消息的间隙已处理  
[图片/视频引用：image](https://gitlab.parsec.com.cn/umay/doc-and-issues/uploads/97bb7cf61293aea503a181559b7a108c/image.png)

- 第 6 点，所有卡片的边框均已调细，减少突出性  
[图片/视频引用：image](https://gitlab.parsec.com.cn/umay/doc-and-issues/uploads/3d087b1e2e224101fadb5d7a5210b626/image.png)

- 第 3 点没有明确理解。是指在键盘打开时，将整个页面下移，让发送按钮那一行正好在气泡上面吗？补齐图标又是什么？

- 第 6 点中，商品对比表的调整是指去掉底部的那条横线就行了，是吗？

- 麻烦再确认 4-6 这几点中有没有调整错误或遗漏的，以及需要再清晰补充的

[提及已隐藏]

### 评论 231712

创建：2026-09-28T08:19:17.925Z；更新：2026-09-28T08:19:17.925Z。

[原评论](https://gitlab.parsec.com.cn/umay/doc-and-issues/-/issues/3086#note_231712)

第 3 点没有示意图吗？那可能需要提供设计图 [提及已隐藏]

## 固定版本代码关联候选

- `src/components/assistant/chat/index.tsx`
- `src/components/assistant/Introduction.tsx`

未核对完整实现；没有路径关联时，不代表需求不存在或已经实现。
