---
title: 工作区与设备
description: 工作区是侧栏的作用域，它属于某一台设备——本机，或者你用 SSH 能连上的机器。Termio 会在那台机器上装好会话宿主，会话是否附着都照跑不误。
x-i18n:
  source_path: machines.mdx
  source_hash: 15dc0d327b0b7d6fce84dd959dce8b5b644f01f5def72c62e055d92cb7deef6b
  generated_at: 2026-08-27
---

Termio 把 Agent 跑在你自己的机器上：本机、同一张桌子上的 Mac mini、你自己付钱的
VPS。没有 Termio 云可供开通，也没有账号要登录——只要 `ssh` 连得上，就是一台设备。

应用里的一切都归到同一套层级下：

```
设备          你能连上的机器，本机也算
  └ 工作区      侧栏里一个具名的作用域
      └ 项目       那台设备上的一份检出
          └ 会话      一个真实的终端
```

每一层都只属于上面的某一个。设备这个问题因此只在最顶上回答一次，而不必对每个项目、
每个窗格再问一遍。

## 工作区

工作区是侧栏里一个具名的作用域。它装着项目和零散的终端；切到它，侧栏列出的内容就跟着
换——归在它下面的项目、worktree 和会话，别的都不列。

用 `⌘1` 到 `⌘9` 切换，也可以点侧栏工具栏里的切换器，或者走 `文件 ▸ 工作区`。数字是按位置
算的：它跟着列表顺序走，切换器会把数字画在名字旁边，你读它就行，不用记。

工作区会记住你离开时停在哪个会话上，连同它的窗格、编组和检查器标签页。回到一个作用域，
回来的是你自己的现场，而不是排序最靠前的那一条。

**设置 ▸ 工作区**列出每个工作区、它所在的设备，以及里面有多少会话。重命名和移除就在它
们作用的那个工作区旁边。移除会关掉它的会话；磁盘上的文件夹不动。

<Callout type="note" title="一个工作区，一台设备">
  工作区不能跨两台设备。一份检出本来就只存在于某一台机器上，跨设备的工作区无非是把互相
  矛盾的叶子节点在视觉上摞在一起。既要动本机的仓库、又要动 VPS 上的仓库，那就是两个工
  作区。
</Callout>

## 添加设备

本机也是一台设备，只不过它是你本来就有的那一台。在你添加第二台之前，这一层不会碍事——
`新建终端`和`打开项目…`就是普通的动词，因为它们只可能指一个地方。

Termio 读 `~/.ssh/config`，绝不背着你改写它。你本来 `ssh` 得上的机器，Termio 就连得上：

- **文件 ▸ 连接到…** 列出配置里 Termio 还没用过的别名。连上去会在那边开一个终端。
- **添加主机…** 为还不在配置里的机器追加一段 `Host`。先填地址；名字就是你之后 `ssh`
  时要敲的那个词。密钥是到哪儿都好使的凭据，包括跑在那台机器上的会话。密码存进你的钥
  匙串，绝不写进 `ssh` 配置，只在 `ssh` 主动要的时候才读。

## 设置一台设备

打开**设置 ▸ 设备**，选中那台机器，按**设置**。Termio 会通过 SSH 把一个二进制
——会话宿主 `termiod`——复制到 `~/.local/bin`。不需要 root，不需要包管理器，也不用往
shell 配置里加东西。接着它会找那台机器上装了哪些 Agent CLI，给每一个写入 Termio 的
hooks、配置块和 Agent 技能，于是 VPS 上的 Agent 也能像本机的一样汇报**工作中**、
**需要你**和**完成**。

同一个按钮也是更新。它从任何状态出发都能用——什么都没装、装的是旧版本、装了新的但
运行中的 daemon 还没接管——而且新的那个要是答不上话，它会把旧的放回去。设备页面上会
写着它当前跑的版本。

如果更新会打断正在进行的工作，它会说出来并点名是哪个会话，旁边给一个**仍然更新**。你
自己闲着的终端从不挡更新；正在跑的命令或者干到一半的 Agent 才挡。

在**Termio 安装的内容**里，daemon、hooks 和技能各有自己的**重新安装**。重装只替换
Termio 放上去的那份 hooks，你自己写的原样保留。

<Callout type="note" title="Termio 不做什么">
  Termio 从不开通机器，不跑控制面，也不中转你的流量。它调用系统的 `ssh`，唯一的权威是
  你的 `~/.ssh/config` 和你的钥匙串。你的代码留在你自己掌握的硬件上——把 shell 交给
  一个 Agent、还要动私有仓库，这是唯一站得住的信任故事。
</Callout>

## 会话跑在设备上

每个会话都跑在拥有它的那台机器的 `termiod` 里——本机上的会话也一样，它们跑在本地的
daemon 中。应用只是一个负责附着和分离的查看器。

所以关掉窗口，一切照跑；所以远程会话并不绑在开启它的那条 SSH 连接上：链路断了只是把你
分离，不会杀掉 Agent。重新附着，屏幕就回来了。

只有**关闭会话**（`⌘W`）才是有意结束一个会话。`⌘Q` 在还有东西在跑时会先问一句。

## 哪些能力跨得过去

设备设置好之后，读项目的那些面板，读的就是项目所在那台机器上的内容：

- **文件**——浏览检出、打开文件，并把它存回读它出来的那台机器。
- **搜索**——在那台机器上搜检出，跟着它的 `cd` 走，打开搜到的东西。
- **更改、对比、历史**——Git 面板读那台机器的仓库，并且在那边和在这边一样是只读的。
- **Agent**——同一套清单、hooks 和技能，装到那台机器上。**设置 ▸ Agent** 带一个设备
  作用域，正是因为一个 Agent 的 CLI 装在哪儿，是关于某一台机器的事实。
- **粘贴图片**给跑在那台机器上的 Agent，Termio 会把文件送过去。

侧栏还有一个**其他运行中**：那是机器自己声明它正在跑什么，包括不是 Termio 起的会话——
你 `ssh` 上去开的，`termiod` 看得见，你也能在这儿打开它。

<Cards>
  <Card href="/zh-CN/docs/sidebar" title="侧栏">
    工作区、项目，以及每个会话汇报的状态。
  </Card>
  <Card href="/zh-CN/docs/session-control" title="会话控制与 CLI">
    让状态诚实的那套 hooks，本机和每台设备都一样。
  </Card>
  <Card href="/zh-CN/docs/iphone" title="iPhone 伴侣应用">
    把手机和一台设备配对，随时随地看它的会话。
  </Card>
</Cards>
