makecindy / makecindy/cindy

feat: 输入框「✨优化提示词」按钮(按需触发,预览 diff 不强制替换)

Open
#3,171 1 comment 0 reactions 0 assignees View on GitHub
feature
Dominant language
TypeScript
Stars
2.7k
Forks
395
Avg merge
21h 48m
Merged PRs (30d)
776

Description

**提交人**: HalFree
**客户端版本**: 0.1.58

---

## 使用场景 / Use case

用户常把模糊、过短或过长混合的需求直接甩进输入框。现状下模型靠隐式澄清补足,但:
- 短输入缺上下文 → 多轮追问,打断心流。
- 没有「在发送前就让 AI 帮我把需求写清楚」的显式入口。

## 当前痛点 / Pain

- 长输入一次性粘贴时,模型容易囫囵吞枣、遗漏子任务(相关 issue #2503 也提到「长输入缺拆解」)。
- 没有轻量、按需、非侵入的方式在发送前结构化润色用户输入。

## 诉求 / Ask

在输入框工具栏增加轻量「✨优化提示词」按钮,**用户主动点按才触发**,对当前草稿做一次性结构化润色(补约束 / 拆子任务 / 消歧),并**预览 diff,经用户确认后才替换输入框内容**——不自动发送、不强制改写。

## 建议方案 / Proposal

**入口**:`apps/desktop/src/renderer/components/new-chat/ChatInput.tsx` 工具栏,紧邻已有 VoiceInput 按钮,复用其按钮范式(`VoiceInput*` 组件族 + `composerNarrowToolbarContract` 布局)。

**触发**:
- 按钮仅在有非空草稿时可用;
- 点击 → 调一次 LLM 改写(复用现有模型通道,不新增 provider);
- 输出以**预览态**回填草稿区(或气泡/弹层展示 before→after),用户「应用 / 丢弃」二选一。

**关键约束(取舍)**:
1. **绝不自动发送**,只替换草稿或展示预览。
2. **可降级**:改写失败/超时 → 保留原草稿 + toast,不影响发送。
3. **设置项**:与 `VoiceInputSection` 同级新增 `OptimizePromptSection`,提供开关 + 快捷键(参考 `useComposerSendShortcutPreference`、`usePromptRecommendationPreference` 的偏好 hook 写法)。默认关闭(用户手动开启)——此点待讨论。
4. **不污染历史**:优化动作本身不入消息流,只改草稿文本。

**复用点**:
- 模型调用:现有 composer/send 通道,无需新建 IPC。
- 偏好存储:`apps/desktop/src/renderer/hooks/usePromptRecommendationPreference.ts` 已存在「提示词推荐」偏好范式,可类比扩展。

## 不做 / Out of scope

- ❌ 全局自动优化(侵入性强、易惹反感)。
- ❌ 改写系统 prompt / 记忆(本功能只针对「用户当前输入框草稿」)。
- ❌ 多轮迭代优化(一期仅单次改写)。

## 关联

- 相关痛点:#2503(长输入缺拆解);记忆/稳定性类 issue 优先级高于本 feat。
- 同类范式:VoiceInput 按钮、Prompt Recommendation 偏好。

## 验收 / Acceptance

- [ ] 工具栏出现「✨优化提示词」按钮,空草稿时禁用。
- [ ] 点击后调模型改写,以预览态呈现 before→after。
- [ ] 「应用」替换草稿,「丢弃」还原,二者都不自动发送。
- [ ] 改写失败/超时优雅降级,原草稿与发送不受影响。
- [ ] 设置页有开关 + 可选快捷键(默认关,可讨论)。
- [ ] 覆盖基础单测(参考 `chatInput*`、`composerSuggestion*` 测试)。
---
**版本区域**: CN
**OS**: win32 x64 (10.0.26200)
**界面语言**: zh-CN

Contributor guide

Open the contributing guide

Research direction

Start with apps/desktop/src/renderer/components/new-chat/ChatInput.tsx, the VoiceInput component family, and composerNarrowToolbarContract; compare the preference patterns in usePromptRecommendationPreference.ts and useComposerSendShortcutPreference. Review chatInput* and composerSuggestion* tests, then verify the acceptance checklist: opt-in toolbar action, before/after preview, apply/discard without sending, graceful failure, settings support, and coverage.

Written by the indexing model from the issue text.

Assessment

Tech stack
typescript
Domain
desktop, frontend
Issue type
Feature
Difficulty
5/5
Estimated time
Over a week
Activity status
Active
Clarity
Mostly clear
Newbie friendliness
45/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.