feat: run_command 改为下拉框设置自动/需确认/禁用三种模式

- 替换原有开关为下拉选择框(selectRunCommandMode)
- 新增 setRunCommandMode() 动态控制确认行为
- 需确认模式:弹窗确认后执行
- 自动模式:直接执行,无需确认
- 禁用模式:工具不可用
- 新增 .tool-card-badge.disabled 样式
- 状态从 runCommandEnabled(bool) 迁移为 runCommandMode(string)
This commit is contained in:
thzxx
2026-04-16 19:39:11 +08:00
parent fe0daf7075
commit c62fd4c7fd
7 changed files with 67 additions and 34 deletions
+5 -7
View File
@@ -22,7 +22,7 @@ import { initHistoryModal, closeHistoryModal } from './components/history-modal.
import { initMemoryModal } from './components/memory-modal.js';
import { initToolsModal, closeToolsModal } from './components/tools-modal.js';
import { initMemoryManager } from './services/memory-manager.js';
import { setToolEnabled } from './services/tool-registry.js';
import { setToolEnabled, setRunCommandMode } from './services/tool-registry.js';
import { initToolConfirmModal } from './components/tool-confirm-modal.js';
import { initWorkspacePanel } from './components/workspace-panel.js';
import { initLogPanel, addLog } from './services/log-service.js';
@@ -190,7 +190,7 @@ async function init(): Promise<void> {
// ── 防御性重置:确保首次启动不会遗留脏状态 ──
state.set('toolCallingEnabled', false);
state.set('runCommandEnabled', true); // 默认开启(需确认
state.set('runCommandMode', 'confirm'); // 默认需确认
state.set('memoryEnabled', true);
state.set('thinkEnabled', false);
@@ -236,14 +236,12 @@ async function init(): Promise<void> {
// ── Tool Calling 设置 ──
const toolCallingEnabled = await db.getSetting('toolCallingEnabled', false);
const runCommandEnabled = await db.getSetting('runCommandEnabled', true); // 默认开启(需确认)
const runCommandMode = await db.getSetting('runCommandMode', 'confirm') as 'auto' | 'confirm' | 'disabled';
state.set('toolCallingEnabled', toolCallingEnabled);
state.set('runCommandEnabled', runCommandEnabled);
if (!runCommandEnabled) setToolEnabled('run_command', false); // 仅在用户明确关闭时禁用
state.set('runCommandMode', runCommandMode);
setRunCommandMode(runCommandMode);
const toggleTC = document.querySelector<HTMLInputElement>('#toggleToolCalling');
if (toggleTC) toggleTC.checked = toolCallingEnabled;
const toggleRC = document.querySelector<HTMLInputElement>('#toggleRunCommand');
if (toggleRC) toggleRC.checked = runCommandEnabled;
// ── Agent 记忆设置 ──
const memoryEnabled = await db.getSetting('memoryEnabled', true);