# fastCode **Repository Path**: abogec/fast-code ## Basic Information - **Project Name**: fastCode - **Description**: FastCode Editor 是一个面向 Web、Windows 桌面、鸿蒙/安卓平板的工程化代码编辑器。支持浏览器内 Node.js 运行(WebContainer)、本地文件系统读写(Electron 桌面壳)、远程 Windows 服务器运维(winRun:文件管理 / 受控进程 / 远程终端)。支持 AI编码 实现"编辑 → 运行 → 部署运维"一站式工作流,内置AI智能体。 - **Primary Language**: Unknown - **License**: AGPL-3.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 2 - **Forks**: 0 - **Created**: 2026-02-11 - **Last Updated**: 2026-07-29 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # FastCode Editor ![FastCode Editor 桌面端界面](docs/desktop-ui.png) FastCode Editor 是一个面向 **鸿蒙/平板 + Windows 桌面/远程运维** 场景的“工程化编辑器方案”。 它的核心不是单纯复刻 VSCode UI,而是把 **编辑(Monaco)+ 运行(WebContainer)+ 运维(winRun 受控进程/远程文件/远程终端)** 组合成一套可落地的工具链: - 你可以在本地或平板上完成代码编辑与基础运行 - 也可以把“启动服务、改配置、上传目录、查看/停止进程”等运维动作,通过 winRun 以受控方式落到远程 Windows 机器上 ## 这个项目能做什么(典型用法) - **平板/鸿蒙写代码**:更偏“随身开发/教学/演示”场景 - **轻量 IDE + 一键运行**:在受限环境用 WebContainer 运行 Node 项目(如 `npm install`、`npm run dev`) - **远程 Windows 运维协作**:通过 winRun 做“可见、可停、可审计”的远程执行 - **AI 工具化运维**:把远程文件/进程/终端能力封装成原子工具,便于 AI 稳定调用 ## 与 VSCode 有什么区别 VSCode 是通用桌面 IDE,强依赖本地系统能力和庞大的扩展生态;FastCode Editor 更偏向“**跨端落地 + 受控运维**”的工程方案: - **运行形态不同**:FastCode Editor 核心是 H5(Vue3 + Vite),可被桌面壳/鸿蒙壳/混合容器复用 - **能力侧重点不同**:内置 WebContainer + winRun 远程运维链路,解决“能跑起来、能部署/运维”的问题 - **扩展生态不同**:不以 VSCode 插件生态为目标,优先保证核心能力与工具链稳定 ## 与 Cursor 有什么区别 Cursor 本质是“AI 优先”的桌面 IDE(基于 VSCode 能力),核心竞争力是 AI 交互与代码生成体验;FastCode Editor 更偏向“**把 AI 变成可控执行者**”: - **更强调可控性**:远程执行使用 winRun 的受控进程(spawn/list/kill)与文件白名单,避免 AI 失控执行 - **更强调落地链路**:提供大目录传输(本地 zip + 流式上传 + 远程解压)、按行号编辑等工程化能力,减少“看起来会做但总失败”的情况 - **定位不同**:Cursor 适合作为主力 IDE;FastCode Editor 更适合作为跨端编辑器/运维控制台/AI 运维载体 ## 仓库结构 | 目录 | 说明 | 技术栈 | |------|------|--------| | `editor-core/` | 编辑器核心(H5 前端) | Vue 3 + Vite + Monaco Editor | | `desktop/` | 桌面端壳,承载本地文件系统/进程/测试能力 | Electron 26 | | `winRun/` | Windows 远程运维 Runner,提供远程文件/进程/终端 HTTP API | Electron 26 + Express-like | | `uniapp/` | 鸿蒙/安卓/平板端工程 | uni-app(HBuilderX) | | `hybrid/` | 混合容器资源目录(`editor-core` 构建产物拷贝到这里) | 静态资源 | > 说明:仓库处于持续迭代中,接口与目录可能会调整;欢迎通过 Issue/PR 参与共建。 --- ## 各端使用方式 FastCode Editor 支持多种运行形态,**根据你的使用场景选择对应的启动方式**: ### 1. 浏览器 Web 版(最简单,纯前端体验) > **适合**:快速体验编辑器 UI、教学演示、不需要本地文件系统能力的场景。 只需启动 `editor-core`: ```bash cd editor-core npm install npm run dev ``` Vite 会输出开发地址(通常为 `http://localhost:1013`),**在浏览器中打开即可使用**。 - 支持 Monaco 代码编辑、语法高亮、Git 操作(基于 isomorphic-git) - 支持 WebContainer 在浏览器内运行 Node.js(`npm install` / `npm run dev`) - **限制**:无法直接访问本地文件系统(浏览器沙盒限制),需要手动上传/粘贴代码 --- ### 2. Windows/Mac 桌面版(完整本地开发体验) > **适合**:需要打开本地文件夹、读写本地文件、运行本地终端命令的场景。 需要**同时启动两个项目**: **第一步:启动 editor-core(前端)** ```bash cd editor-core npm install npm run dev ``` 等待 Vite 输出开发地址(如 `http://localhost:1013`)。 **第二步:启动 desktop(Electron 桌面壳)** ```bash cd desktop npm install npm run dev ``` 桌面窗口会自动打开,内嵌 webview 加载 `editor-core` 页面。在启动页面点击 **「打开文件夹」** 选择本地项目目录即可进入编辑器。 > **说明**:desktop 通过 `desktop/src/renderer/config.js` 中的 `WEBVIEW_URL` 配置 editor-core 地址。开发时默认指向 `http://localhost:1013`,可修改为远程地址。 **打包为安装程序**: ```bash cd desktop npm run dist ``` 产物在 `desktop/dist/` 目录,支持 nsis 安装包和 portable 便携版。 --- ### 3. 手机/平板/鸿蒙端(移动端体验) > **适合**:在安卓手机、鸿蒙平板上随时写代码、教学演示。 手机端使用 `uniapp/` 工程,通过 **HBuilderX** 开发和构建: **前置条件**: - 安装 [HBuilderX](https://www.dcloud.io/hbuilderx.html) - `editor-core` 已构建并部署到可访问的地址(本地 IP 或公网服务器) **使用步骤**: 1. 用 HBuilderX 打开 `uniapp/` 目录 2. 修改 `uniapp/pages/index/index.vue` 中的 `webviewUrl`,指向你的 editor-core 地址: ```js // 开发时指向局域网内电脑的 editor-core 地址 webviewUrl: 'http://192.168.x.x:1013' // 或部署后的公网地址 webviewUrl: 'https://your-domain.com' ``` 3. 在 HBuilderX 中选择 **运行 → 运行到手机或模拟器**(安卓)或 **运行 → 运行到鸿蒙** 4. 手机/平板上会打开 App,内嵌 WebView 加载编辑器 **构建安装包**:在 HBuilderX 中选择 **发行 → 原生 App-云打包**(或本地打包)。 > **原理**:uniapp 壳通过 `` 组件加载 editor-core 的 H5 页面,编辑器核心逻辑完全复用,壳只负责提供原生容器。 --- ### 4. 远程运维(winRun Runner) > **适合**:需要从编辑器远程管理 Windows 服务器上的文件、进程、终端的场景。 winRun 是一个**独立的 Electron 应用**,部署在目标 Windows 机器上,提供 HTTP API 供编辑器远程调用。 **在目标 Windows 机器上启动 winRun**: ```bash cd winRun npm install npm run dev ``` - 默认监听端口:`9712`(HTTP API 地址为 `http://<目标机器IP>:9712`) - 首次连接需要在 winRun UI 上**确认配对授权**,之后客户端携带 token 调用 API **在编辑器中连接 winRun**: 在 editor-core / desktop 编辑器中配置远程服务器地址(`http://<目标机器IP>:9712`),配对成功后即可使用以下能力: | 能力 | 说明 | |------|------| | 远程文件管理 | 浏览、读取、编辑、上传、下载远程文件 | | 受控进程管理 | 远程启动服务(如 `npm run dev`)、查看运行状态、停止进程 | | 远程终端 | 打开远程 PTY 终端,像 SSH 一样操作远程命令行 | | AI 工具化运维 | AI 可直接调用远程文件/进程/终端工具,执行运维任务 | **打包 winRun**: ```bash cd winRun npm run dist ``` --- ## 各端关系总结 ``` ┌─────────────────────────────────────────────────┐ │ editor-core(H5 编辑器核心) │ │ Vue3 + Vite + Monaco + WebContainer │ └────────┬──────────────┬──────────────┬───────────┘ │ │ │ ┌────▼────┐ ┌─────▼─────┐ ┌────▼────┐ │ desktop │ │ 浏览器 │ │ uniapp │ │Electron │ │ 直接访问 │ │ 手机/平板│ │ 桌面壳 │ │ H5 页面 │ │ 壳 │ └────┬────┘ └───────────┘ └─────────┘ │ │ 可选:连接远程 winRun │ ┌────▼─────────────────┐ │ winRun(远程 Windows)│ │ 文件/进程/终端 API │ └──────────────────────┘ ``` --- ## 特性 - **VSCode 风格 UI**:ActivityBar / Sidebar / Tabs / Panel / StatusBar - **代码编辑**:Monaco Editor(语法高亮、提示、折叠、快捷键等) - **终端**:xterm(以及桌面端/远程端的 PTY 能力) - **Git 集成**:基于 `isomorphic-git` 实现常用 Git 操作 - **Node.js 运行**:WebContainer(在受限环境中运行 `npm install` / `npm run dev`) - **远程运维(Windows)**:winRun 提供文件上传下载、进程 spawn/list/kill、远程终端等能力 - **大文件传输**:本地压缩 → 流式上传 → 远程解压,避免远程执行压缩命令失败 - **按行号编辑**:远程文件支持按行号区间替换,解决空格敏感文件替换失败问题 --- ## 快速开始(开发者) > 你可以只启动你关心的子项目。最小启动:只跑 `editor-core` 即可在浏览器中体验编辑器。 ### 环境要求 - **Node.js** >= 18 - **npm** >= 9(或 pnpm / yarn) - **HBuilderX**(仅手机/平板端需要) - **Windows**(winRun 仅支持 Windows) ### editor-core(前端核心) ```bash cd editor-core npm install npm run dev # 开发服务器(Vite) npm run build # 生产构建,产物自动拷贝到 hybrid/html/editor/ ``` ### desktop(桌面端) ```bash cd desktop npm install npm run dev # 启动 Electron 桌面窗口 npm run dist # 打包安装程序 ``` > 注意:需要先启动 editor-core 开发服务器,desktop 的 webview 才能加载编辑器页面。 ### winRun(远程运维 Runner) ```bash cd winRun npm install npm run dev # 启动远程运维服务(默认端口 9712) npm run dist # 打包安装程序 ``` ### uniapp(手机/平板端) 使用 HBuilderX 打开 `uniapp/` 目录,运行到设备或模拟器。 --- ## 远程运维 winRun 详细说明 winRun 提供一组 HTTP API(默认 `http://:9712`),用于: - **远程文件**:list / download / upload(支持 PUT 二进制流) - **受控进程**:spawn(长期运行)/ list / kill - **远程终端**:PTY 会话 open / write / readOutput / resize / kill ### 推荐工作流(大文件夹传输) 当需要上传大文件夹/多层目录时,避免在远程反复执行压缩命令: 1. **本地压缩**:使用 `fs_zip` 把目录打成 zip 2. **流式上传**:使用 `ops_remote_fs_uploadLocalStream` 上传 zip 3. **远程解压**:使用 `ops_remote_fs_unzip` 解压到目标目录 --- ## 项目结构(概览) ```text hongmengEditor/ editor-core/ # Vue3 + Vite 前端核心(H5 编辑器) desktop/ # Electron 桌面壳(Windows/Mac) winRun/ # Electron 远程 Runner(仅 Windows) uniapp/ # uni-app 手机/平板端工程 hybrid/ # 混合容器资源(editor-core 构建产物) ``` 更详细架构说明见: - `docs/ARCHITECTURE.md` - `docs/DEVELOPMENT.md` --- ## 安全说明(重要) 远程执行与文件写入属于高风险能力: - winRun 通过 **配对 + token** 控制访问 - 文件写入通常受 **白名单目录** 限制(避免任意写入系统目录) - 长期进程通过“受控进程列表”可见可停,避免后台失控 请阅读:`SECURITY.md` --- ## 贡献 欢迎贡献!建议先阅读: - `CONTRIBUTING.md` - `CODE_OF_CONDUCT.md` --- ## License 仓库计划以 **MIT License** 开源(请以根目录 `LICENSE` 文件为准;若暂未提供,可在发布前补齐)。