✨ feat(vscode): 改动说明 profile 可配置

This commit is contained in:
cruldra committed 2026-08-28 06:38:02 +08:00
1 parent 77037924ef
commit 443a8e472a
14 files changed
+137 -37

No files matched your search

@@ -36,6 +36,7 @@ interface SubmitValues {
implTabPostCloseScript: string
conflictResolutionProfilePath: string
commitProfilePath: string
prDiffSummaryProfilePath: string
codexModel: string
codexReasoningEffort: string
profilesDirectory: string
@@ -82,6 +83,7 @@ export interface SettingsModalProps {
initialImplTabPostCloseScript: string
initialConflictResolutionProfilePath: string
initialCommitProfilePath: string
initialPrDiffSummaryProfilePath: string
initialCodexModel: string
initialCodexReasoningEffort: string
initialProfilesDirectory: string
@@ -164,6 +166,7 @@ export function SettingsModal({
initialImplTabPostCloseScript,
initialConflictResolutionProfilePath,
initialCommitProfilePath,
initialPrDiffSummaryProfilePath,
initialCodexModel,
initialCodexReasoningEffort,
initialProfilesDirectory,
@@ -198,6 +201,7 @@ export function SettingsModal({
const [implTabPostCloseScript, setImplTabPostCloseScript] = useState(initialImplTabPostCloseScript)
const [conflictResolutionProfilePath, setConflictResolutionProfilePath] = useState(initialConflictResolutionProfilePath)
const [commitProfilePath, setCommitProfilePath] = useState(initialCommitProfilePath)
const [prDiffSummaryProfilePath, setPrDiffSummaryProfilePath] = useState(initialPrDiffSummaryProfilePath)
const [codexModel, setCodexModel] = useState(initialCodexModel)
const [codexReasoningEffort, setCodexReasoningEffort] = useState(initialCodexReasoningEffort)
const [profilesDirectory, setProfilesDirectory] = useState(initialProfilesDirectory)
@@ -234,6 +238,7 @@ export function SettingsModal({
setImplTabPostCloseScript(initialImplTabPostCloseScript)
setConflictResolutionProfilePath(initialConflictResolutionProfilePath)
setCommitProfilePath(initialCommitProfilePath)
setPrDiffSummaryProfilePath(initialPrDiffSummaryProfilePath)
setCodexModel(initialCodexModel)
setCodexReasoningEffort(initialCodexReasoningEffort)
setProfilesDirectory(initialProfilesDirectory)
@@ -324,6 +329,7 @@ export function SettingsModal({
conflictResolutionProfilePath: conflictResolutionProfilePath.trim(),
// 提交代码 profile:空串 = 未配置 → 提交严格失败
commitProfilePath: commitProfilePath.trim(),
prDiffSummaryProfilePath: prDiffSummaryProfilePath.trim(),
// codex 模型 / 思考级别:trim 后留空 = 用 codex config.toml 默认
codexModel: codexModel.trim(),
codexReasoningEffort: codexReasoningEffort.trim(),
@@ -528,6 +534,30 @@ export function SettingsModal({
/>
</Field>
<Field
label="改动说明 profile"
hint={(
<>
「改动」tab 单文件说明和工单 PR 变更摘要使用此 profile。留空则生成失败,不会回退默认。
</>
)}
>
<SelectMenu
value={prDiffSummaryProfilePath}
onChange={setPrDiffSummaryProfilePath}
variant="input"
className={inputClass}
options={[
{ value: '', label: '(未配置)' },
...profiles.map(p => ({ value: p.path, label: p.name })),
...(prDiffSummaryProfilePath
&& !profiles.some(p => p.path === prDiffSummaryProfilePath)
? [{ value: prDiffSummaryProfilePath, label: `自定义:${prDiffSummaryProfilePath}` }]
: []),
]}
/>
</Field>
<Field
label="codex 模型"
hint={(
@@ -32,7 +32,7 @@ interface FileDiffPaneProps {
summary: string | undefined
/** 是否正在为当前文件生成说明。 */
generating: boolean
/** 触发 deepseek 生成当前文件说明。 */
/** 触发生成本文件改动说明。 */
onGenerate: () => void
/** 统一 / 分栏;由父级从 workspaceState 拉并持久化。 */
mode: DiffModeEnum
@@ -158,12 +158,12 @@ export function FileDiffPane({
>
<Check className="size-3.5" />
</button>
{/* 一键调 deepseek 生成本文件改动说明 */}
{/* 一键生成本文件改动说明 */}
<button
type="button"
onClick={onGenerate}
disabled={generating}
title={generating ? '生成中…' : '用 deepseek 生成本文件改动说明'}
title={generating ? '生成中…' : '生成本文件改动说明'}
className="shrink-0 text-[var(--vscode-descriptionForeground)] hover:text-[var(--vscode-foreground)] disabled:opacity-60"
>
{generating ? <Loader2 className="size-3.5 animate-spin" /> : <Sparkles className="size-3.5" />}