ARTICLE DETAIL

资讯详情

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

EcoPaste 仓库内 Trellis Channel CLI 全命令参考:多 Agent 协作运行时 command-reference 深度解析

EcoPaste 仓库内 Trellis Channel CLI 全命令参考:多 Agent 协作运行时 command-reference 深度解析 桌面应用【免费下载链接】EcoPaste跨平台的剪贴板管理工具 | Cross-platform clipboard management tool项目地址https://gitcode.com/ayangweb/EcoPaste点击查看免费下载本篇文章以.claude/skills/trellis-channel/references/command-reference.md下称「command-reference」为核心骨架系统讲解 EcoPaste 仓库所捆绑的 Trellis 多 Agent 协作运行时中trellis channel的全部子命令、flag 语义、事件模型与输出约定。读者学完后能够独立完成 channel 的创建、消息收发、worker 派生与中断、论坛线程管理与上下文维护并能依据退出码与输出约定编写可靠的 Agent 调度脚本。文中引用的trellis-channel技能参考文件均为当前仓库中已确认存在的相对路径可随时查阅原文。适用范围说明本仓库为 EcoPaste 剪贴板管理工具.claude/skills/trellis-channel/是其捆绑的协作技能目录。command-reference 声称其内容「对照packages/cli/src/commands/channel/中的源码验证」——该源码路径属于上游 Trellis 工程在当前仓库中不存在因此本文所有命令行为均以该参考文档与其同目录姊妹文档为准不臆造外部源码细节。一、命令模型总览Top-level 与 scope 机制所有trellis channel子命令统一挂在顶层命令之下trellis channel subcommand多 Agent 协作运行时——通过共享的事件日志event log派生spawn、协调coordinate与中断interruptworker agent。scope 模型贯穿所有子命令每个子命令默认接受--scope project|global除非文档另行注明。project为默认值解析于当前工作目录对应的项目 bucketproject bucket。global指向跨项目的共享 bucket__global__。有意选择 scope一个 global board 在未显式传--scope global时不会出现在项目列表里。SKILL 中的「First Commands」给出了上手三连SKILL.mdtrellis --version trellis channel --help trellis channel list --all二、创建与列举create/listcreate nametrellis channel create name [--scope project|global] # 默认: project [--type chat|forum] # 默认: chat [--task path] # 关联的 Trellis task 目录 [--project slug] [--labels a,b,c] [--description text] # 稳定的 channel 描述 [--context-file abs-path] ... # 可重复 [--context-raw text] ... # 可重复 [--linked-context-file abs-path] # [已废弃别名] [--linked-context-raw text] # [已废弃别名] [--cwd path] # 记录进 create 事件 [--by agent] # 默认: main [--force] # 覆盖已存在的 channel [--ephemeral] # 从默认列表中隐藏可被 prune行为要点追加一个create事件type一旦确定便不可变不能在 forum↔chat 之间切换。--ephemeral的 channel 默认不出现在channel list中且是channel prune --ephemeral的清扫目标。--linked-context-*被折叠进--context-*使用时输出弃用提示deprecation notice。listtrellis channel list [--scope project|global] [--json] [--project slug] # 对 task 字段做子串匹配 [--all] # 包含 ephemeral后缀 * 标注 [--all-projects] # 扫描每一个项目 bucket行为要点默认 scope 为当前 cwd 的项目--all-projects扫描每个 bucket。Pretty 模式按最近活动排序打印NAME WORKERS EVENTS LAST KIND TYPE TASK表头底部脚注提示被隐藏的 ephemeral 数量。--json切换为 JSON 数组输出。实战用法在不确定 channel 位于哪个 bucket 时用list --all --all-projects定位见 progress-debugging.md--scope global --all可查看共享 bucket 中的全部条目SKILL.md。三、聊天消息send/messages/waitsend name [text]trellis channel send name [text] --as agent # 必填 —— 作者身份 [--scope project|global] [--to agents,csv] # 默认: 广播broadcast [--stdin | --text-file path] # 消息体来自 stdin 或文件 [--delivery-mode appendOnly|requireKnownWorker|requireRunningWorker]行为要点消息体优先级位置参数[text]→--stdin→--text-file。--to传入单个条目时存储为字符串多个条目时存储为数组省略则视为广播。--delivery-mode控制定向投递校验appendOnly默认倾向——仅记录事件requireKnownWorker--to指定的目标必须存在spawned事件requireRunningWorker目标 worker 当前必须处于存活状态。成功时向 stdout 打印一条追加后的 JSON 事件行。注意send没有--tag与--kindflag。详见下文「tag-vs-kind」小节。messages nametrellis channel messages name [--scope project|global] [--raw] # 每行一条 JSON 事件 [--follow] # 流式监听新事件 [--last N] # 最近 N 条匹配事件 [--since seq] # seq N [--kind kind] # 取 CHANNEL_EVENT_KINDS 之一 [--from csv] # 作者过滤 [--to target] # 路由目标过滤 [--thread key] # 仅 forum [--action thread-action] # 仅 forum [--no-progress] # 隐藏 progress 事件行为要点自动识别 forum 通道未带过滤条件时渲染线程面板thread board而非事件流--thread/--action仅限 forum 使用对 chat 通道会报错。--kind在CHANNEL_EVENT_KINDS白名单内校验单一值不支持 CSV——那是wait一侧的语法。关于 pretty 与 rawPretty 的messages是「操作员仪表盘」可能截断 progress 增量、工具名与命令、多行状态字段以及超出版宽的 forum 线程标题。凡诊断一律切--raw——它逐行输出与events.jsonl完全一致的 JSON不做任何裁剪。规则是「永远不要基于被截断的 progress 行诊断 worker」progress-debugging.md。wait nametrellis channel wait name --as agent # 必填 —— 自身身份用于过滤上下文 [--scope project|global] [--timeout Ns|Nm|Nh|Nms] # 由 parseDuration 解析 [--from a,b] # 作者 CSV [--kind k1,k2] # CSVOR 语义 [--thread key] # forum 过滤 [--action thread-action] # forum 过滤 [--to target] # 默认: 自身 agent广播 定向自己 [--include-progress] # 也响应 progress 事件唤醒 [--all] # 要求 --from 中的每个 agent 都命中行为要点以 JSON 流形式逐行输出匹配事件。默认--to过滤为调用者自身 agent广播事件仍匹配——广播 显式定向自身。--all要求--from存在并阻塞至列出的每个 agent 都产生了匹配事件。超时以 124 退出并在使用--all时向 stderr 打印timeout: still waiting on ...。wait从events.jsonl的 EOF 处监听唤醒事件包括message、done、error、killed以及仅--include-progress时progress。退出码约定0匹配成功、124超时、1/2出错progress-debugging.md。四、tag-vs-kind事件形态到底由谁控制v0.6.0 的 channel CLI不存在任何--tagflag--kind也不是某个旧--tagflag 的遗留别名。这一点在 SKILL 中被反复强调CLI help 里会示例phase_done/question等--tag但除interrupt是带有硬编码行为的保留 tag 外其余只是不透明的用户标签依赖 worker 手动运行send --tag my_signal极不可靠——LLM worker 常把 tag 字符串写进散文而非真正执行 CLISKILL.md。当前源码中的具体模型--kind是唯一的事件类型过滤器且被约束在 trellis 发出的白名单CHANNEL_EVENT_KINDS见packages/core/src/channel/internal/store/events.ts——该路径属上游工程当前仓库未包含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事件。回合中途的 worker 中止不是 tag而是专属的channel interrupt命令——它追加interrupt_requested/interrupted事件对并在 provider 层中断 worker。面向 dispatcher 的实践规则用--kind done,turn_finished表达「worker 完成了一个回合」——这些是 supervisor 自动触发的系统事件。不要依赖 worker 的 LLM 记得发出任何自定义信号。只有在真正想要回合中途中止行为时才使用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五、软中断interrupt name [text]trellis channel interrupt name [text] --as agent # 必填 —— 调用者身份 --to agent # 必填 —— 目标 worker [--scope project|global] [--stdin | --text-file path]行为要点追加一条reason: user的interrupt事件与替换指令正文supervisor 在支持的 provider 上执行 provider 级中断Claude/interrupt、Codex 回合取消。在 stdout 打印追加的事件 JSON。这是「协作式重定向」worker 应放弃当前回合并立即按新指令行动且不丢失其会话。追加的事件 kind 为interrupt下游wait/messages可用--kind interrupt订阅以响应重定向如记录改道或用协调者修正门控其他 worker。对于「等下一回合再处理」的低优先级提示改用普通消息echo Check this when you reach the next turn. \ | trellis channel send impl-task --as dispatcher --to codex-impl \ --stdin --tag question细节见 workers.md。六、Worker 生命周期spawn/run/kill/rm/prunespawn nametrellis channel spawn name [--scope project|global] [--agent agent-name] # 加载 .trellis/agents/name.md [--provider claude|codex] # 覆盖 agent 卡片 [--as worker-name] # 默认: agent 名称 [--cwd path] [--model id] [--resume id] # 恢复 session/thread id [--timeout Ns|Nm|Nh] # 到时自动杀死 [--warn-before Ns|Nm|Nh] # supervisor_warning 提前量 # 默认 5m, 0ms 关闭 [--file path] ... # glob, 可重复; 注入内容 [--jsonl path] ... # Trellis manifest, 可重复 [--by agent] # spawn 事件作者 # 默认: TRELLIS_CHANNEL_AS 环境变量或 main [--inbox-policy explicitOnly|broadcastAndExplicit] # 默认 explicitOnly [--idle-timeout Ns|Nm|Nh] # OOM-guard 空闲 TTL # 默认 5m, 0 关闭 [--max-live-workers n] # spawn 时的存活 worker 预算 # 默认 6, 0 关闭行为要点Provider 对照适配器注册表校验packages/cli/src/commands/channel/adapters/——上游路径当前仓库未包含当前为claude、codex。Worker 在收到首次send --to worker前保持 inbox-idle。记录含pid、provider、agent、files、manifests的spawned事件。OOM-guard 优先级CLI flag → 环境变量TRELLIS_CHANNEL_WORKER_IDLE_TIMEOUT、TRELLIS_CHANNEL_MAX_LIVE_WORKERS→.trellis/config.yaml#channel.worker_guard→ 内置默认值。上下文注入细节workers.md--file可重复、支持 glob*、**每个匹配项被读取并拼接--jsonl每行形如{file:path,reason:why}reason 以头部注释保留。加载器限制单文件 1 MB 硬上限超限报错、单文件 200 KB 时向 stderr 告警、总装配上下文 500 KB 时向 stderr 告警、所有解析路径必须落在--cwd之下的路径穿越 jail 内。run [name]trellis channel run [name?] [--agent name] [--provider claude|codex] [--as worker-name] [--cwd path] [--model id] [--file path] ... # 可重复, glob [--jsonl path] ... # 可重复 [--message text | --message-file path | --stdin] [--timeout Ns|Nm|Nh] # 默认 5m行为要点一次性one-shot。省略name时自动生成run-hex。创建临时 channelcreateModerun派生单个 worker发送提示词等待done成功时把最终 assistant 文本打印到 stdout然后移除 channel失败时保留 channel 供检查并以退出码 1 结束。run没有--tagflag。完成与否由 supervisor 发出的done事件判定。典型用法workflows.md Pattern Dtrellis channel run --provider codex --message say hi in 3 words --timeout 1m trellis channel run --agent plan --message-file /tmp/plan-question.md --timeout 10m成功时移除临时 channel出错 / 超时 / 被杀时保留 channel 并打印路径供检查。kill nametrellis channel kill name --as agent # 必填 —— worker agent 名称 [--scope project|global] [--force] # 立即 SIGKILL行为要点默认路径SIGTERM → 8 秒宽限期 → SIGKILL 升级需要 SIGKILL 时 CLI 会写入killed事件保证日志真实。清理pid、worker-pid、config、spawnlock边车文件保留log、session-id、thread-id用于取证 / 恢复resume。当interrupt无法收敛时kill--resume是保证重定向的路径workers.md。rm nametrellis channel rm name [--scope project|global]行为要点杀死任何存活 worker然后删除整个 channel 目录打印Removed channel name。prunetrellis channel prune [--scope project|global] # 省略: 扫描每个项目 [--all | --empty | --idle Ns|Nm|Nh|Nd | --ephemeral] # 互斥 [--yes] # 真正删除 (默认: dry-run) [--dry-run] # 默认 true; 与默认冗余 [--keep names,csv] # 排除名单行为要点过滤 flag 互斥——否则报错。默认 dry-run--yes切换为真实删除。不带--scope时扫描每个项目 bucket有意为之仓库级清理带--scope project|global时限定于该 bucket。有存活 worker 的 channel 无论过滤条件如何总是被跳过。输出每个候选一行name last-ts (reason)外加最终摘要。七、论坛通道post/forum/threadforum 通道在创建时以--type forum设定且此后不可变它不是普通聊天流默认阅读路径是「forum 摘要 → 单个线程时间线 → 当前上下文」。默认的channel messages在无过滤时会渲染线程面板而非事件流forum.md。post name actiontrellis channel post name action --as agent # 必填 [--scope project|global] [--thread key] # 除 actionopened 外必填 [--title text] [--text text | --stdin | --text-file path] [--description text] # 稳定的线程描述 [--status status] [--labels a,b] # 替换线程标签 [--assignees a,b] # 替换 assignee [--summary text] [--context-file abs-path] ... [--context-raw text] ... [--linked-context-file abs-path] # [已废弃别名] [--linked-context-raw text] # [已废弃别名]行为要点action在 CLI 表面是自由文本常规取值包括opened、comment、status、labels、assignees、summary、processed。actionrename被拒绝——请改用thread rename。--labels/--assignees是替换语义不是追加。输出stdout 上的追加事件 JSON。语义区分forum.md--description是耐久线程描述「这个线程是关于什么的」在opened时设定、之后重跑post --description修改--text/--stdin/--text-file是事件正文即挂载到本条时间线条目上的评论或载荷--summary是滚动线程摘要在status closed时一并设定是「带上下文地标记已解决」的标准做法。forum nametrellis channel forum name [--scope project|global] [--status status] [--raw]行为要点列出线程精简状态。--status按当前线程状态过滤--raw每个线程输出一行 JSON。thread name thread/thread renametrellis channel thread name thread-key [--scope project|global] [--raw] trellis channel thread rename name old-thread new-thread --as agent # 必填 [--scope project|global]行为要点thread name key展示单个线程的时间线先是thread [status] title头部再是 description / labels / assignees / summary / timeline 行--raw切换为原始事件。thread rename是唯一的变更操作post --action rename被拒绝。线程无硬删除——rename 是纠正错误线程 key 的受支持路径--as必填。删除纪律不要把单条评论删除或线程硬删除建模为常规工作流论坛线程是 append-only 协作历史forum.md。八、上下文与标题context/title上下文条目是耐久背景阅读 channel 或线程时应始终在 scope 内它们不是时间线事件而是单独投影、为每个读者重放的forum.md。旧别名--linked-context-file/--linked-context-raw已废弃折叠进规范形式--context-file/--context-raw。context add/context delete/context listtrellis channel context add name [--as agent] # 默认: main [--scope project|global] [--thread key] # 线程级而非 channel 级 [--file abs-path] ... # 可重复 [--raw text] ... # 可重复 # --file 与 --raw 至少其一 trellis channel context delete name [--as agent] # 默认: main [--scope project|global] [--thread key] [--file abs-path] ... [--raw text] ... trellis channel context list name [--scope project|global] [--thread key] [--raw] # 每行一条 JSON 条目行为要点add/delete追加一条context事件并打印事件 JSON。list投影当前上下文条目pretty 输出为file path/raw 截断文本行空时显示(no context)。关键约束forum.md--file路径必须绝对路径相对路径被拒绝--raw为内联纯文本两个 flag 均可重复add/delete至少其一必填delete是按值删除而非按 id——传与添加时相同的--file或--raw值重复 flag 可一次删除多条。title set name/title clear nametrellis channel title set name --title text # 必填 [--as agent] # 默认: main [--scope project|global] trellis channel title clear name [--as agent] # 默认: main [--scope project|global]行为要点追加title事件把稳定的显示标题投影到 channel 上输出为事件 JSON。这是展示层变更不改变存储地址——工具与脚本仍用原始 channel nameforum.md。九、隐藏 / 内部命令命令用途channel __supervisor channel worker config由spawn调用的 fork 入口点。不要直接调用。channel __parse-trace adapter file开发辅助——把录制的 stream-json / wire trace 经由匹配的适配器回放打印生成的 channel 事件。Adapter 对照 provider 注册表校验。十、事件模型白名单与可见性分层CHANNEL_EVENT_KINDS由parseChannelKind强制执行的白名单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。MEANINGFUL_EVENT_KINDSwait/messages未显式给--kind时的默认可见子集create、join、leave、message、thread、context、channel、spawned、killed、respawned、done、error。非 meaningful kind如progress、waiting、awake、supervisor_warning以及turn_*/interrupt*系列仍流经存储但需通过--kind或--include-progress显式纳入。Forum 通道是事件溯源event-sourced的状态投影请使用 CLI reducerforum、thread、context list不要直接解析events.jsonl——多路逻辑线程共享单一文件手写解析会混线、漏掉线程生命周期事件、无视 worker 的 inbox-cursorprogress-debugging.md。十一、输出约定让脚本可依赖的契约变更操作send、interrupt、post、context add/delete、title set/clear、thread rename在stdout上打印追加的事件为一行 JSON。流式读取wait、messages --follow在 stdout 上逐行打印 JSON 事件。Pretty 读取list、messages、forum、thread、context list打印带色、带填充的表 / 时间线。run只在 stdout 上打印最终 assistant 文本便于管道消费诊断性说明走 stderr。错误经chalk.red(Error:)走 stderr 并以exit 1结束。wait超时专门以124退出。十二、实战编排命令如何组合成协作流程command-reference 是命令字典而实际工作流在 workflows.md 中归纳为 A–F 六种模式。这里给出最核心的两条组合路径所有命令均可由上文 flag 表直接验证Pattern A多轮头脑风暴channel spawn send waittrellis channel create brainstorm-storage-layer --by main \ --task .trellis/tasks/05-XX-storage-adapter trellis channel spawn brainstorm-storage-layer \ --agent architect --provider codex \ --file .trellis/tasks/05-XX-storage-adapter/prd.md \ --file .trellis/tasks/05-XX-storage-adapter/design.md \ --as cx-arch --timeout 30m trellis channel send brainstorm-storage-layer \ --as main --to cx-arch --text-file /tmp/brainstorm-r1.md trellis channel wait brainstorm-storage-layer \ --as main --kind done --from cx-arch --timeout 10mPattern C并行评审同一 channel、不同 worker 名 --alltrellis channel create cr-feature --by main --ephemeral trellis channel spawn cr-feature --agent check \ --jsonl $TASK/check.jsonl --file $TASK/prd.md --file $TASK/design.md \ --timeout 15m trellis channel spawn cr-feature --agent check --provider codex --as check-cx \ --jsonl $TASK/check.jsonl --file $TASK/prd.md --file $TASK/design.md \ --timeout 15m trellis channel send cr-feature --as main --to check --text-file /tmp/cr-brief.md trellis channel send cr-feature --as main --to check-cx --text-file /tmp/cr-brief.md trellis channel wait cr-feature --as main --kind done --from check,check-cx --all --timeout 15m--all意味着列出的每个 worker 都必须发出匹配事件超时退出码 124。典型 dispatcher 循环workers.md# 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十三、退出码、常见故障与磁盘布局退出码速查0匹配成功124是wait专属超时1/2为错误run失败时也以 1 退出并保留 channel 供检查。常见故障对照表progress-debugging.md症状原因修复trellis: command not foundCLI 未全局安装npm install -g mindfoldhq/trelliswait立即退出过滤条件或身份冲突使用不同的--as检查 raw 消息zsh 对消息文本报错shell 解释标点用--stdin或--text-fileprogress 行被切断pretty 输出截断用messages --raw --kind progressworker 从不说话provider 启动 / prompt / MCP 延迟检查worker.log、ps、raw 事件换个 cwd 找不到 channel项目 bucket 不匹配cd到项目用--scope global或list --all-projects列表中的幽灵 workersupervisor 死亡未清理trellis channel kill name --as worker --forceforum 线程看起来错乱直接解析了events.jsonl用forum、thread、messages --thread存储布局~/.trellis/channels/~/.trellis/channels/ └── bucket/ └── channel-name/ ├── events.jsonl ├── channel.lock ├── worker.log ├── worker.pid ├── worker.worker-pid ├── worker.config ├── worker.session-id ├── worker.thread-id ├── worker.inbox-cursor └── worker.spawnlockkill会清理pid、worker-pid、config、spawnlock而保留log、session-id、thread-id供取证与--resume。常规场景请通过 CLI 而非直接读取文件——直接文件读取仅限 CLI 视图不足的调试场景且永远不要用在 forum 通道的events.jsonl上。十四、进一步阅读命令字典原文command-reference.mdSkill 索引与路由表SKILL.md六种协作模式 A–Fworkflows.mdworker 派生、agent 卡片与上下文注入workers.mdforum 通道与线程模型forum.mdprogress 解读、故障诊断与磁盘布局progress-debugging.md赞分享桌面应用【免费下载链接】EcoPaste跨平台的剪贴板管理工具 | Cross-platform clipboard management tool项目地址https://gitcode.com/ayangweb/EcoPaste点击查看免费下载相关推荐运行Instella-MoE-16B-A3B-Midtrain需要什么配置一文搞懂硬件门槛与显存需求运行Instella MoE 16B A3B Midtrain需要什么配置一文搞懂硬件门槛与显存需求 Instella MoE 16B A3B Midtrai桌面应用Archon Quick Reference 速查手册CLI 命令、运行时变量与 Workflow YAML 全语法参考Archon Quick Reference 速查手册CLI 命令、运行时变量与 Workflow YAML 全语法参考 本文是 Archon 官方《Quic人工智能AI Agent代码智能体工作流自动化流程编排后端前端CLIPX4-Autopilot 命令行工具完全指南Modules Reference: Command 深度解析PX4 Autopilot 命令行工具完全指南Modules Reference: Command 深度解析 PX4 飞控系统在控制台NSH Shell中嵌入式物联网机器人自动驾驶智能硬件上一篇3步解锁苹果官方限制让2007-2017年老款Mac免费升级最新macOS系统下一篇Electron-React-Boilerplate日历功能终极事件管理与提醒系统开发指南创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表