feat: 初始化 SSH AI Agent 桌面客户端 v0.1.0

- Electron + React + TypeScript 桌面应用
- SSH 连接管理(ssh2)
- AI Agent ReAct 循环(OpenAI 兼容 API)
- 5 个内置工具(命令执行、文件读写、目录列表、系统信息)
- 6 个模型预设(GPT-4o、DeepSeek、通义千问、豆包、Ollama、LM Studio)
- 自定义模型支持
- 高风险工具审批流
- 无边框窗口 + 自定义标题栏
- AI 对话区右侧布局
- xterm.js 终端仿真
- 配置持久化(electron-store)
This commit is contained in:
Your Name
2026-06-12 18:11:06 +08:00
commit d93b07f0a9
42 changed files with 9649 additions and 0 deletions
@@ -0,0 +1,44 @@
schema_version: 1
module_path: ""
title: SSH AI Agent 桌面客户端
scope:
- .gitignore
- package.json
- tsconfig.main.json
- tsconfig.renderer.json
- vite.config.ts
- .assis.json
- src\main\handlers\aiHandler.ts
- src\main\handlers\modelHandler.ts
- src\main\handlers\sessionHandler.ts
- src\main\handlers\terminalHandler.ts
- src\main\index.ts
- src\main\preload.ts
- src\main\services\ai\modelProvider.ts
- src\main\services\ai\toolRegistry.ts
- src\main\services\ssh\sshManager.ts
- src\main\services\storage\modelStore.ts
- src\main\services\storage\sessionStore.ts
- src\renderer\index.html
- src\renderer\postcss.config.js
- src\renderer\src\App.tsx
- src\renderer\src\components\ai\AiChatPanel.tsx
- src\renderer\src\components\ai\ModelSettings.tsx
- src\renderer\src\components\ai\ToolCallCard.tsx
- src\renderer\src\components\layout\ResizablePanel.tsx
- src\renderer\src\components\layout\Sidebar.tsx
- src\renderer\src\components\session\SessionList.tsx
- src\renderer\src\components\terminal\TerminalPanel.tsx
- src\renderer\src\global.d.ts
- src\renderer\src\main.tsx
- src\renderer\src\stores\aiChatStore.ts
- src\renderer\src\stores\sessionStore.ts
- src\renderer\src\styles\index.css
- src\renderer\tailwind.config.js
- src\shared\types\ai.ts
- src\shared\types\index.ts
- src\shared\types\ipc.ts
- src\shared\types\session.ts
source_files: []
depends_on: []
related_to: []
@@ -0,0 +1,3 @@
- 核心框架:Electron 30 + React 18 + TypeScript。
- 构建工具:Vite (渲染进程) + tsc (主进程)。
- 关键依赖:`ssh2` (SSH 协议实现), `openai` (LLM 接口), `zustand` (状态管理), `@xterm/xterm` (终端模拟)。
@@ -0,0 +1,4 @@
- 采用 Electron 多进程架构,通过 `src/main/index.ts` 启动主进程并注册 IPC 处理器,`src/renderer` 负责 React 界面渲染。
- 通信层基于 `src/shared/types/ipc.ts` 定义的通道规范,利用 `contextBridge` 在预加载脚本中安全暴露 API。
- 业务逻辑分层清晰:主进程 `handlers` 处理 IPC 请求,`services` 封装 SSH 连接 (`sshManager`)、AI 模型交互 (`modelProvider`) 及持久化存储。
- 渲染端采用 Zustand 进行全局状态管理,通过自定义 Hooks 订阅会话状态与 AI 对话流,实现终端输出与聊天界面的实时同步。
@@ -0,0 +1 @@
集成 SSH 终端与 AI 助手的桌面应用,支持远程服务器管理、交互式终端及基于 LLM 的智能运维操作。
@@ -0,0 +1,2 @@
- 开发启动:`npm run dev:watch` 使用 `concurrently` 并行执行 TypeScript 编译监听与 Electron 启动。
- 打包发布:`npm run dist` 依次执行主进程/渲染进程构建,并调用 `electron-builder` 生成 NSIS 安装包。
@@ -0,0 +1,4 @@
- IPC 通信遵循严格的类型契约,在 `shared/types/ipc.ts` 中统一定义通道名与载荷类型,确保主渲染进程数据一致性。
- 状态管理采用轻量级模式,渲染端使用 `zustand` 创建独立 Store (如 `sessionStore`, `aiChatStore`) 隔离不同业务域的状态。
- 服务层采用单例导出模式 (如 `sshManager`, `modelStore`),在主进程模块间共享有状态的服务实例。
- AI 交互实现 ReAct 循环模式,在 `aiHandler.ts` 中通过流式响应与工具调用审批机制 (`waitForApproval`) 处理复杂的智能体决策流程。
+51
View File
@@ -0,0 +1,51 @@
# 知识卡导出索引文件
schema_version: 1
locale: zh-CN
branch: Q0DeR-MaG1C-BrAnCh-Fo2-NoN-GiT-Or-No-C0MmIt
exported_at: "2026-06-11T10:30:36Z"
modules:
"":
dir_name: SSH AI Agent 桌面客户端
title: SSH AI Agent 桌面客户端
scope:
- .gitignore
- package.json
- tsconfig.main.json
- tsconfig.renderer.json
- vite.config.ts
- .assis.json
- src\main\handlers\aiHandler.ts
- src\main\handlers\modelHandler.ts
- src\main\handlers\sessionHandler.ts
- src\main\handlers\terminalHandler.ts
- src\main\index.ts
- src\main\preload.ts
- src\main\services\ai\modelProvider.ts
- src\main\services\ai\toolRegistry.ts
- src\main\services\ssh\sshManager.ts
- src\main\services\storage\modelStore.ts
- src\main\services\storage\sessionStore.ts
- src\renderer\index.html
- src\renderer\postcss.config.js
- src\renderer\src\App.tsx
- src\renderer\src\components\ai\AiChatPanel.tsx
- src\renderer\src\components\ai\ModelSettings.tsx
- src\renderer\src\components\ai\ToolCallCard.tsx
- src\renderer\src\components\layout\ResizablePanel.tsx
- src\renderer\src\components\layout\Sidebar.tsx
- src\renderer\src\components\session\SessionList.tsx
- src\renderer\src\components\terminal\TerminalPanel.tsx
- src\renderer\src\global.d.ts
- src\renderer\src\main.tsx
- src\renderer\src\stores\aiChatStore.ts
- src\renderer\src\stores\sessionStore.ts
- src\renderer\src\styles\index.css
- src\renderer\tailwind.config.js
- src\shared\types\ai.ts
- src\shared\types\index.ts
- src\shared\types\ipc.ts
- src\shared\types\session.ts
source_files: []
children: []
depends_on: []
related_to: []