Skip to content

远程 SSH 模式 ​

选中一个「远程 SSH」容器后,AiCode 进入远程工作区模式:AI 的读写文件、执行命令、运行终端均发生在远程服务器上,~/workspace 映射到服务器上的指定目录,手机仅作为操作界面。

适用于服务器上已有完整工具链,或需要 AI 直接修改远程项目的场景。

前置:先建一个 SFTP 通道 ​

远程 SSH 复用「连接与同步」页中 SFTP 通道的连接信息(主机、端口、用户名、密码),需先在该页建好一个 SFTP 连接,见工作区同步。

FTP 通道不支持执行命令,不会出现在可选列表中。

新建远程 SSH 容器 ​

在「设置 → 容器与镜像」点击右上角 +,选「远程 SSH」:

  • 名称:配置的别名。
  • SSH 连接通道:下拉选择一个已配置的 SFTP 通道。无可用通道时,界面提示先前往「连接与同步」页配置,且保存按钮不可用。
  • 远程工作区路径:服务器上的目录,AI 的 ~/workspace 映射到此。选中通道时会自动填入默认值 ~/.aicode/workspaces(按服务器上该用户的真实 home 解析,如 root 用户为 /root/.aicode/workspaces),可修改。

保存后在列表中选中即生效。

认证方式沿用所选 SFTP 通道的配置,支持密码认证与SSH 私钥认证(含带密码保护的私钥)。

连接行为 ​

  • 自动连接:App 启动时若当前为远程模式,会在后台自动连接;连接失败不会阻塞界面,首次执行命令时会重试。
  • 保活与自动重连:连接后每 30 秒发送一次心跳,防止空闲断连;断线后由后台自动重连(5 秒起、最长 30 秒的退避间隔),App 回到前台时也会立即重试一次。
  • 状态显示:对话页顶部显示「SSH:已连接 / 连接中 / 连接失败 / 未连接」。未连接时消息区显示等待提示。
  • 两条独立连接:文件读写走 SFTP,终端与命令走 exec,各占一条 SSH 连接、互不影响;文件通道异常时自动重建,不中断正在运行的命令。
  • 路径自举:远程工作区路径不存在时自动创建;若该目录下无任何子目录,会自动创建一个名为 default 的工作区,保证 AI 始终有可用的 ~/workspace。

本地数据与跟随执行环境的数据 ​

远程模式下命令、文件、终端与工作区均在服务器上。大多数配置仍存于手机本地;少数「执行环境资源」则跟随环境、以远端为准:

项目说明
聊天历史、模型与供应商配置、API Key、应用设置全部本地
记忆(memory)本地。项目级记忆按「项目名 + 服务器标识」隔离,不同服务器上的同名工作区不会混淆
全局技能、子代理与面板脚本跟随执行环境:远程模式下读写服务器上的 ~/.aicode/skills/、~/.aicode/agents/、~/.aicode/scripts/,与本地模式的那份互相独立
项目级技能与子代理直接读写服务器工作区中的 <工作区>/.aicode/skills/、agents/,可随代码库提交到 git
项目级配置(工具授权规则 / MCP / 技能与子代理的停用名单)手机本地。远程模式按「项目名 + 服务器标识」隔离在 App 私有目录下,不写入服务器
MCP 服务器HTTP 类型由 App 直接连接;stdio 类型运行在「默认容器」上(见下),不在远程服务器
日志与工具输出本地

连接成功后,AiCode 会将内置文档同步到服务器的 ~/.aicode/docs/,远程模式下 AI 也可查阅这些说明文档。

默认容器 ​

远程模式下仍有部分功能需在本地运行,例如 stdio 类型的 MCP server。它们运行在默认容器上,默认为内置 Alpine,可在容器列表下方的「默认容器」分组中改为任意本地容器。

切换容器(包括切到远程 SSH)后,所有 stdio MCP 会自动断开并用新容器重连;HTTP MCP 不依赖容器,不受影响。

Git 署名与凭据的去向 ​

Git 页面中保存的署名会写入当前执行环境——远程模式下即写入服务器的 git 配置。

凭据以手机本地的凭据文件为唯一来源。远程模式下可在凭据页开启「自动注入凭证」(按服务器分别记忆,首次进入时询问),将凭据同步到服务器,且仅对工作区目录下的仓库生效,不影响服务器上其它目录的仓库,也不改动服务器用户的全局 git 配置。

基于 GPL-3.0 协议开源