
人工智能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 的Preset预设机制展开讲解如何在 OpenCode TUI 中通过/preset斜杠命令在运行时切换整套智能体团队的模型配置覆盖三级管理器的交互流程、配置文件的持久化原理、extends单父继承规则、模型/variant/temperature/options 字段的完整语义以及「启动预设 vs 运行时切换」两种激活方式的差异。读完本文你将掌握用预设为 orchestrator、explorer、oracle、librarian 等智能体批量分配不同厂商模型如 Anthropic 与 OpenAI 混搭、在会话中不中断当前对话的前提下切换团队配置并理解为什么切换后必须 Reload OpenCode 才能生效。什么是 Preset一次定义一键切换整支智能体团队在 oh-my-opencode-slim 的多智能体编排中不同 Agentorchestrator、explorer、oracle、librarian、fixer、designer、observer 以及自定义 Agent各自绑定独立的模型。Preset 就是把一组「Agent → 模型 参数」的映射打包成一个命名配置{ presets: { cheap: { orchestrator: { model: anthropic/claude-3.5-haiku }, explorer: { model: openai/gpt-6-luna }, oracle: { model: anthropic/claude-sonnet-4-6 } } } }预设解决了两个典型痛点成本分级定义cheap低成本模型、powerful旗舰模型、thinking启用推理预算等多套配置按任务类型切换厂商混搭同一预设内可为不同 Agent 指定不同 Provider例如 orchestrator 用 OpenAI、oracle 用 Anthropic实现「Mix any models」。预设定义在oh-my-opencode-slim.jsonc的presets字段下也可以用 TUI 管理器交互式创建。完整的配置项参考见 docs/configuration.md 中的「Runtime Preset Switching」小节。/preset一个纯 TUI 斜杠命令/preset是TUI-only斜杠命令与 OpenCode 内置的/models同属一类纯界面交互不触发任何 LLM 调用。从源码看命令通过 OpenCode 的api.command接口注册见 src/tui.tsonSelect直接打开预设管理器全程不向服务端发送消息、不消耗 token。调用方式重点正确通过 TUI 的自动补全选择或键位绑定触发/preset错误直接输入/preset后按 Enter不会打开管理器——这与/models的设计一致属于刻意行为。若api.commandAPI 不可用例如未来的 v2-only 构建命令不会被注册/preset将变成 no-op源码注释见 src/tui.ts。v1 与 v2 主机的差异主机行为v1 hosts使用选择器picker在三级管理器中交互操作v2 hosts支持\preset name直接应用命名预设生效前仍需 Reload三级管理器从预设列表到单个模型参数/preset打开的管理器实现位于 src/tui-preset.ts其头部注释明确描述了三级结构Level 1 → Level 2 → Level 3。它使用api.ui.*对话框原语并通过api.client.providers()拉取模型列表。级别操作内容1. 预设列表对已有预设执行Apply / Edit / Delete或Create新预设2. Agent 编排选择Base preset对本地 Agent 执行Add / Remove / Edit最后Save或Save Apply3. 编辑 Agent依次选择model → variant思考强度→ temperature → optionsJSON当没有任何预设且未激活预设时管理器会直接跳到「创建新预设」输入框见 src/tui-preset.ts。Level 1预设列表列出用户配置与项目配置中的全部预设。项目级project预设会标记为只读[project - read-only]因为项目配置.opencode/oh-my-opencode-slim.jsonc的优先级高于用户配置TUI 只写入用户级配置文件。当前激活的预设会标记(active)。Level 2Agent 编排与继承编辑这一层是「编辑继承预设」的核心选择Base preset可指定一个父预设或选(none)表示无继承管理器阻止自引用与继承环源码层面由wouldCreatePresetCycle实现见 src/tools/preset-switch.ts继承来的 Agent 仅供查看、只读如需修改使用 Add agent创建本地 override再到 Level 3 编辑保存继承预设时保留其extends值只写入本地 override不会把继承的 Agent 扁平化复制进子预设对应writePreset的实现见 src/tools/preset-switch.ts。因此编辑父预设会在下次 Reload 后影响其所有子预设。反之有依赖者dependents的 Base 预设无法被删除除非这些子预设先改选其他 Base 或清除继承——deletePreset会通过findPresetDependents检查依赖关系并拒绝删除见 src/tools/preset-switch.ts。Level 3模型、variant 与 options进入单个 Agent 的编辑界面后模型选择器列出所有已连接 Provider 的模型从服务端 Provider 注册表获取。模型 ID 使用provider/model格式variant 选择器若所选模型暴露了 variants如thinking、high、low会紧跟着出现 variant 选择器——这就是「思考强度thinking strength」选择器temperature数值输入范围0–2可留空留空时由 OpenCode 选择默认值options原始 JSON 输入用于 Provider 专属设置例如{ thinking: { type: enabled, budgetTokens: 10000 } }Apply 到底做了什么只持久化名称不热切换/preset的 Apply 行为是整个机制中最容易被误解、也最值得注意的部分。其核心实现在switchPresetOnDisk见 src/tools/preset-switch.ts源码注释给出了明确的四步语义只把预设名称写入用户配置文件oh-my-opencode-slim.json[c]的preset字段不创建任何内存级 Agent 覆盖in-memory agent override不热切换当前 Agent 注册表——sidebar 刻意不在会话中途刷新。原因Agent 注册表在 Reload 前保持不变若在运行中的 Agent 旁边显示新模型会产生误导必须 Reload OpenCode新预设才会在下次loadPluginConfig重读配置、合并进config.agents时生效。每次打开管理器时都会重新读取配置openPresetManager注释Re-reads the config each time it is opened so newly-edited files are reflected因此你手动编辑的配置文件会即时反映在管理器中。为什么当前会话不被 Reload设计决策这不是疏漏而是刻意设计。源码注释与文档一致地列出了四个风险上下文截断新模型可能窗口更小热切换会截断当前会话上下文系统提示漂移更换 Agent 定义后之前已生成的 assistant 轮次会「漂移」在已变更的 system prompt 之下运行中子 Agent 引用失效正在运行的子 Agent 可能还引用旧 Agent 定义工具/技能可用性偏移工具与技能的可用集合可能发生变化。文档明确写到真正无需重置的「会话内原子切换」需要宿主提供原子刷新 Agent 注册表 会话兼容性检查的 API属于未来路径。持久化的两个细节persistPresetName会把整个配置文件重写为纯 JSONJSON.stringify(persisted, null, 2)JSONC 注释不会被保留——这与既往服务端行为一致见 src/tools/preset-switch.ts读取时会先剥离 UTF-8 BOMRFC 8259 允许 BOMJSON.parse会因 BOM 报 Unrecognized token保证切换总能成功持久化。切换会被拒绝的场景switchPresetOnDisk对以下情况返回错误提示不写入任何状态预设不存在会列出可用预设或提示「No presets configured」预设继承解析失败PresetResolutionErrormissing-parent/cycle见 src/config/presets.ts预设为空无任何 Agent override项目配置.opencode显式设置了不同的preset——因为项目配置在 Reload 时优先级更高需先移除或更新.opencode/oh-my-opencode-slim.jsonc中的 preset环境变量OH_MY_OPENCODE_SLIM_PRESET指向不同的预设——环境变量在加载时覆盖配置文件见 src/config/loader.ts需先取消该变量或改为目标预设名。支持字段Reload 后哪些字段真正生效当预设在一个 OpenCode Reload 边界被加载时以下字段会被应用字段说明modelprovider/model格式的模型 ID。数组形式fallback 链会解析为第一项temperature推理温度0–2variant模型 variant如thinkingoptionsProvider 专属选项如 thinking budgetextends在同一 Reload 边界解析预设仅支持单父继承多父继承不受支持从源码看数组形式模型在mapOverrideToAgentConfig中被取第一项作为主模型其附带的variant也会一并提取见 src/tools/preset-switch.ts完整的 fallback 链解析发生在初始化时的config()钩子中。以下字段不应用于当前会话需要 Reload OpenCode 才生效prompt、skills、mcps、displayName。完整配置示例cheap / powerful / thinking 三套预设文档给出的示范配置可放入oh-my-opencode-slim.jsonc{ presets: { cheap: { orchestrator: { model: anthropic/claude-3.5-haiku }, explorer: { model: openai/gpt-6-luna }, oracle: { model: anthropic/claude-sonnet-4-6 } }, powerful: { orchestrator: { model: openai/gpt-6 }, oracle: { model: anthropic/claude-opus-4-6 }, librarian: { model: anthropic/claude-sonnet-4-6 } }, thinking: { oracle: { model: anthropic/claude-sonnet-4-6, variant: thinking, options: { thinking: { type: enabled, budgetTokens: 10000 } } } } } }三套预设各司其职cheap用低成本模型跑日常任务powerful用旗舰模型处理重活thinking为 oracle 开启思考模式并限定 10000 token 的推理预算。两种合法的书写语法Schema 层面src/config/schema.ts接受三种形式推荐使用结构化语法// 推荐结构化语法agents 包装 { presets: { design: { extends: base, agents: { designer: { model: anthropic/claude-sonnet-4-6 } } } } }// 兼容内联语法extends 直接与其他 Agent 键并列 { presets: { design: { extends: base, designer: { model: anthropic/claude-sonnet-4-6 } } } }normalizePreset会统一这两种写法见 src/config/presets.ts。注意extends若与某个名为agents的自定义 Agent 冲突会导致语法歧义报错需改用不冲突的 Agent 名。预设继承深入单父继承与字段优先级extends让子预设只覆盖需要变更的 Agent父预设提供默认值。解析顺序先解析父再合并子resolvePreset的深度优先遍历 缓存实现见 src/config/presets.ts。覆盖优先级对于重叠的 Agent 字段生效顺序为ancestor child root agents host configancestor祖先预设提供默认值child子预设覆盖之rootagents插件顶层agents对象覆盖当前激活的预设——因此值需要随预设变化的 Agent 不要放进顶层agents应写进每个预设块内host configOpenCode 的opencode.json中的 Agent 条目是最终覆盖。该优先级在/preset选择预设后同样适用——/preset只持久化选择结果不创建内存覆盖见 docs/configuration.md。继承与模型解析的源码细节mergeAgentOverridessrc/config/presets.ts处理了一个关键场景inheritModelFrom是显式的「清除下层模型」指令。若某层设置了inheritModelFrom而未设置model合并时会删除下层带来的model字段把模型决策权交给后续解析session或orchestrator。同时resolvePreset的缓存只在完整祖先链解析成功后才填充失败链会被整体省略见 src/config/loader.ts保证选中的预设永远不会收到「半解析」的祖先。启动预设 vs 运行时切换两种激活方式对比方法如何操作是否持久化配置文件在oh-my-opencode-slim.jsonc中设置preset: cheap✅ 是跨重启保留/presetTUI 命令会话中从选择器选中预设✅ 是——写入配置文件但需 Reload OpenCode 生效两条路径殊途同归/preset把选中的预设名写入配置文件因此切换跨重启持久化。但无论哪种方式都必须Reload OpenCode才能让新预设作用于 Agent 注册表当前会话会以其现有模型继续运行、不被中断。环境变量与项目级预设进阶除配置文件外还有两个影响预设选择的输入源OH_MY_OPENCODE_SLIM_PRESET环境变量加载时覆盖配置文件中的preset值见 src/config/loader.ts。这也解释了为什么/preset切换会在该变量存在且指向其他预设时被拒绝——Reload 后环境变量会「赢」项目级配置.opencode/oh-my-opencode-slim.jsonc优先级高于用户配置。项目预设可定义但不可在 TUI 中编辑只读且项目级preset字段同样会否决/preset的切换请求。此外loadAgentPrompt是预设感知的当预设激活时插件会先查oh-my-opencode-slim/提示词目录下的preset/子目录再回退到根目录支持项目级与用户级两级、预设专属与通用四种查找顺序详见 docs/configuration.md。实践建议总结用预设做成本/能力分级定义cheap、powerful、thinking三档配合extends继承避免重复配置记住三条铁律/preset是纯 TUI 命令用补全或键位触发不要按 EnterApply 只写配置名Reload OpenCode 后才真正生效值随预设变化的 Agent 放进预设块不要放顶层agents否则会被全局覆盖、无法随预设切换不要混用内联prompt与提示词文件提示词文件优先于内联 prompt已知限制 #899共享长 prompt 时应把内容放在文件中、预设块只写model/variant切换被拒绝时先检查三处项目.opencode配置中的preset、环境变量OH_MY_OPENCODE_SLIM_PRESET、目标预设是否为空或存在继承环。如需完整的预设字段参考displayName、color、skills、skills_add、skills_remove、mcps等扩展字段请查阅 docs/configuration.md 中的「Runtime Preset Switching」与「Per-preset agent configuration」章节。赞分享人工智能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 Zsh themes 插件实战运行时切换主题、随机主题与主题清单Oh My Zsh themes 插件实战运行时切换主题、随机主题与主题清单 Oh My Zsh 的 themes 插件让你可以在同一个 shell 会话中通CLI开发工具插件系统OHIF Customization Service 高级定制inheritsFrom 继承与 $transform 运行时变换OHIF Customization Service 高级定制 inheritsFrom 继承与 $transform 运行时变换 OHIF Viewer 的医疗健康前端音视频安全与伦理Cosmos3-Super-Text2Image内容生成的防护机制与最佳实践安全与伦理Cosmos3 Super Text2Image内容生成的防护机制与最佳实践 Cosmos3 Super Text2Image作为一款先进的AI文本人工智能大模型媒体生成多模态计算机视觉上一篇如何用 ScreenCaptureKit 做低占用 macOS 屏幕录制QuickRecorder 实战拆解下一篇ALVR Vulkan层技术GPU加载优化和渲染性能提升终极指南创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考