mirror of
https://github.com/OpenHands/OpenHands.git
synced 2025-12-26 05:48:36 +08:00
Fix(settings): enforce condenser max history size >= 20 and improve messaging (#10638)
This commit is contained in:
parent
36e0d8d3da
commit
6f5c8186b8
@ -1568,20 +1568,20 @@
|
||||
"uk": "Максимальний розмір історії конденсатора пам'яті"
|
||||
},
|
||||
"SETTINGS$CONDENSER_MAX_SIZE_TOOLTIP": {
|
||||
"en": "After this many events, the condenser will summarize history. Minimum 10.",
|
||||
"ja": "このイベント数を超えると、凝縮器が履歴を要約します。最小 10。",
|
||||
"zh-CN": "达到此事件数量后,凝缩器将汇总历史。最小 10。",
|
||||
"zh-TW": "超過此事件數後,凝縮器會摘要歷史。最小 10。",
|
||||
"ko-KR": "이 이벤트 수 이후 응축기가 기록을 요약합니다. 최소 10.",
|
||||
"no": "Etter så mange hendelser vil kondenseren oppsummere historikken. Minimum 10.",
|
||||
"it": "Dopo questo numero di eventi, il condensatore riassumerà la cronologia. Minimo 10.",
|
||||
"pt": "Após esse número de eventos, o condensador irá resumir o histórico. Mínimo 10.",
|
||||
"es": "Después de este número de eventos, el condensador resumirá el historial. Mínimo 10.",
|
||||
"ar": "بعد هذا العدد من الأحداث، سيقوم المكثف بتلخيص السجل. الحد الأدنى 10.",
|
||||
"fr": "Après ce nombre d'événements, le condenseur résumera l'historique. Minimum 10.",
|
||||
"tr": "Bu kadar olaydan sonra yoğunlaştırıcı geçmişi özetler. En az 10.",
|
||||
"de": "Nach so vielen Ereignissen fasst der Kondensator die Historie zusammen. Minimum 10.",
|
||||
"uk": "Після цієї кількості подій конденсатор узагальнить історію. Мінімум 10."
|
||||
"en": "After this many events, the condenser will summarize history. Minimum 20.",
|
||||
"ja": "このイベント数を超えると、凝縮器が履歴を要約します。最小 20。",
|
||||
"zh-CN": "达到此事件数量后,凝缩器将汇总历史。最小 20。",
|
||||
"zh-TW": "超過此事件數後,凝縮器會摘要歷史。最小 20。",
|
||||
"ko-KR": "이 이벤트 수 이후 응축기가 기록을 요약합니다. 최소 20.",
|
||||
"no": "Etter så mange hendelser vil kondenseren oppsummere historikken. Minimum 20.",
|
||||
"it": "Dopo questo numero di eventi, il condensatore riassumerà la cronologia. Minimo 20.",
|
||||
"pt": "Após esse número de eventos, o condensador irá resumir o histórico. Mínimo 20.",
|
||||
"es": "Después de este número de eventos, el condensador resumirá el historial. Mínimo 20.",
|
||||
"ar": "بعد هذا العدد من الأحداث، سيقوم المكثف بتلخيص السجل. الحد الأدنى 20.",
|
||||
"fr": "Après ce nombre d'événements, le condenseur résumera l'historique. Minimum 20.",
|
||||
"tr": "Bu kadar olaydan sonra yoğunlaştırıcı geçmişi özetler. En az 20.",
|
||||
"de": "Nach so vielen Ereignissen fasst der Kondensator die Historie zusammen. Minimum 20.",
|
||||
"uk": "Після цієї кількості подій конденсатор узагальнить історію. Мінімум 20."
|
||||
},
|
||||
"SETTINGS$LANGUAGE": {
|
||||
"en": "Language",
|
||||
|
||||
@ -186,9 +186,13 @@ function LlmSettingsScreen() {
|
||||
const condenserMaxSizeStr = formData
|
||||
.get("condenser-max-size-input")
|
||||
?.toString();
|
||||
const condenserMaxSize = condenserMaxSizeStr
|
||||
const condenserMaxSizeRaw = condenserMaxSizeStr
|
||||
? Number.parseInt(condenserMaxSizeStr, 10)
|
||||
: undefined;
|
||||
const condenserMaxSize =
|
||||
condenserMaxSizeRaw !== undefined
|
||||
? Math.max(20, condenserMaxSizeRaw)
|
||||
: undefined;
|
||||
|
||||
const securityAnalyzer = formData
|
||||
.get("security-analyzer-input")
|
||||
@ -322,8 +326,9 @@ function LlmSettingsScreen() {
|
||||
|
||||
const handleCondenserMaxSizeIsDirty = (value: string) => {
|
||||
const parsed = value ? Number.parseInt(value, 10) : undefined;
|
||||
const bounded = parsed !== undefined ? Math.max(20, parsed) : undefined;
|
||||
const condenserMaxSizeIsDirty =
|
||||
(parsed ?? DEFAULT_SETTINGS.CONDENSER_MAX_SIZE) !==
|
||||
(bounded ?? DEFAULT_SETTINGS.CONDENSER_MAX_SIZE) !==
|
||||
(settings?.CONDENSER_MAX_SIZE ?? DEFAULT_SETTINGS.CONDENSER_MAX_SIZE);
|
||||
setDirtyInputs((prev) => ({
|
||||
...prev,
|
||||
@ -593,7 +598,7 @@ function LlmSettingsScreen() {
|
||||
testId="condenser-max-size-input"
|
||||
name="condenser-max-size-input"
|
||||
type="number"
|
||||
min={10}
|
||||
min={20}
|
||||
step={1}
|
||||
label={t(I18nKey.SETTINGS$CONDENSER_MAX_SIZE)}
|
||||
defaultValue={(
|
||||
|
||||
@ -110,8 +110,8 @@ class Settings(BaseModel):
|
||||
def validate_condenser_max_size(cls, v: int | None) -> int | None:
|
||||
if v is None:
|
||||
return v
|
||||
if v < 10:
|
||||
raise ValueError('condenser_max_size must be at least 10')
|
||||
if v < 20:
|
||||
raise ValueError('condenser_max_size must be at least 20')
|
||||
return v
|
||||
|
||||
@field_serializer('secrets_store')
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user