✨ feat(vscode): codex 命令统一组装,模型/思考级别可在设置面板配置
新增 cc/codexCommand.ts 作为 codex 调用的唯一出口(buildCodexArgs / buildCodexCommandString),把 exec-review / resume / interactive 三种形态 的 flag 拼装收敛到一处;模型与思考级别作为自由文本项写入全局设置并贯穿 webview 消息通道,空值则不传 -c,沿用 codex config.toml 默认。
This commit is contained in:
@@ -453,6 +453,8 @@ export function App() {
|
||||
initialImplTabPreCreateScript={settings?.implTabPreCreateScript ?? ''}
|
||||
initialImplTabPostCloseScript={settings?.implTabPostCloseScript ?? ''}
|
||||
initialConflictResolutionProfilePath={settings?.conflictResolutionProfilePath ?? ''}
|
||||
initialCodexModel={settings?.codexModel ?? ''}
|
||||
initialCodexReasoningEffort={settings?.codexReasoningEffort ?? ''}
|
||||
initialYoutrackBaseUrl={settings?.youtrackBaseUrl ?? ''}
|
||||
initialYoutrackProjectShortName={settings?.youtrackProjectShortName ?? ''}
|
||||
initialYoutrackCloseCommand={settings?.youtrackCloseCommand ?? ''}
|
||||
|
||||
@@ -32,6 +32,8 @@ interface SubmitValues {
|
||||
implTabPreCreateScript: string
|
||||
implTabPostCloseScript: string
|
||||
conflictResolutionProfilePath: string
|
||||
codexModel: string
|
||||
codexReasoningEffort: string
|
||||
youtrackBaseUrl: string
|
||||
youtrackProjectShortName: string
|
||||
youtrackCloseCommand: string
|
||||
@@ -72,6 +74,8 @@ export interface SettingsModalProps {
|
||||
initialImplTabPreCreateScript: string
|
||||
initialImplTabPostCloseScript: string
|
||||
initialConflictResolutionProfilePath: string
|
||||
initialCodexModel: string
|
||||
initialCodexReasoningEffort: string
|
||||
initialYoutrackBaseUrl: string
|
||||
initialYoutrackProjectShortName: string
|
||||
initialYoutrackCloseCommand: string
|
||||
@@ -146,6 +150,8 @@ export function SettingsModal({
|
||||
initialImplTabPreCreateScript,
|
||||
initialImplTabPostCloseScript,
|
||||
initialConflictResolutionProfilePath,
|
||||
initialCodexModel,
|
||||
initialCodexReasoningEffort,
|
||||
initialYoutrackBaseUrl,
|
||||
initialYoutrackProjectShortName,
|
||||
initialYoutrackCloseCommand,
|
||||
@@ -174,6 +180,8 @@ export function SettingsModal({
|
||||
const [implTabPreCreateScript, setImplTabPreCreateScript] = useState(initialImplTabPreCreateScript)
|
||||
const [implTabPostCloseScript, setImplTabPostCloseScript] = useState(initialImplTabPostCloseScript)
|
||||
const [conflictResolutionProfilePath, setConflictResolutionProfilePath] = useState(initialConflictResolutionProfilePath)
|
||||
const [codexModel, setCodexModel] = useState(initialCodexModel)
|
||||
const [codexReasoningEffort, setCodexReasoningEffort] = useState(initialCodexReasoningEffort)
|
||||
const [youtrackBaseUrl, setYoutrackBaseUrl] = useState(initialYoutrackBaseUrl)
|
||||
const [youtrackProjectShortName, setYoutrackProjectShortName] = useState(initialYoutrackProjectShortName)
|
||||
const [youtrackCloseCommand, setYoutrackCloseCommand] = useState(initialYoutrackCloseCommand)
|
||||
@@ -204,6 +212,8 @@ export function SettingsModal({
|
||||
setImplTabPreCreateScript(initialImplTabPreCreateScript)
|
||||
setImplTabPostCloseScript(initialImplTabPostCloseScript)
|
||||
setConflictResolutionProfilePath(initialConflictResolutionProfilePath)
|
||||
setCodexModel(initialCodexModel)
|
||||
setCodexReasoningEffort(initialCodexReasoningEffort)
|
||||
setYoutrackBaseUrl(initialYoutrackBaseUrl)
|
||||
setYoutrackProjectShortName(initialYoutrackProjectShortName)
|
||||
setYoutrackCloseCommand(initialYoutrackCloseCommand)
|
||||
@@ -287,6 +297,9 @@ export function SettingsModal({
|
||||
implTabPostCloseScript: implTabPostCloseScript.trim(),
|
||||
// 冲突解决 profile:空串 = 用 DEFAULT_PROFILE_PATH
|
||||
conflictResolutionProfilePath: conflictResolutionProfilePath.trim(),
|
||||
// codex 模型 / 思考级别:trim 后留空 = 用 codex config.toml 默认
|
||||
codexModel: codexModel.trim(),
|
||||
codexReasoningEffort: codexReasoningEffort.trim(),
|
||||
youtrackBaseUrl: youtrackBaseUrl.trim(),
|
||||
youtrackProjectShortName: youtrackProjectShortName.trim(),
|
||||
youtrackCloseCommand: youtrackCloseCommand.trim(),
|
||||
@@ -463,6 +476,49 @@ export function SettingsModal({
|
||||
)}
|
||||
</select>
|
||||
</Field>
|
||||
|
||||
<Field
|
||||
label="codex 模型"
|
||||
hint={(
|
||||
<>
|
||||
审查会话使用的 codex 模型(
|
||||
<code>-c model=</code>
|
||||
)。留空则用 codex
|
||||
{' '}
|
||||
<code>config.toml</code>
|
||||
{' '}
|
||||
默认。
|
||||
</>
|
||||
)}
|
||||
>
|
||||
<input
|
||||
type="text"
|
||||
value={codexModel}
|
||||
onChange={e => setCodexModel(e.target.value)}
|
||||
placeholder="留空用 codex 默认(如 gpt-5.6-sol)"
|
||||
className={inputClass}
|
||||
/>
|
||||
</Field>
|
||||
|
||||
<Field
|
||||
label="codex 思考级别"
|
||||
hint={(
|
||||
<>
|
||||
审查会话的
|
||||
{' '}
|
||||
<code>model_reasoning_effort</code>
|
||||
;留空则用 codex 默认。
|
||||
</>
|
||||
)}
|
||||
>
|
||||
<input
|
||||
type="text"
|
||||
value={codexReasoningEffort}
|
||||
onChange={e => setCodexReasoningEffort(e.target.value)}
|
||||
placeholder="留空用 codex 默认(minimal/low/medium/high/xhigh)"
|
||||
className={inputClass}
|
||||
/>
|
||||
</Field>
|
||||
</>
|
||||
)}
|
||||
|
||||
|
||||
@@ -41,6 +41,8 @@ export interface SettingsValues {
|
||||
implTabPreCreateScript: string
|
||||
implTabPostCloseScript: string
|
||||
conflictResolutionProfilePath: string
|
||||
codexModel: string
|
||||
codexReasoningEffort: string
|
||||
youtrackBaseUrl: string
|
||||
youtrackProjectShortName: string
|
||||
youtrackCloseCommand: string
|
||||
@@ -67,6 +69,8 @@ export interface SettingsOverlayState {
|
||||
implTabPreCreateScript: string
|
||||
implTabPostCloseScript: string
|
||||
conflictResolutionProfilePath: string
|
||||
codexModel: string
|
||||
codexReasoningEffort: string
|
||||
youtrackBaseUrl: string
|
||||
youtrackProjectShortName: string
|
||||
youtrackCloseCommand: string
|
||||
@@ -281,6 +285,8 @@ export function useIssues(): UseIssuesResult {
|
||||
implTabPreCreateScript: values.implTabPreCreateScript,
|
||||
implTabPostCloseScript: values.implTabPostCloseScript,
|
||||
conflictResolutionProfilePath: values.conflictResolutionProfilePath,
|
||||
codexModel: values.codexModel,
|
||||
codexReasoningEffort: values.codexReasoningEffort,
|
||||
youtrackBaseUrl: values.youtrackBaseUrl,
|
||||
youtrackProjectShortName: values.youtrackProjectShortName,
|
||||
youtrackCloseCommand: values.youtrackCloseCommand,
|
||||
@@ -610,6 +616,8 @@ export function useIssues(): UseIssuesResult {
|
||||
implTabPreCreateScript: msg.implTabPreCreateScript,
|
||||
implTabPostCloseScript: msg.implTabPostCloseScript,
|
||||
conflictResolutionProfilePath: msg.conflictResolutionProfilePath,
|
||||
codexModel: msg.codexModel,
|
||||
codexReasoningEffort: msg.codexReasoningEffort,
|
||||
youtrackBaseUrl: msg.youtrackBaseUrl ?? '',
|
||||
youtrackProjectShortName: msg.youtrackProjectShortName ?? '',
|
||||
youtrackCloseCommand: msg.youtrackCloseCommand ?? '',
|
||||
|
||||
@@ -82,6 +82,8 @@ export type ExtensionToWebview
|
||||
implTabPreCreateScript: string
|
||||
implTabPostCloseScript: string
|
||||
conflictResolutionProfilePath: string
|
||||
codexModel: string
|
||||
codexReasoningEffort: string
|
||||
youtrackBaseUrl?: string
|
||||
youtrackProjectShortName?: string
|
||||
youtrackCloseCommand?: string
|
||||
@@ -144,6 +146,8 @@ export type WebviewToExtension
|
||||
implTabPreCreateScript: string
|
||||
implTabPostCloseScript: string
|
||||
conflictResolutionProfilePath: string
|
||||
codexModel: string
|
||||
codexReasoningEffort: string
|
||||
youtrackBaseUrl: string
|
||||
youtrackProjectShortName: string
|
||||
youtrackCloseCommand: string
|
||||
|
||||
Reference in New Issue
Block a user