进阶 omnigent.ai 2026-10-14 06:47:13 · 21 阅读

第22章 终端:Omnigent 的默认交互界面

Terminal 终端是 Omnigent 的默认交互界面,主打键盘操作,支持流式输出和实时工具执行。如果你平时就习惯在终端里工作,这是和 Agent 打交道最快的方式。

所有界面(终端、网页、移动端和桌面端)都连接至同一个持久化、可共享的会话。你可以在任意位置开始工作,然后随时随地继续。

启动会话 终端界面依赖 tmux,如果尚未安装,请先执行: # macOS brew install tmux

# Debian / Ubuntu apt install tmux

随后启动 Agent: omni claude # Claude Code omni codex # Codex omni goose # Goose(原生 TUI) omni hermes # Hermes(原生 TUI) omni copilot # GitHub Copilot(通过 `omni run` 调用 SDK 框架) omni devin # Devin(原生 TUI) omni run agent.yaml # 自定义 Omnigent omni run ./my-agent/ # 包含 config.yaml 的目录

omni claude、omni codex、omni goose 和 omni hermes 会启动内置编码 Agent,并加载 Omnigent 界面,无需 YAML 配置。omni copilot 是 omni run --harness copilot 的简写,会透传所有 omni run 选项;它要求安装 Copilot SDK(copilot extra),且仅当该 SDK 存在时才会显示在 omni --help 中。请参阅 编码 Agent 教程及 Harnesses 中的完整框架列表。 omni run 用于从 YAML 配置启动自定义 Omnigent。查看 Custom Agents 了解编写方法。 不带参数的 omni 不会启动 Agent。在交互式终端中,它会后台启动本地服务/主机并返回;要启动 Agent,需指定名称(如 omni polly、omni claude……)或使用 omni run。在非交互式 Shell(管道或 CI 环境,无 TTY)中,裸 omni 会打印 --help 帮助信息,而非阻塞在登录提示上。 CLI 覆盖项 运行时可覆盖执行器(executor)配置值,无需修改 YAML: omni run agent.yaml --harness codex --model gpt-4.1-mini

--harness 和 --model 标志直接映射到执行器配置块。这使得你能在不同 LLM 后端间复用同一份配置。

此后,Agent 会流式输出其思考与行动过程。工具调用实时运行,你能即时看到文件写入、Shell 命令和 API 调用落地。会话与 Web 界面保持双向同步:在终端运行 Agent,随时打开浏览器查看文件差异或行内注释。

会话与对话 会话即对话。所有消息、工具调用和文件变更都存在于同一个连续线程中。会话是 Omnigent 的核心工作单元,其三大特性使其极具价值:

Agent 无关。会话属于你,而非特定 Agent。可随时分叉(fork)会话在副本中继续工作(omni run --fork )。若要切换到不同 Agent,可在 Web UI 中点击“克隆会话”,或向 POST /v1/sessions/{id}/fork 传递 agent_id 参数。会话绑定的 Agent 无法原地更改。 持久化。每个会话都有唯一的对话 ID,生命周期超越当前终端窗口。合上笔记本,明天回来,从上次中断处继续:omni resume 共享。任何 Omnigent 都可读取你有权限访问的其他会话历史。启动新任务时,Agent 已具备来自先前工作的上下文。

自定义自动会话标题 新会话会根据首条消息自动生成标题,无需手动命名即可保持会话列表清晰。你可通过自然语言指引(在 Omnigent 配置中)来控制这些标题的风格或格式: omni config set --global \ 'session_title_instructions=Prefix titles with the current date as lowercase mon-dd. Use PR-number-short-name for pull requests, issue-number-short-description for issues, and a short snake_case activity otherwise.'

隔离的标题生成器会获取当前日期(YYYY-MM-DD 格式),然后将你的要求应用于首条用户消息。超过 60 字符的生成标题会被拒绝,并保留首条消息的回退标题。 你的要求同样适用于 Agent 后续通过 sys_session_rename 工具发起的改名,而不仅限于首条消息标题。当设置了自定义要求时,Agent 建议的标题会在生效前重新格式化以符合要求;若格式化失败,则保留当前标题。 若未设置自定义要求,Agent 的建议将原样使用,而你手动执行的改名永不被重新格式化。 session_title_instructions 属于服务端独占的元数据配置,而非 Agent 可移植指令的一部分,因此必须使用 --global 设置。设为项目本地键(.omnigent/config.yaml)会被拒绝,且 omni config list 会将任何项目本地值标记为“已忽略的用户级专属设置”。该设置在本地 Omnigent 服务重启后生效,作用于新会话标题和 Agent 改名。 对于较长的指令,直接编辑 ~/.omnigent/config.yaml 并使用 YAML 块标量: session_title_instructions: | Prefix every title with the current date as lowercase mon-dd. For pull requests use mon-dd-PR-number-short-name. For issues use mon-dd-issue-number-short-description. For other work use mon-dd-short_snake_case_activity. 部署服务器。在共享服务器上,运维人员需在传入 omni server --config 的 YAML 中设置相同的 session_title_instructions 键;它将应用于该服务器上的所有会话。无效值(非字符串,或超过 4,000 字符)会被忽略,并回退到默认标题提示词。

何时使用终端 当你希望紧贴命令行时,终端优势尽显:

快速迭代。纯键盘操作,无需切换至浏览器。 SSH 环境。在无浏览器的 SSH 场景下可用。 低带宽连接。纯文本传输,开销极小。 脚本化与自动化。可与其他 CLI 工具组合。

评论 (0)