Camel TUI
Camel TUI
自 Camel 4.21 起可用
Camel TUI 是一个终端仪表盘,用于开发、原型验证和理解 Camel 集成。它拥有 40 多个分布在各个标签页中的界面,让你的整个集成一览无余——你可以浏览项目源代码并查看内联文档、查看路由拓扑、观察消息流经各个处理器的过程、像拖动视频进度条那样逐步查看 Exchange、检查 Kafka 主题、针对 DataSource 运行 SQL 查询、审计 CVE 漏洞,并了解 Camel 到底对你的路由做了什么。不再有黑盒。

快速开始
你可以通过两种方式开始使用 TUI:使用你自己的路由,或运行内置示例之一。
选项一:你自己的路由
在一个终端中启动 Camel 集成:
camel run my-route.yaml在另一个终端中打开 TUI:
camel tuiTUI 会自动发现你机器上正在运行的每一个 Camel 集成——无需任何配置。
选项 2:内置示例
还没有路由?TUI 自带一套可直接运行的示例目录。打开 TUI 并按下 F2,然后选择 运行示例:
camel tui- 按 F2 打开操作菜单
- 选择 Run an example…(运行示例……)
- 浏览示例目录——输入名称即可筛选
- 按 Enter 启动所选示例
在启动之前,运行选项表单会让你选择运行时:Camel Main(独立运行)、Spring Boot、Quarkus 或 JBang。这样无需改动一行代码,就能在全部三种运行时上轻松尝试任何示例。前三种运行时会在一个独立的 JVM 中运行示例,该 JVM 只包含示例本身的依赖(类似于生产环境部署);而 JBang 则在 Camel CLI 的 JVM 进程内运行(in-process),启动更快,但类路径中也会包含 CLI。你还可以设置集成名称、切换开发模式以及添加额外依赖。
示例会在后台开始运行。它一出现,TUI 就会自动选中它。之后你就可以浏览各个标签页、观察消息流动、查看路由图并进行各种尝试。
如果某个示例需要基础设施(如 Kafka 或数据库),TUI 会在启动示例之前自动启动所需的 Docker 容器。页脚中的通知会显示进度。
同样的运行时选择器也出现在 Run from folder…(从文件夹运行……)(F2 菜单)中,它可以让 TUI 指向包含你路由的本地目录。当目录中存在 pom.xml 时,运行时会被自动检测并锁定,以匹配你的项目。
| 在任意界面按 F1 或 ? 可获得上下文相关的帮助。键盘快捷键始终显示在页脚栏中。 |
|---|
选项 3:打开项目目录
你可以让 TUI 直接指向一个项目目录:
camel tui .
camel tui /path/to/my-projectTUI 会在 Source 标签页中打开该目录,让你可以立即浏览项目文件。当存在 pom.xml 时,运行时会被自动检测(Spring Boot、Quarkus 或 Camel Main)。按 F10 运行项目——Maven 项目通过 camel run pom.xml 运行,它会使用相应的 goal(spring-boot:run、quarkus:dev 或 camel:run)启动项目,而普通目录则通过 camel run 运行。无论哪种方式,应用程序都会将日志输出到 ~/.camel,因此 Log 标签页中可以看到它的日志。
这是一种快速探索并运行任何 Camel 项目的方式,无需事先单独启动它。
连接现有的 Spring Boot 和 Quarkus 应用程序
TUI 会自动发现由 camel run 启动的集成。要监控和控制现有的 Spring Boot 或 Quarkus 应用程序,请在项目中添加 camel-cli-connector 依赖。这是一个轻量级的运行时适配器,让 TUI(以及 Camel CLI)能够与你的应用程序通信——无论使用哪种运行时,TUI 的所有功能都以相同的方式工作。
Spring Boot:
<dependency>
<groupId>org.apache.camel.springboot</groupId>
<artifactId>camel-cli-connector-starter</artifactId>
</dependency>Quarkus:
<dependency>
<groupId>org.apache.camel.quarkus</groupId>
<artifactId>camel-quarkus-cli-connector</artifactId>
</dependency>添加完成后,正常启动应用即可,TUI 会自动发现它。无需额外配置——连接器会在 classpath 上自动检测,并将应用注册到本地 Camel CLI。
通过 F2 > Open Project 打开 Spring Boot、Quarkus 或 Camel Main 项目并使用 F10 运行时,如果 pom.xml 中尚无 CLI 连接器依赖,系统会自动注入该依赖。这意味着 TUI 无需修改你的项目即可监控应用。 |
|---|
更多详情请参阅集成管理。
标签页概览
TUI 将信息组织在各个标签页中。按数字键 1 至 0 可直接跳转到任意标签页,也可以使用 Tab / Shift+Tab 循环切换。
| 按键 | 标签页 | 显示内容 |
|---|---|---|
| 1 | 概览 | 所有运行中的集成与基础设施服务。建议从此开始。 |
| 2 | 源码 | 项目代码的文件浏览器,支持语法高亮与内联 Camel 文档。 |
| 3 | 日志 | 实时应用日志,支持搜索与过滤。 |
| 4 | 活动 | 实时的交换活动,包括耗时、端点发送与失败跟踪。 |
| 5 | 图表 | 可视化的路由拓扑,可下钻查看各个路由。 |
| 6 | 路由 | 路由列表,包含消息计数、吞吐量与处理时间。 |
| 7 | 端点 | 所有已注册的端点及其使用统计。 |
| 8 | 检查 | 消息历史与追踪——可按处理器逐步查看交换过程。 |
| 9 | 错误 | 失败信息,包含堆栈跟踪与交换上下文。 |
| 0 | 更多 | 30 多个按类别组织的额外标签页(见下文)。 |
更多菜单(按键 0)会打开一个弹出窗口,其中的标签页按分组排列:
- 路由 — 浏览端点、消费者、HTTP、在途消息、生产者、路由控制器
- 可观测性 — 熔断器、健康检查、JFR、指标、网络服务、Exchange 事件、恢复任务、OpenTelemetry Span
- AI — Ollama(检测到 Ollama 服务器时显示)
- 数据 — JDBC DataSource、Kafka、SQL 查询、SQL 追踪
- JVM — 类路径、堆内存直方图、内存使用、内存泄漏、进程、启动、线程
- 项目 — Bean、目录、配置、CVE 审计、Maven 依赖、类型转换器、数据类型转换器
各标签页会根据集成所使用的内容动态显示。例如,使用 Kafka 组件时会显示 Kafka 标签页,存在 DataSource 时会显示 SQL 标签页,使用 resilience4j 时会显示熔断器标签页,启用 OpenTelemetry 时会显示 Span 标签页,而 camel-jfr 在类路径上时会显示 JFR 标签页。TUI 会自适应,只显示与你的集成相关的内容。
标签页徽标会显示实时计数 —— 出现错误时,Errors 标签页会显示红色徽标,Routes 则显示路由数量。
任何标签页之上都可以再打开两个面板:按 F6 可打开内嵌 Shell 以运行 camel 命令,按 F8 可打开 AI 提示,用于就正在运行的集成提问。
源代码浏览器
Source 标签页(第 2 个标签页)为你的项目代码提供了一个文件浏览器。左侧面板显示集成源码目录的可导航文件树。选中任意文件即可在右侧面板中查看,并带有完整的语法高亮。
对于 Camel 源文件(YAML、XML、Java 路由以及 application.properties),按 i 可切换内联文档。TUI 会使用 Camel 目录(catalog)查找路由中使用的每个组件、EIP、语言和数据格式,并在源代码旁边显示它们的文档。对于属性文件,它会解析 camel.component.* 和 camel.main.* 键并给出其在目录中的说明。这样无需离开终端即可轻松理解不熟悉的路由。
其他功能:
- 格式循环 — 按 Space 可在 YAML、Java 和 XML DSL 格式之间转换 Camel 路由
- 搜索 — 按 / 在源代码中搜索,按 n/N 在匹配项之间跳转
- 高亮 — 按 h 高亮显示文本出现位置
- 跳转到节点 — 按 Ctrl+G 打开模糊搜索弹窗,显示与图表面板格式一致的路由树结构(
route[id]、├─to[uri]等)。选中节点即可跳转到其源代码行。 - 可调整大小的面板 — 用鼠标拖动分隔边框即可调整文件列表和查看器的大小
源代码编辑器
按 F4 进入编辑模式,即可编辑 YAML 路由、application.properties 以及其他本地文件。编辑器提供纯文本编辑体验,并包含为编写 Camel 路由而设计的功能:
撤销 / 重做 —— Ctrl+Z 撤销,Ctrl+Y 重做
块操作 —— Alt+上/下 上下移动 YAML 列表块,Ctrl+D 复制块
删除行 —— Ctrl+K 删除当前行
单词跳转 —— Ctrl+左/右 按单词跳转
智能 Home —— Home 键在内容缩进与第 0 列之间切换
Tab 补全 —— 按 Tab 进行上下文感知补全:
- 在
application.properties中:Camel 配置项(camel.main.*、camel.component.*等)以及 Spring Boot 自动配置属性(server.*、spring.*、management.*等),这些内容从本地 Maven 仓库中的 starter JAR 解析而来 —— 即使项目已停止也能使用 - 在 YAML DSL 路由中:EIP 名称、组件 URI、选项键与选项值
- 在
编辑器会显示装订区变更标记 —— 自文件打开以来被修改或新增的行,其行号会带有绿色背景。这样可以一眼看出你改动了哪些内容。
按 F7 打开差异视图,以统一差异(unified diff)格式显示所有未保存的更改,并带有红色/绿色背景着色(类似 git diff)。行号与源文件中的实际位置对应。按 Esc 或 F7 返回编辑。
按 F5 保存并关闭,或按 Shift+F5 保存后继续编辑。
保存时校验
保存时,编辑器会在写入磁盘之前校验内容。如果校验失败,文件将不会被保存,并会以弹窗形式显示错误。这样可以尽早发现问题:
- YAML 架构校验 —— 根据 Camel 架构检查 YAML DSL 结构
- 端点 URI 校验 —— 依据 Camel 目录校验组件 URI、选项名称与选项值
- Simple 表达式校验 —— 校验 Simple 语言表达式是否存在语法错误,并从父级 EIP 识别正确的上下文(谓词与表达式)
可以在设置中关闭校验(F2 > Settings)。
活动
Activity(活动)标签页展示交换(exchange)活动的实时动态 —— 流经系统的每一次交换都会被捕获,包含其所属路由、状态(OK 或 Failed)、耗时、端点发送情况以及完成于多久之前。
活动数据在集成以开发模式(dev profile)运行时被捕获,这也是使用 camel run 运行时的默认模式。也可以在 application.properties 中通过 camel.trace.activityEnabled=true 显式启用活动跟踪。在既未开启开发模式也未显式启用的生产 profile 下,该标签页为空。
顶部面板显示汇总统计信息:交换总数 / 成功 / 失败计数、发送总数、p50 / p95 / 最大耗时,以及可见条目所覆盖的时间窗口。
选择一条交换记录即可在下方查看其详情:交换 ID、路由、耗时、该交换过程中调用的远程端点及其各自的耗时,以及交换失败时的异常详情。
按 s 可循环切换排序方式,按 S 可反转排序方向,按 F5 可清空活动列表。
路由拓扑图
Diagram 标签页以交互式 ASCII 图的形式渲染路由拓扑,展示各路由如何通过共享端点(direct、seda、kafka 等)相互连接。

