| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273 |
- <Window x:Class="LocalizationTool.Views.AiChatWindow"
- xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
- xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
- xmlns:hc="https://handyorg.github.io/handycontrol"
- Title="AI 助手" Height="680" Width="800"
- WindowStartupLocation="CenterOwner"
- Background="#F5F6FA">
- <Grid Margin="16">
- <Grid.RowDefinitions>
- <RowDefinition Height="Auto"/>
- <RowDefinition Height="*"/>
- <RowDefinition Height="Auto"/>
- </Grid.RowDefinitions>
- <!-- 系统提示词(可编辑、可保存,指导 AI 输出行指令) -->
- <hc:Card Grid.Row="0" Margin="0,0,0,10" Padding="12">
- <StackPanel>
- <DockPanel Margin="0,0,0,8">
- <ComboBox DockPanel.Dock="Right" x:Name="CmbPermission" Width="180"
- SelectionChanged="CmbPermission_SelectionChanged"
- ToolTip="ask = 修改类工具执行前弹确认框;trusted = 完全信任自动执行(所有操作仍记录日志)"/>
- <TextBlock Text="工具权限:" VerticalAlignment="Center" FontSize="12" Foreground="#666"/>
- </DockPanel>
- <DockPanel Margin="0,0,0,6">
- <StackPanel DockPanel.Dock="Right" Orientation="Horizontal">
- <Button Content="↺ 恢复默认" Width="90" Style="{StaticResource ButtonDefault}"
- Click="BtnResetPrompt_Click" Margin="0,0,8,0"
- ToolTip="清空自定义提示词,按当前语种重新生成默认提示词"/>
- <Button Content="保存提示词" Width="90" Style="{StaticResource ButtonDefault}"
- Click="BtnSavePrompt_Click"
- ToolTip="保存为自定义提示词(优先于动态默认)"/>
- </StackPanel>
- <TextBlock Text="系统提示词(按语种动态生成 · 可自定义)" FontWeight="Bold" FontSize="13" Foreground="#333"/>
- </DockPanel>
- <TextBox x:Name="TxtSystemPrompt" Height="64" TextWrapping="Wrap" AcceptsReturn="True"
- VerticalScrollBarVisibility="Auto" FontSize="11" Style="{StaticResource TextBoxExtend}"/>
- </StackPanel>
- </hc:Card>
- <!-- 聊天记录(消息流:用户消息 / 思考过程折叠区 / AI 正文流式追加) -->
- <ScrollViewer x:Name="ChatScroll" Grid.Row="1" VerticalScrollBarVisibility="Auto"
- Background="#FFFFFF" Padding="10" BorderBrush="#E4E7EC" BorderThickness="1">
- <StackPanel x:Name="ChatPanel"/>
- </ScrollViewer>
- <!-- 输入区(上方:快捷指令列表,选择后填入文本框可再编辑) -->
- <StackPanel Grid.Row="2" Margin="0,10,0,0">
- <!-- 上下文用量指示器:发送前按当前消息估算 token 占用 -->
- <DockPanel Margin="0,0,0,6">
- <Button x:Name="BtnCompressContext" DockPanel.Dock="Right" Content="🗜️ 压缩上下文" Width="110"
- FontSize="11" Style="{StaticResource ButtonDefault}" Margin="0,0,6,0"
- Click="BtnCompressContext_Click" ToolTip="手动压缩上下文,移除早期对话轮次以释放 token 空间"/>
- <TextBlock x:Name="TxtContextUsage" FontSize="11" VerticalAlignment="Center"
- Foreground="#888" Text="上下文: --"/>
- <ProgressBar x:Name="ProgressContext" Height="auto" Minimum="0" Maximum="100" Value="0"
- Foreground="#4C8BF5" Background="#E4E7EC" BorderThickness="0"/>
- </DockPanel>
- <DockPanel Margin="0,0,0,6">
- <TextBlock Text="⚡ 快捷指令:" VerticalAlignment="Center" FontSize="12" Foreground="#666"/>
- <ComboBox x:Name="CmbQuickPrompts" Width="420" Margin="6,0,0,0" FontSize="12"
- SelectionChanged="CmbQuickPrompts_SelectionChanged"
- ToolTip="选择后自动填入输入框,可修改后再发送"/>
- </DockPanel>
- <DockPanel>
- <Button DockPanel.Dock="Right" x:Name="BtnSend" Content="发送" Width="84" FontSize="15"
- Style="{StaticResource ButtonPrimary}" Click="BtnSend_Click" Margin="0,0,0,0" Height="39"/>
- <TextBox x:Name="TxtInput" Height="72" TextWrapping="Wrap" AcceptsReturn="True" FontSize="15"
- VerticalScrollBarVisibility="Auto" Style="{StaticResource TextBoxExtend}"
- ToolTip="Enter 发送,Ctrl+Enter 换行" PreviewKeyDown="TxtInput_PreviewKeyDown"/>
- </DockPanel>
- </StackPanel>
- </Grid>
- </Window>
|