桌面软件 活跃维护

sidex

Sidenai/sidex

基于 Tauri 重建的 VS Code。相同架构,体积减少 96%。早期发布。

3059
Stars 标星
255
Forks 分支
25
Watchers 关注
53
Open Issues
TypeScript
主要语言
MIT
开源协议
22.2 MB
仓库大小
1 个月前
最后推送
一键安装扩展 / 插件指令
dsh plugin --profile web add github:Sidenai/sidex
git clone https://github.com/Sidenai/sidex.git
git clone git@github.com:Sidenai/sidex.git
README.md main

英文原文正文为项目原始 README(英文),本站后续会翻译为中文,当前仅剔除图片与无关章节并统一排版。

SideX

VSCode 的工作台,无需 Electron。



为什么 · 有效的部分 · AI 代理 · 入门 · 构建原理 · 贡献 · Discord


SideX 是 Visual Studio Code 的一个移植版本,它将 Electron 替换为 Tauri——一个基于 Rust 的后端和操作系统原生的 Web 视图。相同的 TypeScript 工作台、相同的编辑器、终端和 Git 集成,无需捆绑浏览器即可运行。

早期发布。 核心编辑和终端功能稳定。扩展主机和调试器仍在开发中。请参阅 有效功能 获取完整信息。


为什么

VSCode 的内存使用几乎完全来自其捆绑的 Chromium,而不是编辑器本身。Tauri 用你系统上已经有的 webview 替代它——macOS 上的 WKWebView,Windows 上的 WebView2——在应用之间共享,几乎不增加额外开销。

RAM 节省在 macOS 上测试最多,WKWebView 与 Safari 共享。在 Windows 上情况更为复杂——WebView2 的内存使用可能看起来更高,这取决于测量方式,这是 Tauri 生态系统中的一个活跃领域。目标是在 macOS 空闲时 低于 200 MB。应用程序足够稳定以使基准测试具有意义时,我们将发布实际基准数据。


有效的方法

实心:

  • Monaco 编辑器,带语法高亮和基本智能感知
  • 文件资源管理器 — 打开文件夹、创建、重命名、删除
  • 集成终端 — 通过 Rust 完整 PTY,自动检测 Shell,调整大小,信号处理
  • Git — 状态、差异、日志、暂存、提交、分支、推送/拉取/获取、存储、重置
  • 主题 — 多种内置主题,来自 VSCode 目录
  • 原生操作系统菜单(macOS、Windows、Linux)
  • 从 Open VSX 安装扩展
  • 文件监视、文件搜索、全文搜索、基于 Rust 的搜索索引
  • SQLite 存储、文档管理(自动保存、撤销/重做、编码)
  • 内置 AI 代理 — 聊天、内嵌差异显示、Shell 命令、多文件编辑;可自带模型提供商,无需账户(参见 AI 代理)

人工智能代理

SideX 内置了一个编码代理,它不需要任何类型的 SideX 帐户——无需登录、无需身份提供者、路径中无需托管服务。每个请求都从编辑器发送到运行在您自己机器上的服务器,然后直接发送到您指向的任何模型提供者。

如何启动

启动时,应用程序会生成自己的代理服务器(sidexai/sidex-server,用 Go 编写)作为绑定到随机空闲端口的 127.0.0.1 的子进程运行。它由 src-tauri/src/server.rs 进行监控,并在应用程序退出时停止。如果服务器二进制文件未构建,编辑器的其他部分仍然可以工作——聊天面板只会显示已断开连接。

自带模型

没有内置的模型预设。您需要在 设置 → 模型 中自己添加提供者和模型 ID。凭证的解析顺序如下,先匹配者优先(参见 src-tauri/src/commands/providers.rs):

  1. 在 设置 → 模型 中输入的密钥
  2. 你 shell 中已存在的环境变量 (ANTHROPIC_API_KEY, OPENAI_API_KEY 等——完整列表见 .env.example)
  3. 机器上已有的 Claude Code 或 Codex CLI 登录,按提供者选择加入
  4. loopback 上的无密钥本地模型服务器——Ollama、LM Studio、llama.cpp 或 vLLM——自动检测

