mirror of
https://github.com/CherryHQ/cherry-studio.git
synced 2025-12-26 03:31:24 +08:00
refactor: add feedback on saving assistant prompt (#8726)
This commit is contained in:
parent
0113447481
commit
925cc6bb9b
@ -703,6 +703,7 @@
|
||||
"no_results": "No results",
|
||||
"open": "Open",
|
||||
"paste": "Paste",
|
||||
"preview": "Preview",
|
||||
"prompt": "Prompt",
|
||||
"provider": "Provider",
|
||||
"reasoning_content": "Deep reasoning",
|
||||
@ -711,6 +712,7 @@
|
||||
"rename": "Rename",
|
||||
"reset": "Reset",
|
||||
"save": "Save",
|
||||
"saved": "Saved",
|
||||
"search": "Search",
|
||||
"select": "Select",
|
||||
"selectedItems": "Selected {{count}} items",
|
||||
|
||||
@ -703,6 +703,7 @@
|
||||
"no_results": "検索結果なし",
|
||||
"open": "開く",
|
||||
"paste": "貼り付け",
|
||||
"preview": "プレビュー",
|
||||
"prompt": "プロンプト",
|
||||
"provider": "プロバイダー",
|
||||
"reasoning_content": "深く考察済み",
|
||||
@ -711,6 +712,7 @@
|
||||
"rename": "名前を変更",
|
||||
"reset": "リセット",
|
||||
"save": "保存",
|
||||
"saved": "保存されました",
|
||||
"search": "検索",
|
||||
"select": "選択",
|
||||
"selectedItems": "{{count}}件の項目を選択しました",
|
||||
|
||||
@ -703,6 +703,7 @@
|
||||
"no_results": "Результатов не найдено",
|
||||
"open": "Открыть",
|
||||
"paste": "Вставить",
|
||||
"preview": "Предварительный просмотр",
|
||||
"prompt": "Промпт",
|
||||
"provider": "Провайдер",
|
||||
"reasoning_content": "Глубокий анализ",
|
||||
@ -711,6 +712,7 @@
|
||||
"rename": "Переименовать",
|
||||
"reset": "Сбросить",
|
||||
"save": "Сохранить",
|
||||
"saved": "Сохранено",
|
||||
"search": "Поиск",
|
||||
"select": "Выбрать",
|
||||
"selectedItems": "Выбрано {{count}} элементов",
|
||||
|
||||
@ -703,6 +703,7 @@
|
||||
"no_results": "无结果",
|
||||
"open": "打开",
|
||||
"paste": "粘贴",
|
||||
"preview": "预览",
|
||||
"prompt": "提示词",
|
||||
"provider": "提供商",
|
||||
"reasoning_content": "已深度思考",
|
||||
@ -711,6 +712,7 @@
|
||||
"rename": "重命名",
|
||||
"reset": "重置",
|
||||
"save": "保存",
|
||||
"saved": "已保存",
|
||||
"search": "搜索",
|
||||
"select": "选择",
|
||||
"selectedItems": "已选择 {{count}} 项",
|
||||
|
||||
@ -703,6 +703,7 @@
|
||||
"no_results": "沒有結果",
|
||||
"open": "開啟",
|
||||
"paste": "貼上",
|
||||
"preview": "預覽",
|
||||
"prompt": "提示詞",
|
||||
"provider": "供應商",
|
||||
"reasoning_content": "已深度思考",
|
||||
@ -711,6 +712,7 @@
|
||||
"rename": "重新命名",
|
||||
"reset": "重設",
|
||||
"save": "儲存",
|
||||
"saved": "已儲存",
|
||||
"search": "搜尋",
|
||||
"select": "選擇",
|
||||
"selectedItems": "已選擇 {{count}} 項",
|
||||
|
||||
@ -1,6 +1,6 @@
|
||||
import 'emoji-picker-element'
|
||||
|
||||
import { CloseCircleFilled, QuestionCircleOutlined } from '@ant-design/icons'
|
||||
import { CloseCircleFilled } from '@ant-design/icons'
|
||||
import CodeEditor from '@renderer/components/CodeEditor'
|
||||
import EmojiPicker from '@renderer/components/EmojiPicker'
|
||||
import { Box, HSpaceBetweenStack, HStack } from '@renderer/components/Layout'
|
||||
@ -9,6 +9,7 @@ import { estimateTextTokens } from '@renderer/services/TokenService'
|
||||
import { Assistant, AssistantSettings } from '@renderer/types'
|
||||
import { getLeadingEmoji } from '@renderer/utils'
|
||||
import { Button, Input, Popover } from 'antd'
|
||||
import { Edit, Eye, HelpCircle } from 'lucide-react'
|
||||
import { useEffect, useState } from 'react'
|
||||
import { useTranslation } from 'react-i18next'
|
||||
import ReactMarkdown from 'react-markdown'
|
||||
@ -29,7 +30,7 @@ const AssistantPromptSettings: React.FC<Props> = ({ assistant, updateAssistant }
|
||||
const [prompt, setPrompt] = useState(assistant.prompt)
|
||||
const [tokenCount, setTokenCount] = useState(0)
|
||||
const { t } = useTranslation()
|
||||
const [showMarkdown, setShowMarkdown] = useState(prompt.length > 0)
|
||||
const [showPreview, setShowPreview] = useState(prompt.length > 0)
|
||||
|
||||
useEffect(() => {
|
||||
const updateTokenCount = async () => {
|
||||
@ -47,6 +48,7 @@ const AssistantPromptSettings: React.FC<Props> = ({ assistant, updateAssistant }
|
||||
const onUpdate = () => {
|
||||
const _assistant = { ...assistant, name: name.trim(), emoji, prompt }
|
||||
updateAssistant(_assistant)
|
||||
window.message.success(t('common.saved'))
|
||||
}
|
||||
|
||||
const handleEmojiSelect = (selectedEmoji: string) => {
|
||||
@ -112,12 +114,12 @@ const AssistantPromptSettings: React.FC<Props> = ({ assistant, updateAssistant }
|
||||
<HStack mb={8} alignItems="center" gap={4}>
|
||||
<Box style={{ fontWeight: 'bold' }}>{t('common.prompt')}</Box>
|
||||
<Popover title={t('agents.add.prompt.variables.tip.title')} content={promptVarsContent}>
|
||||
<QuestionCircleOutlined size={14} color="var(--color-text-2)" />
|
||||
<HelpCircle size={14} color="var(--color-text-2)" />
|
||||
</Popover>
|
||||
</HStack>
|
||||
<TextAreaContainer>
|
||||
{showMarkdown ? (
|
||||
<MarkdownContainer className="markdown" onClick={() => setShowMarkdown(false)}>
|
||||
{showPreview ? (
|
||||
<MarkdownContainer className="markdown" onClick={() => setShowPreview(false)}>
|
||||
<ReactMarkdown>{processedPrompt || prompt}</ReactMarkdown>
|
||||
<div style={{ height: '30px' }} />
|
||||
</MarkdownContainer>
|
||||
@ -147,8 +149,11 @@ const AssistantPromptSettings: React.FC<Props> = ({ assistant, updateAssistant }
|
||||
</TextAreaContainer>
|
||||
<HSpaceBetweenStack width="100%" justifyContent="flex-end" mt="10px">
|
||||
<TokenCount>Tokens: {tokenCount}</TokenCount>
|
||||
<Button type="primary" onClick={() => setShowMarkdown((prev) => !prev)}>
|
||||
{t(showMarkdown ? 'common.edit' : 'common.save')}
|
||||
<Button
|
||||
type="primary"
|
||||
icon={showPreview ? <Edit size={14} /> : <Eye size={14} />}
|
||||
onClick={() => setShowPreview((prev) => !prev)}>
|
||||
{showPreview ? t('common.edit') : t('common.preview')}
|
||||
</Button>
|
||||
</HSpaceBetweenStack>
|
||||
</Container>
|
||||
@ -160,6 +165,10 @@ const Container = styled.div`
|
||||
flex: 1;
|
||||
flex-direction: column;
|
||||
overflow: hidden;
|
||||
|
||||
.ant-btn {
|
||||
line-height: 0;
|
||||
}
|
||||
`
|
||||
|
||||
const EmojiButtonWrapper = styled.div`
|
||||
|
||||
Loading…
Reference in New Issue
Block a user