人工智能AI Agent代码智能体多智能体MCP ClientsAgent 编排【免费下载链接】oh-my-openagentOmO: Just type mass ulw keyword with your prompt. Now you are the master of graph engineering.项目地址https://gitcode.com/gh_mirrors/oh/oh-my-openagent点击查看免费下载导读本文面向使用packages/omo-senpiSenpi 版 omo的开发者系统讲解内置于该发行版的task组件如何让当前会话中的 Agent 派生子代理child agent、在子代理运行期间继续工作、按需转向steer它们以及组建并协调一个具名团队team。读完本文你将掌握task系列工具task/task_send/task_output/task_cancel与 6 个 lead-only 团队工具的完整用法、omo.json中task/teams配置块的字段语义与默认值并理解底层运行器in-process / process、驻留回收、完成通知路由等机制的源码级原理。本文日常使用层面与引擎实现层面各有侧重引擎内部机制见 packages/senpi-task/AGENTS.md完整配置参考见 docs/reference/omo-json.md。组件开关默认开启可按需关闭task组件在 Senpi 版 omo 中默认开启。有两种方式关闭它启动时传入--no-omo-task标志该标志在 packages/omo-senpi/src/components/task/index.ts 中通过pi.registerFlag(omo-task, { type: boolean, default: true, ... })注册默认值为true。如果运行时的 Senpi ExtensionAPI 缺少组件所需的 capabilities组件会自行跳过missingTaskCapabilities(pi)检测到缺失能力时仅记录 warning 后 return。组件还内置了只读的omo-task与omo-task-usage-hint两个 flag后者控制每会话一次的 task 使用引导提示的注入。派生一个子代理Spawning a child使用task工具派生单个子代理。一次派生必须提供prompt外加且只能外加category路由到分类 worker或subagent_type直接调用具名 agent二者之一——两者互斥都省略则校验失败。参数校验规则源码级校验实现在 packages/senpi-task/src/tools/task/validation.ts错误码触发条件提示要点both_targetscategory与subagent_type同时提供“Provide EITHER category OR subagent_type, not both.”category_with_modelcategory与model同时提供category 路由的任务模型一律取自omo.json的 category 配置调用侧显式model会静默绕过路由故拒绝no_target两者都省略必须二选一prompt_and_tasks顶层prompt与tasks:[...]同时提供批处理与单发互斥no_prompt_or_tasks两者都无必填其一empty_taskstasks数组为空至少一项run_in_background_conflict顶层与条目级run_in_background取值不一致批处理内该开关必须全局一致其中category_with_model的提示明确给出了三种出路移除model、改用subagent_type显式指定模型、或在omo.json中配置categories.name.models。关键参数语义run_in_background: false默认同步等待子代理的最终回复内联返回。run_in_background: true立即返回任务 id以st_前缀开头你可以继续工作稍后用task_output等工具回查。name给子代理一个稳定的、人类可读的会话内句柄之后可按名字转向不必记 id。model仅对subagent_type有效category 路由的任务会拒绝它模型从 category 配置解析。load_skills将命名的 SKILL.md 内容前置到子代理 prompt 中。subagent_type必须指向一个已加载的 agent。名字未知或已禁用时失败码为unknown_target并列出可用 agents它绝不会被当作同名 category 解析——例如task(subagent_typearchitect)会失败而不是静默返回architect分类的模型。想要分类语义就显式传category: architect。提示词在 schema 描述中被注明仅限英文English-only但这只是文档约定并非机器强制。延续既有子代理不想新建、而是想带完整上下文继续某个已存在的子代理用task_send并把to设为该子代理的 id 或 name。批量派生fanout需要扇出时把顶层prompt/ 目标字段换成tasks:[...]。每个条目各自选择自己的category或subagent_type也可以设置name与load_skillsmodel仍然只对按subagent_type路由的条目开放。官方示例{ tasks: [ { category: quick, prompt: Check the API contract., name: contract }, { subagent_type: plan-reviewer, prompt: Review the migration risk in the plan., name: risk } ], run_in_background: true }行为差异同步批处理等待每个已启动的子代理返回一个聚合结果。后台批处理立即返回每个子代理的 id 与队列位置。部分失败批处理整体校验通过后若某个子代理无法启动其失败会与成功启动的兄弟结果一起报告见validation.ts的resolveSpawnItems条目级目标错误以item_target 索引定位。两种运行器in-process 与 process子代理由两类运行器承载实现在 packages/senpi-task/src/runners/in-process默认子代理运行在同一个 Senpi 运行时内通过父进程同一套工具闭包执行仅剔除task、task_*、team_*与dag成员作用域工具是唯一被允许的旁路见runners/in-process/shared-tool-filter.ts。这是最廉价的路径不需要额外进程。子会话记录同样落在stateDir/children/taskId/sessions/布局下因此干净退出与崩溃恢复的行为与 process 模式一致。process子代理被派生为隔离的 Senpi 进程。转向操作steer/abort/prompt跨越 JSON-RPC 边界runners/rpc/protocol-client.ts子代理转写transcript写入children/taskId/sessions/taskId/。下一次会话启动时带有持久化 session 的已死亡 process 子代理可以被重新拉起——无需重放原始 prompt——并通过switch_session重新绑定。process 子代理的两种宿主形态process 子代理自身又有两种运行方式作为机器级引擎守护进程daemon的一个 SESSIONmacOS/Linux 默认对应task.process_runner: host——由RpcHostRunnersrc/runners/rpc-host/实现启动规范launch spec以pluginRoot/daemon-launch-spec.json为唯一 argv 来源保留的会话在父进程退出后依然存活可在恢复时无需重放 prompt 重新挂接。作为独立的 OS 进程child-process且 Windows 上总是如此。auto模式如何抉择默认值来自omo.json的task.default_execution_mode出厂值为auto父会话只向共享 daemon 询问一次——能否托管子代理非 Windows、process_runner: host、且 daemon 对外宣告session_contextgeneration_handoff能力——能则用process不能则回退in-process。三条覆盖规则每个 agent 自身的execution_mode覆盖默认值omo.json中显式的in-process/process同样胜出受管制的只读 agent见下无论怎样都保持 in-process。当 daemon 无法接收子代理时原因每个会话只报告一次并以host_unavailable:reason注记出现在task_output中。团队成员一律使用 process 模式。它们的子进程会加载一个轻量 member 扩展该扩展持有成员收件箱轮询器inbox poller并且只暴露团队作用域的task_send。转向、等待与停止Steering / waiting / stopping每个控制/读取工具都按id 或 name定位子代理task_send总是向运行中的子代理转向一条纯文本消息。to接受子代理 id/name也接受团队成员名。向一个已结束的 resident 子代理发送会复活同一会话。针对 lead 会话的结构化关闭消息shutdown 请求/响应也经由该工具路由src/tools/control/send.ts。task_output立即返回子代理快照mode:status或转写窥视mode:tail/mode:full。它从不等待完成终态结果通过 task-completion 通知到达。送达的团队消息显示为[team message from from] body行。转写输出有上限TRANSCRIPT_MAX_CHARS 30000packages/senpi-task/src/tools/output/render.ts超出部分会被省略标记。task_cancel终态取消子代理并停止其工作src/tools/control/cancel.ts。父进程主动发起的取消会在工具响应中同步返回结果绝不会触发完成通知——这条规则同样适用于中断interrupt。空闲驻留idle parking与消息复活message revivaltask.resident_idle_timeout_ms控制一个可被驻留的终态子代理在无活动的情况下保持驻留的时间。默认值900000 ms15 分钟。仅接受正的 safe-integer 毫秒数0、小数、字符串以及各种“禁用哨兵”均为非法值。空闲清扫使用同一时间间隔并且不会让宿主进程保持存活。驻留发生在updated_at resident_idle_timeout_ms及之后的某次清扫中绝不会提前。一次发送会刷新updated_at运行中的子代理与有 pending steering 的子代理受保护不会被驻留。驻留形态空闲的in-process子代理驻留为persisted_onlyprocess子代理含团队成员驻留为rpc_detached。它们的 live 句柄被释放但不是不可逆地驱逐。对可驻留的已驻留子代理 task id 直接task_send会恢复其已记录转写与启动契约launch contract准入一个新 run epoch仅当收到送达确认后才报告复活成功。准入被拒与送达不确定uncertain delivery都是显式错误不确定的消息不会自动重放。被 kill、被取消、丢失lost以及 one-shot 的子代理保持不可续跑。容量驱动的驱逐行为不变。与其他生命周期配置的边界驻留与task.ttl_ms记录与工件保留期默认 86400000 ms 24h以及task.resume_children会话关闭行为相互独立旧输出在记录过期前仍可经task_output读取团队名发送仍是持久化邮箱写入已驻留进程没有活跃的 inbox poller所以想直接复活请用其task id或者先恢复所属会话再期待邮箱送达。查看子代理/tasks列出当前会话的子任务/tasks --all列出所有会话的任务对应ListScope的parent-session与all两种作用域。转写输出受TRANSCRIPT_MAX_CHARS截断保护同上。完成通知Completion notifications当后台子代理自行结束completed/error/lost三种外部引起的终态时引擎会恰好一次exactly-once向父会话路由一条完成通知。路由决策实现在 packages/senpi-task/src/completion/routing.ts父会话状态动作说明idle空闲wake总是唤醒使完成通知在父会话下一轮注入没有任何设置可以抑制streaming流式中deliver_streaming在下一个工具调用边界将通知转向进当前回合同一批窗口约 200ms内就绪的多条通知合并为一次注入compacting/session_switching/session_shutdownbuffer缓冲待父会话稳定后一次性冲刷因为取消及中断在工具结果中同步返回它们永远不会作为完成通知送达——只有外部引起的终态才会通知shouldNotifyStatus仅对completed/error/lost返回 true。引擎侧还具备崩溃恢复能力会话启动时reconcileUnnotifiedNotifications会对仍欠通知的终态子代理按正常投递路径重发去重身份为(task_id, run_epoch)保证跨会话重启后通知不丢失。/tasksUI 与状态控件组件注册了两个斜杠命令packages/omo-senpi/src/components/task/commands.ts/tasks列出本会话任务/tasks --all跨会话列出。/task-kill在可取消任务状态为running/pending/interrupted上打开选择器确认后取消所选任务。此外编辑器下方有一个实时状态控件status widget随会话任务的变更持续刷新footer 本身仍保留给目标指示器goal indicator使用。团队Teams面向协调式多代理工作lead 会话获得6 个团队工具packages/senpi-task/src/tools/team/index.tsteam_create、team_delete、task_create、task_get、task_list、task_update这些工具仅限 lead 使用。成员会话只收到团队作用域的task_send绝不会收到团队生命周期或任务列表工具。lead 的团队消息与关闭请求/响应载荷都经由task_send路由。具名团队的来源与成员规格具名团队来自两个位置omo.json的项目级teams块project/.omo/teams/name/config.json——名称冲突时目录规格优先。用户全局的团队存储不会被加载。每个团队 1–8 名成员多成员omo.json规格仍要求 schema 中的leadAgentId且当前会话始终是运行时 lead。成员二选一判别字段kindkind: category需要categorypromptkind: subagent_type需要subagent_typeprompt可选。团队 schema 的完整字段见 docs/reference/omo-json.md#teamsversion、name^[a-z0-9-]$、description、createdAtepoch ms、leadAgentId多成员必填、teamAllowedPaths、sessionPermission、members1–8 个按kind判别成员公共字段含name、可选cwd/worktreePath/subscriptions/color/isActive默认true与backendType默认in-process。邮箱投递Mailbox deliverytask_send将每条团队消息追加到收件人的持久化收件箱并立即返回收件箱轮询器预留未读消息并注入收件人会话成员投递使用pi.sendMessage steer 投递lead 轮询器走同一条注入驱动的通知路径每个成员进程轮询自己的收件箱lead 适配器只轮询持久化leadSessionId属于当前会话的团队lead 轮询在会话启动时及父会话空闲或流式期间的每秒运行并在压缩compaction、会话切换与关闭期间暂停。投递是预留制reservation-based的未读messageId.json先变为.delivering-messageId.json只有在消息被观察到进入收件人会话后才提交为processed/messageId.json——这个 processed 文件就是持久化的恰好一次账本。持久化的预留与已处理状态可以防止收件箱消息在投递或重启对账reconcile期间丢失。没有team_wait如何等待团队回复不存在team_wait工具组件会注册registerRemovedToolHint(team_wait, ...)提示。当下一步依赖回复时用task_send发送结束当前回合让被 steer 的团队消息通知在回复到达时恢复对话。配置Configuration所有默认值都活在omo.json的task与teams块下。最小项目配置官方示例// .omo/omo.jsonc { task: { default_execution_mode: auto, reattach_on_reconcile: true, resident_idle_timeout_ms: 900000, wait: { default_ms: 90000 } } }注意schema 中task.wait.default_ms的默认值是 60,000 ms上面示例里的 90,000 只是覆盖示例并非默认值。task字段参考含默认值下表取自 docs/reference/omo-json.mdtask一节schema 定义于schema/task.ts字段类型默认值default_execution_modeauto \| in-process \| processautoprocess_runnerhost \| child-processhosthost_engine_policyupgrade \| fallbackupgradehost_idle_exit_ms正 int未设置取启动 profile 的可调项default_concurrency非负 int0 不限5provider_concurrencyrecordstring, 非负 int未设置model_concurrencyrecordstring, 非负 int未设置global_concurrency非负 int0 不限有效默认max(8, availableParallelism() * 2)max_depthint 01residency_max_children非负 int 或unlimited有效默认max(8, availableParallelism() * 3)ttl_ms正 int8640000024hstate_dirstring未设置运行时用project/.omo/senpi-taskreattach_on_reconcileboolean未设置resume_childrenbooleantruewarnings.unavailable_categoriesbooleantruewait.min_ms正 int5000wait.default_ms正 int60000wait.max_ms正 int600000team.max_membersint 1..88team.max_parallel_membersint 1..84team.max_wall_clock_minutes正 int120dagobject未设置要点补充state_dir未设置时默认project_dir/.omo/senpi-taskpackages/senpi-task/src/store/state-dir.ts。global_concurrency按 senpi 进程生效跨进程不共享任务在无法进入首选模型 lane 时会沿 fallback chain 溢出到后续条目——该条目可能属于不同 provider价格与数据处理方式不同如需控制请移除跨 provider 条目或使用单模型链。完成投递不可配置每个子代理完成通知都会与其它就绪通知批量合并并在下一个工具调用边界 steer 进父会话的当前回合详见上文的完成通知一节与 packages/senpi-task/AGENTS.md 中的路由表。reattach_on_reconcile: false仅用于保留旧的 lost-task 行为默认情况下会话启动对账会复活已挂起会话的子代理并重新挂接持久化的 process 成员。受管制的只读 agentagents/builtin/内置四个只读策展子代理explore、librarian、plan-consultant、plan-reviewer另有三个 ulw-loop 评审 builtinomo-senpi-code-reviewer、omo-senpi-qa-executor、omo-senpi-gate-reviewer。前四个被钉在executionMode: in-process并带 9 工具白名单read、find、grep、ls、bash、lsp_diagnostics、lsp_goto_definition、lsp_find_references、lsp_symbolsCURATED_READONLY_AGENT_NAMES同时喂给team/member-validator.ts——在团队成员规格中指名这些只读 agent 会被拒绝团队成员强制 process 模式无法携带其 persona 指令与工具策略应改用task工具委托。teams配置示例{ teams: { reviewers: { leadAgentId: lead, members: [ { kind: category, name: quick, category: deep, prompt: Review the diff. } ] } } }更完整的taskcategoriesagentsteams组合示例见 docs/reference/omo-json.md 的 Example 一节。工程提示跨版本差异与已预留功能packages/omo-opencode是独立构建仍沿用其旧版 task/team 名称跨版本cross-edition对齐是 Senpi 指南之外的一项有意安排的后续工作。不要把本文的 Senpi 工具名直接套用到omo-opencode上。两个已预留schema-reserved但 Senpi 运行时尚未启用的能力成员选项backendType: tmux与用户全局团队存储。schema 已接受但运行时不会执行它们。进一步阅读引擎内部全貌状态机、存储、生命周期、完成通知、团队投递模型、QA 命令packages/senpi-task/AGENTS.md配置参考含 layer 优先级、harness 块、profile 解析docs/reference/omo-json.mdSenpi 版组件装配与命令注册packages/omo-senpi/src/components/task/index.ts 与 commands.ts单发/批处理校验packages/senpi-task/src/tools/task/validation.ts完成通知路由packages/senpi-task/src/completion/routing.ts运行器实现packages/senpi-task/src/runners/in-process / rpc / rpc-host 三个子目录赞分享人工智能AI Agent代码智能体多智能体MCP ClientsAgent 编排【免费下载链接】oh-my-openagentOmO: Just type mass ulw keyword with your prompt. Now you are the master of graph engineering.项目地址https://gitcode.com/gh_mirrors/oh/oh-my-openagent点击查看免费下载相关推荐oh-my-openagent Senpi 版 task 组件怎么派生子代理、后台运行并用 /tasks 检查与取消oh my openagent Senpi 版 task 组件怎么派生子代理、后台运行并用 /tasks 检查与取消 这篇文章面向已经在使用 oh my op人工智能AI Agent代码智能体多智能体MCP ClientsAgent 编排oh-my-openagent 的 Codex Teammode 组件从 PostToolUse 钩子到多代理团队编排的完整实现指南oh my openagent 的 Codex Teammode 组件从 PostToolUse 钩子到多代理团队编排的完整实现指南 导读 packages/人工智能AI Agent代码智能体多智能体MCP ClientsAgent 编排如何 3 步把 Embla Carousel 轮播库跑起来如何 3 步把 Embla Carousel 轮播库跑起来 产品页的轮播拖一下卡一下回位时猛地一弹用户吐槽说“跟拖砖头似的”。换了三个库之后我用了 Emb前端UI组件上一篇petals安全漏洞防范常见攻击向量与防御措施下一篇AsyncTCP为ESP32打造的高性能异步TCP通信库完全指南创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
企业数字化 ERP 产品动态
相关推荐
Maestro YAML测试脚本:5分钟跑通移动UI自动化测试的完整指南 Maestro YAML测试脚本:5分钟跑通移动UI自动化测试的完整指南 【免费下载链接】Maestro Painless E2E Automation for Mobile and Web 项目地址: https://gitcode.com/GitHub_Trending/ma/Maestro
新人接手项目,翻了半天UI测试脚本,还是… · 2026/9/20 23:19:04
Slang 编译器 WGSL 目标后端详解:语义映射、缓冲区翻译与入口点处理 Slang 编译器 WGSL 目标后端详解:语义映射、缓冲区翻译与入口点处理 【免费下载链接】slang Making it easier to work with shaders 项目地址: https://gitcode.com/GitHub_Trending/sl/slang
WGSL(WebGPU Shading Language)是 WebGP… · 2026/9/20 23:19:04
三步备份QQ空间全部历史说说:GetQzonehistory新手完整指南 三步备份QQ空间全部历史说说:GetQzonehistory新手完整指南 【免费下载链接】GetQzonehistory 获取QQ空间发布的历史说说 项目地址: https://gitcode.com/GitHub_Trending/ge/GetQzonehistory
打开一条五年前的QQ空间说说,配图已经打不开ÿ… · 2026/9/20 23:19:04
LaTeX参考文献管理:从.bib到.bbl完整解析 1. 开篇:为什么LaTeX参考文献让新手又爱又恨我经常在论坛和答疑群里看到这样的提问:“为什么我的LaTeX编译出来参考文献全是问号?”“为什么.tex文件旁边多了一堆.aux、.bbl、.blg文件?”“.bib和.bbl到底有什么区别?”… · 2026/9/21 0:05:19
CubeSQL 开发与架构指南:用 Rust 让 PostgreSQL 客户端直连 Cube 语义层 CubeSQL 开发与架构指南:用 Rust 让 PostgreSQL 客户端直连 Cube 语义层 【免费下载链接】cube 📊 Cube Core is open-source semantic layer for AI, BI and embedded analytics 项目地址: https://gitcode.com/gh_mirrors/cu/cube
CubeSQL 是 C… · 2026/9/21 0:05:19
Gromacs GPU版与CPU版性能实测:加速比最高可达22倍 1. 这次测试的背景与动机做分子动力学模拟的朋友应该都有这种体会:明明跑的是同一个体系、同一套参数,别人的结果就是比你先出来。好几年前我还在用纯CPU跑Gromacs的时候,一个几百纳秒的蛋白体系动辄要跑两三周,改参数调bug的成本… · 2026/9/21 0:05:19
基于黏菌优化算法的无人机三维路径规划MATLAB仿真实现 简介:针对无人机三维路径规划与智能优化算法应用需求,一份基于黏菌优化算法(SMA)的MATLAB实现资料,适合有一定编程基础、希望快速上手元启发式算法的科研人员与工程师。压缩包共1个docx文档,大小仅1.2MB&am… · 2026/9/21 0:05:19
baoyu-image-gen 首次配置完全指南:从 EXTEND.md 交互问答到默认模型选型 baoyu-image-gen 首次配置完全指南:从 EXTEND.md 交互问答到默认模型选型 【免费下载链接】baoyu-skills 项目地址: https://gitcode.com/gh_mirrors/ba/baoyu-skills
导读
baoyu-image-gen 是 baoyu-skills 仓库中的 AI 图像生成技能,它通过统… · 2026/9/21 0:04:19
Flutter for OpenHarmony游戏卡片渐变背景实战:从原理到性能优化 直接铺开项目本身吧。这几个月我一直在折腾一件事:用Flutter给OpenHarmony做一款游戏集合类的App,说白了就是把若干小游戏塞进一个壳里,用统一入口分发。这个方向本身不算新鲜,真正让我花了不少心思的,是首页那堆游戏卡… · 2026/9/21 0:02:39
Word表格编号全攻略:从列表编号到题注交叉引用 写Word文档,最让人头疼的往往是那些“看起来不起眼”的小问题。比如表格编号这事:今天在表后面多加了两个空白行,明天给客户交稿前发现整个章节的编号全部错位,光是挨个改序号就能耗掉大半个下午。我前阵子帮人整理一份上百页的技… · 2026/9/21 0:02:39
从第一个站到第二个站:独立开发者的静态网站选型与落地实践 1. 项目概述1.1 核心需求解析做独立开发者这几年,说实话,第一个网站上线的那天晚上我兴奋得没睡着。但等它跑了半年,流量惨淡、功能臃肿、代码自己都懒得看第二遍之后,我才慢慢琢磨明白一个道理:第一个网站是练手&… · 2026/9/20 0:00:41
agents-generator 决策矩阵全解析:从项目检测到 AGENTS.md 规则生成的 16 步判定流程 agents-generator 决策矩阵全解析:从项目检测到 AGENTS.md 规则生成的 16 步判定流程 【免费下载链接】agentic-awesome-skills AAS Core is the local, agent-first control plane for complete catalog discovery, agent-owned selection, stack validation, and … · 2026/9/21 0:00:18
gin-vue-admin 前端工具函数全景指南:src/utils 复用规范与源码级解析 gin-vue-admin 前端工具函数全景指南:src/utils 复用规范与源码级解析 【免费下载链接】gin-vue-admin 🚀ViteVue3Gin拥有AI辅助的基础开发平台,企业级业务AI开发解决方案,内置mcp辅助服务,内置skills管理,… · 2026/9/21 0:00:18