Anthropic 通过其原生 Messages API (/v1/messages) 调用;所有其他提供者,包括本地服务器,都被视为 OpenAI 兼容 (/chat/completions)。

凭证只通过其进程环境 (SIDEX_PROVIDER_<PROVIDER>_KEY / _BASE_URL / _AUTH) 到达代理服务器,并在每次应用启动或重启时设置全新凭证。它们从不写入配置文件,也不会发送到 webview。

Claude Code / Codex CLI 登录 选项可选,按提供者设置,默认关闭。SideX 使用这些 CLI 的相同第一方客户端身份与 Anthropic 和 ChatGPT 通信,因此连接的登录可以运行模型。使用仍然计入该订阅。在设置 → 模型中使用付费 API Key 是不依赖 CLI 登录或提供商消费者条款的途径。

安全性:此服务器在您的机器上执行命令

代理服务器代表您执行 shell 命令和编辑文件——这就是它能作为代理的原因。仅绑定到 127.0.0.1 是一个有意的安全边界,而非意外:网络上的其他任何设备都无法访问它。

如果需要,SIDEX_BIND_ADDR 可以扩展访问,但服务器拒绝在非 loopback 地址上启动,除非您明确选择 SIDEX_ALLOW_UNAUTHENTICATED=1。除非您理解相关风险并在其前端设置了自己的身份验证,否则不要设置——此服务器的开放端口意味着可访问它的任何人都可以执行任意代码。

构建代理服务器

代理服务器需要 Go 1.26 或更高版本 来构建(参见 sidexai/sidex-server/go.mod):

cd sidexai/sidex-server
go build -tags fts5 -o sidex-server ./cmd/server

该应用在从源码检出运行时会自动在该路径查找二进制文件。没有该文件时,除了聊天面板之外,其他功能都能正常工作。如果你希望自己运行服务器而不是让应用管理它,请参阅 sidexai/sidex-server/.env.example。


入门

在开发环境中运行

git clone https://github.com/Sidenai/sidex.git
cd sidex
npm install
npm run tauri dev

从源码构建

npm install
npx tauri build

npx tauri build 会为你运行前端构建 (npm run build),它内部已经将 Vite 的 Node 堆内存限制提高到 12 GB —— 在普通机器上无需设置 NODE_OPTIONS。如果仍然遇到内存不足错误,可以在命令前自己进一步提高内存限制:NODE_OPTIONS="--max-old-space-size=16384" 。

第一次构建需要 5–10 分钟(Rust 编译时间)。预编译的二进制文件尚未分发。

以上所有内容都可以独立运行,无需账号和设置。想让聊天面板也连接吗?请参见上面的 AI Agent — 构建代理服务器是单独的、可选的步骤。


它是如何构建的

SideX 将 VSCode 的 Electron 架构逐层映射到 Tauri:

VSCode (Electron) SideX (Tauri)
Electron 主进程 Tauri Rust 后端
BrowserWindow WebviewWindow
ipcMain / ipcRenderer invoke() Tauri 事件
Node.js fs、pty 等 Rust 命令(std::fs、portable-pty)
菜单 / 对话框 / 剪贴板 Tauri 插件
渲染器 (DOM TypeScript) 相同 — 在本地 webview 中运行
扩展主机 Sidecar 进程(进行中)

TypeScript 前端是 VSCode 工作台的直接移植。Rust 后端位于 src-tauri/src/commands/,处理所有本应由 Node.js 本机模块完成的任务:文件 I/O、终端 PTY、Git、文件监控、搜索索引、SQLite 和进程管理。

项目布局

