feat: MetonaAI Desktop 初始项目

- Electron + React + TypeScript 架构
- 三栏布局: Sidebar | ChatPanel | DetailPanel
- 9 个内置工具 (文件系统/网络/记忆/命令)
- SQLite 持久化 (better-sqlite3)
- MUI 暗色/亮色主题系统
- Agent Loop ReAct 状态机引擎
- DeepSeek / Agnes AI / Ollama Provider 适配器
- MCP 协议集成
- 系统托盘 + 全局快捷键
- Tailwind CSS v4 + Tailwind Merge
- 修复: Sidebar 缺失 TextField 导入导致黑屏
This commit is contained in:
thzxx
2026-06-27 21:33:27 +08:00
commit 1d185db6b3
109 changed files with 39155 additions and 0 deletions
+93
View File
@@ -0,0 +1,93 @@
/**
* 常量定义
*
* 快捷键映射、状态颜色、消息类型等全局常量。
*/
// ===== 布局尺寸 =====
export const LAYOUT = {
HEADER_HEIGHT: 40,
STATUS_BAR_HEIGHT: 24,
SIDEBAR_WIDTH: 260,
DETAIL_WIDTH: 320,
CHAT_MAX_WIDTH: 768,
} as const;
// ===== Agent 状态颜色 =====
export const AGENT_STATUS_COLORS = {
idle: 'var(--green)',
thinking: 'var(--amber)',
executing: 'var(--purple)',
error: 'var(--red)',
} as const;
export const AGENT_STATUS_LABELS = {
idle: 'Agent Ready',
thinking: '思考中...',
executing: '执行中...',
error: '错误',
} as const;
// ===== Trace 步骤状态 =====
export const TRACE_STATE_COLORS: Record<string, string> = {
INIT: 'var(--cyan)',
THINKING: 'var(--amber)',
PARSING: 'var(--orange)',
EXECUTING: 'var(--purple)',
OBSERVING: 'var(--cyan)',
REFLECTING: 'var(--purple)',
COMPRESSING: 'var(--amber)',
TERMINATED: 'var(--green)',
};
export const TRACE_STATE_LABELS: Record<string, string> = {
INIT: '初始化',
THINKING: '思考',
PARSING: '解析',
EXECUTING: '执行',
OBSERVING: '观察',
REFLECTING: '反思',
COMPRESSING: '压缩',
TERMINATED: '终止',
};
// ===== 工具调用状态 =====
export const TOOL_CALL_STATUS_COLORS = {
pending: 'var(--amber)',
executing: 'var(--purple)',
success: 'var(--green)',
error: 'var(--red)',
blocked: 'var(--orange)',
} as const;
// ===== 快捷键定义 =====
export const SHORTCUTS = {
NEW_SESSION: { key: 'n', ctrl: true },
QUICK_SEARCH: { key: 'k', ctrl: true },
SEND_MESSAGE: { key: 'Enter', ctrl: true },
NEW_LINE: { key: 'Enter', ctrl: true, shift: true },
ABORT: { key: '.', ctrl: true },
FOCUS_MODE: { key: 'f', ctrl: true, shift: true },
TOGGLE_SIDEBAR: { key: 'b', ctrl: true },
TOGGLE_DETAIL: { key: 'j', ctrl: true },
OPEN_SETTINGS: { key: ',', ctrl: true },
PREV_SESSION: { key: '[', ctrl: true },
NEXT_SESSION: { key: ']', ctrl: true },
CLOSE_POPUP: { key: 'Escape' },
FOCUS_INPUT: { key: 'l', ctrl: true },
COPY_LAST_REPLY: { key: 'c', ctrl: true, shift: true },
TOGGLE_THEME: { key: 'd', ctrl: true },
} as const;
// ===== Provider 信息 =====
export const PROVIDER_LABELS: Record<string, string> = {
deepseek: 'DeepSeek',
agnes: 'Agnes AI',
ollama: 'Ollama',
};