From c73b71f328c1a1349e412ba543a325ef91f75841 Mon Sep 17 00:00:00 2001 From: Petr Mironychev <9195189+Palm1r@users.noreply.github.com> Date: Thu, 23 Apr 2026 19:23:18 +0200 Subject: [PATCH] feat: Add max continuation tools settings --- ChatView/ClientInterface.cpp | 3 +++ QuickRefactorHandler.cpp | 4 ++++ settings/SettingsConstants.hpp | 1 + settings/ToolsSettings.cpp | 11 +++++++++++ settings/ToolsSettings.hpp | 1 + 5 files changed, 20 insertions(+) diff --git a/ChatView/ClientInterface.cpp b/ChatView/ClientInterface.cpp index 6a14632..4bddc16 100644 --- a/ChatView/ClientInterface.cpp +++ b/ChatView/ClientInterface.cpp @@ -242,6 +242,9 @@ void ClientInterface::sendMessage( useTools, useThinking); + provider->client()->setMaxToolContinuations( + Settings::toolsSettings().maxToolContinuations()); + connect( provider->client(), &::LLMQore::BaseClient::chunkReceived, diff --git a/QuickRefactorHandler.cpp b/QuickRefactorHandler.cpp index 8e02e99..e831392 100644 --- a/QuickRefactorHandler.cpp +++ b/QuickRefactorHandler.cpp @@ -19,6 +19,7 @@ #include #include #include +#include namespace QodeAssist { @@ -139,6 +140,9 @@ void QuickRefactorHandler::prepareAndSendRequest( enableTools, enableThinking); + provider->client()->setMaxToolContinuations( + Settings::toolsSettings().maxToolContinuations()); + m_isRefactoringInProgress = true; connect( diff --git a/settings/SettingsConstants.hpp b/settings/SettingsConstants.hpp index d6508c2..980960f 100644 --- a/settings/SettingsConstants.hpp +++ b/settings/SettingsConstants.hpp @@ -87,6 +87,7 @@ const char CA_ENABLE_CHAT_IN_BOTTOM_TOOLBAR[] = "QodeAssist.caEnableChatInBottom const char CA_ENABLE_CHAT_IN_NAVIGATION_PANEL[] = "QodeAssist.caEnableChatInNavigationPanel"; const char CA_ENABLE_CHAT_TOOLS[] = "QodeAssist.caEnableChatTools"; const char CA_USE_TOOLS[] = "QodeAssist.caUseTools"; +const char TOOLS_MAX_CONTINUATIONS[] = "QodeAssist.toolsMaxContinuations"; const char CA_ALLOW_ACCESS_OUTSIDE_PROJECT[] = "QodeAssist.caAllowAccessOutsideProject"; const char CA_ENABLE_LIST_PROJECT_FILES_TOOL[] = "QodeAssist.caEnableListProjectFilesTool"; const char CA_ENABLE_FIND_FILE_TOOL[] = "QodeAssist.caEnableFindFileTool"; diff --git a/settings/ToolsSettings.cpp b/settings/ToolsSettings.cpp index 226f6bb..b61e069 100644 --- a/settings/ToolsSettings.cpp +++ b/settings/ToolsSettings.cpp @@ -40,6 +40,15 @@ ToolsSettings::ToolsSettings() "When disabled, each edit is staged for manual approval.")); autoApplyFileEdits.setDefaultValue(false); + maxToolContinuations.setSettingsKey(Constants::TOOLS_MAX_CONTINUATIONS); + maxToolContinuations.setLabelText(Tr::tr("Max tool continuations:")); + maxToolContinuations.setToolTip( + Tr::tr("Maximum number of consecutive tool-use rounds in a single request. " + "Each round lets the model call tools and receive results before continuing. " + "Higher values allow more complex multi-step tasks but increase token usage.")); + maxToolContinuations.setRange(1, 100); + maxToolContinuations.setDefaultValue(30); + enableListProjectFilesTool.setSettingsKey(Constants::CA_ENABLE_LIST_PROJECT_FILES_TOOL); enableListProjectFilesTool.setLabelText(Tr::tr("List Project Files")); enableListProjectFilesTool.setToolTip( @@ -174,6 +183,7 @@ ToolsSettings::ToolsSettings() title(Tr::tr("Tool Settings")), Column{ allowAccessOutsideProject, + Row{maxToolContinuations, Stretch{1}}, Space{4}, Group{ title(Tr::tr("Edit File")), @@ -206,6 +216,7 @@ void ToolsSettings::resetSettingsToDefaults() if (reply == QMessageBox::Yes) { resetAspect(allowAccessOutsideProject); resetAspect(autoApplyFileEdits); + resetAspect(maxToolContinuations); resetAspect(enableListProjectFilesTool); resetAspect(enableFindFileTool); resetAspect(enableReadFileTool); diff --git a/settings/ToolsSettings.hpp b/settings/ToolsSettings.hpp index a36f06f..7aaa33b 100644 --- a/settings/ToolsSettings.hpp +++ b/settings/ToolsSettings.hpp @@ -18,6 +18,7 @@ public: Utils::BoolAspect allowAccessOutsideProject{this}; Utils::BoolAspect autoApplyFileEdits{this}; + Utils::IntegerAspect maxToolContinuations{this}; Utils::BoolAspect enableListProjectFilesTool{this}; Utils::BoolAspect enableFindFileTool{this};