sidex/
├── src/                    # TypeScript workbench (ported from VSCode)
│   └── vs/
│       ├── base/           # Core utilities
│       ├── platform/       # Platform services and dependency injection
│       ├── editor/         # Monaco editor
│       └── workbench/      # IDE shell, panels, features, contributions
├── src-tauri/              # Rust backend
│   └── src/
│       ├── commands/       # fs, terminal, git, search, debug, providers, etc.
│       ├── server.rs       # Supervises the local agent server
│       ├── lib.rs          # App setup and command registration
│       └── main.rs         # Entry point
├── sidexai/sidex-server/   # Go agent server (chat, tools, MCP, memory)
├── crates/                 # Rust support crates — agent tools, context engine, git, LSP, DAP, terminal, extensions, and more
├── index.html
├── vite.config.ts
└── package.json

技术栈

层 技术
前端 TypeScript, Vite 6, Monaco 编辑器
终端界面 xterm.js WebGL 渲染器
语法 / 主题 vscode-textmate, vscode-oniguruma (WASM)
后端 Rust, Tauri 2
终端 portable-pty (Rust)
文件监控 notify crate (macOS 上的 FSEvents)
搜索 dashmap rayon regex (并行, Rust)
存储 通过 rusqlite 使用 SQLite
扩展 Open VSX 注册表
代理服务器 Go,在回环接口上独立进程 (sidexai/sidex-server)

如需深入了解,请参见 ARCHITECTURE.md


贡献

这是提前发布的,以便让外部贡献者参与。

如何贡献

  1. Fork 仓库并创建一个分支
  2. 选择一项任务 — 查看 Issues 或从上面的已知缺口列表中挑选
  3. 提交 PR — 贡献者会获得署名

开发者笔记

  • 遵循 VSCode 的模式 — 如果你读过 VSCode 源码会很熟悉
  • TypeScript 导入使用 .js 扩展名(ES 模块约定)
  • 服务使用 VSCode 的 @inject 依赖注入装饰器
  • 新的 Rust 命令放在 src-tauri/src/commands/ 下,并在 lib.rs 中注册

社区


许可证

MIT — SideX 是 Visual Studio Code (Code - OSS) 的一个移植版本,该版本也采用 MIT 许可证。详情请参见 LICENSE。

本站来源与版权声明
  • 本文标题:sidex - 基于 Tauri 重建的 VS Code
  • 本文链接:https://www.cn121.com/desktop/sidenai-sidex.html
  • 原项目:Sidenai/sidex 版权归原作者 Sidenai 及贡献者所有
  • 收录信息:本站于 2026-10-07 收录本项目,本页所列协议与仓库指标均为收录当时的状态;该日期之后原项目的版本更新与协议变更,本页不作同步。
  • 开源协议:收录时本项目采用 MIT(查看 LICENSE 原文),本站转载其原始文档(未改动文字,仅剔除图片与无关章节);使用、修改、分发请以该仓库 LICENSE 原文为准。
  • 站点出处:本文首发于 OneTwoOne,收录自 GitHub 开源项目 Sidenai/sidex。
  • 内容说明:本页正文为原项目 README 原文(英文),本站后续会翻译为中文(当前尚未译出,仅将二级标题译为中文,便于按栏目定位;标题原文可在下方原仓库中查看),仅剔除了图片与赞助等无关章节、并把相对链接改为绝对地址;页首简介为机器翻译自仓库描述。
  • 引用声明:商业转载、第三方聚合或 AI 检索训练引用时,请务必保留以上来源出处、本文永久链接,以及原项目的版权声明与许可信息。
  • 下架通道:若原项目此后变更或收紧了许可协议、或作者/权利人认为本站的收录方式(译文、排版适配、简介翻译等)超出其授权范围,请通过 xyd3302001@163.com 发送下架通知,并附上项目地址与本页链接。本站核实后将第一时间删除本页内容,或改为不复制原文的目录性收录;署名更正等其他要求可一并提出。