# FinalZero **Repository Path**: yu_junwei/final-zero ## Basic Information - **Project Name**: FinalZero - **Description**: 一款面向 Windows 的现代化 SSH / SFTP / Telnet 客户端工具 - **Primary Language**: TypeScript - **License**: Apache-2.0 - **Default Branch**: main - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-08-10 - **Last Updated**: 2026-09-17 ## Categories & Tags **Categories**: Uncategorized **Tags**: SSH, 运维, 客户端工具 ## README
# FinalZero [简体中文](./README.md) | [English](./README_EN.md) **一款面向 Windows 的现代化 SSH / SFTP / Telnet 客户端** 安全加密 · 多协议 · 多标签终端 · 系统监控 · 文件管理 · **AI 助手** · **云同步** [![Version](https://img.shields.io/badge/version-1.0.12-4B3FE3?style=flat-square&logo=semver)](#版本信息) [![License](https://img.shields.io/badge/license-MIT-blue?style=flat-square&logo=opensourceinitiative)](#许可证) [![Platform](https://img.shields.io/badge/platform-Windows%2010%2F11-0078D4?style=flat-square&logo=windows)](#环境要求) [![Electron](https://img.shields.io/badge/Electron-28-47848F?style=flat-square&logo=electron)](https://www.electronjs.org/) [![React](https://img.shields.io/badge/React-18-61DAFB?style=flat-square&logo=react&logoColor=black)](https://react.dev/) [![TypeScript](https://img.shields.io/badge/TypeScript-5-3178C6?style=flat-square&logo=typescript&logoColor=white)](https://www.typescriptlang.org/) [![PRs Welcome](https://img.shields.io/badge/PRs-welcome-brightgreen?style=flat-square&logo=github)](#贡献指南)
--- ## 目录 - [项目概述](#项目概述) - [核心功能](#核心功能) - [设计理念](#设计理念) - [适用场景](#适用场景) - [功能说明](#功能说明) - [连接与会话管理](#1-连接与会话管理) - [多标签终端](#2-多标签终端) - [SFTP 文件管理](#3-sftp-文件管理) - [命令管理器](#4-命令管理器) - [密钥管理](#5-密钥管理) - [系统监控](#6-系统监控) - [端口转发](#7-端口转发) - [RDP-VNC 远程桌面](#8-rdp--vnc-远程桌面) - [设置中心](#9-设置中心) - [主密码安全锁](#10-主密码安全锁) - [AI 助手](#11-ai-助手) - [云同步](#12-云同步) - [数据安全](#13-数据安全) - [容器管理(Docker)](#14-容器管理docker) - [安装与配置指南](#安装与配置指南) - [环境要求](#环境要求) - [快速安装](#快速安装) - [开发环境配置](#开发环境配置) - [配置文件说明](#配置文件说明) - [使用示例](#使用示例) - [快速上手流程](#快速上手流程) - [SSH 连接示例](#ssh-连接示例) - [SFTP 文件传输示例](#sftp-文件传输示例) - [快速命令示例](#快速命令示例) - [版本信息](#版本信息) - [当前版本](#当前版本) - [版本号规则](#版本号规则) - [更新日志](#更新日志) - [未来功能规划](#未来功能规划) - [技术栈](#技术栈) - [目录结构](#目录结构) - [常见问题](#常见问题) - [贡献指南](#贡献指南) - [参与贡献](#参与贡献) - [代码提交规范](#代码提交规范) - [开发流程](#开发流程) - [许可证](#许可证) --- ## 项目概述 FinalZero 是一款基于 **Electron + React + TypeScript** 构建的现代化桌面 SSH 客户端,界面采用 Ant Design 设计语言,目标是提供安全、高效、易用的远程服务器管理体验。 所有连接、分组、命令、密钥、传输记录等数据均保存在本机 SQLite 数据库中,数据库使用 **SQLCipher 4** 整库加密(主密钥由 Windows DPAPI 管理),敏感字段另有 **AES-256-GCM** 二次加密,具备完善的本地数据安全保护。 > **状态提示**:项目处于持续迭代阶段,功能会不断新增与完善。 ### 核心功能 | 能力域 | 说明 | |--------|------| | 多协议连接 | SSH、SFTP、Telnet、**RDP**、**VNC**、**WSL**、**本地 Shell**;密码 / 私钥 / **SSH Agent** / 键盘交互认证 | | 多标签终端 | 每标签独立连接,支持复制 / 重命名 / 标签颜色、**行号 / 时间戳 Gutter**、**关键词高亮**、**动作链接**、**递归分屏** | | 文件管理 | 上传 / 下载、断点续传、传输队列持久化、**目录同步**、**打包下载**、**远程文件编辑器**(安全写) | | 系统监控 | 状态栏 CPU / 内存实时展示,超阈值红色告警 | | 命令管理 | 分组管理、内置常用模板、双击执行 | | 密钥管理 | SSH 私钥管理、主机密钥校验、防中间人攻击、**主机密钥确认协调器** | | **AI 助手** | **Ask 对话式问答 + 命令生成 + 风险标注;Agent ReAct 自主多步执行 + 审批流;多模态附件** | | **云同步** | **WebDAV / S3 兼容,多设备配置加密同步,冲突解决** | | **容器管理** | **Docker 容器 / 镜像 / 网络 / Compose / Swarm;本地与远程(SSH 隧道)两种传输;预检 + 审批流** | | 数据安全 | 整库加密 + 字段级加密 + 自动迁移 + **主密码安全锁** | ### 设计理念 - **安全优先**:所有敏感数据双重加密,密钥由系统级 DPAPI 托管,与账户绑定。 - **体验为先**:现代化 UI、流畅交互、多标签独立运行,互不干扰。 - **开箱即用**:内置常用命令模板与监控指标,零配置即可上手。 - **可扩展性**:模块化架构,已支持 RDP / VNC 远程桌面与 WOL 局域网唤醒,便于进一步扩展串口等协议。 ### 适用场景 - 运维人员管理多台 Linux / Windows Server 服务器 - 开发者进行远程开发、部署与调试 - 系统管理员批量执行运维命令与监控资源 - 需要安全加密存储连接凭证的企业用户 --- ## 功能说明 ### 1. 连接与会话管理 **协议与认证** - 支持 **SSH、SFTP、Telnet、RDP、VNC、Serial、WSL、本地 Shell** 协议;串口支持端口枚举、波特率、数据位、停止位、校验与流控配置 - 认证方式:密码、私钥(含口令)、**SSH Agent**、键盘交互、(RDP)系统级凭据 - 高级配置:代理(HTTP / SOCKS4 / SOCKS5)、Keep-Alive、连接超时、就绪超时、终端类型 - **跳板机(Jump Host)**:启用后通过跳板机建立 SSH 隧道,目标服务器无需直接暴露公网 - **启动命令**:连接成功后自动执行预设命令(每行一条) - **连接标签 & 备注**:会话可加标签(tags)并写备注,搜索时可按标签过滤 - **WOL 局域网唤醒**:通过 `wol.send` 向已配置的 MAC 地址发送魔术包唤醒服务器 **分组管理** - 支持多级分组 / 子分组,缩进显示与节点连接线 - 展开 / 折叠使用加号 / 减号图标 - 分组可重命名、删除、拖拽排序 - 右键菜单支持「移动分组」,可将分组及会话整体移动 **会话列表** - 支持收藏、搜索过滤、拖拽排序 - 单击会话 → 右侧展示连接详情(基本信息、认证方式、高级配置、最近连接时间) - 双击会话 → 独立打开终端标签页 - 右键菜单:新建连接、新建分组、复制、编辑、删除、收藏 / 取消收藏、连接、移动分组 **连接历史** - 记录每次连接的会话、服务器、状态、起止时间与时长 - 支持按状态查看与清空 - 点击历史记录可快速重连 ### 2. 多标签终端 - **独立运行**:每个标签页对应一条独立连接,内容互不影响;同一连接可打开多个标签页 - **标签操作**:右键菜单支持重命名、复制标签页、设置标签颜色、关闭当前 / 其他 / 右侧 / 全部标签页 - **终端能力**:基于 xterm.js,支持字体、字号、**行高**、**光标样式(block / bar / underline)**、主题、编码、回滚行数、终端类型等设置 - **分屏支持**:单标签内支持多个独立终端流(streamId),提供 1×1 / 1×2 / 2×1 / 2×2 四种布局 - **终端搜索**:Ctrl+F 支持高亮 / 大小写 / 正则 / 上下定位 - **命令历史**:按会话隔离,持久化存储,支持 ↑/↓ 回看 - **Zmodem 传输**:`rz / sz` 自动拦截,文件选择对话框 + 进度状态条,传输完成后终端自动恢复 - **快速命令**:终端界面提供快速命令面板,双击命令直接在当前连接中执行 - **快捷键**:可配置全局快捷键(新建会话、切换标签、复制粘贴、终端搜索、全屏等),支持冲突检测与恢复默认 - **行号 / 时间戳 Gutter**:可选左侧侧栏显示逻辑行号与每行到达时间(`showLineNumbers` / `showTimestamps`) - **关键词高亮**:内置规则扫描输出行,对 error / warn / success / info / 日期 / 数字 / URL / UUID / 版本号等着色(`enableKeywordHighlight`) - **动作链接**:自动识别 IPv4、`host:port`、压缩包文件名,点击复制到剪贴板(`enableActionLinks`) - **交互增强**:选中即复制(`selectOnCopy`)、右键粘贴(`rightClickPaste`)、输入命令建议(`enableSuggestions`) ### 3. SFTP 文件管理 - **文件操作**:远程 / 本地文件列表,支持上传、下载、删除、重命名、新建目录 - **断点续传**:上传 / 下载支持断点续传与暂停 / 恢复,大文件传输中断后可继续 - **传输队列**:传输记录持久化保存到数据库,切换界面或重启应用后记录仍存在;支持手动清理,每条记录可一键打开本地文件所在目录 - **可折叠面板**:服务器文件列表面板、文件管理面板与传输队列面板均可折叠,优化小屏幕操作体验 - **目录同步(DirSync)**:远端 ⇄ 本地双向目录同步,先预览差异(仅远端 / 仅本地 / 远端更新 / 本地更新 / 相同),再选择性执行;结果分成功 / 失败 / 跳过三色展示 - **打包下载**:在远程文件列表中多选文件 / 目录,一键打包为压缩包下载到本地 - **远程文件编辑器**:通过 `sftp.readFile / sftp.writeFile` 在应用内直接读取 / 写回远端文本文件,避免下载再上传的繁琐流程 ### 4. 命令管理器 - 快速命令管理器,支持命令分组(多级)、自定义名称、命令内容、描述、排序与收藏 - 内置常用命令模板,开箱即用: | 分类 | 示例命令 | |------|----------| | 系统监控 | `top`、`free -h`、`df -h` | | 网络工具 | `ss -tulnp`、`ip a`、`ping` | | 文件操作 | `ls -lah`、`find / -name` | | 部署发布 | `git pull && docker-compose up -d` | - 双击命令即在当前活动终端中执行,无需手动输入 ### 5. 密钥管理 - 独立的「密钥管理」功能(与终端、SFTP、命令管理器、设置同级) - 管理 SSH 私钥:密钥名称、类型、指纹、公钥、备注等 - 私钥内容在界面上仅显示首尾部分,避免完整泄露 - **主机密钥校验**:连接时校验服务器指纹,防止中间人攻击 - 密钥数据纳入配置导入 / 导出范围,导出时敏感内容加密处理 ### 6. 系统监控 - **状态栏实时展示**:连接建立后,底部状态栏实时展示当前服务器的 CPU 占用、内存占用、系统版本、uptime 等基本信息 - **阈值告警**:CPU 或内存占用超过 90% 时以红色高亮告警,便于一眼识别 - **监控图表面板**:以 ECharts 图表形式展示指标变化趋势,直观可视 - **系统信息缓存**:首次采集后缓存 hostname、OS、kernel、arch、CPU 型号,避免重复抓取 ### 7. 端口转发 - 支持 **本地转发 / 远程转发 / 动态转发(SOCKS)** 三种模式 - `forward.create / stop / delete / list` 完善的 IPC 通道 - 转发信息对象(ForwardInfo)展示实际监听端口(actualPort)、运行状态、错误信息 - 支持 `autoStart`,建立连接后自动启动已标记的转发规则 ### 8. RDP / VNC 远程桌面 - **RDP**:调用系统 `mstsc.exe` 以独立窗口承载远程桌面会话,支持域(Domain)、屏幕模式(窗口 / 全屏)、NLA 网络级认证;凭据在系统窗口交互输入,不写入配置文件 - **VNC**:基于 noVNC 渲染的独立 `VncPanel` 标签页,WebSocket 桥接 `VncService` - 统一标签页管理:远程桌面标签与 SSH 终端标签共存,支持断开 / 重新打开 ### 9. 设置中心 设置界面嵌入主窗体,包含以下栏目: | 栏目 | 说明 | |------|------| | 常规 | 开机自启、启动时自动连接上次会话、关闭窗口行为(最小化到托盘 / 询问 / 退出)、语言切换 | | 外观 | 主题等界面显示配置 | | 终端 | 字体、字号、**行高**、**光标样式**、编码、回滚行数、终端主题、**行号 / 时间戳 Gutter**、**关键词高亮**、**动作链接**、**选中即复制 / 右键粘贴 / 命令建议** | | 网络 | 代理相关配置 | | 快捷键 | 常用操作的快捷键配置(冲突检测 + 恢复默认) | | 安全锁 | 主密码设置、自动锁定超时、失败次数上限、锁定遮罩 | | **AI 助手** | **Provider / 模型配置、默认模型、Agent 步数 / 超时、审批策略** | | **云同步** | **WebDAV / S3 provider、设备名、命名空间、启动检查、自动推 / 拉** | | 日志 | 日志级别与查看 | | 关于 | 应用名称、版本、构建信息、版权与相关链接 | ### 10. 主密码安全锁 - `lock.status / lock.setup / lock.unlock / lock.lock / lock.reset / lock.activity` 完整 IPC - 主密码首次设置后启用,可配置自动锁定超时(空闲一定时间后自动锁定) - 失败次数上限(maxFailedAttempts)+ 暂时锁定(lockedUntil 截止时间),防止暴力尝试 - 锁定遮罩:锁定状态下覆盖整个应用层,解锁后恢复上次工作现场 ### 11. AI 助手 > 对标 NyaTerm AI Assistant,分 **Ask 模式**(一期)与 **Agent 模式**(二期)。 **Ask 模式(对话式问答 + 命令生成)** - 右侧常驻 `AiPanel`,支持多会话对话、流式输出(`ai.stream.delta/done/error`)、历史搜索 - 终端右键唤起:解释选中内容、解释最近输出、分析错误、生成命令 - AI 返回的命令以 `CommandCard` 结构化卡片展示,带 **四级风险标注**(low / medium / high / critical) - 命令卡片支持:执行、追加到终端、保存为快捷命令 - **Provider 配置**:OpenAI Compatible 接口,可配置多 Provider 与模型(`ai.providers.*` / `ai.models.*`,含 `ai.models.discover` 自动发现) - **风险规则库**:`src/shared/aiRiskRules.ts` 本地正则 + 白名单规则(确定性优先,不依赖模型自觉) - **上下文脱敏**:发送前剔除密码、私钥等敏感内容 - API 凭据与对话数据纳入字段级加密 + 审计 **Agent 模式(ReAct 自主多步执行)** - 在用户指定的活跃终端会话中按 ReAct 循环自主执行多步命令并观察结果 - **双工具**:`execute_command`(执行命令并回传输出摘要)+ `final_answer`(任务总结,与终端真实执行记录分离) - **双通道风险评估**:模型声明风险 + 本地规则库 → `effective = max`;critical 强制人工确认 - **审批流**:高危命令暂停循环,等待 `ai.agent.approve / reject`;审批可编辑命令后执行 - **可干预**:任意步骤可中止(`ai.agent.stop`)、重试失败步骤 - **持久化**:`ai_agent_runs` / `ai_agent_steps` 表存储运行与每步状态、命令、输出摘要 - **原生工具调用 + JSON 协议回退**:优先 OpenAI Compatible `tools` 参数;失败时回退到 JSON 协议解析 - 步数上限 / 单步超时控制,防止失控 - `AgentRunPanel` 展示步骤时间线(运行中 / 完成 / 失败 / 超时 / 待审批 / 被策略阻止) **AI 相关 IPC 通道**:`ai.providers.*`、`ai.models.*`、`ai.chat.*`、`ai.stream.*`、`ai.agent.*`(start / stop / approve / reject / status / history / stepDetail / step / done / error) **v1.0.6 增强** - **多模型选择**:Ask / Agent 聊天界面可切换已启用模型(`AiModelSelect` 组件 + `AiModelResolver` 服务,按 `isDefault` 解析默认,旧数据 `configuredModelId` 兼容回退) - **流式响应 + 推理内容分离**:`AiStreamDelta` 区分 `content` / `reasoning` 两种 kind;`AiMessage` / `AiStreamDone` 新增 `reasoningContent` 字段,推理过程与最终答案分开存储 - **Markdown 渲染**:`MarkdownMessage` 组件基于 `react-markdown` + `remark-gfm` 渲染 GFM,代码块一键复制 - **思考过程面板**(`ThinkingPanel`):折叠展示 Provider 推理内容与 Agent 思考链,流式加载动画 - **终端上下文注入**:`terminalContextStore` 注册活动终端输出读取器,`AiChatRequest` / `AiAgentStartRequest` 新增 `terminalContext` 字段;主进程重新限制长度并脱敏后转发给 Provider ### 12. 云同步 > 多设备配置加密同步,支持 WebDAV 与 S3 兼容存储。 - **Provider**:WebDAV、S3 兼容(`SyncProviderType = 'webdav' | 's3'`) - **配置项**(`CloudSyncSettings`):enabled、provider、deviceName、remoteNamespace、webdav* / s3*、checkOnStartup、autoPull、autoPush、pushDebounceSec - **运行时状态**(`CloudSyncStatus`):idle / pushing / pulling / syncing / conflict / error,含 lastPushAt、remoteRevision、localHash / remoteHash - **凭据加密**:webdavPassword / s3SecretKey 字段级加密(write-only) - **IPC 通道**:`sync.getSettings / saveSettings / test / push / pull / status / resolveConflict / notifyChange / statusChanged / clearRemote` - **冲突解决**:`sync.resolveConflict` 处理多设备并发修改 - 独立 `SyncPanel` 视图 + 设置→云同步子页 **v1.0.6 增强** - **分类勾选**:`SyncCategory` 提供 10 个可独立勾选的数据域(settings / connections / groups / history / commands / credentials / aiConfig / aiHistory / fileTransfers / auditLogs);`DEFAULT_SYNC_CATEGORIES` 默认 auditLogs 不勾选;`CloudSyncSettings.categories` 字段 - **远端清空**:`sync.clearRemote` 一键清空远端同步数据 - **同步展示**:`syncDisplay` 时间戳格式化(本地时区,无 locale 分隔符) ### 13. 数据安全 > **双层加密保护,确保本地数据安全** - **整库加密**:数据库使用 SQLCipher 4 格式加密,主密钥为 32 字节随机密钥,由 Windows DPAPI(系统密钥链)保存,与当前 Windows 账户绑定。仅拷贝 db 文件无法读取任何内容。 - **字段级加密**:密码、私钥、口令等敏感字段在库内再以 **AES-256-GCM** 加密存储,形成双层保护。 - **自动迁移**:旧版本产生的明文数据库会在启动时自动迁移为加密库,迁移前自动备份、失败自动回滚、成功后删除明文备份,数据安全无损。 - **配置导入 / 导出**:连接、命令、密钥等数据支持整体导出与导入,涉及密码与密钥的内容加密处理。 - **审计日志**:记录关键操作,便于追溯。 - **安全锁**:主密码 + 自动锁定 + 失败锁定三重防护(见第 10 节)。 - **SQL 日志脱敏**(v1.0.6):`sqlLogRedaction` 自动检测含 `password` / `passphrase` / `private_key` / `api_key_enc` / `proxy_password` / `PRAGMA key` 的 SQL 语句,开发日志中以 `[REDACTED sensitive SQL]` 替代,防止凭据泄漏到日志。 ### 14. 容器管理(Docker) > v1.0.9 新增。统一的 Docker 运维工作台,支持本地 Docker Engine 与远程主机(经 SSH 隧道)两种传输方式。 **覆盖范围** - **容器**:列表 / 详情 / 启停 / 重启 / 删除 / 创建(含 preflight 预检)/ exec 进入终端 - **镜像**:列表 / 拉取(含取消、进度流) - **网络**:列表 - **Compose**:项目列表 / YAML 预览 / 操作(up/down/restart)预检与影响评估 - **Swarm**:stack 列表 - **看板**:`docker.dashboard` 汇总容器/镜像/网络/卷统计 - **可观测性**:`docker.observability.subscribe` 实时事件与 stats 订阅流 **传输与连接** - **本地传输**:直连本机 Docker Engine(named pipe / unix socket) - **远程传输**(`RemoteDockerTransport`):通过已有 SSH 连接的 ssh2 channel 桥接为 Node HTTP socket,复用 `DockerServicePool`,无需在远程额外开端口 - **`docker.probe`**:探测目标 Docker 可用性与版本 **安全与审批** - **Compose Planner**(`DockerComposePlanner`):YAML 解析、复杂度/资源限制校验、阻断码(blocker codes)与风险提示;操作前 preflight 返回影响范围 - **容器/资源创建 preflight**:创建前返回 normalized 请求、风险提示(risk notice)与影响(impact) - **资源删除 preflight**:返回依赖关系,确认后才执行 - **注册表凭据**(`DockerRegistryCredentialRepository`):私有仓库凭据加密存储,支持 list/delete **IPC 与契约** - IPC 通道集中声明于 `src/shared/ipcChannels.ts`(`IPC_INVOKE_CHANNELS` / 事件通道),由 `tests/__tests__/shared/ipcChannels.test.ts` 契约测试守护,确保 preload 白名单与主进程 handler 一致 - 新增仓库:`ManagedTargetRepository`(管理目标,绑定 Docker 端点)、`DockerRegistryCredentialRepository` **界面** - `ContainerCenter` 容器中心(标签页:容器 / 镜像 / 网络 / Compose / Swarm) - `DockerExecWorkspace` / `DockerExecTerminal`:exec 进入容器终端 - 各类创建/删除/环境变量/镜像拉取对话框,配套 ViewModel 与单元测试 --- ## 安装与配置指南 ### 环境要求 | 项目 | 要求 | |------|------| | 操作系统 | Windows 10 / 11(x64) | | Node.js | 20+(建议 20.x LTS) | | npm | 10+ | ### 快速安装 #### 方式一:使用安装包(推荐终端用户) 1. 从 `release/` 目录获取 `FinalZero Setup 1.0.12.exe` 2. 双击运行安装程序 3. 选择安装目录(支持自定义) 4. 安装完成后,桌面与开始菜单将出现 FinalZero 快捷方式 #### 方式二:免安装版 1. 进入 `release/win-unpacked/` 目录 2. 直接运行 `FinalZero.exe` ### 开发环境配置 ```bash # 1. 克隆项目 git clone cd FinalZero # 2. 安装依赖 npm install # 3. 开发模式启动(渲染进程热更新 + 主进程自动重启) npm run dev # 4. 生产构建并启动 npm start # 5. 仅编译(主进程 + 渲染进程) npm run build # 6. 运行单元测试 npm test # 7. 打包 Windows 安装包(输出到 release/) npm run package:win # 8. 打包 macOS DMG + ZIP(仅可在真实 macOS 上执行) npm run package:mac ``` > **原生模块说明**:项目使用 `better-sqlite3-multiple-ciphers` 原生模块,依赖与 Electron 版本匹配的预编译二进制。`package:mac` 必须在真实 macOS 上安装依赖并重建原生模块;Windows 不能生成可验证的 macOS 产物。若重新安装依赖后启动报 `NODE_MODULE_VERSION` 相关错误,请执行: > > ```bash > npm run rebuild > ``` ### 配置文件说明 | 配置项 | 位置 | 说明 | |--------|------|------| | 数据库文件 | `%APPDATA%\finalzero\finalzero.db` | SQLCipher 4 加密数据库 | | 应用配置 | electron-store 管理 | 主题、语言、自启等偏好 | | 应用图标 | `build/icon.ico` | 打包图标资源 | | 打包配置 | `package.json` 的 `build` 字段 | electron-builder 配置 | --- ## 使用示例 ### 快速上手流程 ``` 1. 启动应用 └─ 左侧「会话」面板 2. 创建会话 ├─ 右键 → 「新建连接」 ├─ 填写:名称、主机、端口、用户名 ├─ 选择:协议(SSH/SFTP/Telnet) └─ 选择:认证方式(密码 / 私钥) 3. 连接服务器 ├─ 单击会话 → 查看连接详情 └─ 双击会话 → 独立打开终端标签页 4. 多服务器管理 ├─ 可同时打开多个标签页 ├─ 标签页之间互不干扰 └─ 右键标签页 → 重命名 / 复制 / 设置颜色 / 关闭 5. 文件管理 ├─ 点击左侧「SFTP」图标 ├─ 上传 / 下载 / 删除 / 重命名 └─ 传输队列查看进度与历史 6. 快速命令 ├─ 点击「命令管理器」 ├─ 双击命令 → 在当前终端执行 └─ 或在终端侧边栏使用快速命令面板 7. 系统设置 └─ 「设置」→ 常规 / 外观 / 终端 / 网络 / 快捷键 / 日志 / 关于 ``` ### SSH 连接示例 **场景**:连接一台 Ubuntu 服务器 1. 在会话面板右键 → **新建连接** 2. 填写表单: | 字段 | 值 | |------|----| | 名称 | `web-server-01` | | 协议 | SSH | | 主机 | `192.168.1.100` | | 端口 | `22` | | 用户名 | `ubuntu` | | 认证方式 | 私钥 | | 私钥 | 选择本地 `.pem` 文件 | | 分组 | 选择「生产环境」分组 | 3. 点击 **保存** → 双击会话即可打开终端 4. 连接成功后,底部状态栏显示服务器 CPU / 内存 / 系统信息 ### SFTP 文件传输示例 **场景**:上传本地文件到远程服务器 ``` 1. 在终端连接建立后,点击左侧「SFTP」图标 2. 上方显示当前连接名称(避免混淆服务器) 3. 左侧:本地文件列表 4. 右侧:远程服务器文件列表 5. 选择本地文件 → 点击「上传」 6. 传输队列实时显示进度: - 状态:pending → transferring → completed - 支持:暂停 / 恢复 / 取消 7. 传输完成 → 可一键打开本地文件所在目录 ``` ### 快速命令示例 **场景**:使用内置命令模板查看服务器资源 1. 在终端连接中,打开右侧快速命令面板 2. 选择「系统监控」分类 3. 双击 `free -h` → 命令自动在当前终端执行 4. 或在「命令管理器」中自定义命令: | 字段 | 值 | |------|----| | 名称 | 查看磁盘占用 | | 命令 | `df -h --total` | | 描述 | 显示所有挂载点的磁盘使用情况 | | 分组 | 系统监控 | | 收藏 | 是 | --- ## 版本信息 ### 当前版本 **v1.0.12(2026-09-01)** — i18n 校验器字典键校验、快捷键消息可翻译化、AI Agent 窄栏自适应、英文版文档 - 增强 **i18n 校验器**(`check-renderer-i18n.cjs`,+84 行): - 扫描范围扩展至 `src/renderer/config/` - 加载 `zhMessages` 字典键,校验所有静态 `t('...')` 调用的键存在于字典,缺失时报告 `missing zhMessages key` - findings 排序细化(file → line → text) - 增强 **快捷键校验消息可翻译化**(`shortcuts.ts`):硬编码中文错误消息改为可翻译英文源键(`Invalid shortcut configuration` / `Shortcut already assigned: {shortcut}`),经字典翻译为中文(「快捷键配置无效」/「快捷键已被占用:{shortcut}」) - 补充 **zhMessages 字典**:`tasks` / `Read-only` / `Issues` / `Compose operation plan` / `CPU 18%` / `Region` 等;移除重复 `System` 条目并归位至主题区 - 修复 **AI Agent 面板窄栏布局**(`AgentRunPanel` + `AiChat.css`):Inspector 窄栏下控制行改为单列自适应(模型选择 / 终端选择 / 运行按钮全宽);`popupMatchSelectWidth` 防止下拉溢出 - 新增 **英文版文档**(`README_EN.md`):与中文版 `README.md` 内容、结构、排版完全一致,两版顶部互相链接实现中英文切换 - 新增测试:主题标签中文覆盖(6 种)、快捷键校验消息可翻译性 **v1.0.11(2026-08-31)** — 应用主题扩展、终端主题系统、macOS 打包、i18n 全面覆盖、TerserPlugin 压缩 - 新增 **应用主题扩展**:`ThemeType` 从 `dark/light/system` 扩展到 6 种(新增 `ocean` / `graphite` / `sand`);`APP_THEME_OPTIONS` 数据驱动;`resolveApplicationTheme` 解析 system 主题为明暗基底;`isDarkApplicationTheme` 判定 - 新增 **终端主题系统**(`TerminalThemeType`):11 种可移植终端配色(`default` / `dark` / `light` / `solarized-dark` / `solarized-light` / `monokai` / `dracula` / `nord` / `gruvbox-dark` / `one-dark` / `tokyo-night` / `high-contrast`);`default` 跟随应用主题明暗基底 - 新增 **终端配置解析**(`appConfig.ts`):`parseStoredTerminalConfig` 从 `app_config` 表解析 `lineHeight` / `letterSpacing` / `cursorStyle` / `cursorBlink` / `selectOnCopy` / `rightClickPaste` / `enableSuggestions` / `enableKeywordHighlight` / `enableActionLinks` / `showLineNumbers` / `showTimestamps`;`theme.ts` 提供归一化函数(`normalizeTerminalTheme` / `normalizeTerminalLineHeight` / `normalizeTerminalLetterSpacing` / `normalizeTerminalCursorStyle`) - 新增 **macOS 打包支持**:`package:mac` 脚本(平台校验 + build + rebuild + electron-builder `--mac`);electron-builder `mac` 配置(dmg + zip,`category: public.app-category.developer-tools`);新增 `build/icon.icns` / `build/icon.png` / `build/icon-source.png`;更新 `build/icon.ico`(21KB → 82KB 高清) - 新增 **i18n 全面覆盖**(+528 行):几乎所有 UI 组件接入国际化(终端 / SFTP / 命令 / 会话 / 设置 / 监控 / 端口转发 / AI / 审计 / 容器 exec / 同步等);新增 `scripts/check-renderer-i18n.cjs` 检查脚本 + `check:i18n` npm script,扫描渲染层硬编码中文 - 新增 **TerserPlugin 生产压缩**:webpack 生产构建启用 `TerserPlugin`(`parallel: 4`),`minimize: isProduction` - 新增 **AppConfig 类型扩展**:`terminalTheme` 由 `string` 改为 `TerminalThemeType`;新增 `lineHeight` / `letterSpacing` / `cursorStyle` / `cursorBlink` 可选字段 - 增强 **design-system.css**(+302 行):新增 ocean / graphite / sand 主题样式与终端主题变量 - 重构 `TerminalView`(+132/-行)、`SftpPanel`(+210/-行)、`MonitorPanel`(+159/-行)、`TerminalSettings`(+353/-行)、`SessionTree`(+108/-行)等接入新主题与 i18n - 新增单元测试:`appConfig` / `theme` / `i18n` - README 开发环境配置补充 macOS 打包步骤与原生模块说明 **v1.0.10(2026-08-30)** — 审计日志查看器、诊断日志开关、RDP 孤儿 profile 清理、设置深链导航 - 新增 **审计日志查看器**(`AuditLogPanel` + `AuditHandlers`):支持按动作 / 级别 / 时间范围 / 关键词查询、排序、分页;CSV 导出(UTF-8 BOM,含 **CSV 公式注入防护**,对 `=` / `+` / `-` / `@` / `\t` / `\r` 开头单元格前置 `'`);新增 IPC `audit.query` / `audit.export`;`AuditLogRepository` 重写(+394/-行) - 新增 **审计日志类型**(`AuditLogEntry` / `AuditLogQuery` / `AuditLogQueryResult` / `AuditLogExportRequest` / `AuditLogExportResult` / `AuditLogLevel`);`SettingsCategory` 新增 `'audit'` - 新增 **诊断日志开关**(`SecureLogger.setEnabled`):普通诊断日志可关闭,安全审计事件不受影响;`LogsSettings` UI 增强 - 新增 **RDP 孤儿 profile 清理**(`RdpService.cleanupOrphanProfiles`):启动时清理 24h 以上的 `finalzero-rdp-*.rdp` 临时文件,非递归,拒绝无关文件 - 新增 **设置深链导航**(`settingsNavigation`):`requestSettingsCategory` / `consumeRequestedSettingsCategory` 支持从其他视图跳转到指定设置子页(如审计日志、网络) - 增强 **CloudSyncService**(+173 行):审计日志纳入同步分类 - 重构 **NetworkSettings**(+168/-行) - 新增单元测试:`AuditLogRepository` / `AuditHandlers` / `auditLogDetails` / `SecureLogger` / `RdpServiceCleanup` - i18n 补充文案 **v1.0.9(2026-08-29)** — 容器管理(Docker)、AI 多模态附件、主机密钥确认协调器、递归分屏布局 - 新增 **容器管理(Docker)**:统一 Docker 运维工作台,覆盖容器/镜像/网络/Compose/Swarm/看板/可观测性;支持本地与远程(SSH 隧道)两种传输;Compose Planner 预检 + 创建/删除 preflight + 审批流;exec 进入容器终端;注册表凭据加密存储 - 新增 **AI 多模态附件**(`AiAttachmentService`):支持图片(png/jpg/jpeg/webp/gif,≤5MB)与文本(256+ 扩展名,≤256KB)附件;上限 5 个 / 总计 10MB;10 分钟 TTL 自动释放;新增 IPC `ai.attachments.pick` / `ai.attachments.release`;`AiService` 多模态测试 - 新增 **主机密钥确认协调器**(`HostKeyVerificationCoordinator`):桥接 ssh2 异步 `hostVerifier` 回调到渲染进程确认对话框与已知主机仓库;reject / accept / remember 三种动作;60s 超时 - 新增 **递归分屏布局**(`RecursiveSplitLayout`):终端递归 split 树的可视化布局组件,配合 v1.0.8 的 `splitLayoutStore` - 新增 **IPC 通道集中声明**(`src/shared/ipcChannels.ts`):`IPC_INVOKE_CHANNELS` 白名单 + 事件通道,契约测试 `ipcChannels.test.ts` 守护 preload 与主进程一致性 - 新增 **管理目标仓库**(`ManagedTargetRepository`):绑定 Docker 端点的管理目标持久化 - 增强 **AI 聊天**:会话选择(`aiConversationSelection`)、滚动管理(`aiChatScroll`)、附件 UI - 增强 **SSH 服务**(`SshService`):host key 验证接入协调器 - 增强 **preload**:新增 247 行 Docker / 附件 / 管理目标 API 桥接 - 新增 `.qa/` 到 `.gitignore` - 新增大量单元测试:DockerHandlers / DockerService / DockerComposeAnalyzer / DockerComposePlanner / RemoteDockerTransport / NamedPipeDockerTransport / AiAttachmentService / AiServiceMultimodal / HostKeyVerificationCoordinator / ManagedTargetRepository / DockerRegistryCredentialRepository / ipcChannels / dockerComposeViewModel / dockerContainerCreateViewModel / dockerExecWorkspace / dockerObservabilityViewModel / dockerResourceCreateViewModel / dockerSwarmViewModel / aiChatScroll / aiConversationSelection - i18n 补充 480+ 条中英文文案 **v1.0.8(2026-08-28)** — 远程文件编辑器安全写、终端分屏树重构、Inspector 面板懒加载 - 新增 **远程文件编辑器安全写**(`SftpSafeWrite`):版本指纹(SHA-256 + size + mtime)识别等长同秒修改;写入前冲突检测,冲突时返回远端当前内容与版本;`force` 选项仅在用户确认后使用,覆盖前仍创建恢复副本;新增 IPC 通道 `sftp.readFileVersioned` / `sftp.safeWriteFile` - 新增 **共享工具 `remoteEditSafety`**:版本比对(`sameRemoteFileVersion`)+ 线性复杂度文本 diff 摘要(`buildTextDiffSummary`,仅展开首尾公共区之间的变化块,避免对 2MB 文本执行 O(n²) LCS) - 重构 **终端分屏树**(`splitLayoutStore`):递归 split 树(horizontal / vertical,ratio 0.15~0.85),最多 12 个 pane;树节点使用稳定 id,调整比例或继续嵌套时不重挂载已有终端;`TerminalTabs` 为唯一写入方,命令/AI 等面板只读取某连接当前存活的 `streamId` - 增强 **终端标签栏**(`TerminalTabs`):适配新分屏树,关闭 pane 后不复用旧 id - 新增 **Inspector 面板懒加载**(`lazyWorkspacePanels`):`React.lazy` 拆分 AI / SFTP / Monitor 面板为独立 chunk(`panel-ai` / `panel-sftp` / `panel-monitor`),`DeferredWorkspacePanel` Suspense 兜底,减少首屏包体 - 增强 **Webpack 分包**:`chunkFilename: chunks/[name].[contenthash:8].js` + 生产构建 `clean` 选项,清理 dev hot-update 陈旧产物 - 新增单元测试:`sftpSafeEdit`(主进程)、`splitLayoutStore`(渲染进程)、`remoteEditSafety`(共享) - 其他:SftpService / SftpHandlers 扩展版本化读写;RemoteFileEditor 冲突 UI;i18n 补充 20+ 条;样式增强 - 验证:23/23 测试套件通过;生产构建通过 **v1.0.7(2026-08-27)** — WorkspaceShell 工作区外壳、Electron 原生模块工具链 - 新增 **WorkspaceShell 工作区外壳**:基于 Navop 竞品分析重构主界面骨架;删除固定 44px 顶部工作区面板,导航交给 IconSidebar,连接状态交给终端标签与 StatusBar,业务页面获得完整垂直空间 - 新增 **可恢复首页 WorkspaceHome**:单列布局展示可恢复任务入口;连接型视图重启后降级回连接页,不伪造已恢复会话 - 新增 **统一 Inspector 工作区面板**(`WorkspaceInspector`):复用命令 / AI / 远程文件 / 监控四个业务面板;支持 tab 切换、折叠、300~560px 拖拽宽度记忆;宽屏 dock、中屏右侧 overlay、800px 最小窗口 bottom sheet - 新增 **资源栏自适应行为**:Sidebar 支持 `auto` / `dock` / `overlay` 三种行为;窄屏强制 overlay + 遮罩 + Escape 关闭 + 持久化开合状态,不再挤压主工作区 - 新增 **工作区偏好持久化**(`workspacePreferences`):lastView / inspector / sidebar 配置写入 localStorage - 新增 UI action `SET_SIDEBAR_COLLAPSED`:程序化控制侧边栏折叠 - 新增 **Electron 原生模块工具链**(FZ-NV-001):`.nvmrc` 固定 Node 版本;`scripts/run-jest-electron.cjs` 让测试在 Electron ABI 下运行;`scripts/verify-electron-native.cjs` 真实加载 SQLite / pty / Serial bindings 自检;`postinstall` 钩子自动重建原生模块;`rebuild:electron` 拆分、`verify:native` 新增、`package` / `package:win` / `pack:dir` 全部纳入重建步骤 - 新增 **ESLint 配置**:`.eslintrc.cjs` + `eslint-plugin-react-hooks` 规则 - 新增 **竞品分析文档**:`docs/Navop-Comparison-and-Improvement-Plan.md`;`docs/v1.2-Sprint-Plan.md` 旧 Sprint 标记为历史 - 新增单元测试 `tests/__tests__/renderer/workspacePreferences.test.ts`;数据库测试适配 Electron 测试环境 - 其他:MonitorPanel / SftpPanel / AiPanel / AiChat.css 细节增强;i18n 补充 45+ 条;SessionConfig 串口注释校准(不再标记“规划中”) - 验证:20/20 测试套件、298/298 用例通过;生产构建通过;lint 0 errors / 62 条历史 warnings;Electron 28.3.3 / Node 18.18.2 / ABI 119 原生模块自检通过 **v1.0.6(2026-08-15)** — AI 多模型与流式推理、云同步分类、SQL 日志脱敏 - 新增 **AI 多模型选择**:Ask / Agent 聊天界面支持切换已启用的模型(Provider 启用 + Model 启用),按 `isDefault` 标志解析默认模型,旧数据兼容回退 - 新增 **AI 流式响应 + 推理内容分离**:流式输出区分 `content` / `reasoning` 两种 kind;将 Provider 返回的推理过程与最终答案分开存储与展示 - 新增 **AI Markdown 渲染**:基于 `react-markdown` + `remark-gfm` 渲染 GFM Markdown,代码块一键复制 - 新增 **AI 思考过程面板**(`ThinkingPanel`):折叠展示推理内容与 Agent 思考链,流式加载动画 - 新增 **终端上下文注入**(`terminalContextStore` + `AiTerminalContext`):注册活动终端输出读取器,AI 可获取近期终端输出作为上下文,主进程重新限制长度并脱敏 - 新增 **云同步分类勾选**:10 个可独立勾选的数据域(settings / connections / groups / history / commands / credentials / aiConfig / aiHistory / fileTransfers / auditLogs),默认 auditLogs 不勾选 - 新增 **远端清空**(`sync.clearRemote` IPC):一键清空远端同步数据 - 新增 **SQL 日志脱敏**(`sqlLogRedaction`):自动检测含 password / passphrase / private_key / api_key_enc / proxy_password / `PRAGMA key` 的 SQL 语句并脱敏,防止凭据泄漏到开发日志 - 构建:Webpack renderer 启用 `conditionNames: ['browser', 'import', 'default']`,修复 `react-markdown` / `vfile` 在渲染进程(nodeIntegration 禁用)中的 ESM 导出问题 - 新增依赖:`react-markdown` ^10.1.0、`remark-gfm` ^4.0.1 - 新增 9 个单元测试:AiProviderRepository seed、sqlLogRedaction、AiModelSelect、syncCategorySettings、syncDisplay、terminalContextStore、AiModelResolver、AiServiceStream、CloudSyncService - 国际化扩展:补充 AI 模型选择、思考过程、同步分类等中英文文案 - 清理:移除无关二进制 `mojian-blog.jar` **v1.0.5(2026-08-15)** — AI 助手、云同步与终端增强 - 新增 **AI 助手 - Ask 模式**:对话式问答,自然语言生成 Shell 命令;自动风险标注(safe / caution / dangerous)并要求二次确认;支持上下文记忆与会话隔离 - 新增 **AI 助手 - Agent 模式**:基于 ReAct(Reason + Act)循环的自主多步执行;分步展示思考过程与工具调用;关键操作(写、删、改、远程执行)走审批流,支持中止与回滚预览 - 新增 **云同步**:支持 WebDAV 与 S3 兼容协议;多设备配置加密同步(AES-256-GCM 字段级加密);冲突检测与解决策略(last-writer-wins / manual-merge) - 新增 **终端行号 / 时间戳 Gutter**:左侧独立列展示逻辑行号与每行到达时间,支持滚动联动;可在「终端设置」中独立开关 - 新增 **终端关键词高亮**:基于 xterm decoration 的轻量高亮;内置规则覆盖 error / warn / success / info / debug、时间日期、URL、UUID、版本号、提示符等 - 新增 **终端动作链接**:自动识别 IPv4、`host:port`、压缩包归档名,渲染为可点击链接(复制 / 复制并下载 / 复制主机端口) - 新增 **AI 设置面板**(`AiSettings`):Provider 配置(OpenAI / Azure / Ollama / 自定义 BaseURL)、模型选择、温度、最大 tokens、Ask 风险规则开关 - 新增 **同步设置面板**(`SyncSettings`):协议选择、端点 / 凭据 / 桶名、自动同步间隔、冲突解决策略 - 新增 IPC 通道:`ai.*`、`ai.agent.*`、`sync.*`;新增仓库 `AiProviderRepository` / `AiConversationRepository` / `AgentRunRepository` - 新增设计文档:`docs/AI-Agent-Mode-Design.md`、`docs/AI-Assistant-Ask-Mode-Design.md`、`docs/Nyaterm-Comparison-Analysis.md` - 新增单元测试:`tests/__tests__/shared/aiRiskRules.test.ts`(风险规则匹配) - 国际化扩展:补充 AI 助手、云同步、终端增强相关中英文文案 **v1.0.4(2026-08-15)** — RDP / VNC 远程桌面、目录同步与安全锁 - 新增 **RDP 远程桌面**:调用系统 `mstsc.exe` 独立窗口,支持域 / 屏幕模式 / NLA 网络级认证;凭据不写入配置文件 - 新增 **VNC 远程桌面**:基于 noVNC 渲染的独立 `VncPanel` 标签页 - 新增 **目录同步(DirSync)**:远端 ⇄ 本地双向同步,差异预览 + 执行结果汇总 - 新增 **SFTP 打包下载**:远端多选文件 / 目录一键打包下载 - 新增 **远程文件编辑器**:`sftp.readFile / writeFile` 直读直写远端文本文件 - 新增 **主密码安全锁**:主密码 + 自动锁定超时 + 失败次数暂时锁定 + 锁定遮罩 - 新增 **端口转发完善**:`forward.create / stop / delete / list`,ForwardInfo 显示实际端口、运行状态与 autoStart - 新增 **SSH Agent 认证**、**WOL 局域网唤醒**(`wol.send`) - 协议类型扩展:RDP、VNC、WSL、本地 Shell(`local`)正式可用;串口服务(SerialService)框架就绪 - 新增命令历史(`commandHistory.*`)、快捷键(ShortcutCommand / ShortcutMap)、安全锁(`lock.*`)等 IPC 通道 - Telnet 服务增强,Session 仓库与连接管理器扩展 - 国际化新增 ~90 条中英文文案(目录同步、打包下载、RDP/VNC 配置、跳板机、认证方式等) **v1.0.3(2026-08-15)** — 连接管理视图与新建连接重构 - 新增 **连接管理视图**(应用默认首页):选中会话后展示连接属性卡片(主机 / 端口 / 用户名 / 认证方式 / 密钥 / 标签)与快速命令 chips(单击执行) - 新增 **搜索与筛选**:按连接名、主机或标签搜索;支持「全部 / 未连接」状态筛选 - 新增 **连接工具栏**:打开终端 / 断开 / 修改 / 删除 一键操作 - 重构 **新建/编辑连接对话框**(new-connection-v3 设计稿): - 新增「测试连接」按钮,保存前验证可达性与认证 - 新增「复制连接」功能 - 新增 **连接标签**(tags)与会话备注(note) - 新增 **跳板机配置**(Jump Host):启用后通过跳板机建立 SSH 隧道 - 新增 **启动后自动执行命令**(startupCommand,每行一条) - 新增终端 **光标样式**(block / bar / underline)与 **行高** 设置 - 新增串口配置字段(serialPort / baudRate,规划中) - 新增 `local` 协议类型(本地 Shell) - 侧边栏与图标栏布局重构,新增「连接管理」入口,默认激活视图改为 `connections` - 国际化新增 80+ 条中英文文案 **v1.0.2(2026-08-14)** — 阶段二功能增强与 Zmodem 修复 - 新增 **快速连接** 栏(`user@host[:port]` 格式),无需保存会话即可一键连接,成功后可选保存为正式会话 - 新增 **新建连接** 按钮(侧边栏「快速连接 / 新建连接 / 新建分组」三按钮并列) - 新增 **Zmodem 文件传输**(rz / sz):协议字节拦截、文件选择对话框、进度状态条、传输完成后终端自动恢复 - 新增 **终端分屏**:1×1 / 1×2 / 2×1 / 2×2 四种布局,每个分屏独立渲染终端,独立 shell 流 - 新增 **命令历史记录**:按会话隔离,↑/↓ 回看,持久化存储 - 新增 **会话模板**:可将现有会话保存为模板,新建会话时继承默认配置(不含敏感信息) - 新增 **批量执行 / 广播**:多选会话后批量执行命令或广播输入 - **快速连接智能凭据复用**:检测到相同 host+port+username 的已保存会话时,自动复用其认证凭据、跳板机和代理配置 - 完善 Monitor 监控面板自适应:ResizeObserver 修复最大化 / 还原后图表尺寸 - **Zmodem 协议健壮性修复**:ZRINIT 重试头处理、ZNAK 头捕获、keepalive 不覆盖 handler、二进制数据编码无损传输 - **SFTP 通道缓存复用**:避免频繁创建通道触发服务器 MaxSessions 限制 **v1.0.1(2026-08-12)** — 阶段一修复与增强 - 新增端口转发管理界面(本地/远程/动态转发,随连接生命周期展示) - 新增终端 Ctrl+F 搜索(高亮、大小写、正则、上下定位) - 新增快捷键设置(可配置、冲突检测、恢复默认) - 新增全局网络代理(HTTP / SOCKS4 / SOCKS5),会话级可覆盖 - 新增主密码安全锁(自动锁定、失败次数上限、锁定遮罩) - WSL 会话改为真实 `wsl.exe` 会话;RDP/VNC/串口标记“规划中”并禁止创建 **v1.0.0(2026-08)** — 首个完整版本 ### 版本号规则 采用语义化版本(SemVer): ```text 主版本.次版本.修订号 ``` | 版本段 | 含义 | |--------|------| | 主版本 | 重大架构调整或不兼容变更 | | 次版本 | 新增功能(向后兼容) | | 修订号 | 缺陷修复与细节优化 | ### 更新日志 #### v1.0.12(2026-09-01) > i18n 校验器字典键校验、快捷键消息可翻译化、AI Agent 窄栏自适应、英文版文档 **✨ 新增功能** - **英文版文档**(`README_EN.md`):与中文版 `README.md` 内容、结构、排版完全一致;两版顶部互相链接(`简体中文 | English`)实现中英文切换 - **i18n 校验器增强**(`scripts/check-renderer-i18n.cjs`,+84 行): - 扫描范围扩展至 `src/renderer/config/` - 解析 `i18n/index.tsx` 中的 `zhMessages` 字典键 - 校验所有静态 `t('...')` 调用的键存在于字典,缺失时报告 `missing zhMessages key: ` - findings 排序细化(file → line → text) **🔨 重构与增强** - **快捷键校验消息可翻译化**(`src/renderer/config/shortcuts.ts`): - 硬编码中文错误消息改为可翻译英文源键 - `缺少 ${cmd} 的快捷键` → `Invalid shortcut configuration`(快捷键配置无效) - `${combo} 已被 ${prev} 与 ${cmd} 重复绑定` → `Shortcut already assigned: {shortcut}`(快捷键已被占用:{shortcut}) - **zhMessages 字典补充**:`tasks`(任务)/ `Read-only`(只读)/ `Issues`(问题)/ `Compose operation plan`(Compose 操作计划)/ `CPU 18%` / `Region`(区域);移除重复 `System` 条目并归位至主题区 - **AI Agent 面板窄栏布局修复**(`AgentRunPanel` + `AiChat.css`): - Inspector 窄栏(`.ai-panel-root--inspector`)下控制行改为单列自适应 - 模型选择 / 终端选择 / 运行按钮全宽(`ai-composer-control` / `ai-agent-run-action`) - `popupMatchSelectWidth` 防止下拉菜单溢出容器;控制行 `min-width: 0` 防止栅格溢出 **📚 测试** - 新增测试:应用主题标签中文覆盖(Light/Dark/System/Ocean/Graphite/Sand → 浅色/深色/系统/海洋/石墨/沙砾) - 新增测试:快捷键校验消息可翻译性(`Invalid shortcut configuration`、`Shortcut already assigned: {shortcut}`) **📦 安装包** - Windows: `FinalZero Setup 1.0.12.exe` - macOS: `FinalZero-1.0.12.dmg` / `FinalZero-1.0.12-mac.zip`(需在 macOS 上构建) #### v1.0.11(2026-08-31) > 应用主题扩展、终端主题系统、macOS 打包、i18n 全面覆盖、TerserPlugin 压缩 **✨ 新增功能** - **应用主题扩展**:`ThemeType` 从 `dark/light/system` 扩展到 6 种(新增 `ocean` / `graphite` / `sand`) - `APP_THEME_OPTIONS` 数据驱动,设置与布局共用同一列表 - `resolveApplicationTheme` 解析 `system` 主题为当前系统明暗基底 - `isDarkApplicationTheme` 判定主题明暗 - **终端主题系统**(`TerminalThemeType`):11 种可移植终端配色 - `default` / `dark` / `light` / `solarized-dark` / `solarized-light` / `monokai` / `dracula` / `nord` / `gruvbox-dark` / `one-dark` / `tokyo-night` / `high-contrast` - `default` 跟随应用主题明暗基底 - **终端配置解析**(`src/renderer/config/appConfig.ts`):`parseStoredTerminalConfig` 从 `app_config` 表解析 `lineHeight` / `letterSpacing` / `cursorStyle` / `cursorBlink` / `selectOnCopy` / `rightClickPaste` / `enableSuggestions` / `enableKeywordHighlight` / `enableActionLinks` / `showLineNumbers` / `showTimestamps` - `src/renderer/config/theme.ts` 提供归一化函数:`normalizeTerminalTheme` / `normalizeTerminalLineHeight` / `normalizeTerminalLetterSpacing` / `normalizeTerminalCursorStyle` - **macOS 打包支持**: - `package:mac` 脚本(平台校验 + build + rebuild + electron-builder `--mac`) - electron-builder `mac` 配置(dmg + zip,`category: public.app-category.developer-tools`) - 新增 `build/icon.icns` / `build/icon.png` / `build/icon-source.png`;更新 `build/icon.ico`(高清) - **i18n 全面覆盖**(+528 行):几乎所有 UI 组件接入国际化 - 新增 `scripts/check-renderer-i18n.cjs` 检查脚本 + `check:i18n` npm script,扫描渲染层硬编码中文 **🔌 接口与类型变更** - `ThemeType` 扩展:`'dark' | 'light' | 'system'` → 新增 `'ocean' | 'graphite' | 'sand'` - 新增 `TerminalThemeType`(11 种) - `AppConfig.terminalTheme` 由 `string` 改为 `TerminalThemeType` - `AppConfig` 新增可选字段:`lineHeight` / `letterSpacing` / `cursorStyle`(`'block' | 'underline' | 'bar'`)/ `cursorBlink` **🔨 构建与重构** - **TerserPlugin 生产压缩**:webpack 生产构建启用 `TerserPlugin`(`parallel: 4`),`minimize: isProduction`;新增 devDependency `terser-webpack-plugin@5.3.14` - 增强 `design-system.css`(+302 行):新增 ocean / graphite / sand 主题样式与终端主题变量 - 重构接入新主题与 i18n:`TerminalView`(+132/-行)、`SftpPanel`(+210/-行)、`MonitorPanel`(+159/-行)、`TerminalSettings`(+353/-行)、`SessionTree`(+108/-行)、`AppearanceSettings`(+111/-行)、`GeneralSettings`(+87/-行)等 **📚 测试** - 新增单元测试:`appConfig` / `theme` / `i18n` **📦 安装包** - Windows: `FinalZero Setup 1.0.11.exe` - macOS: `FinalZero-1.0.11.dmg` / `FinalZero-1.0.11-mac.zip`(需在 macOS 上构建) #### v1.0.10(2026-08-30) > 审计日志查看器、诊断日志开关、RDP 孤儿 profile 清理、设置深链导航 **✨ 新增功能** - **审计日志查看器**(`AuditLogPanel` + `AuditHandlers`): - 支持按动作 / 级别 / 时间范围 / 关键词查询、排序、分页 - CSV 导出(UTF-8 BOM,含 **CSV 公式注入防护**,对 `=` / `+` / `-` / `@` / `\t` / `\r` 开头单元格前置 `'`) - 导出上限 10000 条,分页 100 条 - 新增 IPC `audit.query` / `audit.export` - `AuditLogRepository` 重写(+394/-行) - **诊断日志开关**(`SecureLogger.setEnabled`):普通诊断日志可关闭,安全审计事件不受影响 - **RDP 孤儿 profile 清理**(`RdpService.cleanupOrphanProfiles`):启动时清理 24h 以上的 `finalzero-rdp-*.rdp` 临时文件,非递归,拒绝无关文件 - **设置深链导航**(`settingsNavigation`):`requestSettingsCategory` / `consumeRequestedSettingsCategory` 支持从其他视图跳转到指定设置子页 **🔌 接口变更** - 新增 IPC:`audit.query`、`audit.export` - 新增共享类型:`AuditLogEntry`、`AuditLogQuery`、`AuditLogQueryResult`、`AuditLogExportRequest`、`AuditLogExportResult`、`AuditLogLevel` - `SettingsCategory` 新增 `'audit'` **🔨 重构与增强** - `AuditLogRepository` 重写(查询 / 导出 / actionTypes 聚合) - `CloudSyncService` 增强(+173 行):审计日志纳入同步分类 - `NetworkSettings` 重构(+168/-行) - `LogsSettings` UI 增强(诊断日志开关) - `SecureLogger` 新增 `enabled` 字段与 `setEnabled` 方法 **📚 测试** - 新增单元测试:`AuditLogRepository`、`AuditHandlers`、`auditLogDetails`、`SecureLogger`、`RdpServiceCleanup` **🌐 国际化** - i18n 补充审计日志、诊断日志等中英文文案 **📦 安装包** - `FinalZero Setup 1.0.10.exe` #### v1.0.9(2026-08-29) > 容器管理(Docker)、AI 多模态附件、主机密钥确认协调器、递归分屏布局 **✨ 新增功能** - **容器管理(Docker)**: - 统一 Docker 运维工作台 `ContainerCenter`,标签页覆盖容器 / 镜像 / 网络 / Compose / Swarm - 容器:列表 / 详情 / 启停 / 重启 / 删除 / 创建(preflight 预检)/ exec 进入终端(`DockerExecWorkspace` / `DockerExecTerminal`) - 镜像:列表 / 拉取(含取消、进度流) - 网络:列表;Swarm:stack 列表 - Compose:项目列表 / YAML 预览 / up-down-restart 操作预检与影响评估 - 看板 `docker.dashboard` 汇总统计;可观测性 `docker.observability.subscribe` 实时事件与 stats 订阅流 - **本地传输**:直连本机 Docker Engine(named pipe / unix socket) - **远程传输**(`RemoteDockerTransport`):经已有 SSH 连接的 ssh2 channel 桥接为 Node HTTP socket,复用 `DockerServicePool`,无需远程额外开端口 - `docker.probe` 探测目标可用性与版本 - **AI 多模态附件**(`AiAttachmentService`): - 图片(png/jpg/jpeg/webp/gif,≤5MB)与文本(256+ 扩展名,≤256KB)附件 - 上限 5 个 / 总计 10MB;10 分钟 TTL 自动释放 - 新增 IPC `ai.attachments.pick` / `ai.attachments.release` - **主机密钥确认协调器**(`HostKeyVerificationCoordinator`):桥接 ssh2 异步 `hostVerifier` 回调到渲染进程确认对话框与已知主机仓库;reject / accept / remember 三种动作;60s 超时 - **递归分屏布局**(`RecursiveSplitLayout`):终端递归 split 树的可视化布局组件,配合 v1.0.8 的 `splitLayoutStore` - **管理目标仓库**(`ManagedTargetRepository`):绑定 Docker 端点的管理目标持久化 **🛡️ 安全与审批** - **Compose Planner**(`DockerComposePlanner`):YAML 解析、复杂度/资源限制校验、阻断码(blocker codes)与风险提示;操作前 preflight 返回影响范围 - 容器 / 资源创建 preflight:返回 normalized 请求、风险提示(risk notice)与影响(impact) - 资源删除 preflight:返回依赖关系,确认后才执行 - 注册表凭据(`DockerRegistryCredentialRepository`):私有仓库凭据加密存储,支持 list / delete **🔌 接口变更** - 新增 **IPC 通道集中声明**(`src/shared/ipcChannels.ts`):`IPC_INVOKE_CHANNELS` 白名单 + 事件通道,契约测试 `ipcChannels.test.ts` 守护 preload 与主进程一致性 - 新增 IPC:`docker.*`(container / image / network / compose / swarm / dashboard / observability / probe / registry)、`ai.attachments.pick` / `ai.attachments.release` - 新增仓库:`ManagedTargetRepository`、`DockerRegistryCredentialRepository` - preload 新增 247 行 Docker / 附件 / 管理目标 API 桥接 - SSH `hostVerifier` 接入 `HostKeyVerificationCoordinator` **🔨 重构与增强** - AI 聊天:会话选择(`aiConversationSelection`)、滚动管理(`aiChatScroll`)、附件 UI - `AiSettings` / `AiModelSelect` / `AiPanel` / `AgentRunPanel` 增强 - `SshService` host key 验证接入协调器 - `.gitignore` 新增 `.qa/` **📚 测试** - 新增大量单元测试:DockerHandlers / DockerService / DockerComposeAnalyzer / DockerComposePlanner / RemoteDockerTransport / NamedPipeDockerTransport / AiAttachmentService / AiServiceMultimodal / HostKeyVerificationCoordinator / ManagedTargetRepository / DockerRegistryCredentialRepository / ipcChannels / dockerComposeViewModel / dockerContainerCreateViewModel / dockerExecWorkspace / dockerObservabilityViewModel / dockerResourceCreateViewModel / dockerSwarmViewModel / aiChatScroll / aiConversationSelection **🌐 国际化** - i18n 补充 480+ 条中英文文案 **📦 安装包** - `FinalZero Setup 1.0.9.exe` #### v1.0.8(2026-08-28) > 远程文件编辑器安全写、终端分屏树重构、Inspector 面板懒加载 **✨ 新增功能** - **远程文件编辑器安全写**(`SftpSafeWrite`): - 版本指纹(SHA-256 + size + mtime)识别等长同秒修改,避免静默覆盖他人改动 - 写入前冲突检测:冲突时返回远端当前内容与版本(`status: 'conflict'`),由前端展示 diff - `force` 选项仅在用户确认后使用,覆盖前仍创建恢复副本(`backupPath`) - 成功返回新版本指纹与备份路径(`status: 'saved'`) - **共享工具 `remoteEditSafety`**: - `sameRemoteFileVersion` 版本比对 - `buildTextDiffSummary` 线性复杂度文本 diff 摘要(仅展开首尾公共区之间的变化块,避免对 2MB 文本执行 O(n²) LCS) **🔨 重构与增强** - **终端分屏树重构**(`splitLayoutStore`): - 递归 split 树(horizontal / vertical,ratio 0.15~0.85),最多 12 个 pane - 树节点使用稳定 id,调整比例或继续嵌套时不重挂载已有终端 - `TerminalTabs` 为唯一写入方;命令 / AI 等面板只读取某连接当前存活的 `streamId` - **终端标签栏**(`TerminalTabs`):适配新分屏树,关闭 pane 后不复用旧 id - **Inspector 面板懒加载**(`lazyWorkspacePanels`):`React.lazy` 拆分 AI / SFTP / Monitor 面板为独立 chunk(`panel-ai` / `panel-sftp` / `panel-monitor`),`DeferredWorkspacePanel` Suspense 兜底,减少首屏包体 - **Webpack 分包**:`chunkFilename: chunks/[name].[contenthash:8].js` + 生产构建 `clean` 选项,清理 dev hot-update 陈旧产物 **🔌 接口变更** - 新增 IPC 通道:`sftp.readFileVersioned`(返回 `SftpVersionedFile`)、`sftp.safeWriteFile`(请求 `SftpSafeWriteRequest`,返回 `SftpSafeWriteResult`) - 新增共享类型:`SftpFileVersion`、`SftpVersionedFile`、`SftpSafeWriteRequest`、`SftpSafeWriteResult` **📚 测试** - 新增单元测试:`tests/__tests__/main/sftpSafeEdit.test.ts`、`tests/__tests__/renderer/splitLayoutStore.test.ts`、`tests/__tests__/shared/remoteEditSafety.test.ts` **🔧 其他** - SftpService / SftpHandlers 扩展版本化读写实现 - RemoteFileEditor 冲突 UI 与 diff 展示 - i18n 补充 20+ 条中英文文案;样式增强 **✅ 验证** - 23/23 测试套件通过 - 生产构建通过(启用 chunk 分包与 clean) **📦 安装包** - `FinalZero Setup 1.0.8.exe` #### v1.0.7(2026-08-27) > WorkspaceShell 工作区外壳、Electron 原生模块工具链 **✨ 新增功能** - **WorkspaceShell 工作区外壳**:基于 Navop 竞品分析重构主界面骨架;删除固定 44px 顶部工作区面板,导航交给 IconSidebar,连接状态交给终端标签与 StatusBar,业务页面获得完整垂直空间 - **可恢复首页 WorkspaceHome**:单列布局展示可恢复任务入口;连接型视图重启后降级回连接页,不伪造已恢复会话(安全视图与非敏感布局偏好恢复) - **统一 Inspector 工作区面板**(`WorkspaceInspector`):复用命令 / AI / 远程文件 / 监控四个业务面板;支持 tab 切换、折叠、300~560px 拖拽宽度记忆;宽屏 dock、中屏右侧 overlay、800px 最小窗口 bottom sheet - **资源栏自适应行为**:Sidebar 支持 `auto` / `dock` / `overlay` 三种行为;窄屏强制 overlay + 遮罩 + Escape 关闭 + 持久化开合状态,不再挤压主工作区 - **工作区偏好持久化**(`workspacePreferences`):lastView / inspector / sidebar 配置写入 localStorage(key `finalzero.workspace.preferences.v1`) - 新增 UI action `SET_SIDEBAR_COLLAPSED`:程序化控制侧边栏折叠 **🔨 构建与工具链** - **Electron 原生模块工具链**(FZ-NV-001): - `.nvmrc` 固定 Node 版本 - `scripts/run-jest-electron.cjs`:测试统一在 Electron ABI 下运行(`--runInBand`) - `scripts/verify-electron-native.cjs`:真实加载 SQLite / pty / Serial bindings 原生模块自检 - `postinstall` 钩子自动重建原生模块;`rebuild:electron` 拆分;`verify:native` 新增 - `package` / `package:win` / `pack:dir` 全部纳入 rebuild 步骤,安装/打包只重建 ABI 敏感的 SQLite - **ESLint 配置**:`.eslintrc.cjs` + `eslint-plugin-react-hooks` ^4.6.2 规则 **🔌 接口变更** - 新增 UI action `SET_SIDEBAR_COLLAPSED`(payload: boolean) - 新增 `WorkspacePreferences` 类型与 `finalzero.workspace.preferences.v1` localStorage 持久化 **📚 文档与测试** - 新增竞品分析文档 `docs/Navop-Comparison-and-Improvement-Plan.md`;`docs/v1.2-Sprint-Plan.md` 旧 Sprint 标记为历史 - 新增单元测试 `tests/__tests__/renderer/workspacePreferences.test.ts` - 数据库测试(`Database.test.ts` / `SessionRepository.test.ts`)适配 Electron 测试环境 - `SessionConfig` 串口注释校准(不再标记“规划中”) **🔧 其他** - MonitorPanel / SftpPanel / AiPanel / AiChat.css 细节增强 - i18n 补充 45+ 条中英文文案 **✅ 验证** - 20/20 测试套件、298/298 用例通过 - 生产构建通过;lint 0 errors / 62 条已记录历史 warnings - Electron 28.3.3 / Node 18.18.2 / ABI 119 原生模块自检通过 - 1188×794 与 788×644 两档真实窗口已核验资源栏 dock/overlay、遮罩、Escape 与首页单列布局 **📦 安装包** - `FinalZero Setup 1.0.7.exe` #### v1.0.6(2026-08-15) > AI 多模型与流式推理、云同步分类、SQL 日志脱敏 **✨ 新增功能** - **AI 多模型选择**:Ask / Agent 聊天界面可切换已启用的模型;新增 `AiModelSelect` 组件与 `AiModelResolver` 服务,按 `isDefault` 标志解析默认模型,旧数据 `configuredModelId` 兼容回退 - **AI 流式响应 + 推理内容分离**:新增 `AiStreamDelta`(kind: `content` / `reasoning`);`AiMessage` / `AiStreamDone` 新增 `reasoningContent` 字段,将推理过程与最终答案分开存储与展示 - **AI Markdown 渲染**:基于 `react-markdown` + `remark-gfm` 渲染 GFM Markdown,代码块一键复制(`MarkdownMessage` 组件 + `AiChat.css`) - **AI 思考过程面板**(`ThinkingPanel`):折叠展示 Provider 推理内容与 Agent 执行思考链,流式加载动画 - **终端上下文注入**:`terminalContextStore` 注册活动终端输出读取器;`AiChatRequest` / `AiAgentStartRequest` 新增 `terminalContext` 字段;主进程重新限制长度并脱敏后转发给 Provider - **云同步分类勾选**:新增 `SyncCategory`(10 个数据域:settings / connections / groups / history / commands / credentials / aiConfig / aiHistory / fileTransfers / auditLogs);`DEFAULT_SYNC_CATEGORIES` 默认 auditLogs 不勾选;`CloudSyncSettings.categories` 字段;`syncCategorySettings` 工具函数 - **远端清空**:新增 `sync.clearRemote` IPC 通道,一键清空远端同步数据 - **同步展示增强**:`syncDisplay` 时间戳格式化(本地时区,无 locale 分隔符) **🛡️ 安全增强** - **SQL 日志脱敏**(`sqlLogRedaction`):自动检测含 `password` / `passphrase` / `private_key` / `api_key_enc` / `proxy_password` / `PRAGMA key` 的 SQL 语句,开发日志中以 `[REDACTED sensitive SQL]` 替代,防止凭据泄漏 **🔌 接口变更** - 新增 IPC 通道:`sync.clearRemote` - `AiChatRequest` / `AiAgentStartRequest` 新增 `modelId` 字段(模型选择) - `AiChatRequest` 新增 `terminalContext: AiTerminalContext` 字段 - 新增流式事件 `AiStreamDelta`(kind: `content` / `reasoning`) - `AiMessage` / `AiStreamDone` 新增 `reasoningContent` 字段 - `CloudSyncSettings` 新增 `categories: SyncCategorySelection` 字段 - 新增共享常量:`SYNC_CATEGORY_KEYS`、`DEFAULT_SYNC_CATEGORIES`、`SyncCategory`、`SyncCategorySelection` 类型 **🔨 构建** - Webpack renderer 启用 `conditionNames: ['browser', 'import', 'default']`,修复 `react-markdown` / `vfile` 在渲染进程(nodeIntegration 禁用)中的 ESM 导出问题 **📚 测试** - 新增 9 个单元测试:AiProviderRepository seed、sqlLogRedaction、AiModelSelect、syncCategorySettings、syncDisplay、terminalContextStore、AiModelResolver、AiServiceStream、CloudSyncService **🌐 国际化** - 补充 AI 模型选择、思考过程、同步分类等中英文文案 **📦 依赖** - 新增 `react-markdown` ^10.1.0、`remark-gfm` ^4.0.1 **🧹 清理** - 移除无关二进制 `mojian-blog.jar` **📦 安装包** - `FinalZero Setup 1.0.6.exe` #### v1.0.5(2026-08-15) > AI 助手、云同步与终端增强 **✨ 新增功能** - **AI 助手 - Ask 模式**:自然语言生成 Shell 命令;自动风险标注(safe / caution / dangerous),`dangerous` 强制二次确认;上下文记忆与会话隔离 - **AI 助手 - Agent 模式**:基于 ReAct(Reason + Act)的自主多步执行;思考链 + 工具调用可视化;写 / 删 / 改 / 远程执行等敏感操作走审批流,支持中途中止与回滚预览 - **云同步**:WebDAV 与 S3 兼容协议;多设备配置加密同步(AES-256-GCM 字段级加密,密钥由主密码派生);冲突检测与解决策略(`last-writer-wins` / `manual-merge`) - **终端行号 / 时间戳 Gutter**:左侧独立列渲染逻辑行号与到达时间戳,滚动联动;「终端设置」可独立开关 `showLineNumbers` / `showTimestamps` - **终端关键词高亮**:基于 xterm `Decoration` API 的轻量高亮,扫描完整行并锚定 marker(scrollback 裁剪后仍保留);内置规则覆盖 error / warn / success / info / debug、日期时间、URL、UUID、版本号、Shell 提示符 - **终端动作链接**:自动识别 IPv4、`host:port`、归档文件名(`.tar.*` / `.zip` / `.7z` 等),渲染为可点击链接,支持复制 / 下载 / 复制主机端口 - **AI 设置面板**:Provider 选择(OpenAI / Azure / Ollama / 自定义 BaseURL)、模型、温度、最大 tokens、Ask 风险规则开关 - **同步设置面板**:协议、端点、凭据、桶名 / 路径、自动同步间隔、冲突解决策略 **🔌 接口变更** - 新增 IPC 通道:`ai.chat / ai.cancel / ai.providers.*`、`ai.agent.start / step / approve / cancel`、`sync.settings.* / sync.now / sync.status` - 新增数据库仓库:`AiProviderRepository`、`AiConversationRepository`、`AgentRunRepository`(持久化 Agent 执行记录) - 新增 `shared/aiRiskRules.ts`(共享风险规则)与 `shared/types/index.ts` 中的 AI / Sync 类型扩展 **🛡️ 安全增强** - 云同步凭据(WebDAV 密码、S3 SecretKey)字段级 AES-256-GCM 加密存储 - Agent 执行的敏感操作全量审计日志,便于事后追溯 **📚 文档** - 新增设计文档:`docs/AI-Agent-Mode-Design.md`、`docs/AI-Assistant-Ask-Mode-Design.md`、`docs/Nyaterm-Comparison-Analysis.md` - 新增单元测试:`tests/__tests__/shared/aiRiskRules.test.ts` - README 补充 AI 助手、云同步章节及使用示例 **🌐 国际化** - 补充 AI 助手、云同步、终端增强相关中英文文案 **📦 安装包** - `FinalZero Setup 1.0.5.exe` #### v1.0.4(2026-08-15) > RDP / VNC 远程桌面、目录同步、安全锁与协议矩阵扩展 **✨ 新增功能** - **RDP 远程桌面**:调用系统 `mstsc.exe` 独立窗口承载;支持域(Domain)、屏幕模式(窗口 / 全屏)、NLA 网络级认证;凭据由系统窗口交互输入,不写入配置文件 - **VNC 远程桌面**:基于 noVNC 的独立 `VncPanel` 标签页,通过 `VncService` 桥接 - **目录同步(DirSync)**:远端 ⇄ 本地双向目录同步;差异预览(only-remote / only-local / newer-remote / newer-local / same);三色执行结果(成功 / 失败 / 跳过) - **SFTP 打包下载**:远端多选文件 / 目录,一键打包到本地压缩包 - **远程文件编辑器**:`sftp.readFile / sftp.writeFile` 直读直写远端文本文件,省去下载再上传 - **主密码安全锁**:`lock.*` 完整 IPC;主密码 + 自动锁定超时 + 失败次数上限 + 暂时锁定(lockedUntil)+ 锁定遮罩 - **端口转发完善**:`forward.create / stop / delete / list`;`ForwardInfo` 报告实际监听端口(actualPort)、运行状态、错误;支持 `autoStart` - **SSH Agent 认证**:新增认证通道,使用系统 SSH Agent 中已加载的密钥 - **WOL 局域网唤醒**:`wol.send` 向已配置 MAC 地址发送魔术包 - **协议矩阵扩展**:RDP、VNC、WSL、本地 Shell(`local`)正式可用;串口服务(`SerialService`)与 IPC 框架就绪 - **新服务**:`RdpService`、`VncService`、`WolService`、`SerialService`、`LocalShellService`、`DirSyncService` - **新 IPC 通道**:`wol.*`、`lock.*`、`forward.*`、`serial.list`、`commandHistory.*`、`sftp.syncPreview`、`sftp.syncApply`、`sftp.packDownload`、`sftp.readFile`、`sftp.writeFile` - **新渲染组件**:`RdpPanel`、`VncPanel`、`DirSyncDialog`、`RemoteFileEditor` - **Telnet 服务增强**:`TelnetService` 重构 - **会话仓库与连接管理器扩展**:标签(tags)、备注(note)、串口 / RDP / VNC 扩展字段持久化 - **国际化**:新增 ~90 条中英文文案(目录同步、打包下载、RDP/VNC 配置、跳板机、认证方式、安全锁等) **🐛 修复与优化** - SessionDialog 重构:新 v3 字段(跳板机、启动命令、光标样式、行高、标签、备注、串口、RDP/VNC/WSL 配置)统一接入 - SftpPanel 重构:集成目录同步入口、打包下载入口、远程文件编辑器入口 - ConnectionManagementView、MainContent 视图路由扩展(connections / terminal / sftp / rdp / vnc / monitor / commands / settings / keys) - TerminalTabs 新增远程桌面标签(rdp / vnc)支持 - Monitor 采集新增 `uptime`、`systemInfo`(hostname / os / kernel / arch / cpuModel)缓存 #### v1.0.3(2026-08-15) > 连接管理视图与新建连接对话框重构 **✨ 新增功能** - **连接管理视图**:新增 `connections` 视图作为应用默认首页,选中会话后展示连接属性卡片(主机 / 端口 / 用户名 / 认证方式 / 密钥 / 标签)与快速命令 chips - **搜索与筛选**:支持按连接名、主机或标签搜索;「全部 / 未连接」状态筛选 - **连接工具栏**:打开终端 / 断开 / 修改 / 删除 一键操作 - **新建/编辑连接对话框重构**(new-connection-v3 设计稿): - 「测试连接」按钮,保存前验证可达性与认证 - 「复制连接」功能 - 连接标签(tags)与会话备注(note) - 跳板机配置(Jump Host),通过跳板机建立 SSH 隧道 - 启动后自动执行命令(startupCommand,每行一条) - 终端光标样式(block / bar / underline)与行高设置 - 串口配置字段(serialPort / baudRate,规划中) - 新增 `local` 协议类型(本地 Shell) **🐛 修复与优化** - 侧边栏与图标栏布局重构,新增「连接管理」入口 - 默认激活视图改为 `connections` - 国际化新增 80+ 条中英文文案 #### v1.0.0(2026-08) > 首个完整版本 **✨ 新增功能** - **连接管理**:SSH / SFTP / Telnet 会话,密码 / 私钥认证,代理、Keep-Alive、超时等高级配置 - **会话分组**:多级分组、收藏、搜索、拖拽排序、移动分组 - **多标签终端**:复制 / 重命名 / 标签颜色 / 关闭当前 / 其他 / 右侧 / 全部,每个标签页独立连接 - **连接详情**:单击查看详情,双击独立打开终端 - **系统监控**:状态栏 CPU / 内存 / 系统信息,超过 90% 红色告警,监控图表面板 - **SFTP 文件管理**:上传 / 下载、断点续传、暂停 / 恢复、传输队列持久化、记录清理、一键打开本地目录、可折叠面板 - **命令管理器**:分组管理、内置常用命令模板、双击执行 - **密钥管理**:SSH 私钥管理(界面遮蔽显示)、主机密钥校验 - **设置中心**:开机自启、启动时连接上次会话、关闭窗口行为、语言切换、外观、终端、网络、快捷键、日志、关于 - **连接历史**:记录与快速重连 - **配置导入 / 导出**:敏感数据加密处理 - **系统托盘**:最小化到托盘、单实例运行、审计日志 **🔒 安全增强** - SQLCipher 4 整库加密(主密钥由 Windows DPAPI 管理) - 密码 / 私钥等敏感字段 AES-256-GCM 二次加密 - 明文数据库启动时自动迁移为加密库(备份、回滚、清理保护) **🐛 修复与优化** - 修复多标签页内容同步、关闭一个标签导致全部关闭等问题,标签页相互独立 - 修复分组收藏显示、分组缩进过宽、多级分组移动、拖拽排序等交互问题 - 修复传输记录在界面切换后丢失、暂停后仍在传输等问题 - 优化设置项生效逻辑与界面布局 > 后续版本的更新内容将在此处持续补充。 --- ## 未来功能规划 > 以下为规划中方向,以最终发布为准。 | 方向 | 说明 | 状态 | |------|------|------| | i18n 校验器字典键校验 | 静态 t() 调用键必须存在于 zhMessages | ✅ v1.0.12 已实现 | | 快捷键消息可翻译化 | 校验错误改为英文源键 + 字典翻译 | ✅ v1.0.12 已实现 | | AI Agent 窄栏自适应 | Inspector 窄栏控制行单列全宽 | ✅ v1.0.12 已实现 | | 英文版文档 | README_EN.md 与中文版结构一致 + 语言切换 | ✅ v1.0.12 已实现 | | 应用主题扩展 | dark/light/system + ocean/graphite/sand,数据驱动 | ✅ v1.0.11 已实现 | | 终端主题系统 | 11 种 TerminalThemeType,default 跟随应用主题 | ✅ v1.0.11 已实现 | | macOS 打包 | package:mac + dmg/zip + icon.icns | ✅ v1.0.11 已实现 | | i18n 全面覆盖 | +528 行,几乎所有组件接入 + check:i18n 脚本 | ✅ v1.0.11 已实现 | | TerserPlugin 压缩 | webpack 生产构建 parallel:4 压缩 | ✅ v1.0.11 已实现 | | 审计日志查看器 | 查询/排序/分页 + CSV 导出(公式注入防护) | ✅ v1.0.10 已实现 | | 诊断日志开关 | SecureLogger 可关闭诊断日志,安全事件不受影响 | ✅ v1.0.10 已实现 | | RDP 孤儿 profile 清理 | 启动时清理 24h+ finalzero-rdp-*.rdp 临时文件 | ✅ v1.0.10 已实现 | | 设置深链导航 | request/consumeSettingsCategory 跳转指定子页 | ✅ v1.0.10 已实现 | | 容器管理(Docker) | 容器/镜像/网络/Compose/Swarm,本地+远程 SSH 隧道传输,preflight+审批 | ✅ v1.0.9 已实现 | | AI 多模态附件 | 图片+文本附件,TTL 自动释放,多模态 Provider | ✅ v1.0.9 已实现 | | 主机密钥确认协调器 | ssh2 hostVerifier 桥接确认对话框 + 已知主机仓库 | ✅ v1.0.9 已实现 | | 递归分屏布局 | RecursiveSplitLayout 可视化递归 split 树 | ✅ v1.0.9 已实现 | | IPC 通道集中声明 | ipcChannels 白名单 + 契约测试守护一致性 | ✅ v1.0.9 已实现 | | 远程文件编辑器安全写 | SHA-256 版本指纹 + 冲突检测 + 恢复副本 | ✅ v1.0.8 已实现 | | 终端分屏树重构 | 递归 split 树,最多 12 pane,稳定 id | ✅ v1.0.8 已实现 | | Inspector 面板懒加载 | React.lazy 拆分 chunk,减少首屏包体 | ✅ v1.0.8 已实现 | | Webpack chunk 分包 | contenthash chunkFilename + clean | ✅ v1.0.8 已实现 | | WorkspaceShell 工作区外壳 | 删除顶部面板,业务页面获得完整垂直空间 | ✅ v1.0.7 已实现 | | 可恢复首页 | 单列布局任务入口,重启后降级回连接页 | ✅ v1.0.7 已实现 | | 统一 Inspector 面板 | 复用命令/AI/远程文件/监控,dock/overlay/sheet | ✅ v1.0.7 已实现 | | 资源栏自适应 | auto/dock/overlay,窄屏遮罩 + Escape + 持久化 | ✅ v1.0.7 已实现 | | Electron 原生模块工具链 | `.nvmrc` + run-jest-electron + verify:native + postinstall | ✅ v1.0.7 已实现 | | AI 多模型选择 | Ask / Agent 切换已启用模型,`isDefault` 解析默认 | ✅ v1.0.6 已实现 | | AI 流式响应 + 推理分离 | `content` / `reasoning` 分流,`reasoningContent` 独立存储 | ✅ v1.0.6 已实现 | | AI Markdown 渲染 | `react-markdown` + `remark-gfm`,代码块复制 | ✅ v1.0.6 已实现 | | AI 思考过程面板 | 折叠展示推理与 Agent 思考链 | ✅ v1.0.6 已实现 | | 终端上下文注入 | 活动终端输出作为 AI 上下文,主进程脱敏 | ✅ v1.0.6 已实现 | | 云同步分类勾选 | 10 个数据域独立勾选,auditLogs 默认关 | ✅ v1.0.6 已实现 | | SQL 日志脱敏 | 凭据相关 SQL 自动 `[REDACTED]` | ✅ v1.0.6 已实现 | | AI 助手(Ask / Agent) | 自然语言命令生成 + ReAct 自主执行 + 审批流 | ✅ v1.0.5 已实现 | | 云同步 | WebDAV / S3 加密配置同步 + 冲突解决 | ✅ v1.0.5 已实现 | | 终端行号 / 时间戳 Gutter | 左侧独立列,滚动联动 | ✅ v1.0.5 已实现 | | 终端关键词高亮 | xterm Decoration 内置规则集 | ✅ v1.0.5 已实现 | | 终端动作链接 | IPv4 / host:port / 归档名自动链接 | ✅ v1.0.5 已实现 | | RDP 远程桌面 | `mstsc.exe` 独立窗口承载,域 / 屏幕模式 / NLA 支持 | ✅ v1.0.4 已实现 | | VNC 远程桌面 | noVNC 渲染 + `VncService` 桥接 | ✅ v1.0.4 已实现 | | 目录同步(DirSync) | 远端 ⇄ 本地双向同步,差异预览 + 执行 | ✅ v1.0.4 已实现 | | 主密码安全锁 | 主密码 + 自动锁定 + 失败锁定 + 锁定遮罩 | ✅ v1.0.4 已实现 | | 端口转发管理 | `forward.*` IPC,ForwardInfo,autoStart | ✅ v1.0.4 已实现 | | SFTP 打包下载 / 远程文件编辑器 | 远端多选打包、直读直写文本文件 | ✅ v1.0.4 已实现 | | SSH Agent 认证 / WOL 局域网唤醒 | Agent 通道 + `wol.send` 魔术包 | ✅ v1.0.4 已实现 | | 命令历史 / 快捷键配置 | 会话隔离历史 + ShortcutMap | ✅ v1.0.4 已实现 | | 终端分屏 UI | 1×1 / 1×2 / 2×1 / 2×2 分屏选择器 | ✅ v1.0.2 已实现 | | 串口连接 | `SerialService` + `serial.list` + 完整串口参数表单 | ✅ v1.0.6 已实现 | | 会话模板与批量部署 | 模板化创建、批量命令执行 / 广播 | ✅ v1.0.6 已实现 | | 自动更新机制 | 应用内检查与静默下载更新 | 🔜 规划中 | | 跨平台支持 | Linux / macOS 平台适配 | 🔜 规划中 | | 插件化架构 | 支持第三方扩展 | 🔜 规划中 | --- ## 技术栈 | 类别 | 技术 | 版本 | |------|------|------| | 桌面框架 | Electron | 28 | | 前端框架 | React | 18 | | 编程语言 | TypeScript | 5 | | UI 组件库 | Ant Design | 5 | | 终端组件 | xterm.js | 5 | | 网络协议 | ssh2、ssh2-sftp-client、telnet-stream | - | | 数据存储 | better-sqlite3-multiple-ciphers(SQLCipher 4) | 9.4.5 | | 图表库 | ECharts | 5 | | 安全 | Windows DPAPI(safeStorage)、AES-256-GCM | - | | 构建工具 | Webpack、electron-builder(NSIS) | - | | 测试框架 | Jest | 29 | --- ## 目录结构 ```text FinalZero/ ├── src/ │ ├── main/ # Electron 主进程 │ │ ├── database/ # 数据库连接、仓库、SQLCipher 加密迁移 │ │ │ ├── Database.ts │ │ │ ├── DbEncryption.ts │ │ │ ├── SessionRepository.ts │ │ │ ├── GroupRepository.ts │ │ │ ├── HistoryRepository.ts │ │ │ ├── SshKeyRepository.ts │ │ │ ├── HostKeyRepository.ts │ │ │ ├── CommandRepository.ts │ │ │ ├── SftpTransferRepository.ts │ │ │ └── AuditLogRepository.ts │ │ ├── ipc/ # IPC 处理器 │ │ │ ├── IpcRegistrar.ts │ │ │ ├── SessionHandlers.ts │ │ │ ├── SshHandlers.ts │ │ │ ├── SftpHandlers.ts │ │ │ ├── MonitorHandlers.ts │ │ │ ├── KeyHandlers.ts │ │ │ ├── DataHandlers.ts │ │ │ ├── LocalFileHandlers.ts │ │ │ └── SystemHandlers.ts │ │ ├── security/ # 密钥链、加解密、安全日志 │ │ │ ├── SecurityManager.ts │ │ │ ├── CryptoManager.ts │ │ │ ├── DataCipher.ts │ │ │ ├── KeychainManager.ts │ │ │ ├── HostKeyManager.ts │ │ │ ├── InputValidator.ts │ │ │ └── SecureLogger.ts │ │ └── services/ # SSH / SFTP / Telnet / 监控等服务 │ │ ├── ConnectionManager.ts │ │ ├── SshService.ts │ │ ├── SftpService.ts │ │ ├── TelnetService.ts │ │ ├── MonitorService.ts │ │ └── PortForwardService.ts │ ├── preload/ # 预加载脚本(contextBridge) │ ├── renderer/ # React 渲染进程 │ │ ├── components/ # 界面组件 │ │ │ ├── commands/ # 命令管理器 │ │ │ ├── dialogs/ # 对话框 │ │ │ ├── layout/ # 布局组件 │ │ │ ├── monitor/ # 监控面板 │ │ │ ├── session/ # 会话管理 │ │ │ ├── settings/ # 设置页面 │ │ │ ├── sftp/ # SFTP 文件管理 │ │ │ └── terminal/ # 终端组件 │ │ ├── hooks/ # 自定义 React Hooks │ │ ├── i18n/ # 国际化(中文 / English) │ │ ├── store/ # 状态管理 │ │ ├── styles/ # 设计系统与全局样式 │ │ └── types/ # 渲染进程类型定义 │ └── shared/ # 共享类型与常量 ├── scripts/ # 开发与数据库加密验证脚本 ├── build/ # 应用图标等打包资源 ├── docs/ # 项目文档 ├── package.json └── README.md ``` --- ## 常见问题
加密之后,之前的连接和命令还在吗? 在。明文库会在启动时自动迁移为加密库,数据原样保留,迁移过程有备份和回滚保护。
为什么数据库文件拷到别的电脑打不开? 这是加密的预期行为。主密钥通过 Windows DPAPI 保存在当前账户下,跨机器 / 跨账户无法解密。请使用应用内的导入 / 导出功能迁移数据。
安装依赖后原生模块报 NODE_MODULE_VERSION 错误? 执行 `npm run rebuild`,或重新执行 `npm install` 恢复与 Electron 匹配的预编译二进制。
启动时提示"数据库加密迁移失败 / 文件被占用"? 请先关闭正在打开该数据库的程序(如 Navicat、DB Browser for SQLite 等),再重新启动应用。
如何反馈问题或建议新功能? 欢迎在项目的 Issue / 讨论区反馈,新功能会持续排期迭代,更新内容会同步到本文档的「更新日志」。
--- ## 贡献指南 欢迎参与 FinalZero 项目贡献!无论是提交问题、建议功能、修复 Bug 还是完善文档,都是对项目的支持。 ### 参与贡献 | 贡献方式 | 说明 | |----------|------| | 🐛 报告问题 | 在 Issue 中描述问题复现步骤与环境信息 | | 💡 建议功能 | 在讨论区或 Issue 中描述使用场景与期望 | | 🔧 提交代码 | 修复 Bug 或实现新功能,提交 Pull Request | | 📝 完善文档 | 改进 README、代码注释或使用说明 | | 🌍 翻译本地化 | 协助完善多语言支持 | ### 代码提交规范 提交信息(Commit Message)采用 [Conventional Commits](https://www.conventionalcommits.org/) 规范: ```text ():