ARTICLE DETAIL

建站实战干货

来自一线的建站与推广经验沉淀,每一条都经过真实交付验证。

oh-my-opencode-slim 领域术语表精读:从 Agent 分工到后台任务状态的架构蓝图

2026/9/25 4:17:54 拓冰建站 浏览量
oh-my-opencode-slim 领域术语表精读:从 Agent 分工到后台任务状态的架构蓝图 人工智能AI AgentAgent 编排AI 技能【免费下载链接】oh-my-opencode-slimLean, fine tuned Opencode multi agent suite · Mix any models · Auto delegate tasks项目地址https://gitcode.com/gh_mirrors/oh/oh-my-opencode-slim点击查看免费下载本文以oh-my-opencode-slim仓库根目录的 CONTEXT.md项目官方领域术语表为骨架逐条解读这套 OpenCode 多 Agent 插件中每个核心概念的定义并结合仓库内 src/agents、src/config、src/utils/background-job-board.ts、src/hooks 等源码与测试给出概念背后的真实实现依据。读完你将能准确区分 orchestrator / subagent / council / councillor 的职责边界理解后台任务状态机与面板生命周期掌握 config、preset、模型继承与 fallback 的精确语义并能在配置oh-my-opencode-slim.jsonc时避开术语歧义带来的坑。为什么需要一份“领域术语表”oh-my-opencode-slim是一个在 OpenCode 宿主之上实现“专家 Agent 操作模型”的插件由主 Agentorchestrator规划工作、向多个专职子 Agent 委派任务、再回收并调和结果。这样一个系统同时涉及 Agent 分类、多模型议会Council、终端多路复用器、后台任务板、钩子Hook、循环Loop、访谈Interview、配置预设等十余个互相交织的领域。CONTEXT.md 的定位非常明确——它定义“术语在领域内是什么意思”what a term means而非“如何实现”how it is implemented。也就是说这份文档是阅读源码前的语义对齐层先建立统一词汇表再去读 src/agents、src/config、src/multiplexer 等模块时才不会因为同名异义而误判。Agents委派体系的核心词汇Agent 与 OrchestratorAgent一个具名 LLM 角色带有一条明确的“车道”lane——由权限permissions、工具tools与提示词prompt共同定义是系统内工作委派delegation的基本单元。在实现上每个 Agent 由 src/agents/index.ts 的createAgents()工厂批量创建最终通过getAgentConfigs()转换成 SDK 可识别的AgentConfig模型、提示词、权限、MCP 列表。Orchestrator编排器主 Agent负责规划工作、向子 Agent 委派、监控子 Agent 执行、并调和reconcile它们的产出。每个会话且仅有一个且不可禁用。源码中PROTECTED_AGENTS new Set([orchestrator, councillor])见 src/config/constants.ts即使被写进disabled_agents也无法关闭。六位内置专家子 AgentCONTEXT.md 定义了六位内置专职子 Agent它们与 src/config/constants.ts 中的SUBAGENT_NAMES一一对应各自的 Agent 工厂位于 src/agents 下的独立文件名称职责车道对应工厂Explorer快速代码库搜索与模式匹配src/agents/explorer.tsLibrarian外部文档与库研究src/agents/librarian.tsOracle架构、调试策略与代码评审src/agents/oracle.tsDesignerUI/UX 设计与视觉打磨src/agents/designer.tsFixer有界实现与执行写代码src/agents/fixer.tsObserver视觉/媒体分析图片、PDF、图表默认禁用src/agents/observer.tsObserver 默认禁用的依据在 src/config/constants.tsDEFAULT_DISABLED_AGENTS [observer]需要用户显式从disabled_agents移除并配置合适的模型才会启用。此外每个专家还共享“任务拒绝指令”task-rejection instruction见 src/agents/task-rejection.ts用于约束子 Agent 不要越车道行事。Council 与 Councillor多模型议会Council一个“多 LLM Agent”——运行若干 councillor 并综合它们的观点。在 src/agents/council.ts 中council 被实现为纯合成器createCouncilAgent()生成的 Agent 没有任何工具“You have NO tools”只负责把 orchestrator 传入的多个 councillor 原始回答按固定格式合成一份结构化议会报告。Councillor只读 LLM 顾问由 orchestrator 作为子 Agent 派发。每个 councillor 从 council preset 注册为councillor-name如councillor-alpha不隐藏在 TUI 中以 pane 形式可见。动态构建逻辑见 src/agents/council-agents.ts遍历council.presets[default_preset]为每个座位seat生成带独立模型的councillor-name子 Agent前缀councillor-是为了避免裸名如alpha与 OpenCode 保留的 Agent 类型名冲突。Agent mode、Protected agent 与扩展 AgentAgent modeSDK 对 Agent 的分类——primaryorchestrator用户可见主 Agent、subagent专家仅供委派、allcouncil既可被用户直接调用也可被委派。分类逻辑见 src/agents/index.ts 的applyClassification()。Protected agent不可禁用的 Agent即 orchestrator另有 councillor 也受保护。Custom agent用户通过配置自定义的 Agent与内置 Agent 区分在createAgents()中通过“发现config.agents中的未知键”的方式生成src/agents/index.ts且要求必须配置model否则会被跳过并告警。ACP agent通过 Agent Communication ProtocolACP定义的外部 Agent经acp_run工具运行工具实现见 src/tools/acp-run.tsAgent 定义见 src/agents/index.ts。ACP 包装 Agent 只被允许acp_run这一个工具其余读写、bash、task 等一律deny。Display name用户可指定的 -提及显示名可与内部 Agent 名不同。源码对显示名有严格校验必须匹配/^[a-z][a-z0-9_-]*$/i不得与任何 Agent 名冲突且不能重复src/agents/index.ts。Agent alias映射到内置 Agent 的遗留/备用名。AGENT_ALIASESsrc/config/constants.ts目前只接受两个被否决的同义词explore→explorer、frontend-ui-ux-engineer→designer这两个错误拼写会被自动纠正而不是报错。配置查找时先按 Agent 名、再按别名查找src/agents/index.ts。Council共识的三级评级Consensus共识一次 council 运行的综合结论评级为unanimous一致、majority多数或split分歧。这三个枚举值直接出现在 council 合成 Agent 的输出模板中src/agents/council.ts 的Consensus Level: unanimous | majority | split。Council preset一次 council 运行所用的具名 councillor 配置阵容。注意术语分工——插件配置里的preset指“Agent 覆盖集”而 council 配置里的default_preset才指“councillor 阵容”default_前缀正是为了与 council 子对象内的 preset 列表区分见 src/config/council-schema.tsdefault_preset默认值为default。council 的配置格式JSONC在 src/config/council-schema.ts 有官方示例{ council: { presets: { default: { alpha: { model: openai/gpt-6-luna }, beta: { model: openai/gpt-5.3-codex }, gamma: { model: google/gemini-3-pro } } } } }每个 councillor 的model字段既可以是一个provider/model字符串也可以是有序 fallback 链数组按顺序尝试直到有模型响应解析后暴露为models规范化链与model主模型兼容旧配置。councillor 会话只拥有只读代码库访问read、glob、grep、lsp、list不能改文件或派生子 Agent——这与 CONTEXT.md 的“read-only”定义一致且question权限被强制设为denycouncillor 不应提问见 src/agents/index.ts。Multiplexer 与会话终端面板的世界Multiplexer多路复用器承载子 Agent 面板的终端后端可选tmux、zellij、herdr、kitty、cmux通过multiplexer.type设置也接受auto自动探测与none禁用。Schema 定义见 src/config/schema.ts各后端适配器在 src/multiplexer 目录下分模块实现。Multiplexer typeauto、tmux、zellij、herdr、kitty、cmux、none之一。Pane由 multiplexer 派生、用于运行子 Agent 会话的终端区域。Child session托管在 multiplexer pane 中、由后台任务板background job board追踪的后台 Agent 会话。Client pane lifecycleTUI 客户端进程内的 pane 跟踪——接纳admit所显示父会话的子会话、在自己所在的 pane 上派生并关闭 multiplexer pane、响应会话生命周期事件。没有服务端或跨进程的 pane 状态。这与 codemap.md 中强调的“multiplexer 是纯客户端”约束一致src/tui.ts负责接线每客户端 pane 生命周期服务端入口不得触达src/multiplexer/client/*由src/dependency-contract.test.ts的不变式 I1 强制。Close reasonpane 关闭的原因——idle空闲、deleted删除、backfill-gone回填时已消失。Background Jobs委派任务的异步状态机后台任务是本插件“异步委派”的落地载体CONTEXT.md 定义了五组关键词汇源码 src/utils/background-job-board.ts 是它们最直接的实现证据Background job被委派的专家任务异步运行一直追踪到其结果被调和进 orchestrator 的响应为止。BackgroundJobRecord记录 taskID、父会话 ID、Agent 名、描述、别名、状态、generation单调运行代号、terminalRevision 等完整元数据。Background Job Board任务板后台任务状态与元数据的存储。BackgroundJobBoard类内部用MaptaskID, BackgroundJobRecord保存任务并提供注册启动、更新状态、提交终态、获取结果等查询接口。Background Job Coordinator拥有后台任务生命周期策略与“延迟关闭状态”的层通过任务板写入。结合 src/utils 中的background-job-coordinator.ts、background-job-supervisor.ts、background-job-terminal-gate.ts理解board 负责存取coordinator 负责策略terminal-gate 负责“终态提交令牌”的授权校验commitTerminal只有持有效 token 才能提交。Job state任务状态——running、completed、error、cancelled、reconciled。其中reconciled是独立的“消费后阶段”标记一个终态任务的结果已被折进 orchestrator 的响应它本身不是终态。源码里markReconciled()仅在任务处于 canonical 终态或stopped时才能执行并且reconciled状态下任何running回退都会被拒绝src/utils/background-job-board.ts。Job alias任务的短人类可读标识如fix-1、exp-2。前缀由AGENT_PREFIX映射生成council→cou、designer→des、explorer→exp、fixer→fix、librarian→lib、observer→obs、oracle→ora见 src/utils/background-job-board.ts并通过持久化的 high-water 计数避免重启后复用历史别名。Terminal state不再发生迁移的任务状态——completed、error、cancelledCANONICAL_TERMINAL_STATESsrc/utils/background-job-board.ts。任务板还有一套严谨的租约lease机制cancellation / relaunch / message / terminal-notification保证同一原生会话 ID 同一时刻只有一个“操作所有者”避免并发冲突——这是“reconcile”语义能保持诚实honest的底层保障。Skills随插件分发的开箱能力Skill随插件捆绑、自包含的工作流或能力。CONTEXT.md 列出了 7 个捆绑技能codemap、clonedeps、simplify、deepwork、reflect、worktrees、oh-my-opencode-slim并特别注明loop-engineering磁盘上存在但未注册为捆绑技能。技能实体位于 src/skills安装时由 src/cli 拷贝进用户技能目录。Hooks生命周期扩展点Hook响应 OpenCode 生命周期事件的插件扩展点。CONTEXT.md 示例给出了 apply-patch、filter-available-skills、loop-command、session-lifecycle。仓库 src/hooks 实际实现了远不止这些absolute-path-rescue绝对路径纠错、cache-monitor缓存观测、orchestrator-wake编排器唤醒调度、phase-reminder阶段提醒、tool-loop-guard工具死循环防护、task-session-manager可恢复任务会话跟踪等。所有 Hook 通过 src/index.ts 组装进插件启动流程。Loop自动迭代执行Loop自动迭代运行——用 Agent 执行工作、按成功标准验证、重复直到完成或升级escalate。Loop session一次 loop 运行的状态目标、当前阶段、尝试次数、历史。Loop phaseexecuting、verifying、done、escalated、cancelled。Execute agent执行 loop 工作的 Agent——fixer、designer、explorer或librarian。Verify agent验证 loop 产出的 Agent 或策略——oracle、observer或test。Success criterion判定一次迭代是否通过test、build、lint、fileExists、command、oracle、observer、manual。/loop命令由 src/hooks/loop-command/index.ts 实现它从用户文本中抽取goal、successCriteria、maxAttempts三项缺失任一就要求澄清然后按“读取历史 → 派发 fixer → 按成功标准验证 → 写入.opencode/loop-history/loop-ts-id/history-{NNN}.mdPASS/FAIL 原因→ PASS 停止 / 未达上限重试 / 达上限升级”的流程迭代。命令用法示例/loop fix typescript errors until typecheck passes, max 3 tries。Interview从想法到规格文档Interview问答式流程把一个想法逐步构建成一份持久的规格文档。Spec block生成的规格文档中的具名小节。Interview dashboard管理访谈、录入答案的 Web UI。实现位于 src/interview包含 prompt/state 编排、持久化、本地 UIdashboard、跨进程协调session-server.ts、server.ts并与插件命令/事件面挂钩。Companion桌面端活动镜像Companion反映 Agent 活动的原生桌面吉祥物由 companion manager 启动并跟踪。配套实现是companion/下的 Rust cratecompanion/codemap.mdcompanion/animations/存放用于生成运行时 JPEG 精灵图的素材companion/VIDEOS/存放 MP4 源媒体。其动画状态idle、explorer、fixer、librarian、oracle、designer、observer、orchestrator、council、question、unknown与各 Agent 的车道一一对应。Config配置层的关键词汇CONTEXT.md 的 Config 小节是本插件配置体系的最小词汇集结合 src/config/codemap.md 可以展开为完整的配置心智模型Plugin config从oh-my-opencode-slim.jsonc加载的用户面向配置。加载管线分四阶段发现用户配置$OPENCODE_CONFIG_DIR/oh-my-opencode-slim.{jsonc,json} 项目配置directory/.opencode/oh-my-opencode-slim.{jsonc,json} 环境变量OH_MY_OPENCODE_SLIM_PRESET→ 解析JSONC 支持注释与尾逗号、{env:VAR_NAME}环境变量插值、Zod 校验→ 合并用户配置打底、项目配置覆盖、preset 合并、旧tmux键迁移→ 运行时RuntimeConfig单例、宿主配置快照、派生 getter。Preset一组具名“按 Agent 覆盖”。同一个词在 Council 语境下指 councillor 阵容见下节 Flagged。preset 解析采用深度优先具名解析src/config/presets.ts根agents覆盖优先级高于 preset 内的 agents。Model entry规范化的模型引用可带可选 variant用于 fallback 链。Model inheritance显式 Agent 策略——当某 Agent 未配置模型时选择当前session模型或已配置的orchestrator模型。对应AgentOverrideConfig.inheritModelFrom: session | orchestratorsrc/config/schema.ts。实现上有两层Agent 定义层applyModelInheritance()与宿主配置合并后的applyModelInheritanceToConfig()src/agents/index.ts。历史遗留行为未显式配置继承策略的 fixer 默认回退到 librarian 的模型src/agents/index.ts。Variant可选的模型限定词如预览构建用于 fallback 解析。Fallback / failover调用被限流rate-limited或返回空时切换模型的机制。Agent 的model可配置为有序数组fallback 链运行时按序尝试。Disabled agents通过配置关闭的 Agentobserver默认禁用。此外AgentOverrideConfig还支持temperature0–2、skills/skills_add/skills_remove/skills_include_local、mcps、prompt、orchestratorPrompt、options、displayName、color#RRGGBB或 OpenCode 主题色、description、permission等字段src/config/schema.ts。Flagged真实存在的术语歧义CONTEXT.md 特意列出两组“真实但非阻塞”的语义碰撞提醒使用者注意“Presets”一词两义插件preset是一组 Agent 覆盖councilpreset是一组 councillor 模型阵容。同一个单词不同的 JSON 路径与类型插件用顶层preset/presetscouncil 用council.default_preset/council.presets。无结构冲突但极易混淆。配置命名约定不统一配置键混合 snake_casedisabled_agents、main_pane_size与 camelCaseautoUpdate、backgroundJobs且无文档化规则disabled_*键统一为 snake_case其余键即使在子对象内部也混用。这是历史漂移了解后能帮你写配置时少踩“大小写写错但校验通过”的坑。小结一份术语表如何指导阅读与配置CONTEXT.md 的价值在于把“语义”与“实现”解耦你可以先通过它建立对 Agent 车道、Council 合成、任务板状态机、pane 生命周期、Loop 阶段等概念的准确认知再按 codemap.md 推荐路径深入源码src/agents/codemap.md、src/multiplexer/codemap.md、src/tools/codemap.md、src/hooks/codemap.md用实现细节印证概念。反过来写oh-my-opencode-slim.jsonc时把presetAgent 覆盖集与council.default_presetcouncillor 阵容区分开、记住disabled_*用 snake_case、牢记observer默认关闭需要显式启用就能避免绝大多数配置层面的术语陷阱。赞分享人工智能AI AgentAgent 编排AI 技能【免费下载链接】oh-my-opencode-slimLean, fine tuned Opencode multi agent suite · Mix any models · Auto delegate tasks项目地址https://gitcode.com/gh_mirrors/oh/oh-my-opencode-slim点击查看免费下载相关推荐oh-my-opencode-slim 后台编排Background Orchestration从执行者到调度者的架构重建oh my opencode slim 后台编排Background Orchestration从执行者到调度者的架构重建 导读 后台编排Bac人工智能AI AgentAgent 编排AI 技能oh-my-opencode-slim 领域文档消费协议Agent 探索代码库前必须遵循的术语、ADR 与 codemap 纪律oh my opencode slim 领域文档消费协议Agent 探索代码库前必须遵循的术语、ADR 与 codemap 纪律 导读 本文系统讲解 oh m人工智能AI AgentAgent 编排AI 技能oh-my-opencode-slim 生命周期 Hooks 架构缓存安全注入与多 Agent 任务编排的底层机制oh my opencode slim 生命周期 Hooks 架构缓存安全注入与多 Agent 任务编排的底层机制 oh my opencode slim 是人工智能AI AgentAgent 编排AI 技能上一篇M/o/Vfuscator编译器开发纳秒级优化指南下一篇ToastFish 背单词把单词卡片塞进系统通知栏的免费新手指南创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考