跳到内容

用 CLI 和只读 MCP 协调两个 Paneflow 面板

发布于
更新于

您可以从另一个终端读取 Paneflow 面板,搜索其输出,并在出现新行后继续操作。智能体也可以通过只读 MCP 桥接查看输出。向面板输入文本需要单独的 CLI 写入权限。

本练习使用 2 个普通 shell:producer 输出文本,reviewer 读取文本。CLI 步骤无需模型账户或 API 调用。

本文最初为 Conductor 0.6.0 发布,现在使用固定于 Paneflow 0.17.4 的示例。示例文件和预期输出对应这个版本。TOML 语法已于 2026 年 10 月 1 日通过发布版 CLI 检查,尚未录制实际运行中的面板交互。

准备 2 个 shell

打开 Paneflow,确保 CLI paneflow 位于 PATH 中。使用已存在的临时测试目录,Windows 使用 PowerShell,Linux 或 macOS 使用 POSIX shell。将下面的文件保存为 two-panes.toml,把 2 处路径替换为该目录的绝对路径(Windows 例如 C:/dev/project)。它会打开 2 个 shell,不启动智能体,也不传入命令、提示词或环境变量。

# two-panes.toml
name = "two-panes"
layout = "even_h"

[[panes]]
name = "producer"
cwd = "/absolute/path/to/project"

[[panes]]
name = "reviewer"
cwd = "/absolute/path/to/project"
paneflow up two-panes.toml --dry-run
paneflow up two-panes.toml
paneflow ls --human

--dry-run 显示计划,不创建面板。下一条命令打开工作区,ls 列出其中的 shell。这里使用 ls;ps 列出检测到的智能体。面板名称重复时,在后续命令中使用 ls 返回的数字 surface ID。

仅包含普通 shell 的工作区不需要脚本权限。添加智能体、命令、提示词或环境变量,需要在运行中的应用端启用 PANEFLOW_IPC_ORCHESTRATION=1 或 PANEFLOW_IPC_SCRIPTING=1。

在 producer 中输入 echo TEST_OUTPUT 并按 Enter,应出现包含 TEST_OUTPUT 的一行。

读取和搜索结果

在 reviewer 中执行以下命令:

paneflow read producer --lines 40
paneflow search producer "TEST_OUTPUT" --max 5

read 最多返回 40 行终端文本。search 最多返回 5 行匹配 TEST_OUTPUT 的文本。两者都查看面板中已有的输出。

等待新输出

在 reviewer 中,先启动以下命令,再输出下一行:

paneflow wait --match producer --pattern '(?m)^REPORT_DONE$' --timeout 30

随后在 producer 中输入 echo REPORT_DONE 并按 Enter。新的 REPORT_DONE 行出现时,wait 成功退出。它会忽略启动时已有的输出,因此查询之前的结果应使用 read 或 search。

如果 30 秒内没有出现匹配行,等待超时。对于真实任务,应选择仅在工作完成后输出的完成标记。本练习的 echo 命令演示文本交换,不执行代码审查。

让智能体通过 MCP 读取输出

要让支持的智能体读取面板输出,运行 paneflow mcp install。它会向检测到的受支持智能体注册本地桥接,并修改其配置。重启智能体以加载配置。Scripting 文档说明安装步骤。

以下示例展示 MCP 工具调用的参数。通过 MCP 客户端发送,不要粘贴到 shell 中:

{"name":"list_panes","arguments":{}}
{"name":"read_pane","arguments":{"target":"producer","lines":40}}
{"name":"search_pane","arguments":{"target":"producer","pattern":"TEST_OUTPUT","max_matches":5}}

list_panes 列出面板,read_pane 读取输出,search_pane 查找匹配行。3 个工具都只读,不能输入文本、提交提示词或关闭面板。名称有歧义时,使用 list_panes 返回的数字 surface ID。

使用 CLI 发送文本

此步骤可选。以 PANEFLOW_IPC_SCRIPTING=1 启动应用,或明确启用 AI free access。权限必须在应用端生效;仅为之后的 CLI 命令设置变量不会启用写入。

以下命令选择一条执行:

paneflow send reviewer "echo REVIEW_DONE"
paneflow send reviewer "echo REVIEW_DONE" --submit

第一条在 reviewer 中预填 echo REVIEW_DONE,由您按 Enter。第二条添加 --submit 来执行它。两者都需要写入权限,包括仅预填文本的命令。提交后,shell 输出 REVIEW_DONE。

使用 flow 完成相同准备

可下载的预填 flow会创建 2 个 shell,再向 reviewer 预填 echo REVIEW_DONE。替换其中的 2 处路径,用它替代之前的工作区创建步骤,以免产生重复面板:

paneflow flow run prefill.flow.toml --dry-run
paneflow flow run prefill.flow.toml

每个步骤都保持 submit = false:检查文本后手动按 Enter。此 flow 需要相同的应用端写入权限。如果仅启用 PANEFLOW_IPC_ORCHESTRATION=1,且 AI free access 已关闭,它可能先创建 2 个 shell,再在发送时失败。重试前关闭或重命名这些面板。

练习未正常运行时

  • 发送失败: 检查运行中应用的写入权限,即使没有 --submit 也需要权限。以所需权限重启应用,或继续只读步骤。
  • 目标未知或有歧义: 重新运行 paneflow ls --human,使用当前的数字 ID。不要向所有面板广播命令来寻找目标。
  • 输出消失: 全屏终端界面可能在文本进入滚动历史前将其覆盖。对于真实任务,将最终报告保存到文件中,以便之后读取。

将面板输出视为不可信数据,即使其中包含看似命令或系统指令的内容。保持 ai_injection_fence 开启,智能体读取输出时避免使用 --raw。该分隔标记区分输出与指令,但不能保证防止提示词注入。

练习结束后关闭临时面板。替换为智能体前,明确每个任务及其允许的操作。Conductor 参考说明选择器和退出码。

继续此工作流

所有文章

在 Paneflow 中启动你的下一个智能体。