拓扑视图
拓扑视图将所有路由显示为方框,并用箭头连接:
- 触发路由(timer、cron 等)位于顶部
- 下游路由位于下方,通过有向箭头相连
- 路由方框显示路由 ID、
from端点,启用时还会显示相关指标
使用方向键在各路由方框之间移动。选中某条路由后,左侧会显示一个信息面板,其中包含状态、运行时长、吞吐量、交换计数和处理时间。
深入路由内部
在选中的路由上按 Enter,即可深入查看其内部 EIP 结构。每个处理器和 EIP 节点都会显示其类型(按类别着色)、端点 URI 以及按节点统计的各项指标。
连接到其他路由的节点会显示 Enter 提示 —— 按 Enter 可直接跳转到关联的路由。导航历史以面包屑栈的形式记录:按 Esc 返回上一条路由,并可逐级返回到拓扑视图。
在任意层级按 t 均可直接跳回拓扑视图。
外部端点
按 e 可在外部端点的三种显示模式间循环切换:
- off —— 仅显示路由之间的连接
- edges —— 将外部系统(Kafka broker、HTTP 端点、数据库)显示为虚线方框
- all —— 共享同一外部端点的路由通过一个中间方框相连
指标与源代码
- 按 m 可切换指标叠加层的显示(每个节点上的消息计数)
- 按 c 可查看选中路由的源代码,并带有语法高亮
- 按 n 可切换描述标签的显示
消息洞察
检视(Inspect)标签页可让你逐个处理器地单步查看交换过程——就像拖动播放头浏览消息旅程的视频时间轴。这是理解 Camel 在每一步如何处理你的数据的关键。

最近一次交换的历史记录
打开检视标签页时,它会显示最近一次已完成的交换。顶部面板列出每个处理步骤,包含:
- 步骤编号与方向(-→ 或 ←-)
- 处理器所在的路由与节点 ID
- BHPV 变化指示——当该步骤中 Body(消息体)、Headers(消息头)、Properties(属性)或 Variables(变量)发生变化时,对应字母会以黄色高亮
- 每个步骤的耗时
用方向键选择某个步骤,下方的详情面板会显示该时刻的完整交换状态:消息体内容、消息头、属性和变量。
控制显示内容
切换详情视图中的各个部分:
- b —— 显示/隐藏消息体
- h —— 显示/隐藏消息头
- p —— 显示/隐藏交换属性
- v —— 显示/隐藏交换变量
- w —— 切换自动换行
- n —— 切换描述/处理器标签
瀑布视图
按 g 切换到瀑布视图——一张水平条形图,展示每个处理器所花费的时间。这样很容易发现瓶颈:长条会立刻凸显出来。选中的步骤以 >> 高亮,处理耗时按从绿色(快)到红色(慢)进行颜色编码。
在拓扑图上回放
按 d 可将消息路径叠加到路由拓扑图上。时间轴回放正是在这里变得生动起来:
- 图中会高亮显示每一步处理消息的路由和处理器
- 使用 上/下 方向键沿路径前后单步移动
- 左侧的信息面板显示当前步骤的交换状态(消息体、消息头、属性、变量)——与上一步相比发生变化的值以黄色高亮
- 逐步走完整个交换,观察消息载荷如何在处理器、过滤器和基于内容的路由器之间流转并不断变换
- 在路由节点上按 Enter,可在回放的同时下钻查看其内部的 EIP 结构
- 按 Esc 返回上一层,按 t 回到拓扑视图
- 按 i 循环切换信息面板的尺寸(窄 / 宽 / 全屏)
这对于理解复杂的多路由流程尤其有用——在这类流程中,消息会在路由之间通过 direct、seda 或 kafka 端点进行传递。
实时追踪
当你在启用追踪的情况下运行集成时:
camel run my-route.yaml --trace「检查」标签页新增了一个实时跟踪面板,用于展示流经系统的每一个 Exchange。每个 Exchange 都会列出其时间戳、起始路由、状态(处理中/已完成/失败)、耗时和步骤数。按 Enter 可深入查看某个 Exchange 的全部处理器步骤——同样的逐步视图和图表回放在这里同样适用。
使用 s 可循环切换排序方式(时间、路由、耗时、Exchange),按 S 可反向排序。按 F5 可清除已捕获的跟踪记录。
错误排查
「错误」标签页会收集所有失败信息,包括完整的堆栈跟踪和 Exchange 上下文。发生错误时,该标签页上会出现一个红色徽标。
若要进行更深入的排查,请切换到「检查」标签页,并使用图表回放(按 d)来直观地看到故障发生的具体位置:
- 失败的步骤会在图表中以红色高亮显示
- 逐步查看失败的 Exchange,可了解导致故障之前每个处理器处的消息状态
- 「信息」面板会显示异常消息以及抛出该异常的节点
- 对比失败步骤前后的消息体和消息头,有助于理解是什么触发了该错误
这种错误详情与可视化图表回放的结合,让你无需离开终端即可全面了解出错的原因和具体情况。
OpenTelemetry Span
「Span」标签页(位于「更多」下,快捷键 o)用于可视化从你运行的集成中收集的 OpenTelemetry 跟踪数据。它会展示每个 Span 的跟踪 ID、Span 名称、类型、状态、持续时间以及 Camel 特有的上下文(路由 ID、处理器 ID)。
启用 OpenTelemetry 来运行你的集成:
camel run my-route.yaml --dep=camel:opentelemetry特性:
- 瀑布视图 — 跨度(span)以时间线形式展示,呈现父子关系与耗时条,并用颜色从绿色(快)到红色(慢)标识
- 追踪分组 — 按追踪 ID(trace ID)对跨度分组,便于你追踪一次请求在多个路由与组件之间的完整流转
- 仅 Camel 过滤 — 可切换为仅显示源自 Camel 的跨度,隐藏框架与类库产生的跨度
- 排序与搜索 — 可按追踪 ID、路由、状态、耗时或跨度数量排序;支持文本搜索过滤
- 错误高亮 — 失败的跨度(状态为 ERROR)以红色高亮显示
这在理解多路由集成中的延迟,以及将 Camel 的处理过程与外部服务调用(HTTP、数据库、消息中间件)进行关联时尤为有用。
Ollama
Ollama 标签页(位于 More 下的 AI 分组中)展示本地 Ollama 所提供模型的运行表现,风格类似一个 LLM 仪表盘。无论是否有集成在运行它都能工作:它会查找位于 localhost:11434 的 Ollama、位于 camel infra run ollama 所在地址的 Ollama,或是 AI 面板(F8)正在使用的端点。仅当有 Ollama 服务器响应时该标签页才会显示;TUI 每十秒检查一次,因此它会在 ollama serve 启动后不久出现。
- 模型 — 已加载的模型及其家族、参数量、量化方式、层数、专家数(对于混合专家模型,还有每个 token 激活的专家数量)、其中有多少驻留在 GPU 显存中、分配的上下下文长度,以及 Ollama 何时会将其卸载。如果没有加载任何模型,则改为列出已安装的模型。
- 吞吐量 — 每秒解码与预填充的 token 数,模型生成时为实时数据,否则取自上一次请求;首 token 时间与加载耗时(加载耗时一秒或以上即为冷启动);会话平均值与解码速率的迷你趋势图。
- 上下文 — 上下文窗口的填充程度、提示词中由 Ollama 缓存命中的比例、模型是在工作还是空闲、所采用的投机解码方式,以及每一轮 AI 面板提示词填充窗口比例的趋势,同时显示会话峰值与观测到的上下文压缩次数。
- 主机 — GPU 利用率与显存(Apple 芯片通过
ioreg获取,NVIDIA 通过nvidia-smi获取),以及 Ollama 服务器与其模型运行器的 CPU 与内存占用。 - 请求 — AI 面板中提出的每个问题占一行(包含工具调用的问题每一步会消耗一次请求;Enter 可展开各步骤),包含问题文本、提示词与生成的 token 数、缓存命中、达到的上下文窗口比例、预填充与解码的每秒 token 数、首 token 时间、你的等待时长以及停止原因。由 Camel 路由发起的调用会作为单独的行列出。
日志中会出现两类请求。在 AI 面板中提出、以 Ollama 为提供方的提问,会附带 Ollama 为每个请求上报的耗时(提示词评估、生成、模型加载、总计)。Camel 路由通过 camel-langchain4j-chat、camel-openai 或 camel-spring-ai-chat 发出的调用,则会在集成以 GenAI 可观测性方式运行时(--observe,或 --dep=camel:ai-observability)出现,并带有路由 ID 标记;Camel 会记录这些调用的令牌数和耗时,但不区分阶段。
实时数据、上下文面板和主机面板都依赖运行在同一台机器上的模型运行器:Ollama 会为每个已加载的模型启动一个 llama-server 进程,该标签页每秒会读取几次它的 slot 状态。面对远程或容器化的 Ollama 时,该标签页只保留模型、按请求和会话维度的数据,并会说明哪些面板不可用。
按 r 重置请求日志和会话汇总数据,按 F5 立即刷新。AI 代理也可以通过 tui_get_ollama MCP 工具获取这些数据。关于这些数值对 AI 面板的含义以及应调整哪些参数,请参阅使用本地 Ollama 模型。
进程信息
进程标签页(位于 More 下,快捷键 p)显示所选集成的 JVM 进程详情:Java 版本、PID、运行时长、命令行参数以及系统属性。
HTTP 探针
HTTP 标签页(位于 More > Routing > HTTP 下)列出集成中的所有 HTTP/REST 端点。在任意端点上按 Enter 即可打开内置的 HTTP 探针——一个轻量级的 Postman,可直接在终端中测试你的 REST 服务。
探针布局
探针界面分为请求面板(左侧)和响应面板(右侧):
请求面板——从上到下依次为:
- Method — HTTP 动词循环选择器(
GET、POST、PUT、DELETE、PATCH、HEAD、OPTIONS)。使用 左 / 右 方向键切换。 - Path — 可编辑的路径字段,预填自端点。支持
{xxx}占位符。 - Path Parameters — 如果路径中包含
{id}、{name}等,会为每个占位符显示一个填写字段。发送时这些值会替换到 URL 中。 - Query Parameters — 追加到 URL 的键值对,形式为
?key=value&key2=value2。按 + 添加参数。 - Content-Type — 常见 MIME 类型循环选择器(
application/json、application/xml、text/plain等)。在端点元数据可用时会自动预填。 - Accept — Accept 请求头的循环选择器,预填自端点元数据。
- Headers — 自定义请求头,以键值对形式填写。按 + 添加请求头。
- Body — 多行文本区域(6 行)用于填写请求体。支持 JSON、XML、纯文本,或使用
file:payload.json从文件加载。按 Enter 插入换行。 - History — 之前发送过的请求及其状态码和耗时。按 Enter 可重放请求,恢复所有字段。
Response panel(响应面板) — 显示响应体、状态码、耗时和响应头。按 p 可切换 JSON 和 XML 响应的美化输出。
解析后的 URL 会显示在请求面板顶部,是一个可点击的超链接,你可以复制下来用于 curl 或其他工具。
发送请求
按 F5 发送请求(与 SQL 标签页相同的模式)。响应会出现在右侧面板中。发送过程中,状态会显示一个加载动画。
键盘快捷键(Probe)
| 按键 | 操作 |
|---|---|
| F5 | 发送请求 |
| Enter | 插入换行(正文)或跳到下一个字段 |
| Tab / Shift+Tab | 下一个 / 上一个字段 |
| Left / Right | 切换 method、Content-Type 或 Accept 的值 |
| + | 添加查询参数或请求头 |
| Backspace | 删除空的查询参数或请求头 |
| p | 切换响应美化输出 |
| Esc | 退出探测模式 |
按 F2 打开操作菜单,可快速访问常用功能:
| 操作 | 说明 |
|---|---|
| 发送消息 | 向任意路由发送测试消息,可自定义消息体、消息头和交换模式。 |
| 运行示例… | 从目录中浏览并启动 Camel 内置示例。 |
| 打开项目… | 在 Source(源码)选项卡中打开项目目录,以便浏览和编辑。按 F10 运行。 |
| 从文件夹运行… | 从本地目录运行路由。 |
| 运行开发/基础设施服务… | 在 Docker 中启动基础设施服务(Kafka、数据库等)。 |
| 浏览文件 | 以语法高亮方式浏览集成的源文件。 |
| 运行 Doctor | 检查你的环境:Java 版本、JBang、Maven、Docker、端口冲突、磁盘空间。 |
| 重置统计 | 重置所选集成的全部统计数据和指标。 |
| 全部停止 | 停止正在运行的集成和/或基础设施服务。 |
| 设置… | 更改主题、起始选项卡以及默认的“从文件夹运行”目录。 |
| 截取屏幕截图 | 将当前屏幕导出为 SVG、文本或 ANSI 字符画。 |
| 开始/停止录制 | 将你的会话录制为 .tape 文件,用于演示。 |
| 退出 | 退出 TUI,确认方式与按 q 相同。这是菜单的最后一项,因此在 q 键被其他功能占用的选项卡和输入框中,只需再按一次菜单即可退出。 |
发送测试消息
从 F2 菜单中选择 Send Message(或按 F2 后再选择它):

