Files
nyaterm/docs-site/docs/guide/terminal.md
T
Kang b434a7f90c docs(changelog): update CHANGELOG for version 1.2.1
- Added new features including RDP session support, SSH Agent authentication, cloud sync enhancements, and terminal output improvements.
- Changed settings for better draft-state handling and layout consistency.
- Fixed issues related to cursor handling in RDP and command injection timeouts in SSH.
- Improved performance during large output bursts in the terminal.
- Updated documentation with new community engagement badges and detailed export/import functionalities for quick commands.
2026-08-11 16:08:10 +08:00

348 lines
13 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
---
sidebar_position: 3
---
# 终端功能
NyaTerm 的终端体验围绕“在同一个工作区里高频处理远程与本地会话”设计。它基于 xterm.js,但实际体验并不只是一块终端画布,还包括搜索、命令历史、建议、AI 辅助、可选增强项、录制和 SSH 辅助能力。
## 基础操作
### 搜索、复制与右键菜单
终端右键菜单可直接执行这些高频操作:
- 复制 / 粘贴
- 粘贴选中的文本
- 查找文本
- 在线搜索选中文本
- 按 provider 翻译选中文本
- 交给 AI Assistant 解释或分析
- 清屏 / 全部清除
- 全选
在 **设置 → 交互** 中,你还可以调整:
- **选中即复制**
- **右键粘贴**
- 单词分隔符
- 默认字符编码
### 回滚缓冲区、字体与缩放
- 回滚缓冲区默认保留 **10000 行** 输出
- 可自定义字体族、字号、普通字重、粗体字重、光标样式与闪烁
- 可通过菜单或快捷键放大、缩小、重置终端缩放;终端根节点会协调缩放,避免嵌套工作区重复处理
- **硬件加速**为可选项,默认并未开启;如果你希望对比渲染效果,可在 **设置 → 终端** 中手动切换
### 粘贴与输入兼容
- 终端可以按设置处理图片路径粘贴,适合把截图或本地图片路径快速带入命令行工具
- macOS 下如遇输入法组合文本、候选词或特殊按键行为异常,可在 **设置 → 交互** 中开启 IME 兼容选项
- 在 vim、less、top 等交互式程序中,NyaTerm 会抑制命令建议,避免历史建议覆盖程序自己的输入体验
## 命令历史与建议
NyaTerm 会为会话工作流提供两类辅助:
### 命令历史
- 自动记录终端输入过的命令
- 支持模糊检索
- 可从右侧的 **命令历史** 面板回看历史输入
- 搜索栏会保留近期查询,便于重复查找同一类日志或错误
### 终端查找
`Ctrl / Cmd + Shift + F` 会打开终端查找框。查找框支持:
- 上一个 / 下一个结果跳转
- 当前结果与总结果数提示
- 无结果、搜索中和正则错误反馈
- 重复使用近期查询,不必每次重新输入完整关键词
### 输入建议
输入时会基于历史命令给出建议,适合重复执行运维命令、构建命令或排障脚本。
如果你的历史里有很多超长命令、一次性脚本或噪音条目,可以在 **设置 → 交互** 中进一步控制:
- 是否启用命令建议
- 建议参与匹配的**最小历史命令长度**
- 建议参与匹配的**最大历史命令长度**
需要注意:
- 这两个长度过滤只影响**历史命令建议**
- 它们不会影响右侧命令历史面板中的已有记录
- 它们也不会影响**快捷命令**本身的可用性
## AI Assistant
NyaTerm 在右侧面板中内置了 **AI Assistant**,并且可以从终端上下文直接唤起。
### 常见用法
- **生成命令**:告诉它你想完成什么,由它生成命令卡片
- **解释最近输出**:针对当前会话最近的终端输出做说明,不必手动复制日志片段
- **解释选中内容**:对选中的日志、报错或片段做解释
- **分析错误**:把错误上下文交给 AI 生成修复建议
- **修复选中内容**:从选中报错推导下一步命令
### 命令卡片与风险控制
AI 返回的命令可以以结构化卡片形式展示,并带有风险等级。你可以根据 **设置 → AI** 中的配置决定:
- 哪些风险等级允许直接执行
- 是否开启风险检查
- 是否允许把生成命令保存为快捷命令
- 是否记录 AI 历史
### 终端内联输出
当 Agent 模式执行命令时,NyaTerm 可以捕获命令执行事件,并把摘要后的输出以内联形式展示在终端工作流附近,方便你连续跟进多步操作的结果。
这个行为由 **设置 → AI → Agent Settings** 中的 `Terminal Output Lines` 控制:
- `Terminal Output Lines` 表示每次 AI 执行命令后,在终端中额外展示多少行输出
- 设为 `0` 时,关闭终端内联输出展示
- 这个设置不会影响真实命令本身的执行,只影响 AI 工作流中的附加可视化反馈
### Provider 与模型
AI 能力支持:
- 内置 provider 配置
- 自定义 **OpenAI Compatible** provider
- 按模型启用 / 禁用
- 默认模型选择
- 上下文行数限制与超时控制
如果你准备在生产环境或受限网络下使用,建议先到 **设置 → AI** 完成 provider、模型和风险门槛配置。
更详细的 AI 助手功能说明见 [AI 助手](./ai-assistant)。
## 命令风险评估
NyaTerm 可以在你手动输入命令时进行实时风险评估。当检测到高风险命令模式(如 `chmod`、`chown`、`rm -rf` 等)时,会弹出风险提示,显示:
- 风险等级
- 命令说明
- 更安全的替代建议
你可以选择继续执行或使用替代命令。此功能需要在 **设置 → AI** 中开启 **命令风险检查**。
## 可选终端增强项
下面这些能力都需要你按需开启,而不是默认全部打开。
### 行号与时间戳 gutter
在 **设置 → 终端** 中可分别开启:
- **显示行号**
- **显示时间戳**
开启后,终端左侧会出现 gutter,用于辅助阅读长日志、命令输出或回放录制内容。
### 动作链接
动作链接默认关闭,开启后可识别并点击常见文本模式,包括:
- IPv4 地址,例如 `192.168.1.10`
- `host:port`,例如 `db.internal:5432`
- 压缩包文件名,例如 `backup.tar.gz`
注意:
- 需要先在 **设置 → 终端** 中开启 **动作链接**
- 打开链接时需要使用 **Ctrl / Cmd + 点击**,避免和普通选中操作冲突
- 三类 matcher 可以分别启用或关闭
### 关键词高亮
关键词高亮同样默认关闭。启用后,NyaTerm 会先应用内置规则,再叠加你的自定义规则。
内置规则覆盖的内容不只限于错误关键字,还包括:
- error / warn / success / info / debug 等常见状态词
- 日期时间
- 数字、大小、持续时间
- 地址、URL、UUID、版本号等结构化文本
- 提示符(`$` / `#`)
你也可以自定义规则:
- 自定义规则名称
- 分别设置深色 / 浅色主题颜色
- 每行填写一个匹配模式
- 可选择是否跨折行继续匹配
#### 导入自定义高亮规则
在 **设置 → 终端 → 自定义规则** 中点击 **导入**,可以从 JSON 文件导入自定义高亮规则。
导入会和现有规则合并,不会清空已有列表:
- 相同 `id` 的规则会被更新
- 不存在的 `id` 会追加为新规则
- `id` 为空时会自动生成
- `name` 为空或没有有效 `patterns` 的规则会被跳过
推荐的 JSON 结构如下,也兼容直接使用规则数组作为文件顶层:
```json
{
"keyword_highlights": [
{
"id": "deploy-errors",
"name": "Deploy Errors",
"patterns": ["deploy failed", "rollback required", "fatal"],
"color_dark": "#ff7b72",
"color_light": "#cf222e",
"enabled": true
}
]
}
```
### 大输出保护
当某个会话输出量过大时,NyaTerm 会临时进入保护模式,优先保证终端可交互性。
在这个阶段,应用会暂时抑制部分高开销装饰能力,并提示已经跳过的排队字符数;待输出压力回落后再恢复正常显示。这个机制主要用于日志洪峰或持续刷屏的场景。
### 大输出 drain
终端输出现在会先经过批量 drain,再交给 xterm.js 渲染。这样在 `tail -f`、编译日志、压测输出等高吞吐场景下,界面会更稳定地保留输入响应、滚动和搜索体验。
这不是一个需要手动开启的设置,而是终端输出管线的默认行为。它会和大输出保护、行号 / 时间戳 gutter、命令建议等功能配合工作。
## SSH 相关辅助能力
### Keep-Alive
对 SSH 会话,可以在 **设置 → 终端** 中配置 Keep-Alive 间隔:
- 默认值为 **60 秒**
- 设为 `0` 表示关闭
- 适合降低长时间空闲连接被远端回收的概率
### 远程主机监控面板
NyaTerm 为 SSH 会话提供了四类右侧监控面板:**资源监控**、**GPU 监控**、**进程管理**、**Docker 管理**。它们有一些共同点:
- 只在当前是 **SSH 会话** 时才有意义,并且只绑定到真正处于活动状态的 SSH 会话
- 各自由 **设置 → 终端** 中的开关控制是否显示;关闭对应开关会同时隐藏它的活动栏图标
- 轮询间隔可调,范围为 **3 秒到 120 秒**
- 面板会在连续轮询失败若干次后停止刷新,避免对不支持的主机反复请求
#### 资源监控
远程资源监控默认开启。要看到数据,需要同时满足:
1. 当前是一个 **SSH 会话**
2. 在 **设置 → 终端** 中开启 **显示远程资源信息**
启用后,右侧 **资源监控** 图标会显示,面板会按设定间隔轮询主机信息;默认轮询间隔为 **3 秒**,可手动调整。
面板会显示的内容包括:
- 主机名、系统、架构、运行时长
- Load Average
- CPU 使用率
- 内存使用情况
- 网络吞吐速率
#### GPU 监控
**GPU 监控** 面板用于查看远端主机上的 NVIDIA GPU 状态,默认关闭,可在 **设置 → 终端** 中开启 **显示 GPU 监控**(默认轮询间隔 3 秒)。
面板会显示:
- 驱动版本与 CUDA 版本
- 汇总信息:GPU 数量、最高使用率、显存占用、最高温度
- 每张 GPU 卡:编号、型号、性能状态(pstate)、使用率与显存占用条,展开后可看 UUID、温度、功耗、风扇转速、空闲显存;使用率超过 **70% / 90%** 时会有不同的颜色提示
- 可搜索的 GPU 进程列表(按 PID、GPU 编号、用户或进程名过滤),按显存占用排序
如果远端没有 NVIDIA GPU 或缺少 `nvidia-smi`,面板会给出对应的空状态提示。
#### 进程管理
**进程管理** 面板显示远端主机的实时进程列表,默认关闭,可在 **设置 → 终端** 中开启 **显示进程管理**(默认轮询间隔 5 秒)。
主要能力:
- 进程总数与搜索框(可按 PID、用户、状态、命令、完整命令行过滤)
- 自适应布局,根据面板宽度增减列;可按进程名、PID、CPU%、内存%、用户排序
- 展开某个进程可查看 PID/PPID、用户、状态、CPU%、内存%、RSS、运行时长与完整命令行,并支持调整 nice 值(`-20` 到 `19`)后 **应用**(renice)
- 行操作菜单可复制 PID / 命令,或发送 `TERM` / `HUP` / `STOP` / `CONT` 信号;`KILL` 会先弹出确认对话框并展示对应的 `kill` 命令
若远端主机不支持进程查询,面板会给出单独的提示。
#### Docker 管理
**Docker 管理** 面板用于管理远端主机上的 Docker,默认关闭,可在 **设置 → 终端** 中开启 **显示 Docker 管理**(默认轮询间隔 10 秒)。
主要能力:
- 概览:运行中 / 已停止容器数、镜像数,标题栏显示 Docker 引擎版本
- 全局搜索,以及容器、镜像、数据卷、网络、Compose(可用时)等标签页,标签过多时收进 **更多** 下拉
- **容器**:按状态排序的虚拟化列表,行菜单可查看日志(在终端里运行 `docker logs -f`)、进入容器(打开 shell)、启动 / 停止 / 重启 / 杀死(确认)/ 删除(确认);点击行可打开实时刷新的详情对话框
- **镜像 / 数据卷 / 网络**:按需加载,每行支持删除(确认)
- **Compose**:列出项目,展开后按需加载服务,支持项目级 up / restart / down 与服务级 logs / enter / up / stop / restart
- **更多** 菜单提供 `docker system prune`(危险操作,需确认)
日志与进入容器会发送到真实的终端会话中执行;删除、杀死、Compose down、prune 等破坏性操作都会通过确认对话框展示将要执行的具体命令。
## 翻译与在线搜索
在终端中选中文本后,你可以直接通过右键菜单:
- 使用自定义搜索引擎做在线搜索
- 使用已启用的翻译 provider 打开翻译对话框
### 搜索引擎
在 **设置 → 搜索** 中,你可以维护自定义搜索引擎列表,为它们设置:
- 名称
- URL 模板(使用 `%s` 占位)
- 图标
- 是否显示在搜索菜单中
### 翻译 provider
翻译 provider 的可见性取决于设置:
- **Google**、**Microsoft** 无需额外配置
- **DeepL / 百度 / 阿里 / 有道** 需要先在 **设置 → 翻译** 中填写凭据
## 录制与工作流配合
NyaTerm 支持会话录制,适合:
- 保留排障步骤
- 给同事复现问题
- 截取有时间顺序的终端示例
录制文件默认可保存到系统下载目录,也可以在 **设置 → 传输** 中为录制单独指定保存路径,便于把演示素材、排障日志和普通下载文件分开管理。
在 **设置 → 传输** 中,还可以进一步配置录制行为:
- **自动开始录制**:会话一打开就自动开始录制,避免对那些总是需要留档的会话忘记手动开启
- **包含时间戳**:在保存的录制文稿中写入时间戳,便于审计或把输出与实际时间对应起来
也可以在单个连接的表单中配置录制选项。适合把“生产堡垒机总是录制”“实验设备不录制”这类策略绑定到连接本身,而不是每次打开会话后手动切换。
如果你准备录制文档素材,通常可以把这些能力组合起来:
- 行号 / 时间戳 gutter
- 关键词高亮
- 动作链接
- 命令历史
- AI Assistant
- 资源监控
这样更容易拍出“终端在真实工作流中使用”的截图,而不是单独展示某个开关。