AX Agent 최대 반복 횟수 상한을 500으로 확장
변경 목적:\n- 내부 설정의 최대 에이전트 패스 상한이 100으로 묶여 긴 Code 작업에서 반복 여유가 부족한 문제를 해소합니다.\n\n핵심 수정사항:\n- SettingsViewModel의 MaxAgentIterations 클램프를 1~500으로 상향했습니다.\n- SettingsWindow의 최대 반복 횟수 슬라이더와 안내 문구를 1~500 기준으로 맞추고 값 표시 폭을 넓혔습니다.\n- ChatWindow 오버레이 설정의 슬라이더, 텍스트 입력, 동기화 클램프를 모두 500 기준으로 통일했습니다.\n- AgentSettingsWindow의 로드/저장 파싱 상한도 500으로 맞춰 설정 경로 간 불일치를 제거했습니다.\n- README와 DEVELOPMENT 문서에 2026-04-15 20:19 (KST) 기준 변경 이력과 빌드 검증 결과를 반영했습니다.\n\n검증 결과:\n- dotnet build src/AxCopilot/AxCopilot.csproj -c Release -v minimal -p:OutputPath=bin\\verify_max_agent_iterations_500\\ -p:IntermediateOutputPath=obj\\verify_max_agent_iterations_500\\\n- 경고 0 / 오류 0
This commit is contained in:
@@ -300,7 +300,7 @@ public class SettingsViewModel : INotifyPropertyChanged
|
||||
public int MaxAgentIterations
|
||||
{
|
||||
get => _maxAgentIterations;
|
||||
set { _maxAgentIterations = Math.Clamp(value, 1, 100); OnPropertyChanged(); }
|
||||
set { _maxAgentIterations = Math.Clamp(value, 1, 500); OnPropertyChanged(); }
|
||||
}
|
||||
|
||||
private int _maxRetryOnError;
|
||||
|
||||
@@ -80,7 +80,7 @@ public partial class AgentSettingsWindow : Window
|
||||
ChkEnableCoworkVerification.IsChecked = _llm.EnableCoworkVerification;
|
||||
ChkEnableProjectRules.IsChecked = _llm.EnableProjectRules;
|
||||
ChkEnableAgentMemory.IsChecked = _llm.EnableAgentMemory;
|
||||
TxtMaxAgentIterations.Text = Math.Clamp(_llm.MaxAgentIterations, 1, 200).ToString();
|
||||
TxtMaxAgentIterations.Text = Math.Clamp(_llm.MaxAgentIterations, 1, 500).ToString();
|
||||
ChkEnableCodeVerification.IsChecked = _llm.Code.EnableCodeVerification;
|
||||
ChkEnableParallelTools.IsChecked = _llm.EnableParallelTools;
|
||||
ChkEnableWorktreeTools.IsChecked = _llm.Code.EnableWorktreeTools;
|
||||
@@ -571,7 +571,7 @@ public partial class AgentSettingsWindow : Window
|
||||
_llm.EnableCoworkVerification = ChkEnableCoworkVerification.IsChecked == true;
|
||||
_llm.EnableProjectRules = ChkEnableProjectRules.IsChecked == true;
|
||||
_llm.EnableAgentMemory = ChkEnableAgentMemory.IsChecked == true;
|
||||
_llm.MaxAgentIterations = ParseInt(TxtMaxAgentIterations.Text, 25, 1, 200);
|
||||
_llm.MaxAgentIterations = ParseInt(TxtMaxAgentIterations.Text, 25, 1, 500);
|
||||
_llm.Code.EnableCodeVerification = ChkEnableCodeVerification.IsChecked == true;
|
||||
_llm.EnableParallelTools = ChkEnableParallelTools.IsChecked == true;
|
||||
_llm.Code.EnableWorktreeTools = ChkEnableWorktreeTools.IsChecked == true;
|
||||
|
||||
@@ -472,7 +472,7 @@ public partial class ChatWindow
|
||||
CommitOverlayNumericInput(TxtOverlayMaxContextTokens, llm.MaxContextTokens, 1024, 1_000_000, value => llm.MaxContextTokens = value, normalizeOnInvalid: true);
|
||||
CommitOverlayTemperatureInput(normalizeOnInvalid: true);
|
||||
CommitOverlayNumericInput(TxtOverlayMaxRetryOnError, llm.MaxRetryOnError, 0, 10, value => llm.MaxRetryOnError = value, normalizeOnInvalid: true);
|
||||
CommitOverlayNumericInput(TxtOverlayMaxAgentIterations, llm.MaxAgentIterations, 1, 200, value => llm.MaxAgentIterations = value, normalizeOnInvalid: true);
|
||||
CommitOverlayNumericInput(TxtOverlayMaxAgentIterations, llm.MaxAgentIterations, 1, 500, value => llm.MaxAgentIterations = value, normalizeOnInvalid: true);
|
||||
CommitOverlayNumericInput(TxtOverlayFreeTierDelaySeconds, llm.FreeTierDelaySeconds, 0, 60, value => llm.FreeTierDelaySeconds = value, normalizeOnInvalid: true);
|
||||
CommitOverlayNumericInput(TxtOverlayMaxSubAgents, llm.MaxSubAgents, 1, 10, value => llm.MaxSubAgents = value, normalizeOnInvalid: true);
|
||||
CommitOverlayNumericInput(TxtOverlayToolHookTimeoutMs, llm.ToolHookTimeoutMs, 3000, 30000, value => llm.ToolHookTimeoutMs = value, normalizeOnInvalid: true);
|
||||
@@ -599,11 +599,11 @@ public partial class ChatWindow
|
||||
if (TxtOverlayMaxRetryOnErrorValue != null)
|
||||
TxtOverlayMaxRetryOnErrorValue.Text = Math.Clamp(llm.MaxRetryOnError, 0, 10).ToString();
|
||||
if (TxtOverlayMaxAgentIterations != null)
|
||||
TxtOverlayMaxAgentIterations.Text = Math.Clamp(llm.MaxAgentIterations, 1, 200).ToString();
|
||||
TxtOverlayMaxAgentIterations.Text = Math.Clamp(llm.MaxAgentIterations, 1, 500).ToString();
|
||||
if (SldOverlayMaxAgentIterations != null)
|
||||
SldOverlayMaxAgentIterations.Value = Math.Clamp(llm.MaxAgentIterations, 1, 100);
|
||||
SldOverlayMaxAgentIterations.Value = Math.Clamp(llm.MaxAgentIterations, 1, 500);
|
||||
if (TxtOverlayMaxAgentIterationsValue != null)
|
||||
TxtOverlayMaxAgentIterationsValue.Text = Math.Clamp(llm.MaxAgentIterations, 1, 100).ToString();
|
||||
TxtOverlayMaxAgentIterationsValue.Text = Math.Clamp(llm.MaxAgentIterations, 1, 500).ToString();
|
||||
if (TxtOverlayFreeTierDelaySeconds != null)
|
||||
TxtOverlayFreeTierDelaySeconds.Text = Math.Clamp(llm.FreeTierDelaySeconds, 0, 60).ToString();
|
||||
if (SldOverlayFreeTierDelaySeconds != null)
|
||||
@@ -1030,7 +1030,7 @@ public partial class ChatWindow
|
||||
if (_isOverlaySettingsSyncing || llm == null)
|
||||
return;
|
||||
|
||||
var value = (int)Math.Round(Math.Clamp(e.NewValue, 1, 100));
|
||||
var value = (int)Math.Round(Math.Clamp(e.NewValue, 1, 500));
|
||||
llm.MaxAgentIterations = value;
|
||||
if (TxtOverlayMaxAgentIterations != null)
|
||||
TxtOverlayMaxAgentIterations.Text = value.ToString();
|
||||
@@ -1165,7 +1165,7 @@ public partial class ChatWindow
|
||||
if (_isOverlaySettingsSyncing)
|
||||
return;
|
||||
|
||||
if (CommitOverlayNumericInput(TxtOverlayMaxAgentIterations, _settings.Settings.Llm.MaxAgentIterations, 1, 200, value => _settings.Settings.Llm.MaxAgentIterations = value, normalizeOnInvalid: false))
|
||||
if (CommitOverlayNumericInput(TxtOverlayMaxAgentIterations, _settings.Settings.Llm.MaxAgentIterations, 1, 500, value => _settings.Settings.Llm.MaxAgentIterations = value, normalizeOnInvalid: false))
|
||||
PersistOverlaySettingsState(refreshOverlayDeferredInputs: false);
|
||||
}
|
||||
|
||||
|
||||
@@ -4769,7 +4769,7 @@
|
||||
<Slider x:Name="SldOverlayMaxAgentIterations"
|
||||
Width="150"
|
||||
Minimum="1"
|
||||
Maximum="100"
|
||||
Maximum="500"
|
||||
TickFrequency="1"
|
||||
IsSnapToTickEnabled="True"
|
||||
ValueChanged="SldOverlayMaxAgentIterations_ValueChanged"
|
||||
|
||||
@@ -5004,17 +5004,17 @@
|
||||
<Grid>
|
||||
<StackPanel HorizontalAlignment="Left">
|
||||
<TextBlock Style="{StaticResource RowLabel}" Text="최대 반복 횟수"/>
|
||||
<TextBlock Style="{StaticResource RowHint}" Text="에이전트가 도구를 호출하며 반복할 수 있는 최대 횟수입니다. (1~100)"/>
|
||||
<TextBlock Style="{StaticResource RowHint}" Text="에이전트가 도구를 호출하며 반복할 수 있는 최대 횟수입니다. (1~500)"/>
|
||||
</StackPanel>
|
||||
<StackPanel Orientation="Horizontal" HorizontalAlignment="Right" VerticalAlignment="Center">
|
||||
<Slider Width="120" Minimum="1" Maximum="100" TickFrequency="1"
|
||||
<Slider Width="120" Minimum="1" Maximum="500" TickFrequency="1"
|
||||
IsSnapToTickEnabled="True"
|
||||
Value="{Binding MaxAgentIterations, Mode=TwoWay}"
|
||||
VerticalAlignment="Center"/>
|
||||
<TextBlock Text="{Binding MaxAgentIterations}"
|
||||
FontSize="13" FontWeight="SemiBold" Foreground="{DynamicResource AccentColor}"
|
||||
Width="32" TextAlignment="Center" VerticalAlignment="Center"
|
||||
Margin="8,0,0,0"/>
|
||||
FontSize="13" FontWeight="SemiBold" Foreground="{DynamicResource AccentColor}"
|
||||
Width="40" TextAlignment="Center" VerticalAlignment="Center"
|
||||
Margin="8,0,0,0"/>
|
||||
</StackPanel>
|
||||
</Grid>
|
||||
</Border>
|
||||
|
||||
Reference in New Issue
Block a user