- 选择路由 — 使用左右方向键挑选目标路由
- 输入消息体 — 输入消息体内容,或使用
file:path/to/file从文件加载 - 添加消息头 — 按 + 以 key=value 形式添加消息头
- 设置交换模式 — 在 InOnly(发后即忘)与 InInOut(请求/响应)之间切换
- 按 Enter 发送
对于 InOut 交换,响应会显示在下方,包括状态、耗时、响应消息头和消息体。按 P 可切换 JSON/XML 响应的美化打印。
Doctor(环境诊断)
Doctor 会检查你的开发环境并报告问题:
- Java 版本(要求 17+,推荐 21+)
- Camel catalog 可用性
- JBang 安装情况
- Maven 仓库连通性
- Docker/Podman 可用性
- 常见端口冲突(8080、8443、9090)
- 临时目录的磁盘空间
内嵌 Shell(F6)
按 F6 可在屏幕底部(或顶部)打开内嵌的 Camel JBang shell。任何 camel 命令都可以在那里运行 —— camel run、camel infra run kafka、camel cmd send、camel get 等等 —— 无需离开仪表盘,并且命令运行期间各标签页仍会持续刷新。再次按 F6 关闭该面板,按 Shift+F6 循环切换其高度,按 PgUp/PgDn 滚动输出,按 ↑/↓ 召回之前的命令(参见输入历史)。
Shell 与 AI 提示面板(F8)共用同一空间:打开其中一个会关闭另一个。两者默认都在底部打开;参见设置中的 Panel Position。
主题
TUI 自带 21 种颜色主题,以 CSS 样式表定义:
- 深色主题 — Dark(默认)、Dracula、Nord、Solarized Dark、Gruvbox Dark、Catppuccin Mocha、Catppuccin Frappé、Tokyo Night、Rosé Pine、Rosé Pine Moon、Kanagawa、Everforest、Monochrome、CRT、Turbo Pascal
- 浅色主题 — Light、Nord Light、Solarized Light、Gruvbox Light、Catppuccin Latte、Everforest Light
打开 F2 操作菜单并选择 Settings… 可切换主题,或在命令行上传入 --theme=<name>(例如 --theme=tokyo-night)。CLI 参数的取值会覆盖 .camel-cli.properties 中持久化的偏好设置;当未指定 --theme 时,后续启动仍会应用运行时的切换状态和配置文件。
品牌橙色强调色在大多数主题中保持一致;状态色(成功、警告、错误)和边框会在每种配色下自适应调整以保证可读性。少数主题会用自身的特色替代品牌强调色:Monochrome、CRT 和 Turbo Pascal。Turbo Pascal 主题重现了 Borland 的 IDE(蓝色编辑区上的黄色文字、青色窗口边框、灰色菜单栏),并以同样的方式重新渲染源代码:保留字为白色,代码为黄色,注释为灰色。其他主题则使用固定的 Monokai(深色)或受 GitHub 启发(浅色)的调色板来高亮代码。
你的选择会被记住:它以 camel.tui.theme 的形式保存在 .camel-cli.properties 中,下次打开 TUI 时会恢复。
设置
打开 F2 操作菜单并选择 Settings…(设置),即可在同一处修改 TUI 首选项:
- Theme(主题) — 在 21 个可用主题之间循环切换(保存后立即生效)。
- Starting Tab(启动标签页) — TUI 启动时显示的标签页;可以选择任意标签页(主标签页或 More 下的标签页)。默认为 Overview(概览)。
- Select Tab(选择标签页) — 从概览标签页中选择某个集成时要切换到的标签页。默认为 Log(日志)。
- Confirm(确认) — 破坏性操作(退出、停止、重启、停止/启动路由)在执行前是否显示确认对话框。默认为 on(开启)。终止(X)无论该设置如何,始终会确认。
- Default Folder(默认文件夹) — Run from Folder(从文件夹运行) 中预填的文件夹。最近使用的文件夹仍然优先;只有在没有记住的文件夹时才使用此默认值。
- Panel Position(面板位置) — 终端(F6)和 AI(F8)面板的打开位置:bottom(底部,默认) 或 top(顶部)。
- Panel Space(面板空间) — 这些面板是将标签页内容挤开(move(移动),默认)还是覆盖在其上方(overlay(叠加)),从而使标签页在下方保持完整高度。
使用 ↑/↓ 在各行之间移动,使用 Space(空格)(或 ←/→)循环切换主题和标签页设置,直接输入可编辑默认文件夹,按 Enter 保存,按 Esc 取消。
设置以 camel.tui.* 键的形式存储在 Camel CLI 配置文件中(camel.tui.theme、camel.tui.startTab、camel.tui.selectTab、camel.tui.confirmActions、camel.tui.defaultFolder、camel.tui.panelPosition、camel.tui.panelSpace、camel.tui.shell.history、camel.tui.ai.provider、camel.tui.ai.model、camel.tui.ai.url、camel.tui.ai.tools、camel.tui.ai.promptHistory)。每个键都从其当前所在的文件中读取并写回该文件:本地 ./camel-cli.properties 中存在的键被视为项目级覆盖并保持本地化,而其他所有键默认位于全局的 ~/.camel-cli.properties。这意味着一个项目可以在其本地配置中特意固定启动标签页,而不会把你个人的主题设置重定向到项目文件中。有关全局和本地文件的详细信息,请参阅配置。
输入历史
内嵌 shell(F6)和 AI 提示(F8)分别维护命令行与提示的回溯列表。在输入行上使用 ↑/↓ 可浏览历史条目。上限通过 .camel-cli.properties 中的 camel.tui.shell.history 和 camel.tui.ai.promptHistory 配置(默认均为 100;设为 0 可禁用回溯与持久化)。Shell 历史保存在 ~/.camel/tui-shell.history;AI 提示历史保存在 ~/.camel/tui-ai-prompt.history。
粘贴
两个面板都接受从终端粘贴的文本(例如在 /model 之后粘贴诸如 qwen3.6:35b-a3b 的模型名称)。在 AI 提示中,粘贴文本中的换行会被折叠为空格,从而使粘贴内容保持为单条提示,你可以在按 Enter 之前先行检查。在 shell 中,换行会作为 Enter 发送,因此多行粘贴会像在普通终端中那样逐行执行。
键盘快捷键
全局(所有标签页)
| 按键 | 操作 |
|---|---|
| 1 - 0 | 按编号跳转到标签页 |
| Tab / Shift+Tab | 下一个 / 上一个标签页 |
| F1 / ? | 上下文相关帮助(切换) |
| F2 | 操作菜单 |
| F3 | 在多个集成之间切换(当有多个正在运行时) |
| Ctrl+F | 浏览所选集成的源文件(概览标签页中也可用普通 f 键) |
| F6 / Shift+F6 | 切换内嵌 shell 面板 / 循环调整其高度 |
| F8 / Shift+F8 | 切换 AI 提示面板 / 循环调整其高度 |
| F10 | 运行菜单(运行、停止、重启、终止) |
| Shift+F5 | 截图 |
| Ctrl+C / Q / F2 → 退出 | 退出 |
| Esc | 关闭弹出窗口 / 返回 / 回到概览 |
源码标签页
| 按键 | 操作 |
|---|---|
| 上/下方向键 | 浏览文件(左侧面板)或滚动源码(右侧面板) |
| Enter | 打开文件或目录 |
| Backspace | 返回上级目录 |
| Tab | 在文件列表与源码查看器之间切换焦点 |
| Space | 循环切换 Camel 路由的格式(YAML/Java/XML) |
| i | 切换内联 Camel 文档显示 |
| / | 在源码中搜索 |
| h | 高亮文本 |
| n / N | 下一个 / 上一个搜索匹配结果 |
| w | 切换自动换行 |
| p | 切换纯文本模式(无边框) |
| Ctrl+G | 跳转到节点(模糊搜索弹窗) |
| Esc / c | 关闭源码查看器 |
| F4 | 进入编辑模式 |
编辑模式
| 按键 | 操作 |
|---|---|
| Ctrl+Z | 撤销 |
| Ctrl+Y | 重做 |
| Alt+上/下方向键 | 上移/下移 YAML 代码块 |
| Ctrl+D | 复制代码块 |
| Ctrl+K | 删除当前行 |
| Ctrl+左/右方向键 | 按单词移动光标 |
| Home | 智能 Home(跳至内容缩进处/第 0 列) |
| Tab | 上下文感知补全 |
| F7 | 差异视图(未保存的更改) |
| F5 | 保存并关闭 |
| Shift+F5 | 保存并继续编辑 |
| Esc | 取消(如有未保存更改则弹出确认提示) |
图表标签页
| 按键 | 操作 |
|---|---|
| 方向键 | 在路由框(拓扑视图)或 EIP 节点(下钻视图)之间导航 |
| Enter | 下钻到所选路由 / 跳转到关联路由 |
| Esc | 返回(上一个路由或拓扑视图) |
| t | 跳转到拓扑视图 |
| m | 切换指标浮层 |
| e | 循环切换外部端点(关闭 / 连线 / 全部) |
| n | 切换描述标签 |
| c | 查看路由源代码 |
Inspect 选项卡
| 按键 | 操作 |
|---|---|
| 上/下 | 在各个步骤之间导航 |
| b / h / p / v | 切换报文体 / 报头 / 属性 / 变量 |
| w | 切换自动换行 |
| g | 切换瀑布视图 |
| d | 切换图表回放模式 |
| n | 切换描述标签 |
| F5 | 刷新 / 清除跟踪信息 |
重点功能
除了上述核心选项卡之外,TUI 还包含几个值得一提的专用界面。
CVE 审计
CVE 审计选项卡(位于 More > Project 下)会将集成类路径上的所有 Maven 依赖项与 OSV.dev 漏洞数据库进行比对。它使用 OSV 批量 API 查询每个 JAR,并按严重程度(Critical、High、Medium、Low)分组显示已知漏洞。
每个漏洞都会显示 CVE 编号、受影响的构件、引入它的直接依赖(VIA 列)以及摘要。选中某个 CVE 可以查看完整详情,包括 CVSS 向量、发布日期、已修复版本和别名。查询结果会进行全局缓存——切换共享 JAR 的集成时几乎是瞬时的。
Kafka
Kafka 选项卡(位于 More > Data 下)为 Kafka 消费者及其连接状态提供了一个专用视图。它会展示消费者组详情、主题分配、分区偏移量以及重连状态。当代理连接断开时,Recovery Tasks 选项卡会显示重连任务及其 Waiting/Attempting 状态、重试次数和错误详情。
SQL 查询与 SQL 跟踪
当你的集成包含 DataSource 时,More > Data 下会出现两个 SQL 选项卡:
- SQL Query —— 一个交互式 SQL 控制台,你可以在其中针对集成中的任意 DataSource 编写并执行查询。结果以带列类型的格式化表格形式展示。
- SQL Trace —— 实时捕获并展示路由执行的 SQL 语句,显示查询文本、执行时间以及触发该语句的路由。
内存泄漏检测
Memory Leak 选项卡(位于 More > JVM 下)使用 Java Flight Recorder (JFR) 诊断运行中集成的内存泄漏问题。它会执行两次连续的记录,并对比对象保留趋势,将每个类归类为增长、稳定、缩减、新增或已消失。该功能轻量且可安全用于生产环境。
JFR 运行时性能分析
JFR 选项卡(位于 More > Observability 下)利用 Java Flight Recorder 为你的运行中集成提供轻量级的性能分析视图。JFR 内置于 JVM 中,开销极低,因此适用于接近生产的场景——你需要计时数据却又不能影响吞吐量时尤为合适。
启用 JFR 运行时插桩来启动你的集成:
camel run my-route.yaml --jfrJFR 标签页显示录制状态和事件配置。按 F5 对当前录制进行快照——TUI 会汇总所有 Camel 事件并以五个视图呈现:
- Routes(路由,快捷键 1)——每条路由的总计、失败次数以及最小/平均/最大耗时
- Processors(处理器,快捷键 2)——每个处理器的统计信息,包含类型和所属路由,按最慢优先排序
- Endpoints(端点,快捷键 3)——每个端点的发送统计信息及耗时
- Failures(失败,快捷键 4)——最近的 Exchange 失败记录,包含异常类型和消息
- Redeliveries(重复投递,快捷键 5)——最近的重复投递尝试,包含尝试次数和最大次数
在某条路由上按 Enter 可下钻查看该路由过滤后的处理器。按 s 可循环切换排序列,按 Esc 返回上一级。
每个快照都是某一时刻的读取——录制会继续运行,因此你可以随时再次按 F5,查看随着更多消息流经系统而更新的统计数据。
目录(Catalog)
Catalog 标签页(位于 More > Project 之下)让你可以在 TUI 内浏览完整的 Camel 组件目录。按名称搜索组件,查看其文档、选项和支持的消息头——在构建路由时,如果你需要确认某个组件支持哪些选项,这会非常有用。
AI 集成(MCP)
TUI 内置了一个 MCP(Model Context Protocol,模型上下文协议)服务器,让 AI 编程助手能够与该仪表板交互。
TUI 本身功能完整——AI 集成完全是可选的。
选择 AI 提供方
按 F8 打开内置的 AI 提示面板。面板会按以下顺序自动检测提供方:
ANTHROPIC_API_KEY→ Anthropic ClaudeCLOUD_ML_REGION+ANTHROPIC_VERTEX_PROJECT_ID→ Vertex AIAZURE_OPENAI_API_KEY+AZURE_OPENAI_ENDPOINT→ Azure OpenAIGEMINI_API_KEY→ Google GeminiOPENAI_API_KEY→ OpenAILLM_API_KEY+ 可选的LLM_BASE_URL→ 任何兼容 OpenAI 的服务器- 位于
localhost:11434的 Ollama → 本地 Ollama(自动检测,无需密钥)
在 AI 面板内按 Ctrl+P 可随时切换提供方或模型。
一个问题可以跨多行:Ctrl+N 开始新行(终端会把 Shift+Enter 和 Alt+Enter 当作普通的 Enter 传递,因此无法使用),粘贴的文本会保留原有换行,Up 和 Down 用于在问题的各行之间移动,直到移出首行后才会回溯之前的历史提示。按 Enter 发送。
同样的指导信息以及当前检测到的提供方,可以在 TUI 中通过 F2 → AI & MCP → Setup AI 查看。使用 F2 → Settings 可以固定某个提供方、模型或基础 URL(camel.tui.ai.provider、camel.tui.ai.model、camel.tui.ai.url),不受环境影响。camel.tui.ai.acp.command 用于设置自定义 ACP 代理(acp:custom)的命令行。
使用 Ollama(本地,无需 API 密钥)
建议原生安装 Ollama 以获得最佳性能——原生二进制文件可使用 GPU 加速(macOS 上为 Metal,Linux 上为 CUDA/ROCm):
# macOS
brew install ollama
# Linux
curl -fsSL https://ollama.com/install.sh | sh
# Pull a model — then open the TUI and press F8
ollama pull qwen3.6:35b-a3b
camel tuiOllama 位于 localhost:11434,会被自动检测到,无需任何配置。
F8 AI 面板通过调用内置工具来检查正在运行的 Camel 进程。小于约 14B 的模型无法可靠地调用工具,只会根据训练知识作答。请至少使用 14B 的模型。建议使用混合专家(MoE)模型,例如 qwen3.6:35b-a3b:每个 token 仅有 3B 参数被激活,处理这种工具密集型提示词的速度比稠密的 27B/32B 模型快得多,回答可在数秒内开始,而不是要等上一分钟。 |
|---|
表现良好的模型(支持工具调用、≥14B、默认 Q4_K_M 量化):
| 模型 | 内存 | 说明 |
|---|---|---|
qwen3.6:35b-a3b | ~23 GB | 推荐:提示词处理最快,需要 32 GB 及以上内存 |
qwen2.5:14b | ~9 GB | 16 GB 内存机器的最低要求 |
qwen3.6:27b | ~18 GB | 强大的稠密模型,提示词处理速度慢数倍 |
qwen2.5:32b | ~20 GB | 质量不错,但提示词处理较慢 |
hermes3:70b | ~43 GB | 工具调用能力出色,需要 64 GB 及以上内存 |
llama3.3:70b | ~43 GB | 最佳开源模型,需要 64 GB 及以上内存 |
camel infra run ollama 会在 Docker 中运行 Ollama,并绕过 GPU 加速,导致推理速度明显变慢。开发时建议使用本地安装。 |
|---|
在 Apple Silicon 上,请使用默认(GGUF)标签,而不是 -mlx 标签。Ollama 的 MLX 引擎目前还无法复用 Qwen 3.x 模型的提示词缓存,因此每次提问都会重新处理整个提示词;而默认引擎可以复用缓存,只处理新增内容。 |
|---|
本地模型的工具集
每个问题都会发送模型可调用的 tui_* 工具定义,而本地模型每收到一次这些定义,都要在提示词处理时间上付出代价。因此,面板只向 Ollama 以及任何 localhost 上的提供方发送核心工具集(状态、表格、日志、错误、图表、拓扑、处理器详情、目录文档、追踪、span、路由控制、发送消息、源文件、基础设施服务、导航、日志级别和过滤器),这大约能把提示词削减一半。托管提供方则会收到全部工具,包括绘图、动画和自动化工具。在面板中使用 /tools full 可以让本地模型也收到全部工具,使用 /tools core 可以精简发给托管模型的工具集;也可以在 F2 → Settings 中选择 AI Tools,或在 .camel-cli.properties 中设置 camel.tui.ai.tools。发往 Ollama 的请求还会要求服务器将模型保留 30 分钟,并使用 32k 或 64k 的上下文窗口(参见使用本地 Ollama 模型;OLLAMA_CONTEXT_LENGTH 会覆盖该设置),这样后续问题就能复用已缓存的提示词,而不必重新加载模型。
使用本地 Ollama 模型
本地模型并不是托管模型的慢速版本;它只是把时间花在了不同的地方,而 TUI 会告诉你花在了哪里。本节说明使用 Ollama 时一次问题的开销构成,以及哪些参数至关重要,所列数据是在一台运行 qwen3.6:35b-a3b 的 Apple M4 Pro(64 GB)上测得的。
一次问题的时间都花在了哪里。 Ollama 的应答分为三个阶段,TUI 显示的每项耗时都对应其中之一:
- 加载(Load):如果模型不在内存中(第一个问题、保留时间已过期,或某个请求要求不同的上下文大小),Ollama 会启动一个 runner 并加载权重:一个 22 GB 的模型需要 10 到 20 秒。TUI 会要求 Ollama 在每次请求后将模型保留 30 分钟。
- 预填充(Prefill):提示词(系统提示词、工具定义、对话历史、你的问题)会作为一个批次处理,在没有任何缓存时约为每秒 600 到 700 个 token。
- 解码(Decode):答案逐个 token 生成,该模型的生成速度为每秒 50 到 60 个 token。
在出现任何内容之前的等待时间,即首 token 时间(time to first token),等于加载时间加上预填充时间。因此,冷启动的首个问题在吐出第一个词之前要等 20 秒;而热启动的问题则不到一秒。
一个问题,多次请求。 面板通过调用 tui_* 工具来作答,而模型每发出一次工具调用,就会产生一次新的请求,把整个提示词完整重发一遍。一个简单的问题可能需要 3 到 13 次请求。之所以负担得起,是因为 Ollama 会缓存提示词前缀:系统提示词、工具定义和历史记录在每一步之间都是相同的,因此每一步只需预填充新增的 token,耗时大约半秒。在整个会话中,缓存命中率通常在 90% 以上。Ollama 标签页会把每个问题的请求数显示为 ×N,并显示每个问题的缓存命中率;如果某个问题计数很高但回答很短,说明模型在反复试探,而这可以通过更小、更精准的工具集来减少(参见面向本地模型的工具集)。
上下文窗口。 TUI 对每个模型只决定一次它向 Ollama 请求的窗口大小(num_ctx):
- 如果设置了环境变量
OLLAMA_CONTEXT_LENGTH,则以其为准。 - 如果该模型已经加载,则沿用它的窗口大小(小于 32k 时提升到 32k),这样 TUI 就绝不会让 Ollama 重新加载其他客户端正在使用的模型。用不同的
num_ctx发起请求会导致冷启动,并丢弃所有客户端的提示词缓存。 - 否则,如果模型权重加上 64k 窗口的 KV 缓存能装进机器内存(根据
ollama show报告的信息计算:层数、KV 头数、头大小),则使用 64k,否则使用 32k。设得过大比保守更糟糕:Ollama 会把部分层移到 CPU 上,生成速度会慢得像爬行。
系统提示词和核心工具的静态前缀约为 4.5k 个 token,每个包含工具调用的问题又会增加 2k 到 4k 的历史记录。一旦 Ollama 为上一次请求测得的提示词长度超过窗口的一半,面板就会压缩历史记录,上限是 64k 的一半,即使采用了更大的窗口也是如此:一旦缓存失效(闲置 30 分钟后卸载、其他客户端介入、重启等),历史记录中的每个 token 都要重新花时间预填充,而 64k 按每秒几百 token 的速度算下来已经远远超过一分钟。压缩会重写历史记录,从而使 Ollama 的提示词缓存失效,因此压缩后的第一次请求要把整个提示词重新预填充一遍:21k 个 token 的提示词大约需要 40 秒。因此,面板很少压缩本地历史记录,但一旦压缩就压得很彻底,压缩到大约窗口的四分之一,并打印一行说明它做了什么以及下一条回复要多久才开始生成。/compact 会按需执行同样的操作,并打印同样的那一行;/context 显示窗口大小、压缩阈值和最近一次测得的提示词长度;面板标题会把填充比例显示为 ctx 34%。
选择模型。 如果没有设置 camel.tui.ai.model,面板会在 llama3.2 已安装时采用它,否则取第一个已安装的模型;在面板中运行 /model <name>,或在 F2 → Settings 中设置 AI Model,即可固定某个模型。该模型必须支持工具调用,且参数量至少应达到 14B;像 qwen3.6:35b-a3b 这样的混合专家模型,其预填充速度比同等质量的稠密模型快数倍,而这正是工具调用较多的提示词所看重的。F2 → Run Doctor 会显示是否找到了 Ollama、安装了哪些模型,以及这些模型是否足够大。
该看哪里。 Ollama 选项卡是了解上述所有信息的仪表:实时及每请求的 token 生成速度、首个 token 的耗时(冷启动会被标记出来)、缓存命中情况、上下文窗口的占用程度及其随每个问题的增长情况、GPU 与进程负载,以及每个问题占一行、显示其消耗的请求数——当前正在回答的问题位于最上方,原因显示为 working,计时会持续累加;页脚则给出每问题的平均值。在 AI 面板中,/context 会打印下一次请求的开销,/usage 与 Ctrl+U 则显示本次会话每个问题的累计用量。
远程与容器化的 Ollama。 以上内容同样适用于位于其他主机上、或运行在 camel infra run ollama 内部的 Ollama,但有两点差异:容器运行时没有 GPU 加速;Ollama 选项卡上的实时运行状态与主机负载信息要求服务器位于同一台机器上。
如需了解更完整的图景,请参阅博文 We had a frontier AI coach a small local model through Camel,了解本地模型用 Camel 能做到什么以及为此做了哪些改动;以及 Observe Your Camel AI Routes with GenAI OpenTelemetry,了解如何观测调用 Ollama 的路由。
使用兼容 OpenAI 的本地服务器
设置 LLM_API_KEY 和 LLM_BASE_URL,即可连接到任何兼容 OpenAI 的服务器(LM Studio、vLLM、llama.cpp、GPT4All 等):
export LLM_API_KEY=any-value
export LLM_BASE_URL=http://localhost:1234
camel tuiOPENAI_BASE_URL 也可作为 LLM_BASE_URL 的替代写法。
面板会使用服务器在 /v1/models 上列出的第一个模型。若要使用其他模型,可在面板中执行 /model <name>(单独输入 /model 会列出服务器提供的模型),或在 F2 → Settings 中设置 AI Model,也可以设置 camel.tui.ai.model。模型必须支持工具调用,否则面板将凭训练数据作答,而不是检查你的集成。当请求失败时,面板会显示 HTTP 状态码和服务器返回的错误消息,例如服务器并未托管该模型。
为什么这很重要
当 AI 代理通过 MCP 连接到 TUI 时,它将获得与你相同的可见性——并能据此采取行动。该代理可以:
- 读取一切——路由拓扑、统计信息、消息跟踪、错误、日志、源文件、健康检查和 JVM 指标
- 导航与控制——切换标签页、选择路由、启动/停止路由、发送测试消息、更改日志级别
- 教学与演示——AI 可以控制 TUI 屏幕,带你逐步理解概念,高亮感兴趣的区域,绘制标注并截图。它可以圈出出错的路由、在相连的端点之间画箭头,并添加说明性文字标签——把 TUI 变成一块用于结对编程的实时白板
- 自我排障——当出现故障时,AI 可以自主检查错误、读取消息跟踪、与路由统计数据进行关联,并生成一份诊断报告,附带标注过的截图,准确展示故障发生的位置和原因
启用 MCP
camel tui --mcp这将在 localhost:8123 上启动一个 MCP 服务器(可通过 --mcp-port 配置)。该服务器仅绑定到 127.0.0.1——绝不监听外部接口。
MCP 激活时,TUI 底栏会显示连接状态。使用 F2 → MCP Info 查看服务器详情,使用 MCP Log 查看工具调用历史。
状态文档资源
每个运行中的集成都会在 ~/.camel/<pid>-status.json 中保存一份完整的状态文档,由 camel-cli-cli-connector 每秒写入一次。各个标签页展示的是这份文档的摘要;MCP 服务器则将整份文档作为资源暴露出来,这样智能体可以直接获取它所需的那一部分,而无需在各个标签页之间翻阅:
camel://log/<pid>——集成日志(~/.camel/<pid>.log)的最后 200 行;使用camel://log/<pid>?lines=<n>可以指定不同的尾部行数(最多 5000 行)。Log 标签页只显示该文件的一个窗口,因此如果智能体需要知道用户正在查看哪些行,应改用tui_get_screen工具。camel://status/<pid>——整份文档camel://status/<pid>/<section>——某个顶层部分,例如context(名称、版本、状态、运行时长、启动时间戳、统计信息)、runtime、routes、endpoints、healthChecks、properties、main-configuration、routeController、memory、threads、gc或events
resources/list 会枚举每个被监控集成的日志、文档及其各个部分,resources/templates/list 则描述 URI 的形式。同样的数据也可以通过 tui_get_status 提供给 F8 AI 面板(并作为 MCP 工具使用),它接受一个 section 参数并只返回该部分;传入 sections 可以列出文档包含哪些部分。像 events 这样的部分可能很大,所以请只请求你需要的那一个。
AI 面板斜杠命令
当 AI 面板打开时,以 / 开头的输入会执行面板的本地命令,而不是将问题发送给已配置的 AI 提供商。在响应或命令正在进行时,/provider 和 /model 不可用;面板会显示一条提示信息让你稍候。
按 Tab 键补全命令名。在 /model 之后按 Tab 会依据当前提供商报告的模型来补全模型名称(列表会在第一次按下时在后台获取,因此获取完成后需要再按一次 Tab),而在 /tools 之后则会补全 auto、core 或 full。当存在多个匹配项时,Tab 会先补全公共前缀,然后在各项之间循环;Shift+Tab 则反向循环。
| 命令 | 说明 | ||
|---|---|---|---|
/help (/h) | 显示可用的斜杠命令。 | ||
/provider (/p) | 打开提供者切换器。 | ||
/model [model-name] (/m) | 显示当前模型,或切换会话模型。 | ||
| `/write [confirm\ | auto\ | live] (/w`) | 显示或切换模型写文件(camel_write_file)的处理方式。confirm(默认)对每次写入都弹出确认对话框,无论模型传入什么参数;auto 允许模型以 confirm=false 跳过对话框;live 会在源码编辑器中回放这次编辑,让你实时看到它发生(见下文)。该模式在本次会话内持续有效。 |
| `/tools [auto\ | core\ | full] (/t`) | 显示发送给模型的工具集,或进行切换。auto(默认)向本地提供者发送核心工具集,向托管提供者发送全部工具;该选择保存为 camel.tui.ai.tools。 |
/context (/ctx) | 显示下一次请求的开销:提供者与模型、工具集、静态前缀大小、历史记录大小与会话总计;对于 Ollama,还会显示上下文窗口大小、超过多少提示词大小会对历史进行压缩,以及最近一次测量的提示词大小。对本地模型尤其有用,因为提示词大小就是时间。 | ||
/compact | 立即压缩发送给模型的对话历史:较旧的工具结果被截断为开头几行,最久远的轮次被丢弃。对于托管提供者,面板会在每次回答后自动完成这一操作,但保留最新一轮。对于 Ollama 或其他 localhost 提供者,它会等待 Ollama 测得的提示词超过上下文窗口的一半(参见使用本地 Ollama 模型),然后进行全面压缩,因为本地服务器只有在对话不断追加时才能复用其缓存提示词,重写历史会导致它重新处理整个提示词。该命令和自动压缩都会打印一行信息,包含压缩前后的大小,以及在本地模式下,下一次回复需要多久才会开始。 | ||
/retry | 重新发送上一个问题,从模型历史中一个干净的新轮次开始。 | ||
/usage [reset] (/u) | 打印到目前为止聊天中的 AI 用量:请求数、输入与输出 token 数、平均延迟,每个模型一行(当观测到 GenAI span 时,每条路由也各占一行),以及最近一次请求。Ctrl+U 会打开完整视图,其中包含按问题展示的图表。/usage reset 会清除计数器和图表,但不影响对话;重置之前记录的 GenAI span 也会从视图中隐藏。 | ||
/copy (/y)、/export (/e) | 等同于 Ctrl+Y(复制上一条响应)和 Ctrl+E(将会话导出为 Markdown)。复制时会感知代码:当响应中只有一个围栏代码块时,只复制代码本身(不含围栏和说明文字——由于面板边框的存在,用鼠标选中无法得到这个效果);当有多个代码块时,会弹出一个选择器,列出各代码块及其语言和大小,同时提供整个响应;当没有代码块时,复制整个响应。 | ||
/prompt | 显示面板随每次请求发送的系统提示词。 | ||
/clear (/c) | 清除 AI 对话、用量计数器和模型上下文,但不更改提供者或模型。 | ||
/close | 关闭 AI 面板。 | ||
/quit (/exit, /q, /x) | 退出 TUI。 | ||
/run <camel run args> (/r) | 使用给定参数运行 camel run。 | ||
/infra <camel infra args> (/i) | 使用给定参数运行 camel infra。 | ||
| `/send <message text \ | @file> (/s`) | 通过 camel cmd send 发送消息。如果消息体正好是一个 @file 标记,则会作为 file:<path> 发送;内联的 @file 文本则按字面意思发送。 |
提交的提示词(包括斜杠命令)在 camel.tui.ai.promptHistory 不为 0 时会参与 AI 提示历史。在提示行使用 ↑/↓ 可调出它们。
每个回答的末尾都会有一行署名,说明该问题的开销:所耗时间、模型调用了多少次工具以及在工具上花费的时间、请求数、令牌数,以及使用 Ollama 时上下文窗口的占用程度(例如 61.1s · 25 tool calls, limit reached (2.5s in tools) · 26 requests · 231.3k tokens · ctx 18%)。面板每个问题允许 25 次工具调用。当模型达到该上限时,署名会显示 limit reached,面板会要求模型根据目前找到的内容作答;Ollama 选项卡会以红色显示该问题的请求次数,原因标注为 limit(请求数达到 10 次时变为黄色,总耗时达到 30 秒时变为黄色、达到一分钟时变为橙色)。触及上限的问题通常是因为某个工具让模型反复猜测,而非模型能力不足:AI 日志会显示是哪一个。
模型所说的内容与其所写的内容一样会被校验。文件在 camel_write_file 写入之前要经过校验器;聊天中显示的回答就是你会复制的内容,因此其中的简单表达式也会对照目录进行检查:文本及 Java 或 XML 代码块中的 ${…} 占位符,以及 YAML 块的 simple: 值和日志消息。小型模型容易把操作符放进占位符里(写成 ${header.user ?: 'Guest'} 而不是 ${header.user} ?: 'Guest'} 的形式,即 ${header.user} ?: 'Guest')。当检查发现这类表达式时,面板会将回答连同错误说明和相关规则退回给模型一次,并在署名中以 1 correction 显示已更正的回答。若模型未予修正,则按原样显示回答,其下方附有一行 Simple check,指出出错的表达式及错误内容,AI 日志中也记录了这次往返。非简单表达式的占位符(如 Maven 的 ${camel-version}、shell 变量)不会被处理。
在 AI 面板打开时按 Ctrl+U 可切换到 AI 用量视图。它显示来自内置 AI 提示(TUI ask)的令牌消耗,以及被监控集成所发起的 LLM 调用(integration)的令牌消耗,后者在集成启用可观测性时取自 OpenTelemetry GenAI span。Tokens per question 图表为你提出的每个问题各显示一根柱条,因此需要多次工具调用的问题只显示为一根柱条。摘要行将会话时间划分为 AI time(等待模型的时间)和 Tool time(运行模型所调用的 TUI 工具的时间,并附调用次数),摘要行给出每个问题的平均耗时(括号内为每次请求的平均耗时),模型表格中有 AVG/REQ 列,显示该模型每次请求的平均耗时;令牌图表旁的 Time per question 图表则将两者并排展示每个问题的数据,便于判断一个回答变慢是由于模型还是工具。
AI 日志
面板发出的每个请求都会记录在 AI 日志中(F2 → AI & MCP → AI Log,或使用 tui_get_ai_log 工具):包括问题本身、模型调用的每个工具及其参数、工具的执行结果与耗时,以及一行 Response,其中包含总耗时和 token 统计。当模型调用了工具时,总耗时会进一步细分为等待模型的时间和执行工具调用的时间(例如 5.2s, ai 4.1s, tools 1.1s/3)。Response 行还会显示服务商是否复用了其缓存的提示词。对于 Ollama,它会打印服务器报告的提示词处理(prefill)和生成(gen)耗时——在 1 万 token 的提示词上,prefill 只用了不到一秒,说明命中了缓存;而 prefill 花了几秒,则说明整个提示词被重新处理了。对于 OpenAI、Anthropic 和 Gemini,它会打印服务商报告的 cached 输入 token 数量。用它来确认后续问题的成本很低,再怪模型太慢也不迟。
使用编码代理(ACP)
AI 面板不必直接与模型对话,而是可以把对话交给一个支持 Agent Client Protocol(ACP)的外部编码代理。TUI 会将该代理作为子进程启动,把 TUI 自身的 MCP 服务器提供给它,并在面板中展示代理给出的答案、工具调用和提问。代理通过外部 MCP 客户端所使用的同一批 tui_* 工具来操控 TUI,也可以用自己的工具读取和编辑你的路由源码。
在 AI 面板中按 Ctrl+P,选择其中一个代理:
| 服务商 | TUI 执行的命令 | 首次提问前的准备 |
|---|---|---|
acp:claude | npx -y @agentclientprotocol/claude-agent-acp | 使用 claude CLI 登录,或设置 ANTHROPIC_API_KEY |
acp:codex | npx -y @agentclientprotocol/codex-acp | 执行 codex login,或设置 OPENAI_API_KEY |
acp:bob | bob acp | 设置 BOBSHELL_API_KEY,或运行一次 bob 进行登录 |
acp:qwen | qwen --acp | 设置 OPENAI_API_KEY 和 OPENAI_BASE_URL |
acp:opencode | opencode acp | opencode auth login |
acp:dsh | npx -y @deepseek-ai/dsh --profile acp | 在 DeepSeek Harness(开发者预览版)中配置模型密钥 |
acp:custom | camel.tui.ai.acp.command 的取值 | 取决于代理 |
npx 条目需要 Node.js 22 或更高版本(Claude 适配器要求如此)。代理会在你的第一个问题时启动;当 npx 需要下载适配器时,首次启动可能耗时较久。会话打开后,面板会显示两行头部,包含代理的彩色字形、代理名称与版本、会话 ID、工作目录,以及它所声明的命令数量。使用 F2 → Settings 可将某个代理设为默认提供者,或设置自定义命令(一条按空格拆分的普通命令行,无需引号)。
MCP 服务器会在代理需要时自动启动在随机的 localhost 端口上,因此无需 --mcp。F2 → MCP Info 会显示端口以及代理发出的工具调用。与使用 --mcp 启动的服务器一样,它绑定在 127.0.0.1 上且不带身份验证,并会拒绝携带 Origin 头(因此网页无法访问它)或非 JSON 格式的请求。
权限:对 TUI 只读工具(tui_get_* 工具、目录文档、表达式求值、locate、validate)的调用会直接批准,不再询问。当写入模式为 confirm 或 live 时,camel_write_file 同样会被直接批准,因为 TUI 自身会在文件被改动前进行询问(差异对话框或 Source 编辑器中的实时回放);而在 /write auto 下,权限弹窗是唯一且仍然保留的询问。任何会改变其他内容的工具,例如 camel_control、tui_send_message 或 tui_execute_sql,都会像其他请求一样打开相同的弹窗;选择「始终允许」后,该工具只需询问一次。对于代理想做的其他任何操作,例如用自己的工具编辑文件或执行命令,弹窗会列出代理提供的选项;Enter 选择,Esc 拒绝这一次调用并让本轮继续,Ctrl+C 则取消整轮。前言(preamble)要求代理通过 camel_write_file 而非其自身的文件工具来编辑路由源码,这样你就能看到差异或观察编辑过程;当代理仍请求直接编辑文件时,弹窗会予以说明,按 Esc 会将其退回 camel_write_file。「始终允许」的选择会由代理在会话期间记住。模型、推理设置以及所有「始终允许」规则都配置在代理中,而非 TUI 中;/model 只会报告正在使用的代理。
代理自身的斜杠命令(例如 Claude Code 的 skills)在会话打开后会以 /agent:<name> 的形式出现在 / 补全提示中;单独输入 /agent: 会列出它们。/agent:<name> … 始终会传递给代理,即使该名称同时也是一个面板命令(/agent:clear 清除代理的上下文,/clear 清除面板)。其他以 / 开头且不是面板命令的内容,会原样发送给代理。
面板自身的 /retry 会将最近一次提问(或 /agent: 命令)重新发送给智能体。/context 显示智能体及其会话、工作目录、MCP 服务器以及前导词的大小,而非模型历史;/prompt 则显示该前导词,它在每个会话中于首条提示词之前发送一次。当选中智能体时,/compact 和 /tools 不适用:智能体自行管理其历史记录,并通过 MCP 服务器访问 camel-tui 的工具;面板会说明这一点,并在智能体提供相应命令时提示使用 /agent:compact。
如果智能体请求身份验证且能够自行完成登录,TUI 会触发一次该流程;否则面板会显示上表中的登录命令。
Gemini CLI、Google Antigravity 和 Pi 未作为预设提供。Gemini CLI 已于 2026 年 6 月停止为个人 Google 账号提供服务,Antigravity 的 CLI 目前尚无 ACP 模式,而 Pi 的社区适配器不会传递 MCP 服务器。任何 ACP 智能体仍可通过 acp:custom 尝试使用。 |
|---|
连接 AI 智能体
要将 Claude Code 连接到 TUI,请将该 MCP 服务器添加到项目配置中(项目根目录下的 .mcp.json):
{
"mcpServers": {
"camel-tui": {
"type": "url",
"url": "http://localhost:8123/mcp"
}
}
}AI 智能体能做什么
MCP 服务器暴露了两类工具。camel_ 前缀的工具是与 camel mcp 服务器共享的 Camel 编写工具集(参见 Camel MCP 服务器):包含端点 URI 规则和 Simple 表达式语法的目录文档(camel_catalog_doc、camel_catalog_find)、源码校验(camel_validate_source)、读取和写入源文件(camel_get_files、camel_write_file)、在开发模式下运行集成并对其加以控制(camel_run、camel_control)、查看其日志和失败交换(camel_get_log、camel_get_errors)、表达式求值(camel_eval_expression)以及错误诊断(camel_error_diagnose)。这些工具在 Camel CLI 中只定义一次,因此智能体通过任一服务器都能获得相同的工具、名称和响应;在 TUI 中,除非 directory 或 name 参数另有指定,否则它们作用于当前选中的集成,并且写操作会经过 TUI 的确认对话框或实时回放。tui_ 前缀的工具是只有 TUI 才能提供的工具,按用途分为以下几类:
- 观察 — 读取屏幕、获取结构化状态、查询表格/日志/错误/链路追踪/拓扑/图表/文件、列出正在运行的基础设施服务(消息代理、数据库)并读取它们的日志、读取本地 Ollama 服务器的性能指标(
tui_get_ollama:已加载模型、每秒令牌数、上下文占用、主机负载、请求日志) - 导航 — 切换标签页、选择集成、选择路由、发送按键、应用过滤器
- 执行 — 向端点发送测试消息、启动/停止/重启路由、更改日志级别、列出并启动内置示例、启动/停止/重启基础设施服务、按标签执行 F2 操作菜单中的任意条目
- 编辑 — 在集成的源码目录中写入源文件(
camel_write_file),详见下文 - 标注 — 按坐标定位文本和图表节点、绘制形状(方框、高亮、箭头、下划线、文本标签)、以打字机动画显示说明文字
- 演示 — 截屏、录制回放会话、控制演示节奏
从 AI 智能体编辑源文件
TUI 用于人与 AI 协同的原型开发,因此智能体(内置的 F8 面板或外部 MCP 客户端)可以修改它正在查看的路由。camel_get_files 会告知智能体源码所在的位置——位置因集成的启动方式而异(普通文件、--source-dir、解压到临时文件夹的示例,或导出的项目)——以及当前是否适合编辑:包括 devMode(修改会自动重新加载)、temporary(集成停止后即丢失的副本)以及一个 editing 提示。随后 camel_write_file 会将该目录中某个文件的完整新内容写入。
通过 --runtime=spring-boot 或 --runtime=quarkus 启动的集成运行自导出的 Maven 项目,其中路由位于 src/main/resources/camel 下,而不是与 pom.xml 同级。文件列表会识别这种布局:先列出路由与配置文件,再列出项目中的每个文件(构建产物除外),路径均为相对于项目的路径,并把每条正在运行的路由映射到它所在的文件和行号,这样智能体一次调用就能读到正确的文件,而不必去猜文件名。传给 camel_get_files 和 camel_write_file 的文件路径都是相对于该目录的,并且可以指定子目录。
每次写入都先在 TUI 中确认:对话框会显示文件名、所在目录以及本次变更的规模(+3 -1 行);按 d 可以以统一差异格式查看变更,删除行为红色、新增行为绿色,与 Source 标签页中 F7 的差异视图一致,并可用方向键滚动;按 Enter、Esc 或 d 返回摘要。在摘要界面中,按 Enter 应用写入,按 Esc 拒绝写入,此时会告知智能体文件保持不变,不要再重试。智能体无法自行跳过该对话框:confirm=false 只有在你在 AI 面板中切换到 /write auto 之后才会生效(默认的 /write confirm 会对每次写入都显示对话框,无论智能体传入什么参数)。只接受源目录中的纯文件名,该工具无法写入其他位置,而且不提供 git 集成,因此最坏的情况不过是你在监控的文件夹里出现了一个错误的路由文件。
在写入之前,智能体可以用 camel_validate_source 检查文件内容,它执行的校验与 Source 标签页的保存校验完全相同:YAML 路由会对照 Camel YAML DSL 模式进行检查(例如把 loggingLevel 拼写成 logLevel 这样的拼写错误会被报告),同时还会检查端点 URI 和 simple 表达式;.properties 文件则会对照 camel.* 和 Spring Boot 选项的目录进行检查。camel_write_file 自身也会执行该校验,对无效文件拒绝写入并返回错误信息,从而让模型自己修复问题,而不是等重新加载后由用户在日志中发现(validate=false 则会照常写入)。这两个工具都属于核心工具集,因此本地模型(Ollama)同样可以使用它们。
简单表达式增加了两个辅助工具,因为这正是小模型最容易出错的地方(函数应写在 ${…} 占位符内部,运算符则位于占位符之间:${header.user} ?: 'Guest',而不是 ${header.user ?: 'Guest'})。针对 simple 语言的 camel_catalog_doc 会返回这些语法规则,以及目录中的函数和运算符(按分组给出数量与名称;若使用 optionsFilter,则返回匹配项及其参数和示例),而 docPage 则提供运算符、函数、OGNL 和高级用法的文档页面。camel_eval_expression 可以在运行中的集成内求值一个表达式,效果等同于 camel cmd eval;如果未选择集成,则在本地求值,并返回结果值或解析错误,这样智能体在回答或写入之前可以先试算表达式。组件查询在端点 URI 上也得到了同样的处理:每个端点选项都会标明它属于 URI 路径还是查询参数,结果还会详述该组件的 URI 规则(其路径选项、?option=value&option=value 形式、YAML 中 uri 加 parameters 的形式、占位符、RAW(),以及该组件的选项应写在 application.properties 中)。使用 endpoint 时,同一个工具会依照 YAML 校验器在写入时的方式,对照目录检查 URI:未知选项会给出最接近的真实名称、取值不在允许范围内的、缺少路径部分的、在生产者端点上使用了消费者端点的选项等等,还会列出该 URI 所使用的选项及其文档,这样智能体在回答或写入之前可以先校验端点。
观察 AI 的编辑(实时模式)
使用 /write live 时,改动不会以 diff 形式展示,而是在 Source 标签页的编辑器中回放:AI 面板隐藏,编辑器占满整个屏幕,文件以编辑模式打开,光标跳到第一处改动,被删除的行消失,新增的行则以易于跟读的速度逐字打出。你保存或放弃之后,AI 面板会重新出现。这样做是为了学习 Camel 和 YAML DSL:你能看到改动如何落在带语法高亮的完整文件中,并可以查证新增行的含义。每一处改动都是独立的一步,即使两处改动只相隔一行也是如此,两步之间回放会暂停:Enter 继续下一处改动,Esc 停止(已经打出的内容保留在编辑器中),其他任意键立即完成当前这处改动,F4(编辑器的编辑快捷键)则把键盘交给你,让你自行编辑;之后按 F9 继续处理剩余的改动。这些改动是根据其上下文行来定位的,因此你在文件其他位置的自行编辑只会让它们位置偏移,而不会使其失效;如果你改动了某处改动的上下文,该改动会被跳过并向代理报告。回放结束后,你可以按 F7 检查,按 Ctrl+S 或 F5 保存(这就是确认操作),也可以按 Esc 放弃。代理会一直等待到这一刻,并被告知哪些改动已应用、哪些被跳过,以及如果你修改过,保存后文件的内容。
在回放暂停期间,你还可以就它刚刚做的改动向代理提问:按 F8 打开 AI 面板,其中已预填问题(About edit 2 of 3:),你补全问题后按 Enter。等待中的 camel_write_file 调用会连同你的问题、到目前为止已应用的改动以及编辑器内容一并返回给代理,代理在同一轮中作答——期间不会写入任何内容。按 F8 关闭面板(或按 Esc 不提问直接离开),暂停会从原处继续。如果你的问题促使代理修改该改动,它随后对同一文件发起的下一个 camel_write_file 将以当前内容为起点在编辑器中继续,而不是从头开始。如果你在代理未再次参与的情况下保存或放弃了改动,代理会在你下一个问题时得知该改动的最终结果。
示例工作流
- "哪些路由出错了,为什么?"——代理读取错误标签页,结合路由统计数据,在 Inspect 标签页中逐步检查失败的 exchange,并配上带标注的截图解释根本原因。
- "给我展示这条消息是如何在系统中流转的"——代理导航到 Inspect 标签页,打开图示回放,逐步经过每个处理器,并在拓扑图上高亮该路径,同时讲解每一步发生了什么。
- "标出存在瓶颈的路由"——代理读取路由统计数据,在图上定位最慢的路由,用红框将其圈出,并添加处理耗时的标签。
有关 MCP 以及 Camel 与 AI 的集成的更多信息,请参阅 Camel MCP Server。
通过 Web 浏览器访问
TUI 也可以通过同一主机上的 Web 浏览器访问,所看到的面板与在本地终端中显示的完全相同——当你更喜欢使用浏览器会话而非终端窗口时,这非常有用。
camel tui --web这将在 localhost:8090 上启动一个 web 终端服务器(可通过 --web-port 配置)。在浏览器中打开 http://localhost:8090,即可获得一个完整的 xterm.js 终端,它驱动着与本地会话相同的 TUI 仪表板,拥有相同的标签页、快捷键以及 F2 操作菜单。
与 MCP 服务器一样,web 服务器仅绑定到 127.0.0.1 —— 它永远不会监听外部接口 —— 除此之外没有任何认证。每个浏览器连接都会获得自己独立的 TUI 会话(拥有自己的进程发现与导航状态),就如同你在新终端中再次运行 camel tui 一样。
录制演示
TUI 可以录制终端会话,用于制作演示和文档。
实时录制
使用 F2 操作菜单并选择 Start Tape Recording,即可将你的会话录制为 .tape 文件。选择 Stop Tape Recording 可停止录制。tape 会连同时间信息一起捕获你的按键操作,从而生成一个可以重放或转换为动画 GIF 的脚本。
脚本化录制
使用 --record 标志可以以无头模式重放 .tape 文件,并生成一份 Asciinema .cast 录制文件:
camel tui --record=demo.tape.cast 文件写在磁带文件旁边,文件名后缀由 .tape 替换为 .cast。录制过程是无头的:TUI 完全由磁带驱动,而不是由你的终端驱动,因此不会读取任何键盘输入,也不会在屏幕上绘制任何内容。
录制的终端默认尺寸为 200x50,比文档页面能够显示的宽度更大。使用 --record-size 可以按适合的尺寸录制,使用 --record-fps 或 --record-duration 可以控制捕获速率和截止时间:
camel tui --record=demo.tape --record-size=160x44 --record-fps=15--record 不能与 --web 一起使用。录制会从磁带文件驱动一个无头 TUI,而录制配置作用于整个进程,因此每个浏览器会话都会被录制到同一个 .cast 文件中。Camel 会直接拒绝这一组合并报错。
转换为 GIF
使用 agg 转换 .cast 文件,或使用 VHS 转换 .tape 文件:
agg recording.cast out.gif # .cast -> .gif
vhs demo.tape # .tape -> .gif命令行选项
| 选项 | 说明 | 默认值 | ||
|---|---|---|---|---|
| `[name | pid | directory]` | Camel 集成的名称、PID 或目录路径。给定目录时,TUI 会在 Source 标签页中将其作为项目打开——你可以浏览源代码,并按 F10 运行它。省略时,TUI 会自动发现正在运行的集成。 | |
--mcp | 启用内嵌 MCP 服务器,供 AI 代理访问 TUI。 | false | ||
--mcp-port | 内嵌 MCP 服务器的端口。 | 8123 | ||
--web | 启用可通过浏览器访问的终端(WebSocket)服务器。 | false | ||
--web-port | Web 终端服务器的端口。 | 8090 | ||
--refresh | 屏幕刷新间隔,单位为毫秒。 | 100 | ||
--theme | 本次会话的配色主题(例如 dark、tokyo-night、dracula)。完整主题列表共 21 种,参见主题。设置后将覆盖已保存的 camel.tui.theme 偏好设置。 | |||
--record | 回放 .tape 文件,并将会话录制为 Asciinema .cast 文件。 | |||
--record-size | --record 录制的终端大小,格式为 <cols>x<rows>。 | 200x50 | ||
--record-fps | --record 捕获的帧率。 | 10 | ||
--record-duration | --record 捕获的最大时长,单位为毫秒。 | 120000 |
评论
登录后参与评论
KnowForge