ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

Trellis Channel 本地多智能体协作运行时深度解析:事件日志、Worker 治理与项目级定制

Trellis Channel 本地多智能体协作运行时深度解析:事件日志、Worker 治理与项目级定制 桌面应用【免费下载链接】EcoPaste跨平台的剪贴板管理工具 | Cross-platform clipboard management tool项目地址https://gitcode.com/ayangweb/EcoPaste点击查看免费下载trellis channel是随 Trellis CLI 一起分发的本地多智能体协作运行时主 AI 会话可以派生对等的 worker 进程Claude Code、Codex或.trellis/agents/下任意角色定义通过追加式事件日志交换持久化消息并协调评审或头脑风暴循环——全程无需手工拼接 shell 管道。本文以仓库中的 multi-agent-channel.md 为骨架结合trellis-channel技能的 command-reference.md、workers.md、forum.md 与 progress-debugging.md 展开。读完本文你将掌握 channel 运行时在本地的文件布局、worker 守护OOM guard的配置优先级、角色卡片的编辑方式以及 spawn / wait / interrupt / forum 等核心命令的实战用法。本地系统模型三个协作表面channel 运行时横跨三个本地层面存储层Storage layer位于用户主目录持久化的追加式事件日志与 worker 状态文件。Agent 定义Agent definitions位于项目内.trellis/agents/平台无关的角色卡片由trellis channel spawn --agent name消费。项目配置Project configuration位于.trellis/config.yamlworker 守护阈值及其他 channel 开关。这三个层面共同构成一个闭环worker 通过事件日志通信角色定义决定 worker 的人设项目配置控制资源治理的边界。参考 overview.md 可知Trellis 在本地的整体架构分为 workflow 层、持久化层与平台集成层三层channel 运行时是叠加在其上的多智能体协作表面。核心路径一览路径用途~/.trellis/channels/project/channel/events.jsonl每个 channel 的追加式事件日志序列锁定、可安全重放~/.trellis/channels/project/channel/channel.lockchannel 级写入锁~/.trellis/channels/project/channel/worker.spawnlock每个 worker 的 spawn 锁由 OOM guard 使用~/.trellis/channels/project/channel/.seq序列旁车文件用于有序事件分配~/.trellis/channels/_global/channel/...通过--scope global创建的 channel项目 bucket 被共享 key 取代.trellis/agents/check.md默认 Check Agent 角色定义供--agent check消费.trellis/agents/implement.md默认 Implement Agent 角色定义供--agent implement消费.trellis/config.yamlchannel.*块worker 守护阈值与 channel 默认值项目 bucket 命名规则与环境变量覆盖项目 bucket 名由绝对项目路径推导而来斜杠被展平、非字母数字字符被替换为-与 Claude Code 的~/.claude/projects/sanitized-cwd/约定保持一致。这意味着在不同目录下运行trellis channel list默认看到的是不同项目各自的 channel 集合list --all-projects才能跨 bucket 扫描。测试或沙箱场景可通过两个环境变量覆盖默认位置TRELLIS_CHANNEL_ROOT指定根目录将整个 channel 存储迁移到该目录下。TRELLIS_CHANNEL_PROJECT指定bucket 名称覆盖由项目路径推导出的 bucket 名。何时该用 channel 运行时channel 比一次 Bash 调用或一次性 sub-agent 派发要重得多。仅在满足至少一个条件时才使用工作流需要两个及以上 agent 进行多轮对话跨 AI 头脑风暴、同行评审、调度器 worker。worker 需要作为对等进程运行主会话可以中断它、观察其进度或异步等待它。对话必须在之后持久化且可检查论坛/线程 channel、issue 板、决策痕迹。多个 worker 需要共享同一份事件日志让彼此能看到其他人的汇报。应优先使用更廉价的方案的情形一次性的 Bash 命令或单个 Agent 工具调用即可完成 → 直接做。用户只需要对某个文件做静态评审 → 读文件并内联回复。需求是记住上周讨论了什么 → 用trellis mem而不是 channel。定制点从阈值到角色卡片需求编辑位置修改默认 channel worker 空闲超时.trellis/config.yaml中的channel.worker_guard.idle_timeout。接受5m、30s等格式设为0可禁用空闲清理修改存活 worker 预算.trellis/config.yaml中的channel.worker_guard.max_live_workers。设为0可禁用 spawn 时的预算检查按次覆盖 worker 守护在trellis channel spawn上传递--idle-timeout/--max-live-workers或设置环境变量TRELLIS_CHANNEL_WORKER_IDLE_TIMEOUT/TRELLIS_CHANNEL_MAX_LIVE_WORKERS修改默认 Check / Implement worker 行为编辑.trellis/agents/check.md或.trellis/agents/implement.md。它们是平台无关的角色卡片传入--agent check|implement时由 channel 运行时注入新增角色卡片在.trellis/agents/中放入name.mdtrellis channel spawn --agent name即可识别迁移 channel 存储CI 沙箱、临时运行设置TRELLIS_CHANNEL_ROOT/path/to/dir。channel 事件随之迁移既有 channel 仍留在旧根目录切换存储作用域在每个 channel 子命令上传递--scope project默认或--scope global。改变的只是 bucket 目录其余不变worker 守护OOM Guard的配置优先级worker 守护的优先级为CLI 参数 环境变量 .trellis/config.yaml 内置默认值。内置默认值为idle_timeout: 5m、max_live_workers: 6。OOM guard 防止孤儿/空闲 worker 累积耗尽宿主机资源在每次spawn时强制执行两项策略按项目 bucket 生效空闲 TTL清理最后一次活动早于配置阈值的 worker默认5m0禁用。存活 worker 预算同一项目 bucket 中已有超过 N 个存活 worker 时拒绝新 spawn默认60禁用。清理通知会在 spawn 时写入 stderr方便操作者了解哪些空闲 worker 被清扫、新 spawn 为何被拒绝。guard 对临时 /channel runworker 一视同仁同样受空闲 TTL 与预算约束。深入运行时命令从 spawn 到 wait 的完整链路一个完整的 dispatch-and-wait 循环trellis channel create impl-task --by dispatcher --cwd /path/to/repo trellis channel spawn impl-task --provider codex --as codex-impl --timeout 30m echo Implement the schema for table X per .trellis/.../prd.md \ | trellis channel send impl-task --as dispatcher --to codex-impl --stdin trellis channel wait impl-task --as dispatcher --from codex-impl --kind done --timeout 30mspawn会 fork 一个channel __supervisorworker它负责发射spawned事件、流式输出progress并以done、error或killed收尾。worker 默认保持inbox 空闲状态直到收到send --to worker或在设置--inbox-policy broadcastAndExplicit时收到广播才被唤醒。spawn 的关键参数参数说明--agent name加载.trellis/agents/name.md提供 provider/model/as/system prompt 默认值--provider claude|codex覆盖角色卡片按适配器注册表校验--as namechannel 内的 worker 句柄默认取 agent 名--cwd pathworker 工作目录也是--file/--jsonl的 jail 根目录--model id模型覆盖--resume id恢复既有 claude 会话 / codex thread--timeout duration达到时长后自动杀进程如30s/2m/1h--warn-before durationsupervisor_warning预警提前量默认5m0ms禁用--file path可重复支持 glob将文件内容注入系统提示--jsonl path可重复Trellis 清单每行{file:..., reason:...}--by agentspawned事件的作者默认取$TRELLIS_CHANNEL_AS或main--inbox-policy explicitOnly|broadcastAndExplicit默认explicitOnly--idle-timeout durationOOM guard 空闲 TTL默认5m0禁用--max-live-workers nspawn 时存活 worker 预算默认60禁用成功事件spawned会记录pid、provider、agent、注入的files与解析后的manifests便于后续旁观者审计上下文。Agent 卡片定义 worker 的人设--agent name解析到.trellis/agents/name.md卡片名必须匹配[A-Za-z0-9._-]。默认安装自带两张卡片check.md代码质量评审者与implement.md实现型编码 worker。卡片示例--- name: check description: Code quality check expert. provider: claude ---frontmatter 字段填充spawn的默认值provider、model、asmarkdown 正文成为 worker 的系统提示角色。注意卡片不会自动附加任务文件上下文必须在每次 spawn 时显式注入。spawn 具名 agent 前应先检查项目卡片ls .trellis/agents sed -n 1,100p .trellis/agents/check.md上下文注入--file与--jsonl两个参数将内容注入 worker 系统提示中的# CONTEXT FILES块由 context-loader 组装--file path可重复、支持 glob*、**每个匹配文件被读取并拼接。--jsonl path可重复的 Trellis 清单每行为{file:path,reason:why}reason 以文件上方注释头的形式保留。加载器强制限制单文件 1 MB 硬上限超限报错、单文件 200 KB 时向 stderr 告警、组装上下文总 500 KB 时告警所有解析路径必须落在--cwd之下路径穿越 jail。针对任务目录 spawn 一个 check agent 的示例TASK.trellis/tasks/05-13-example trellis channel spawn cr-example --agent check --provider codex --as check-cx \ --file $TASK/prd.md \ --file $TASK/design.md \ --file $TASK/implement.md \ --jsonl $TASK/check.jsonl \ --cwd $PWD --timeout 30mspawned事件同时记录字面files数组与--jsonl展开的manifests审计轨迹因此能还原 worker 实际看到的内容。命名与路由--as的双重语义在send/wait/interrupt中说话者身份事件的作者。在spawn中其他 agent 用--to寻址的 worker 句柄。多个 worker/provider 参与同一 channel 时应使用显式、稳定的名字trellis channel spawn cr-feature --agent check --as check-claude trellis channel spawn cr-feature --agent check --provider codex --as check-cx trellis channel wait cr-feature --as main \ --from check-claude,check-cx --kind done --all --timeout 15m--all要求提供--from并阻塞至所列每个 worker 都产生匹配事件超时以退出码 124退出并向 stderr 打印timeout: still waiting on ...。软中断interrupt协作式转向channel interrupt追加一个interrupt事件reason 为user并在适配器支持时发出 provider 级回合中断与替代指令。适用于希望 worker 立即放弃当前回合、按新输入行动且不丢失会话的场景echo Stop refactoring the parser — switch to fixing the failing test in src/foo.ts \ | trellis channel interrupt impl-task --as dispatcher --to codex-impl --stdin必填参数为--as agent调用者身份与--to agent目标 worker。追加事件kind: interrupt可被下游wait/messages以--kind interrupt订阅。低优先级提示应改发普通 tagged 消息让 worker 在下一回合再处理。硬中断kill--resume保证可收敛的转向路径当 worker 必须立即停止失控循环、错误指令已在飞行中、适配器不响应interrupt时使用kill。supervisor 按 SIGTERM → 8 秒宽限 → SIGKILL 升级执行CLI 在真正用到 SIGKILL 时写入killed事件保证事件日志如实。--force直接 SIGKILL并连带杀死内部 worker pid。副作用清理pid、worker-pid、config、spawnlock旁车文件保留log、session-id、thread-id供取证与恢复。trellis channel kill impl-task --as codex-impl trellis channel spawn impl-task --as codex-impl --provider codex \ --resume $(cat ~/.trellis/channels/bucket/impl-task/worker.session-id) echo STOP — new instructions: ... \ | trellis channel send impl-task --as dispatcher --to codex-impl --stdin当interrupt无法收敛时kill --resume就是保证可用的重定向路径。Worker Inbox API唤醒与投递的精确控制inbox 是 worker 唤醒所依赖的 channel 表面由两个开关控制Inbox 策略spawn --inbox-policyexplicitOnly默认仅对send --to worker或interrupt --to worker唤醒与broadcastAndExplicit额外对无--to的广播唤醒。投递模式send --delivery-modeappendOnly无论 worker 状态都追加、requireKnownWorker若--to指定的 worker 从未 spawn 过则失败、requireRunningWorker若指定 worker 当前不存活则失败。更严格的投递模式可在调用方期望存活对等方时防止消息静默丢失。典型调度器循环# 1. 唤醒 worker。 echo Run the failing test and report. \ | trellis channel send impl-task --as dispatcher --to codex-impl --stdin \ --delivery-mode requireRunningWorker # 2. 阻塞直到其完成。 trellis channel wait impl-task --as dispatcher \ --from codex-impl --kind done,error --timeout 30m # 3. 读取最终答复。 trellis channel messages impl-task --from codex-impl --last 1 --raw所有事件发射型子命令send、interrupt、post、context add/delete、title set/clear、thread rename都将追加的事件以单行 JSON 打印到 stdout使 inbox 层易于脚本化。事件模型--kind才是唯一的完成信号channel 事件被严格限定在CHANNEL_EVENT_KINDS白名单内create、join、leave、message、thread、context、channel、spawned、killed、respawned、progress、done、error、waiting、awake、undeliverable、interrupt_requested、turn_started、turn_finished、interrupted、supervisor_warning。传入白名单之外的值会抛出Invalid --kind x. Must be one of: …。--kind只能出现在waitCSV、OR 语义与messages单值上send与run无法产生自定义 kind——每次send都写入message事件。注意send没有--tag、也没有--kind标志。对等待 worker 完成的调度器而言实操规则是用--kind done,turn_finished判断worker 完成了一个回合——这是 supervisor 自动触发的系统事件。只有真正需要回合中中止行为时才用trellis channel interrupt命令。不要发明用户侧 tag 作为完成信号没有--tag过滤器worker 在最终消息里写的自定义字符串只是message事件内的普通文本wait匹配不到它。长正文务必走 stdin 或文件trellis channel send T --as A --stdin /tmp/message.md trellis channel send T --as A --text-file /tmp/message.md论坛型 channel可搜索的线程化协作channel 的--type在create时确定、不可更改chat默认平铺消息时间线与forum线程化。两者的默认读路径是forum 摘要 → 单线程时间线 → 当前上下文。创建全局论坛板trellis channel create design-feedback \ --type forum \ --scope global \ --description Cross-project design feedback board. \ --context-raw One thread per design topic; close when resolved. \ --by main线程生命周期由opened→comment/status/summary构成关键区分--description是持久线程描述回答这个线程关于什么--text/--stdin/--text-file是事件正文。--labels/--assignees是 CSV 且为替换语义不追加。--summary是滚动总结在status closed时设置它是标记线程已解决的标准做法。--thread key除opened外每个 action 都必须提供实践中opened也要求不存在匿名线程。读取论坛时不要直接解析events.jsonlforum channel 把多个逻辑线程复用到同一份日志上手工解析会混淆线程、错过生命周期事件、忽略 worker inbox 游标。应使用forum、thread、messages --thread子命令做状态投影。调试与审计Pretty 视图 vs--raw原始日志Pretty 输出是操作者仪表盘可能截断长 progress delta、工具名、多行状态字段与超长论坛标题。规则是绝不从截断的 progress 行诊断 worker。当 worker 看似卡住、progress 行中断或 action 字段显示...时切换到--raw——每行一个 JSON 事件与events.jsonl中一模一样不丢任何内容。# Pretty操作者视图 trellis channel messages channel --kind done --last 10 trellis channel messages channel --kind error --last 10 # Raw诊断视图——每行一个 JSON trellis channel messages channel --raw --kind progress --last 20 trellis channel messages channel --raw --last 50progress事件的关键字段都在detail下detail.text_delta增量模型输出跨事件拼接可重建流式回复、detail.tool_name/detail.tool_input即将运行或正在运行的工具调用、detail.statusstarting/running/flushing/done、detail.action语义标签。停滞 worker 诊断次序用list --all --all-projects定位 channel 文件不确定 bucket 时。确认 supervisor 与 worker PID 存活检查worker.pid与worker.worker-pid旁车文件ps验证。supervisor PID 消失但 channel 仍列出 worker 即为幽灵条目用trellis channel kill name --as worker --force清理。tail -f $CHAN/worker.log——provider / MCP / 工具启动输出不会上 channelworker 日志是规范诊断源。trellis channel messages channel --raw --last 50检查最后原始事件。发出progress却无message/done的 worker 通常正在流式输出中途或阻塞于工具调用。常见的活着但沉默原因provider 冷启动、启动时阻塞的 MCP 服务器、等待挂死的工具子进程结果、模型被限流。wait的退出码约定0匹配成功、124超时、1/2错误wait --all超时时 stderr 会点名仍未到齐的 worker。与其他本地层的关系Workflow 层使用 channel 派发的工作流如channel-driven-subagent-dispatch指示主 agent 调用trellis channel spawn --agent check/--agent implement而非平台 sub-agent。若.trellis/agents/check.md或implement.md缺失trellis workflow --template id会在安装时打印非阻塞警告误删后可用trellis update恢复。Task 层channel worker 不持有任务状态。监督方主会话通过 worker inbox 传入当前任务路径worker 从磁盘解析任务工件。Spec 层worker 读取.trellis/spec/的方式与主会话一致channel 运行时不会绕过 spec 上下文加载。平台集成层channel 运行时是平台中立的不依赖.claude/、.codex/或任何平台目录适配 provider 输出Claudestream-json、Codexapp-server的适配器位于 Trellis CLI 二进制内部而非项目内。平台 sub-agent 文件 vs channel worker编辑.claude/agents/trellis-implement.md及其它平台.X/agents/下的对等文件不会改变 channel 运行时 worker 的行为——channel worker 加载的是.trellis/agents/name.md。平台专属 agent 文件服务于主 AI 会话的直接 sub-agent 派发与 channel 派生的 worker 无关。这条分割规则由 trellis-meta SKILL 固化详见 platform-files/agents.md 与 trellis-meta SKILL.md。运行时使用注意事项本文只覆盖本地文件布局与定制旋钮具体命令语法、forum/thread 模式、worker 句柄、进度检查以及--kind done/--kind turn_finished的调度器等待模式请加载随 Trellis 捆绑的trellis-channel技能在trellis init/trellis update后自动安装到各平台技能目录。该技能的命令参考与运行时使用完全对齐见 trellis-channel SKILL.md且命令语法可能随版本调整应以安装后的trellis channel --help为准。以下首查命令可用于快速建立上下文trellis --version trellis channel --help trellis channel list --all trellis channel list --scope global --all赞分享桌面应用【免费下载链接】EcoPaste跨平台的剪贴板管理工具 | Cross-platform clipboard management tool项目地址https://gitcode.com/ayangweb/EcoPaste点击查看免费下载相关推荐Trellis Channel 多智能体协作运行时实战从频道命令到事件级排障的完整指南Trellis Channel 多智能体协作运行时实战从频道命令到事件级排障的完整指南 导读 Trellis Channel 是 Trellis 的本地多智能桌面应用EcoPaste 中的 Trellis 本地架构全解从 trellis init 到 workflow、channel 多智能体运行时与跨会话记忆的定制指南EcoPaste 中的 Trellis 本地架构全解从 trellis init 到 workflow、channel 多智能体运行时与跨会话记忆的定制指南桌面应用EcoPaste 仓库内 Trellis Channel CLI 全命令参考多 Agent 协作运行时 command-reference 深度解析EcoPaste 仓库内 Trellis Channel CLI 全命令参考多 Agent 协作运行时 command reference 深度解析 本篇文章桌面应用上一篇终极node-http-proxy多租户代理指南如何实现完美资源隔离与共享下一篇Coinpunk交易流程详解发送与接收比特币的完整操作手册创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表