---
phase: 07-phase-06-mention-upload
plan: 01
subsystem: prompt-submit-and-display-separation
tags: [prompt-compose, references, skills, message-display, e2e]
requires:
  - phase: 07-phase-06-mention-upload
    provides: 07-01-PLAN.md
provides:
  - 提交态拼接“优先使用”提示（附件优先，Skill次之）
  - 显示态与提交态分离（消息区不回显拼接提示）
  - 规则单测与发送链路 e2e 回归
affects: [frontend-chat-input, thread-submit-payload, message-render]
tech-stack:
  added:
    - frontend/src/core/threads/priority-hint.ts
  patterns:
    - compose-before-submit with original-display preservation
    - case-insensitive dedupe for attachment/skill labels
key-files:
  created:
    - .planning/phases/07-phase-06-mention-upload/07-01-SUMMARY.md
    - frontend/src/core/threads/priority-hint.ts
  modified:
    - frontend/src/core/threads/hooks.ts
    - frontend/src/core/threads/hooks.test.ts
    - frontend/src/components/workspace/input-box.tsx
    - frontend/src/components/ai-elements/prompt-input.tsx
    - frontend/src/core/messages/utils.ts
    - frontend/src/components/workspace/messages/message-list-item.tsx
    - frontend/tests/e2e/input-and-compose.spec.ts
key-decisions:
  - "发送 payload 使用 submitText，消息显示继续使用用户原文。"
  - "拼接模板固定为：优先使用【附件...】和【Skill...】；单类单出；大小写不敏感去重。"
  - "在渲染层仅剥离固定后缀，避免拼接文案回显到用户消息区。"
requirements-completed: [P7-01, P7-02, P7-03, P7-04]
duration: 45 min
completed: 2026-04-17
---

# Phase 07 Plan 01 Summary

实现了“提交态增强文本 / 显示态原文”的完整链路：发送时自动拼接附件与 Skill 优先提示，消息区仍只展示用户输入内容。

## Implemented

- 新增 `priority-hint` 纯函数模块，封装 `buildPriorityHintText` 与 `composeSubmitText`。
- `InputBox` 在提交时统一透传 `references + selectedSkills`，覆盖按钮发送、回车发送、建议词发送路径。
- `useThreadStream` 与 `useSubmitThread` 在调用 `thread.submit` 前组装 `submitText`。
- `message-list-item` 渲染人类消息时增加固定后缀剥离，避免回显“优先使用【...】”。

## Verification

- `node --test frontend/src/core/threads/hooks.test.ts`：7 passed
- `cd frontend && pnpm -s typecheck`：passed
- `cd frontend && pnpm -s test:e2e --grep "DF-INPUT-008A"`：passed

## Notes

- 本次新增 e2e 用例验证“请求体包含拼接文案，消息区不显示拼接文案”的核心回归场景。
