单个 Node 已经有用;图让工作成为系统。
Kavor 不要求你放弃喜欢的 coding agent、隐藏终端,或把每个决定都变成新的聊天。它把参与者、工具和上下文放在同一个 Canvas 上,让你看清谁在工作、使用什么资源,以及受哪些边界约束。
Canvas 上的每个一等元素都是 Node。CodingAgent 是 Node,Specification 也是。Sticky Note、Terminal、File 和 Trigger 共享同一空间,因为它们都能参与工作,只是各自承担不同责任。
Node 单独存在时已经有价值。创建 Connection 后,这种价值会成为明确的能力。多条 Connections 形成图后,上下文、 执行、记忆和协作便不再散落在相互隔离的窗口与会话中。
模型如下:
Node → Connection → 图 → 人的决定
这个顺序描述工作如何获得结构。Connections 不是持久化的箭头,也不是自动执行下一个方框的流程;它们是 Nodes 之间 可见的关系。
一个 Canvas 可以同时承载持久意图、共享记忆、执行、文件和定时触发原因,并保持参与者及其 Connections 清晰可见。
Connection 真正改变了什么
Connection 回答一个实际问题:这两个 Nodes 能一起做什么?
根据组合不同,它可以让 CodingAgent 使用 Specification、写入 Sticky Note、操作 Terminal、把 File 作为明确范围,或与 另一个 CodingAgent 对话。它也可以把 File 的规范路径提供给 Terminal,或在指定时间唤醒已有活动会话的 CodingAgent。
同时,Connection 也建立边界:
- Canvas 上相邻的 Nodes 不会因此互相获得访问权;
- 在消息中提到一个 Node 不会授予能力;
- 并非所有 Node 组合都受支持;
- Guardrail 可以限制 Connection 已授予的能力;
- 图让上下文可达,但不会自动批准操作。
结果少了“魔法”,却更加实用:你能在工作前、工作中和工作后检查结构。
七种 Nodes
CodingAgent:让你喜欢的 harness 成为图中的参与者
CodingAgent 是你已经使用的原生 provider,运行在它自己的终端界面中。Kavor 不用通用聊天替代 Claude Code、Codex 或 Google Antigravity,而是保留各 harness 的原生体验,并把它放到 Canvas 上。
每个 CodingAgent 都可以有清晰角色。只要 harness 支持,它就保留原生的 provider、模型和 effort 选项。你可以让 Spec Writer 专注问题和决策,让 Builder 专注实现,让 Reviewer 负责质疑结果。
相连的 CodingAgents 可以交换异步消息。你仍能在 Messages 面板查看对话并在需要时介入。把它们连接到 Specifications、 Files、Sticky Notes 和 Terminals 后,图会明确展示哪些资源参与了这项工作。
还是同一个 harness,只是上下文和能力变得可见。
Specification:跨越会话的意图
Specification 用持久 Markdown 记录决策、范围、限制和验收标准。它可以描述架构基础、集成、领域建模、feature、模块, 或一组边界明确的修复。
你可以手动编写,也可以与 CodingAgent 共同完成。面对困难主题,在实现前投入最好的推理能力通常值得:此时深入思考, 往往比后来消除歧义更便宜。
Specifications 具有 lifecycle。Draft 用于调查和决策;Ready 表示合同可以实现;In progress、Blocked 和 Done 让工作状态保持可见。只有真正满足验收标准后,Done 才有意义。
把同一 Specification 连接到承担不同角色的 agents,就能分别指导编写、实现和评审,而不依赖某一次对话的记忆。
Sticky Note:共享工作记忆
Sticky Note 是 Canvas 上的便利贴。你可以像使用普通速记一样记录问题、假设、临时决定、findings 和后续步骤。
连接 CodingAgent 后,它多了一双手。Agent 可以与你共同维护内容:在形成 Specification 时汇总待定决定;在实现过程中 记录需要你关注的事项;或回答“已经做了什么、正在做什么、接下来做什么”,而不把状态埋进聊天历史。
Sticky Notes 适合作为非正式、可见的记忆。当一项决定成为实现和未来维护所需的持久合同,应把它提升为 Specification, 而不是永远留在便签里。
共享上下文不代表智能体可以自行整理你或其他参与者的笔记。请明确它应维护哪张便签、保留哪些内容; 规则和示例见Sticky Note 指南。
Terminal:始终可见的执行
Terminal 把 shell 保留在同一个可视 Workspace 中。你可以在多个终端之间切换、观察日志、运行检查,或保持与远程机器的 连接,而不离开周围的 Canvas。
连接 CodingAgent 后,你们可以在同一个 Terminal 中工作。Agent 能检查 output、在允许时运行命令、跟踪关联执行并协助 诊断。人的输入始终优先,Guardrail 也可以让 Connection 保持只读。
Files 和 Specifications 还能通过环境变量把路径提供给 Terminal。Trigger 可以把定时命令直接送到活动的 shell 会话。
Terminal 不会把执行藏在不透明的自动化背后;进程、命令和结果始终可见。
File:参与 Canvas 的文件
File 就是文件。价值在于让它的规范来源在图中变得可见而明确。
连接 CodingAgent 后,它可以界定要读取、评审或修改的文件。在 Canvas 上,你也可以保持文本、图片或 PDF 可见,同时组织 其他工作。
连接 Terminal 后,File 的绝对路径可以通过环境变量暴露。这样就能直观地把脚本、SQL 文件、配置或其他材料作为命令输入, 无需在窗口之间复制路径。
File 不会变成一次性 attachment;它仍是 filesystem 中的真实来源。
WebBrowser:向人与智能体开放的 Web
WebBrowser 把真实 Chromium 页面放到 Canvas 上。你可以浏览、保留标签页并跟踪页面变化,而不必离开 Workspace。
连接到 CodingAgent 后,它不再只是视觉参考。智能体可以观察并操作你看到的同一实时页面:导航、点击、 填写字段、等待状态并捕获证据。Connection 让浏览器可达;它不会绕过身份验证、权限或人的决定。
浏览器 profile 专供 Kavor 使用,并由其 WebBrowsers 共享。删除 Node 后,cookies 和会话仍可能保留,直到你在 Settings 中清除浏览器数据。为了支持开发,此 profile 接受自签名、过期和私有证书。因此恶意网络可以向它 提供任意证书;尤其在登录服务时,请明确意识到这种暴露。
在同一窗口切换 Workspace 时,Kavor 会保留实时页面。返回后,WebBrowser 无需重新加载即可恢复显示,连接的 CodingAgent 在 Workspace 不可见时也能继续操作该状态。关闭标签页、删除 Node 或结束会话会终止这种连续性。
查看人与 CodingAgent 如何在同一页面上协作 → (在新标签页中打开)
Trigger:可见的活动起因
Trigger 在时间上安排一个操作。它可以像操作系统 cron 一样把命令交给 Terminal,也可以向已有活动会话的 CodingAgent 发送清晰 prompt。
当目标已连接其他 Nodes 时,Trigger 的价值更大。它可以唤醒一个 agent:检查 File、在 Terminal 中运行验证、把报告写入 Sticky Note,并请求另一个 CodingAgent 做独立评审。
这样,一个日历时刻就能启动小型自治或半自治系统。Trigger 发起活动;图提供上下文、工具、记忆和协作。
Trigger 不会自行决定什么值得做,不会扩大权限,也不会启动你关闭的会话。它只有一个直接目标:CodingAgent 或 Terminal。
当 Nodes 形成图
当每个 Node 都有明确责任,每条 Connection 都表达真实需求时,Canvas 的价值才会显现。下面三个图展示这种递进。
从意图到评审
Specification → Builder → Reviewer → 人的决定
Specification 保存合同,Builder 实现,Reviewer 按验收标准核对结果。Sticky Note 保存 findings 和工作决定;Terminal 提供 tests 和检查等证据。
Connections 不会自动执行这个顺序。它们让所需参与者和能力在同一个图中可达。
定时维护
Trigger → Maintainer
Maintainer 连接到包含输入数据的 File、用于检查的 Terminal、记录报告的 Sticky Note,以及提供独立判断的 Reviewer。
Kavor 运行且目标会话处于活动状态时,Trigger 会在配置时间送达 prompt。CodingAgent 使用原有上下文和边界工作。你回到 Workspace 后可以查看结果、消息和证据。
受监督的运维命令
Trigger → Terminal
包含 SQL 或脚本的 File 通过环境变量把路径提供给 Terminal。Trigger 把定时命令送到活动会话。连接 Terminal 的 CodingAgent 可以协助分析结果,而你始终能看到整个过程。
这个图自动化的是“原因”和“执行”,不会假装系统能自行理解成功的含义。
复用图,而不必重建每个 Node
一个有效的小组合,例如 Builder、Reviewer 和 Sticky Note,可以复制到另一项任务,也可以移动到另一个 Workspace。 请选择所有应一起转移的 Nodes:只捕获所选 Nodes 之间的 Connections。
复制或移动
- 在 Canvas 上选择 Nodes,将焦点移出编辑器、Terminal 和 WebBrowser 页面。
- macOS 使用
⌘C复制,Windows/Linux 使用Ctrl+C;移动使用⌘X或Ctrl+X。 上下文菜单也提供Copy Node/Copy Nodes和Cut Node/Cut Nodes。 - 留在同一 Canvas,或打开目标 Workspace,也可以在另一个 Kavor 窗口中打开。
- 将指针放在希望出现组合的位置,使用
⌘V或Ctrl+V。如果 Canvas 中没有指针位置, 则粘贴到可见区域中心。通过上下文菜单粘贴时使用菜单打开的位置。 - 继续工作前,检查目标中的 Nodes、Connections 和资源。
相对布局保持不变。复制可以多次粘贴;剪切在移动完成后消耗。剪切并不立即删除组合:
尚未粘贴时,在源 Canvas 按 Esc 可以取消。已完成的粘贴支持 Undo/Redo,但如果 Nodes 随后被修改,
Kavor 可能拒绝会覆盖这些修改的撤销。
结构不是会话,也不是备份
图剪贴板只存在于当前运行的 Kavor 进程中。应用重启会丢失捕获,其他复制替换剪贴板也可能使其失效。 它不是用于跨机器共享的导出格式。
- 外部 Connections: 不复制指向选择范围外 Nodes 的连接。移动到另一个 Workspace 时, 源端这些连接会被移除;请确保选中了需要的全部上下文。
- CodingAgent 和 Terminal: 复制不会克隆对话、进程或执行历史。跨 Workspace 移动会关闭源会话。 CodingAgent 不带走 Git/worktree 关联,而是在目标 Workspace 的上下文中开始;工作前请检查目录和配置。
- File: 粘贴引用同一个实体文件,不复制其字节。如果目标已经有该文件的实体化 Node,就复用它。 修改源仍会影响同一个文件。
- 另一个 Workspace 中的 Specification: Markdown 显示为 File,而不是具有相同 lifecycle 的新 Specification。Specification 和元数据仍属于原来的 Workspace。
- Trigger: 复制的 Trigger 初始为暂停状态。使用
Resume前检查目标和 payload。 尚有未解决 delivery 的 Trigger 不能移到另一个 Workspace;等到最终状态后再试。
如果粘贴失败是因为剪切的选择发生变化,或源已不存在,请检查源端并重新捕获。 复制了图不等于证明智能体已经完成工作。
要把文件或图像粘贴到会话输入中,而不是把 Nodes 粘贴到 Canvas,请使用 Terminal 操作步骤。
从工作出发,而不是追求 Node 数量
更大的 Canvas 不一定更好。先建立能让结果可验证的最小结构:
- 定义必须发生的事情;
- 当决策、范围或标准需要长期保留时,加入 Specification;
- 选择 CodingAgent 并赋予清晰角色;
- 当具体范围必须明确时,连接 File;
- 当任务需要执行或证据时,连接 Terminal;
- 当人和 agent 需要共享工作记忆时,使用 Sticky Note;
- 当工作需要观察或操作实时页面时,连接 WebBrowser;
- 当独立评审或并行工作确实改善结果时,加入另一个 CodingAgent;
- 当时间确实是活动起因时,最后加入 Trigger。
目标不是填满 Canvas,而是建立一个足够小、易于理解,同时足够完整、能保留意图、执行、证据和决定的系统。
继续阅读
- 查看受支持的 Connections 矩阵,了解每种组合的精确合同。
- 使用 Specification、两个 CodingAgents 和一个 Sticky Note 闭合你的第一个 loop。
- 阅读如何选择 CodingAgents 和角色,分离构思、实现、评审和交付。
- 使用 Sticky Note 作为共享工作记忆。
- 了解 File 如何把规范来源变成上下文和范围。
- 在 WebBrowser 中与 agent 一起开发、调试和测试。
- 返回什么是 Kavor?,复习完整产品模型。
