mirror of
https://github.com/qingchencloud/clawpanel.git
synced 2026-05-31 05:10:14 +08:00
feat(hermes): add kanban concurrency controls
This commit is contained in:
@@ -176,6 +176,8 @@ const HUMAN_DELAY_DEFAULTS = {
|
||||
const KANBAN_DEFAULTS = {
|
||||
dispatchInGateway: true,
|
||||
dispatchIntervalSeconds: 60,
|
||||
maxSpawn: 0,
|
||||
maxInProgress: 0,
|
||||
failureLimit: 2,
|
||||
autoDecompose: true,
|
||||
autoDecomposePerTick: 3,
|
||||
@@ -1501,6 +1503,14 @@ export function render() {
|
||||
<span class="hm-field-label">${t('engine.hermesKanbanConfigDispatchIntervalSeconds')}</span>
|
||||
<input id="hm-kanban-dispatch-interval-seconds" class="hm-input" type="number" inputmode="numeric" min="1" max="86400" step="1" value="${esc(kanbanValues.dispatchIntervalSeconds)}" ${disabled ? 'disabled' : ''}>
|
||||
</label>
|
||||
<label class="hm-field">
|
||||
<span class="hm-field-label">${t('engine.hermesKanbanConfigMaxSpawn')}</span>
|
||||
<input id="hm-kanban-max-spawn" class="hm-input" type="number" inputmode="numeric" min="0" max="1000" step="1" value="${esc(kanbanValues.maxSpawn)}" ${disabled ? 'disabled' : ''}>
|
||||
</label>
|
||||
<label class="hm-field">
|
||||
<span class="hm-field-label">${t('engine.hermesKanbanConfigMaxInProgress')}</span>
|
||||
<input id="hm-kanban-max-in-progress" class="hm-input" type="number" inputmode="numeric" min="0" max="1000" step="1" value="${esc(kanbanValues.maxInProgress)}" ${disabled ? 'disabled' : ''}>
|
||||
</label>
|
||||
<label class="hm-field">
|
||||
<span class="hm-field-label">${t('engine.hermesKanbanConfigFailureLimit')}</span>
|
||||
<input id="hm-kanban-failure-limit" class="hm-input" type="number" inputmode="numeric" min="1" max="100" step="1" value="${esc(kanbanValues.failureLimit)}" ${disabled ? 'disabled' : ''}>
|
||||
@@ -3515,6 +3525,8 @@ export function render() {
|
||||
const form = {
|
||||
dispatchInGateway: el.querySelector('#hm-kanban-dispatch-in-gateway')?.checked ?? true,
|
||||
dispatchIntervalSeconds: el.querySelector('#hm-kanban-dispatch-interval-seconds')?.value || '60',
|
||||
maxSpawn: el.querySelector('#hm-kanban-max-spawn')?.value || '0',
|
||||
maxInProgress: el.querySelector('#hm-kanban-max-in-progress')?.value || '0',
|
||||
failureLimit: el.querySelector('#hm-kanban-failure-limit')?.value || '2',
|
||||
autoDecompose: el.querySelector('#hm-kanban-auto-decompose')?.checked ?? true,
|
||||
autoDecomposePerTick: el.querySelector('#hm-kanban-auto-decompose-per-tick')?.value || '3',
|
||||
|
||||
@@ -1029,7 +1029,7 @@ export default {
|
||||
hermesHumanDelayConfigMaxMs: _('最大延迟 ms', 'Maximum delay ms', '最大延遲 ms'),
|
||||
hermesHumanDelayConfigFootnote: _('natural 使用 800-2500ms;custom 使用下方范围。Signal 等平台可能忽略或仅部分支持该设置。', 'natural uses 800-2500ms; custom uses the range below. Platforms such as Signal may ignore or only partially support this setting.', 'natural 使用 800-2500ms;custom 使用下方範圍。Signal 等平台可能忽略或僅部分支援此設定。'),
|
||||
hermesKanbanConfigTitle: _('Kanban 调度稳定性', 'Kanban dispatch reliability', 'Kanban 調度穩定性'),
|
||||
hermesKanbanConfigDesc: _('控制 Gateway 是否自动派发 Kanban 任务、派发频率、失败上限和无心跳回收策略。', 'Control whether Gateway dispatches Kanban work, its interval, failure limit, and heartbeat reclaim policy.', '控制 Gateway 是否自動派發 Kanban 任務、派發頻率、失敗上限和無心跳回收策略。'),
|
||||
hermesKanbanConfigDesc: _('控制 Gateway 是否自动派发 Kanban 任务、派发频率、并发上限、失败上限和无心跳回收策略。', 'Control whether Gateway dispatches Kanban work, its interval, concurrency caps, failure limit, and heartbeat reclaim policy.', '控制 Gateway 是否自動派發 Kanban 任務、派發頻率、並發上限、失敗上限和無心跳回收策略。'),
|
||||
hermesKanbanConfigStatusReady: _('结构化配置', 'structured settings', '結構化設定'),
|
||||
hermesKanbanConfigSave: _('保存 Kanban 设置', 'Save Kanban settings', '儲存 Kanban 設定'),
|
||||
hermesKanbanConfigSaveSuccess: _('Kanban 调度配置已保存,建议重启 Hermes Gateway 生效', 'Kanban dispatch settings saved. Restart Hermes Gateway to take effect.', 'Kanban 調度設定已儲存,建議重啟 Hermes Gateway 生效'),
|
||||
@@ -1037,11 +1037,13 @@ export default {
|
||||
hermesKanbanConfigSaveFailed: _('保存 Kanban 调度配置失败', 'Save Kanban dispatch settings failed', '儲存 Kanban 調度設定失敗'),
|
||||
hermesKanbanConfigDispatchInGateway: _('由 Gateway 自动派发任务', 'Dispatch tasks in Gateway', '由 Gateway 自動派發任務'),
|
||||
hermesKanbanConfigDispatchIntervalSeconds: _('派发检查间隔(秒)', 'Dispatch interval (s)', '派發檢查間隔(秒)'),
|
||||
hermesKanbanConfigMaxSpawn: _('每轮最多启动任务数', 'Max spawned per tick', '每輪最多啟動任務數'),
|
||||
hermesKanbanConfigMaxInProgress: _('同时运行任务上限', 'Max running tasks', '同時執行任務上限'),
|
||||
hermesKanbanConfigFailureLimit: _('失败重试上限', 'Failure retry limit', '失敗重試上限'),
|
||||
hermesKanbanConfigAutoDecompose: _('自动拆解待办任务', 'Auto decompose tasks', '自動拆解待辦任務'),
|
||||
hermesKanbanConfigAutoDecomposePerTick: _('每轮自动拆解数量', 'Auto decompose per tick', '每輪自動拆解數量'),
|
||||
hermesKanbanConfigDispatchStaleTimeoutSeconds: _('无心跳回收时间(秒)', 'Heartbeat reclaim timeout (s)', '無心跳回收時間(秒)'),
|
||||
hermesKanbanConfigFootnote: _('写入 kanban.dispatch_in_gateway、dispatch_interval_seconds、failure_limit、auto_decompose、auto_decompose_per_tick、dispatch_stale_timeout_seconds。无心跳回收默认 14400 秒;设为 0 会关闭自动回收。', 'Writes kanban.dispatch_in_gateway, dispatch_interval_seconds, failure_limit, auto_decompose, auto_decompose_per_tick, and dispatch_stale_timeout_seconds. Heartbeat reclaim defaults to 14400 seconds; set 0 to disable automatic reclaim.', '寫入 kanban.dispatch_in_gateway、dispatch_interval_seconds、failure_limit、auto_decompose、auto_decompose_per_tick、dispatch_stale_timeout_seconds。無心跳回收預設 14400 秒;設為 0 會關閉自動回收。'),
|
||||
hermesKanbanConfigFootnote: _('写入 kanban.dispatch_in_gateway、dispatch_interval_seconds、max_spawn、max_in_progress、failure_limit、auto_decompose、auto_decompose_per_tick、dispatch_stale_timeout_seconds。两个并发上限填 0 表示不写入限制;无心跳回收填 0 表示关闭自动回收。', 'Writes kanban.dispatch_in_gateway, dispatch_interval_seconds, max_spawn, max_in_progress, failure_limit, auto_decompose, auto_decompose_per_tick, and dispatch_stale_timeout_seconds. Set concurrency caps to 0 to omit limits; set heartbeat reclaim to 0 to disable automatic reclaim.', '寫入 kanban.dispatch_in_gateway、dispatch_interval_seconds、max_spawn、max_in_progress、failure_limit、auto_decompose、auto_decompose_per_tick、dispatch_stale_timeout_seconds。兩個並發上限填 0 表示不寫入限制;無心跳回收填 0 表示關閉自動回收。'),
|
||||
hermesSecurityConfigTitle: _('Tirith 安全扫描', 'Tirith security scanning', 'Tirith 安全掃描'),
|
||||
hermesSecurityConfigDesc: _('控制终端命令执行前的 Tirith 内容扫描,拦截明显的 URL 伪装、管道执行和注入风险。', 'Control Tirith content scanning before terminal commands run to catch obvious URL spoofing, pipe-to-shell, and injection risks.', '控制終端命令執行前的 Tirith 內容掃描,攔截明顯的 URL 偽裝、管道執行和注入風險。'),
|
||||
hermesSecurityConfigStatusReady: _('结构化配置', 'structured settings', '結構化設定'),
|
||||
|
||||
Reference in New Issue
Block a user