feat(vscode): 提交代码按钮可配置 Claude profile

This commit is contained in:
2026-07-25 07:29:05 +08:00
parent e9543d37ce
commit 84a5cda8d2
11 changed files with 269 additions and 9 deletions
+1
View File
@@ -466,6 +466,7 @@ export function App() {
initialImplTabPreCreateScript={settings?.implTabPreCreateScript ?? ''}
initialImplTabPostCloseScript={settings?.implTabPostCloseScript ?? ''}
initialConflictResolutionProfilePath={settings?.conflictResolutionProfilePath ?? ''}
initialCommitProfilePath={settings?.commitProfilePath ?? ''}
initialCodexModel={settings?.codexModel ?? ''}
initialCodexReasoningEffort={settings?.codexReasoningEffort ?? ''}
initialProfilesDirectory={settings?.profilesDirectory ?? ''}
@@ -32,6 +32,7 @@ interface SubmitValues {
implTabPreCreateScript: string
implTabPostCloseScript: string
conflictResolutionProfilePath: string
commitProfilePath: string
codexModel: string
codexReasoningEffort: string
profilesDirectory: string
@@ -75,6 +76,7 @@ export interface SettingsModalProps {
initialImplTabPreCreateScript: string
initialImplTabPostCloseScript: string
initialConflictResolutionProfilePath: string
initialCommitProfilePath: string
initialCodexModel: string
initialCodexReasoningEffort: string
initialProfilesDirectory: string
@@ -152,6 +154,7 @@ export function SettingsModal({
initialImplTabPreCreateScript,
initialImplTabPostCloseScript,
initialConflictResolutionProfilePath,
initialCommitProfilePath,
initialCodexModel,
initialCodexReasoningEffort,
initialProfilesDirectory,
@@ -183,6 +186,7 @@ export function SettingsModal({
const [implTabPreCreateScript, setImplTabPreCreateScript] = useState(initialImplTabPreCreateScript)
const [implTabPostCloseScript, setImplTabPostCloseScript] = useState(initialImplTabPostCloseScript)
const [conflictResolutionProfilePath, setConflictResolutionProfilePath] = useState(initialConflictResolutionProfilePath)
const [commitProfilePath, setCommitProfilePath] = useState(initialCommitProfilePath)
const [codexModel, setCodexModel] = useState(initialCodexModel)
const [codexReasoningEffort, setCodexReasoningEffort] = useState(initialCodexReasoningEffort)
const [profilesDirectory, setProfilesDirectory] = useState(initialProfilesDirectory)
@@ -216,6 +220,7 @@ export function SettingsModal({
setImplTabPreCreateScript(initialImplTabPreCreateScript)
setImplTabPostCloseScript(initialImplTabPostCloseScript)
setConflictResolutionProfilePath(initialConflictResolutionProfilePath)
setCommitProfilePath(initialCommitProfilePath)
setCodexModel(initialCodexModel)
setCodexReasoningEffort(initialCodexReasoningEffort)
setProfilesDirectory(initialProfilesDirectory)
@@ -302,6 +307,8 @@ export function SettingsModal({
implTabPostCloseScript: implTabPostCloseScript.trim(),
// 冲突解决 profile:空串 = 用 DEFAULT_PROFILE_PATH
conflictResolutionProfilePath: conflictResolutionProfilePath.trim(),
// 提交代码 profile:空串 = 未配置 → 提交严格失败
commitProfilePath: commitProfilePath.trim(),
// codex 模型 / 思考级别:trim 后留空 = 用 codex config.toml 默认
codexModel: codexModel.trim(),
codexReasoningEffort: codexReasoningEffort.trim(),
@@ -484,6 +491,32 @@ export function SettingsModal({
</select>
</Field>
<Field
label="提交代码 profile"
hint={(
<>
使 profile退
</>
)}
>
<select
value={commitProfilePath}
onChange={e => setCommitProfilePath(e.target.value)}
className={inputClass}
>
<option value=""></option>
{profiles.map(p => (
<option key={p.path} value={p.path}>{p.name}</option>
))}
{commitProfilePath
&& !profiles.some(p => p.path === commitProfilePath) && (
<option value={commitProfilePath}>
{`自定义:${commitProfilePath}`}
</option>
)}
</select>
</Field>
<Field
label="codex 模型"
hint={(
+4
View File
@@ -41,6 +41,7 @@ export interface SettingsValues {
implTabPreCreateScript: string
implTabPostCloseScript: string
conflictResolutionProfilePath: string
commitProfilePath: string
codexModel: string
codexReasoningEffort: string
profilesDirectory: string
@@ -70,6 +71,7 @@ export interface SettingsOverlayState {
implTabPreCreateScript: string
implTabPostCloseScript: string
conflictResolutionProfilePath: string
commitProfilePath: string
codexModel: string
codexReasoningEffort: string
profilesDirectory: string
@@ -290,6 +292,7 @@ export function useIssues(): UseIssuesResult {
implTabPreCreateScript: values.implTabPreCreateScript,
implTabPostCloseScript: values.implTabPostCloseScript,
conflictResolutionProfilePath: values.conflictResolutionProfilePath,
commitProfilePath: values.commitProfilePath,
codexModel: values.codexModel,
codexReasoningEffort: values.codexReasoningEffort,
profilesDirectory: values.profilesDirectory,
@@ -636,6 +639,7 @@ export function useIssues(): UseIssuesResult {
implTabPreCreateScript: msg.implTabPreCreateScript,
implTabPostCloseScript: msg.implTabPostCloseScript,
conflictResolutionProfilePath: msg.conflictResolutionProfilePath,
commitProfilePath: msg.commitProfilePath,
codexModel: msg.codexModel,
codexReasoningEffort: msg.codexReasoningEffort,
profilesDirectory: msg.profilesDirectory,
+2
View File
@@ -82,6 +82,7 @@ export type ExtensionToWebview
implTabPreCreateScript: string
implTabPostCloseScript: string
conflictResolutionProfilePath: string
commitProfilePath: string
codexModel: string
codexReasoningEffort: string
profilesDirectory: string
@@ -148,6 +149,7 @@ export type WebviewToExtension
implTabPreCreateScript: string
implTabPostCloseScript: string
conflictResolutionProfilePath: string
commitProfilePath: string
codexModel: string
codexReasoningEffort: string
profilesDirectory: string