ARTICLE DETAIL

资讯详情

深耕编程入门与网站建设的一线实战洞察。

GBrain Minions 编排完全指南:双通道持久作业队列与可观测 Agent 编排

GBrain Minions 编排完全指南:双通道持久作业队列与可观测 Agent 编排 GBrain Minions 编排完全指南双通道持久作业队列与可观测 Agent 编排【免费下载链接】gbrainGarrys Opinionated OpenClaw/Hermes Agent Brain项目地址: https://gitcode.com/gh_mirrors/gb/gbrainGBrain Minions 是一套 Postgres 原生实现的持久化作业队列用统一接口同时承载「确定性 Shell 作业」与「LLM 子代理作业」两条通道。本指南以plugin/skills/minion-orchestrator/SKILL.md版本 1.1.0为骨架结合 shell 处理器、子代理处理器、聚合器、准入控制 等源码实现讲透作业提交、监控、转向、生命周期控制、并发扇出以及超过 2 分钟长任务必须遵循的「持久执行阶梯」与 deadman 死签模式。读完你将掌握一套可重启存活、可中途转向、可暂停恢复、结果可被验证送达的完整后台作业编排方案。Minions 是什么一个技能两条通道Minions 是一个 Postgres 原生的作业队列专为持久、可观测的后台工作设计。它把两类形态差异很大的工作收敛到同一个技能、同一套工具、同一个状态模型里确定性 Shell 作业gbrain jobs submit shell ...可复现的命令执行、ETL 步骤、cron 任务等不需要 LLM 推理循环的脚本工作。LLM 子代理作业gbrain agent run ...开放式推理、带工具调用的研究、需要扇出合成fan-out synthesis的智能工作。之所以「一个队列两条通道」是因为这两类工作共享同一套用户诉求重启后存活、有结构化进度、可以中途转向、可以暂停/恢复/取消、支持父子 DAG 与可配置失败策略。SKILL.md 将这些承诺明确为五项 Guarantees作业在网关重启后依然存活Postgres 持久化每个作业都有结构化进度、token 记账与会话转录transcript运行中的 Agent 可通过收件箱消息inbox message中途转向作业可随时暂停、恢复或取消支持父子 DAG且失败策略可配置。技能元数据frontmatter里声明了 9 个工具submit_job、get_job、list_jobs、cancel_job、pause_job、resume_job、replay_job、send_job_message、get_job_progress以及一长串触发短语submit a gbrain job、spawn agent、check on agent、steer agent、fan out、durable execution、arm a deadman 等使其在对话中能自然唤起。技能还携带了持久执行教义durable-execution doctrine其 upstream 来源标注为long-opsfc834ee, subagent-deadmanfc834ee, pipeline-stage-cachefc834ee。路由策略pain_triggered 是默认不是所有后台工作都必须走 Minions。路由策略定义在 skills/conventions/subagent-routing.md读取~/.gbrain/preferences.json中的minion_mode字段三选一alwaysMode A所有后台 Agent 工作一律走 Minionssubmit_job是默认路径禁止回退到sessions_spawn的runtime: subagent。pain_triggeredMode B默认优先使用原生子代理零配置、低延迟当以下痛点信号任一触发时切换到 Minions网关中途重启导致子代理无法恢复状态丢失用户问那个 agent 怎么了并发超过 3 个原生子代理在此宽度开始掉状态预计运行超过 5 分钟用户想要get_job_progress那样的结构化进度用户明确表达挫败this keeps breaking、why is this so flaky。offMode C永不建议 Minions尊重用户退出选择。minion_mode只能直接编辑~/.gbrain/preferences.jsongbrain config set minion_mode会被当作未知键拒绝也可以用gbrain apply-migrations --mode always|pain_triggered|off写入。约定在每个决策点都会重新读取该文件因此改动下一次工具调用即生效。内联 vs 后台所有模式下都适用即使是always模式也有一部分工作应该内联执行单次工具调用且 30s、只读查询、用户实时等待答案——一律内联。而多步且用户可离开、2 并行流、需要重启存活、用户要进度更新、研究/批量操作——走 Minion。经验法则只要用户可能会问做完了吗就用 Minion。路由决策Shell 作业还是子代理SKILL.md 给出了一张明确的决策表条件动作用户要求确定性的命令/脚本运行Shell 作业CLIgbrain jobs submit shell ...用户要求 run in minions 显式命令/argvShell 作业CLI--params带cmd或argv用户要求研究/推理/迭代式 Agent子代理作业CLIgbrain agent run用户要求转向/暂停/恢复一个 Agent子代理作业生命周期工具MCP 可调用单个简单操作 30s优先考虑内联执行需要重启持久性/可观测性提交为 Minion 作业预计操作超过约 2 分钟走持久执行阶梯见下文并行工作2 流gbrain agent run --fanout-manifest或父 子子代理意图不明时只问一句澄清Do you want a deterministic shell command job, or an LLM agent job?Shell 作业确定性脚本Shell 作业用于可复现的命令执行、ETL 步骤、cron 工作以及不需要 LLM 推理循环的可脚本化任务。提交前必须读的前置条件1. Worker 必须显式开启 shell 能力。worker 必须以gbrain jobs work --allow-shell-jobs启动等价于在 worker 环境导出GBRAIN_ALLOW_SHELL_JOBS1worker 目录下的.env文件无法设置它。shell 处理器总是被注册但被守卫未带 flag 的 worker 一旦认领 shell 作业会立刻以UnrecoverableError将其送入dead状态无重试并在error_text中写明所需 flag。作业停留在waiting意味着根本没有 worker 在跑——用gbrain jobs supervisor status检查。守卫逻辑位于 src/core/minions/handlers/shell.ts处理器入口第一行就校验process.env.GBRAIN_ALLOW_SHELL_JOBS ! 1不满足即抛出UnrecoverableError。2. 安全模型这是远程代码执行面。打开GBRAIN_ALLOW_SHELL_JOBS1等于授权 worker 上任意命令执行。在共享队列上这就是远程代码执行RCE攻击面必须当作特权基础设施授权对待。shell 处理器对子进程的环境做了最小化只透传PATH, HOME, USER, LANG, TZ, NODE_ENV六个键源码中的SHELL_ENV_ALLOWLIST再合并调用方显式提供的env与inherit防止用户脚本意外插值$OPENAI_API_KEY。但注意它不沙箱文件系统读取——shell 脚本可以cat ~/.env或读取 worker 进程能读的任何文件。操作者选择安全的cwd就是信任边界。3. 执行模式二选一Postgres 守护进程gbrain jobs work运行一个持久 worker从队列认领并执行作业。PGLite --followgbrain jobs submit ... --follow内联执行。PGLite 上没有守护进程模式独占文件锁详见 docs/guides/minions-shell-jobs.md。4. MCP 边界shell 提交是 CLI-only。通过 MCP 调用submit_job nameshell会抛出OperationError错误码permission_denied通用远程提交只接受sync、import、lint、lint-fix四种作业名。Agent可以通过get_job/list_jobs/get_job_progress观察 shell 作业这些不受保护但不能提交。操作者或 autopilot 提交Agent 观察。5. 验证部署配置完成后运行gbrain jobs statsCLI确认 worker 已注册并正在消费队列。提交CLI操作者或 autopilotShell 作业通过--params传入一个 JSON 对象包含cmd字符串或argv数组外加cwd和可选的env# 命令字符串形式经 /bin/sh -c 展开 gbrain jobs submit shell --params {cmd:echo hello,cwd:/abs/path} # Argv 形式无 shell 展开直接 spawn argv[0] argv[1:] gbrain jobs submit shell --params {argv:[bash,-lc,echo hello],cwd:/abs/path} # PGLite 或任意一次性部署上的内联执行 gbrain jobs submit shell --params {cmd:echo hello,cwd:/tmp} --followgbrain jobs submit --help暴露的队列/生命周期 flag--queue、--priority、--delay、--max-attempts、--max-stalled、--backoff-type、--backoff-delay、--backoff-jitter、--timeout-ms、--idempotency-key、--dry-run。从源码看参数模型的完整面貌ShellJobParams 定义cmd/argv二选一必填。cmd通过绝对路径/bin/sh -c启动不是sh防止调用方通过污染 PATH 重定向 shell 二进制argv直接 spawn不做任何 shell 展开。cwd必填必须是绝对路径。env附加环境变量叠加在 allowlist 之上不能包含密钥类键GBRAIN_DATABASE_URL、DATABASE_URL等——密钥请用inherit。inherit自由格式的配置键名列表在子进程生成时从 worker 的loadConfig()解析注入子进程环境如database_url→GBRAIN_DATABASE_URL、anthropic_api_key→ANTHROPIC_API_KEY。名称会持久化到minion_jobs.data与 shell 审计 JSONL但值永远不会持久化。redact_secrets可选把inherit解析出的值从stdout_tail/stderr_tail/error_text中擦除替换为REDACTED:name标记。结果对象结构exit_code、stdout_tail、stderr_tail、duration_ms、pid。stdout/stderr 各自有上限64KB / 16KB的 UTF-8 安全尾缓冲TailBuffer超出部分以[truncated N bytes]标记。超时/取消/锁丢失ctx.signal或 worker SIGTERMctx.shutdownSignal都会触发同一套终止序列SIGTERM → 5 秒宽限 → SIGKILL源码中KILL_GRACE_MS 5000保证部署重启不会留下孤儿子进程。监控Agent 或操作者以下操作是 MCP 可调用的Agent 可安全使用list_jobs --name shell --status active get_job ID get_job_progress ID从get_job查看结构化结果字段exit code、stdout/stderr 尾部、尝试次数、耗时。用get_job_statsMCP或gbrain jobs statsCLI查看 worker/队列健康看板包括 wedged-queue队列卡死信号。控制MCP 可调用cancel_job idID replay_job idID注意replay_job不受保护——只有 shell提交受保护。Agent 不需要 CLI 访问权限就能取消或重放 shell 作业。对于周期性 shell 工作负载使用幂等键idempotency key避免重复运行。子代理作业LLM 编排子代理作业用于开放式推理、带工具使用的研究、扇出合成。用户入口gbrain agent run prompt是提交子代理工作的规范方式它处理了高信任度管线——subagent和subagent_aggregator是受保护的作业名。远程 Agent 使用专用的submit_agent操作携带其配置的 source、tools 和 slug 绑定通用submit_job不接受这些作业名。Phase 1提交gbrain agent run Research Acme Corp revenue --tools search,query--tools接受BRAIN_TOOL_ALLOWLIST的子集逗号分隔完整清单见 src/core/minions/tools/brain-allowlist.tsquery、search、get_page、list_pages、get_backlinks、traverse_graph、list_link_sources、resolve_slugs、get_ingest_log、put_page、add_timeline_entry、get_recent_salience、find_anomalies。附件类工具和本地专属操作不可用。提交引用已删除工具的旧绑定时要先更新绑定远程绑定必须非空显式空的本地工具列表意味着零工具授权。从源码看这个 allowlist 是基于名称的安全决策而不是运行时 flagbuildBrainTools只选取!op.localOnly BRAIN_TOOL_ALLOWLIST.has(op.name)的操作且新增操作是显式的安全审查决定。其中put_page和add_timeline_entry是仅有的两个写操作二者都通过工具 schema 的pattern^wiki/agents/subagentId/.或可信工作区前缀 glob 双重约束服务端还有 fail-closed 检查兜底。allowlist 测试还钉死了「每个名称必须存在于src/core/operations.ts的 OPERATIONS」这一不变量上游改名会触发 CI 失败而非静默丢工具。并行工作使用扇出清单fan-out manifestgbrain agent run --fanout-manifest companies.json清单描述N 个子代理 1 个聚合器。每个子代理底层以namesubagent运行聚合器以namesubagent_aggregator运行并在所有子代理终止后认领。实现见 subagent.ts 与 subagent-aggregator.ts。gbrain agent run的 flag来自 src/commands/agent.tsFlag作用--subagent-def name命名子代理定义来自GBRAIN_PLUGIN_PATH插件--model id覆盖模型--max-turns N限制 LLM 循环轮数默认 20--tools csv允许的 brain 工具列表见上--timeout-ms N每个作业的硬超时--fanout-manifest fileN 子代理 1 聚合器--follow/--no-follow流式日志并等待TTY 上默认开启--detach提交后立即返回gbrain agent run不暴露队列/优先级/重试调优——需要这些旋钮时用gbrain jobs submit直接提交原始subagent处理器要求 CLI 信任。准入控制v0.46.11.0。三个原语全部在提交侧实现admission.ts参数合并param-coalescing相同的无父提交相同 owner lane、payload、执行选项会合并到现有 waiting 作业上而不是入队一个重复作业。gbrain agent run会打印coalesced并给出匹配的作业 idsubmit_agent的 MCP 响应携带coalesced: true。把它当作成功——去监控匹配的 id不要重新提交。默认对subagent开启PARAM_COALESCE_DEFAULT可用minions.coalesce_params.name配置关闭。等待 TTL仍在waiting超过 N 小时的作业会被取消error_text带waiting_ttl_expired前缀subagent默认 48h见minions.ttl_waiting_hours.nameWAITING_TTL_DEFAULT_HOURS表。名称全局配额一旦某作业名的全队列waiting 总数超过配置上限提交返回结构化、可重试的rate_limited错误typedQueueQuotaExceededErrorcodequota_exceeded——退避并在重试前用gbrain jobs stats检查DIVERGENT QUEUE行。配额默认不开启QUOTA_MAX_WAITING_DEFAULT为空通过minions.quota_max_waiting.name激活。环境变量GBRAIN_MINIONS_ADMISSION0是三个原语的一键总开关事故逃生舱无需 DB。所有查询对默认表失败开放fail open——不可读的配置绝不能阻塞作业提交。Phase 2监控list_jobs --status active # MCP — 什么在跑 get_job ID # MCP — 完整细节 日志 tokens get_job_progress ID # MCP — 结构化进度快照 gbrain jobs stats # CLI — 队列健康看板 gbrain agent logs ID --follow # CLI — 流式转录 心跳进度包含step count、total steps、message、token 用量、最后调用的工具。Phase 3转向Steer向运行中的 Agent 发送消息来重定向send_job_message idID payload{directive:focus on revenue, skip headcount}子代理处理器在每一轮迭代读取收件箱消息并注入上下文消息有已读回执acknowledged跟踪。只有父作业或管理员能发送消息发送者校验。Phase 4生命周期pause_job idID # 冻结而不丢失状态 resume_job idID # 从上次位置继续 cancel_job idID # 硬停止 replay_job idID # 用相同或修改后的参数重跑 replay_job idID data_overrides{depth:deep} # 带变更重放所有生命周期操作均可 MCP 调用。Phase 5审查结果get_job ID # result, token counts, transcriptToken 记账每个作业跟踪tokens_input、tokens_output、tokens_cache_read。子代理 token 在完成时自动向上滚动到父作业。源码视角可崩溃恢复的 LLM 循环subagentHandler的循环设计强调崩溃可恢复subagent_messagessubagent_tool_executions两张表是对话位置的唯一事实来源single source of truth。worker 被杀后恢复时加载所有已提交行信任标记为complete/failed的工具执行只对幂等工具重跑pending的。每次 LLM 调用都包在 rate leaseacquireLease→ 调用 →releaseLease里租约以 TTL/3 间隔单飞续约renewLeaseWithBackoff续约失败会中止在途调用并以RateLeaseUnavailableError重新入队——不烧尝试次数。系统提示与工具块打 Anthropic prompt-cache 标记max_tokens截断被记录为独立stop_reason而不是伪装成干净的end_turn。聚合器处理器在 v0.15 中不再调用 LLM它读收件箱里的 N 条child_done消息做确定性 markdown 拼接保证扇出运行可复现。持久执行超过 2 分钟的操作后台 shell 会静默死亡会话压缩、harness 重启、工具超时。而 gbrain 的长操作extract all、embed --stale、完整sync --all常规就要跑 10–60 分钟——超过上述每一个上限。更隐蔽的是即使工作本身存活完成事件也可能被吞掉worker 重启、通知丢失用户对着一个已完成但无人汇报的结果干等。持久执行要覆盖两半工作存活且汇报被证明送达。任何预计超过约 2 分钟的操作都应路由到该阶梯中部署所能支持的最高一级。这是 harness 路由约定agent 遵循不是机械保证——没有任何机制阻止裸后台 shell除了这个技能说不要。阶梯第 1 级Minion 作业 deadmanPostgres worker要求Postgres 引擎、运行中的gbrain jobs workworkershell 通道还需要 worker 以--allow-shell-jobs或导出GBRAIN_ALLOW_SHELL_JOBS1启动。上述前置条件全部仍然成立flag 默认 OFF、shell 提交跨 MCP 信任边界是 CLI-only、PGLite 没有 worker 守护进程见第 3 级。本节不放松任何一条契约。作为作业提交让工作在重启后存活gbrain jobs submit shell \ --timeout-ms 3600000 \ --params {cmd:gbrain extract all,cwd:/abs/path,inherit:[database_url]}需要 LLM 判断的工作走子代理通道gbrain agent run见上——提交了一个 agent 作业却从不去看它和没人看管的 shell 作业是同一个 bug。在同一个 action block 里武装 deadman模式见下。只提交不武装是典型的半吊子修复作业活下来了沉默没有。阶梯第 2 级cron 检查的进度文件无唤醒 Agent 的调度器当没有调度器能唤醒 Agent、但宿主机有普通 crontab或工作完全在队列外运行让操作边推进边写进度/心跳文件队列作业则依赖get_job_progress并注册一个周期性 host-cron 检查把文件的新鲜度与预期进度间隔比较。Agent 也在下一轮开始时检查它。停止推进的检查点意味着「卡住了」而不是「还在跑」——新鲜度比较是本级的全部价值。阶梯第 3 级前台 输出缓冲PGLite / 无 worker / 无调度器在前台内联运行操作——PGLite 上是gbrain jobs submit ... --follow或直接跑原始命令——并把所有输出缓冲到文件按有界切片读取遵循 skills/conventions/exec-output.md。长命令后出现空工具结果是截断不是 shell 死了。本级没有静默死亡保险所以保持操作在前台并守在旁边在这里后台化会精确复现阶梯要防止的失败。Deadman 模式一次性、自删除的定时检查在「预计完成时间 余量」触发验证结果是否已汇报——而不仅仅是进程退出了。在提交所在的同一个 action block 里武装它不是之后不是如果我记得诚实地估计expected_minutes向上取整。Deadline now estimate margin其中margin max(10 min, 50% of estimate)。重启会延迟送达——余量太紧会误报晚几个小时又失去意义。用宿主机提供的任何一次性调度器创建检查带 delete-after-run 语义的 harness cron 工具、at、或首次触发即自删的 crontab 条目。检查的指令验证结果是否已经汇报给用户。gbrain jobs get id给出作业状态reported-check 问的是完成消息是否真的到达了用户。已汇报→ 什么都不做保持沉默自删。已完成但未汇报被吞的事件→ 用gbrain jobs get id拉取结果现在发布恢复报告并打上作业 ID 标签。仍在运行→ 发一行状态更新 新 ETA并武装一个后续 deadman原始估计的 50%。最多一个后续——不许无限链。死/失败→ 汇报它死前产出的内容gbrain jobs get id的stderr_tail并提供gbrain jobs retry id。正常完成时解除。完成到达并汇报后移除 deadman。若它仍然触发reported-check 会使其静默空转——双保险。该模式必须自担的失败模式与 Contract 和 Anti-Patterns 呼应deadman 自身在触发前死掉第二道保险由下一轮 overdue sweep 兜底、双重触发幂等 reported-check 带作业 ID 标签的报告、陈旧检查点信任仍在运行前先做新鲜度检查。导入该模式的 eval 契约deadman 部署按以下标准评判ARMED_ON_SPAWN—— 是否在长提交的同一 action block 内创建SELF_DELETING—— 一次性一切正常时保持沉默DETECTS_SWALLOWED—— 验证结果已汇报而非仅作业退出RECOVERS—— 遇到被吞事件时拉取输出并发布恢复报告RIGHT_DEADLINE—— 预计完成 合理余量既不误报也不晚数小时硬性失败项用户可见的长操作未武装 deadman正常完成到达后 deadman 还发噪音用sleep或轮询循环模拟定时器睡眠进程随会话死亡——正是要保险的那个失败。排序与锁维护类操作共享锁sync、embed、extract、integrity。串行、链式运行它们提交作业 1武装其 deadman完成后提交作业 2武装下一个最后用gbrain doctor收尾并汇报健康度变化。若作业中途死亡其锁在 TTL 到期时释放活跃且近期续约的持有者受 steal grace 保护——永远不要手工删除锁行来解锁队列。典型长操作参考耗时随语料规模缩放把下表当作--timeout-ms的数量级锚点而非承诺操作典型耗时建议--timeout-msextract all大语料 30-60 分钟3600000embed --stale5-30 分钟随缺失数量缩放1800000sync --all5-20 分钟1200000integrity auto10-30 分钟1800000dream5-15 分钟900000附录内容寻址的阶段检查点对中间环节昂贵的多阶段管线extract → score → explain → render → verify其中评分阶段烧真实 LLM 花费让每个阶段成为内容寻址检查点使崩溃——或 deadman 触发的重试、或replay_job——续跑而不是重新花钱每个阶段以阶段自身逻辑 参数 上游工件哈希的哈希为键。工件存到管线工作树下的.cache/目录按内容哈希寻址。暖重跑是空操作每个键都命中什么都不重算整条管线远不到一秒重放完。失效级联正确参数变更或逻辑编辑改变该阶段键重算它以及所有上游哈希改变的下游阶段。阶段自身源码必须在键内——省略它逻辑编辑会静默复用陈旧工件。记录来源provenance每次运行一份 provenance 文件记录每个阶段的键、输入、输出与 computed-at使每个工件都能溯源到产生它的确切逻辑 数据哪个阶段重算了、为什么始终可回答。恢复时验证完整性把现存工件与记录的校验和比对不匹配意味着重算或从缓存恢复绝不静默复用。评判标准IDEMPOTENT暖重跑零重算、CORRECT_BUSTING变更精确重算受影响阶段、PROVENANCE每个工件溯源到逻辑 参数 上游、INTEGRITY损坏工件被检出绝不静默复用。这与阶梯是组合而非替代关系阶梯让管线保持运行和汇报阶段检查点让重试变便宜。只要某个单阶段成本超过 LLM 花费的零头就把它们配在一起。输出格式向用户汇报作业状态时Job #ID (name) — status Progress: step/total — last action Tokens: input_count in / output_count out ( cache_read cached) Runtime: Xs Children: N pending, M completed汇报完成时Job #ID completed in Xs Tokens used: input / output / cache_read Result: summary汇报批量状态父 子时Parent #ID — waiting-children #A subagent(Acme) — active, 3/5 steps, 2.5k tokens #B subagent(Beta) — completed, 1.8k tokens #C subagent(Gamma) — paused Total tokens so far: 4.3k反模式不要为单个搜索查询 spawn 一个 Minion直接用 search 工具。不要 fire-and-forget 后不检查结果。不先查gbrain jobs stats就不要 spawn 超过 5 个并发 Agent。提交报告coalesced时不要重新提交——工作已入队改去监控匹配的作业 id。子代理工作不要用sessions_spawn配runtime: subagent而弃用 Minions用gbrain agent run。不要在紧循环里轮询get_job轻量检查用get_job_progress。不要以裸后台 shell 运行预计超过约 2 分钟的操作——它随会话死亡走持久执行阶梯。不要没武装 deadman 或没安排真正会触发的定时检查就说完成了我汇报你。不要让 deadman 在正常完成到达后发噪音——先查 reported-state保持沉默自删。不要用sleep或轮询循环模拟 deadman 定时器——睡眠进程随会话死亡这正是要保险的失败。不做新鲜度检查就不要信任检查点或进度文件——陈旧检查点会永远读作仍在运行。不要同时运行获取锁的维护操作sync、embed、extract、integrity也不要用删除锁行来解锁锁在 TTL 到期时释放。工具清单工具 - 权限面提交后台作业——submit_jobMCP仅sync、import、lint、lint-fix契约见 docs/guides/authorization-upgrade.mdshell 作业用本地 CLI远程子代理用submit_agent获取作业详情——get_jobMCP带过滤列出作业——list_jobsMCP取消作业——cancel_jobMCP暂停作业——pause_jobMCP恢复暂停的作业——resume_jobMCP重放已完成/失败的作业——replay_jobMCP发送侧信道消息——send_job_messageMCP获取结构化进度——get_job_progressMCP队列统计——get_job_statsMCPHTTP 上是 admin 作用域与本技能其他 jobs 操作一致——包含 wedged-queue 静默停机信号或gbrain jobs statsCLI进一步阅读subagent-routing.md ——minion_mode三模式路由约定的完整定义minions-shell-jobs.md —— shell 作业安全模型、cron 迁移、Postgres/PGLite 两种部署配方minions-deployment.md —— Minions 部署拓扑exec-output.md —— 前台操作的有界输出缓冲约定shell.ts —— shell 处理器env allowlist、kill 序列、截断subagent.ts —— 可崩溃恢复的 LLM 循环与 rate leasesubagent-aggregator.ts —— 扇出聚合child_done 收件箱模型brain-allowlist.ts —— 子代理工具白名单与命名空间写约束admission.ts —— 参数合并、等待 TTL、名称全局配额agent.ts ——gbrain agent run全部 flag 的解析实现cron-via-minions.md —— 通过 Minions 调度 cron 工作【免费下载链接】gbrainGarrys Opinionated OpenClaw/Hermes Agent Brain项目地址: https://gitcode.com/gh_mirrors/gb/gbrain创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表