跳至文档内容

Kavor 支持的 Connections 矩阵

Connection 不只是 Canvas 上画出的一条线。它声明两个 Nodes 参与同一个图,并定义这个组合为工作增加的能力。

并非所有组合都有效。每个受支持的组合都有特定合同:有些 Connections 让上下文可达,有些允许由 Kavor 中介的操作,还有 两种会通过环境变量把规范路径提供给 Terminal。

本页是这些合同的公开权威参考。

如何理解 Connection

Connection 有三项不同责任:

  1. 存在性: 把 Nodes 连接到同一个可达图组件中。
  2. 参数: 当组合需要配置时,记录必填参数。
  3. Guardrails: 从两个 Nodes 通常允许的行为中减去能力。

Connections 是双向关系。Kavor 以规范顺序存储两个 endpoints,但这个顺序不表达流程、控制或优先级。消息仍有发送者和 接收者;Trigger 仍有目标。这些方向属于具体操作,而不属于持久化的 Connection。

支持的组合

Node 组合Connection 允许的能力参数可用 Guardrail主要示例
CodingAgent+Specification读取元数据和规范 Markdown,使用 lifecycle,并在允许时记录持久 outputs。specification_read_onlySpec Writer、Builder 和 Reviewer 共享同一合同。
CodingAgent+Sticky Note读取和写入带版本控制的非正式 Markdown 记忆;每次写入选择 append 或 replace。sticky_note_read_only让待定决定、进度、findings 和 handoffs 保持可见。
CodingAgent+Terminal读取 output、运行命令、跟踪或中断关联执行,并在允许时与 foreground 进程交互。terminal_read_only诊断、tests、日志或协助受监督的 SSH 会话。
CodingAgent+File让 filesystem 中的规范来源在图中明确,以便在允许时读取、评审或修改。file_read_only界定模块、PDF、图片、报告或配置。
CodingAgent+CodingAgent为异步消息、回复、独立评审和并行工作形成可达图。Builder 向 Reviewer 请求评审。
Specification+Terminal把 Specification 的规范绝对路径导出到 Terminal 会话。必填环境变量名验证、检查或比较 Specification Markdown。
File+Terminal把 File 的规范绝对路径导出到 Terminal 会话。必填环境变量名无需在窗口间复制路径即可运行脚本或使用 SQL 文件。
Trigger+CodingAgent在配置时间向已有活动会话的 CodingAgent 发送 prompt。唤醒 Maintainer 分析失败、编写报告并请求评审。
Trigger+Terminal在配置时间向活动 Terminal 会话发送命令。运行 tests、数据库检查或维护脚本。

Guardrails 只限制,不授予访问权

Connection 从该组合已实现的能力开始。Guardrail 在此基础上记录用户选择的限制:

GuardrailConnection效果
specification_read_onlyCodingAgent+Specification保留读取,禁止通过 Kavor 更改 lifecycle 和 outputs;直接编辑 Markdown 也成为明确的只读合同。
sticky_note_read_onlyCodingAgent+Sticky Note保留读取,阻止 append 或 replace 内容。
terminal_read_onlyCodingAgent+Terminal保留 Terminal 检查,阻止改变会话、进程或输入的操作。
file_read_onlyCodingAgent+File声明 agent 不应修改规范来源。

Guardrail 属于 CodingAgent 与资源之间的直接 Connection。图中的替代路径不会消除这个直接组合上的限制。

如果 Guardrail 阻止某项由 Kavor 中介的操作,系统会在产生效果前拒绝它。Files 和 Specifications 正文也可能通过 harness 自己的 filesystem 工具访问;此时 Guardrail 是可见、受监控的合同,而不是操作系统 sandbox。

Guardrail 不会创建 Connection、让 Node 可达或增加权限。如果一个资源不应参与图,就不要创建 Connection。

带环境变量的 Connections

只有两种组合拥有持久参数:

  • File + Terminal
  • Specification + Terminal

两种情况都需要选择环境变量名。提供给 Terminal 的值是来源的规范绝对路径,绝不是文件内容。

例如,连接为 CHECK_SQL 的 File 可以在 shell 中这样使用:

sqlite3 app.db < "$CHECK_SQL"

Kavor 在 Terminal 会话启动时应用该值。如果 shell 已打开时 Connection 或参数发生变化,界面会提示变量等待会话重启。 TERMCOLORTERM 是保留名称,不能用作这些参数。

Trigger 的特殊限制

Trigger 最多只有一个直接目标:CodingAgent 或 Terminal。它不能直接连接 Specification、File 或 Sticky Note,也不能把同一 次 firing 分发到多个目标。

图的其余部分可以扩展目标能做的事情,却不会扩大权限。被 Trigger 唤醒的 CodingAgent 可以在相同 Guardrails 和会话限制 下使用已经可达的 Nodes。

要成功送达,Kavor 必须正在运行,目标会话也必须处于活动状态。Trigger 不会启动你关闭的会话,不会决定工作目标,也不 会把外部效果变成 exactly-once 操作。每个 TriggerFiring 都会保存持久结果以供检查。

不存在的组合

Kavor 会拒绝矩阵中未列出的任何组合,其中包括:

  • Trigger + Specification;
  • Trigger + File;
  • Trigger + Sticky Note;
  • Specification + File;
  • Specification + Sticky Note;
  • File + Sticky Note;
  • File + File;
  • Sticky Note + Terminal;
  • Sticky Note + Sticky Note;
  • Terminal + Terminal。

Node 也不能连接自身。反转相同的两个 endpoints 不会创建另一条 Connection,因为持久关系没有方向。

Canvas 上的距离、消息中的提及或同属一个 Workspace 都不能替代 Connection。如果某个组合未出现在本页,仅仅靠近另一个 Node 不会获得任何能力。

选择能解决工作的最小 Connection

连接两个 Nodes 前,先问缺少的是哪项具体能力:

  • agent 是否需要持久意图?连接 Specification;
  • 人和 agent 是否需要共享工作记忆?连接 Sticky Note;
  • agent 是否需要执行或观察进程?连接 Terminal;
  • 规范来源是否必须明确?连接 File;
  • 另一个视角是否会改善实现或评审?连接另一个 CodingAgent;
  • 时间是否真的应该启动活动?最后加入 Trigger。

好的 Connection 让工作更明确。如果你无法说明它增加了什么能力,图很可能不需要它。

继续阅读

最后审核 2026年8月7日验证版本 Kavor 1.3.0分享文档反馈