Firstmate 的 Model 与 Effort 双轴契约:harness 适配层的选择、优先级与记录机制

发布时间:2026/10/9 1:39:34

Firstmate 的 Model 与 Effort 双轴契约:harness 适配层的选择、优先级与记录机制 【免费下载链接】firstmateTalk to one agent. Ship with a crew.项目地址https://gitcode.com/gh_mirrors/fi/firstmate点击查看免费下载导读本文解读 firstmate 仓库中 harness 适配层harness-adapters的公共参考文档 model-and-effort.md它定义了 crewmate / secondmate 启动时--model与--effort两个轴从自然语言规则到具体 CLI 参数的全部契约包括优先级链、六档 effort 词汇表、ultra原生契约、record-and-omit 兜底策略以及 harness 身份与模型 provider 的严格区分。读完本文你将掌握 firstmate 是如何在fm-spawn.sh、fm-harness.sh与任务元数据之间完成模型/推理强度决策的并能对照源码与测试用例验证每个环节。双轴模型从自然语言规则到具体 CLI 参数在 firstmate 的架构里自然语言的分派规则归 firstmate 自己判断而脚本只接收具体轴值concrete axes。bin/fm-spawn.sh在入口处接受三种具体参数fm-spawn.sh task-id project-dir --harness name|harness|launch-command \ --model name --effort level [--backend name]--harness显式的 per-spawn harness/profile 适配器--model具体模型名如xai/grok-4.5-*、codex-native/model--effort具体推理强度级别取值被严格限定为low | medium | high | xhigh | max | ultrafm-spawn.sh 中的校验错误信息原文--effort must be one of low, medium, high, xhigh, max, ultra。参数解析位于 fm-spawn.sh支持--effort level与--effortlevel两种写法。脚本从不解析自然语言分派规则——规则匹配是 firstmate 的判断职责脚本只消费已经选定的具体值。这也解释了为什么.agents/skills/harness-adapters/references/common/model-and-effort.md开头就要求在选定、校验或变更任一轴之前先加载所选工具参考工具参考tool reference记录的是已验证的 flag、可接受值、省略行为与发现方式discovery是双轴决策的事实底座。Effort 优先级链每任务指令 分派配置/固定值 回退值文档给出了明确的 effort 优先级effort precedence三层自上而下per-task captain instruction每任务船长指令最高优先级本次分派内有效applicable dispatch profile 或 secondmate pin即 crew-dispatch.json 中命中规则的 profile 中声明的effort或config/secondmate-harness中的 effort token其行格式为harness [model] [effort]见 configuration.mdfallback回退值仅当前两者都没有指定 effort 时才启用。契约要求绝不替换更高优先级的取值回退值只在两者均未指定时使用。这条规则在 dispatch.md 中有更完整的表述config/crew-dispatch.json可用具体 harness/model/effort 轴覆盖静态默认当 opt-in 的bin/fm-dispatch-resolve.sh开启时其clear答案直接给出具体轴值。Effort 六档词汇与回退选择指南回退值的选择不是随意的文档给出了明确的语义low用于理解充分well-understood、路径明确有界explicit bounded path的工作xhigh用于模糊调查ambiguous investigation或设计类任务中间级别随复杂度complexity、不确定性uncertainty、影响半径blast radius或开放式推理open-ended reasoning上升而逐级选择。两条红线cap 而非静默省略如果适配器不支持xhigh应封顶到其支持的最高非max级别而不是把意图静默丢弃max永远不允许通过回退值选择只有显式的 per-task 或 standing captain 偏好才允许max。从源码看这个封顶动作体现在 fm-spawn.sh 的effort_flag_for_harnessgrok 只接受low|medium|high--reasoning-effort因此xhigh/max被省略而非传入已知坏值agy 1.2.0 的--effort同样只接受low|medium|high。注意源码注释fm-spawn.sh特别说明grok 同时暴露--effort与--reasoning-effort而 firstmate 的 profile 轴对应的是推理旋钮且 grok 0.2.99 起--reasoning-effort明确拒绝xhigh与max。ultra原生契约模型范围的拒绝校验ultra是共享词汇表中的显式原生native值它不走普通映射路径而是受模型范围拒绝契约model-scoped refusal contract约束——由bin/fm-harness.sh validate-native-effort独占fm-harness.sh validate-native-effort harness model effort对应实现位于 fm-harness.sh当effortultra时只有harness为pi或pi-signed且model显式形如codex-native/model才放行否则直接报错error: ultra effort requires pi or pi-signed with an explicit codex-native/model model配套的发射逻辑在 fm-spawn.shPi / Pi-signed 收到ultra后发射的是--codex-effort ultra而不是--thinking ultra——ultra属于 native Codex 会话的扩展 flag与 Pi 自身的 thinking 级别low|medium|high|xhigh|max经--thinking发射严格分离。这一点在 pi.md 工具参考 中也有记录Native Codex sessions may requestultrathrough the native extension flag... it is separate from Pis thinking levels.实测证据见 tests/fm-pi-codex-native.test.sh模拟的model/listRPC 返回模型gpt-6-astra其supportedReasoningEfforts为[high,ultra]而启动参数在非 resume 场景下显式 push--codex-effort ultra同文件 L181。Record-and-omit不支持的值绝不传参但绝不丢迹这是双轴契约中最能体现保成功哲学的机制若请求的 effort 超出所选适配器的可接受集合spawn记录effort请求值到任务元数据但不发射任何 effort flag没有已验证交互式 effort flag 的 harness如 rovo 的run无--effort、Devin 的 effort 属于 model id走同一个 record-and-omit 契约fm-spawn.sh目的保留启动成功preserve launch success而不是把已知坏值known-bad value传给 CLI。元数据落点在state/id.meta格式为effort值fm-spawn.sh与harness、model并列供恢复recovery与控制操作读取——这正呼应了 SKILL.md 的恢复规则使用state/id.meta中精确的harness绝不要从模型或 provider 推断它。端口回归测试可直接复用tests/fm-agy-harness.test.sh 的test_agy_effort_xhigh_is_recorded_but_omitted验证了完整闭环用--model gemini-3.8-flash-low --effort xhigh启动 agyspawn 仍应成功exit 0捕获的 launch.log不得包含--effort已知坏值未被传出而state/id.meta中必须保留effortxhigh轴值未丢失。同文件的 test_agy_launch_carries_the_brief_with_model_effort_and_autonomy 则验证了支持路径low被原样发射为--effort low且model与effortlow同时进入 meta。Harness 身份与 Provider 独立名字不可互相推断文档用两个反例确立了一条关键原则——harness 身份独立于模型 providerharnesspimodelxai/grok-*这是Pi 使用 xAI 的模型不是独立版 Grok Build也不需要 Grok CLI 登录harnesscursormodelcursor-grok-4.5-*这是Cursor 路由 Grok 模型而不是harnessgrok。任何脚本都不会替你解析凭据来源credential provenance。正确做法是从工具的发现面discovery surface与quota-axi auth --json的逐 provider 来源建立事实并展示推理过程而不是从名字推断。这一契约的工程后果在恢复场景中尤其致命SKILL.md 明确要求恢复与控制操作使用state/id.meta中记录的精确harness绝不从模型或 provider 推断——因为模型名完全可能跨 provider 路由。Discovery把模型知识当当前发现而非永久命名空间文档要求把模型与 provider 知识视作当前发现current discovery而非永久命名空间或固定映射。原因是可用性随版本、账户、配置变化因此要以所选工具参考在当前认证环境下的权威面authoritative surface为准。对不熟悉的命名空间unfamiliar namespace建立支持与 provider 身份的唯一途径是该 harness 的 CLI help如--help模型列表model listing如 Pi 的executable --list-models [search]、agy 的agy models、omp 的omp models --json、Cursor 的--list-models当前版本文档。同时文档定义了两种结果的严格语义账户可达的列表遗漏了某模型 具体的concrete不支持证据阻止该候选并引用quote列表证据。对应源码行为见 fm-spawn.shomp 模型不在omp models --json中则拒绝与 L2419Cursor 模型不在--list-models中则拒绝不可达的列表不建立任何结论此时报告不确定性uncertainty而非定论。同样有源码对应agy 的models命令超时或不可达时spawn 以--model未校验状态继续并打印 noticefm-spawn.sh。这两条语义其实是一对互补的容错设计可达且缺失 拒绝不可达 不确定绝不允许用列表没响应当作模型不存在的判决。与 dispatch 参考的衔接Profile 数组回到 quota-array-dispatch文档末尾给出了一条流程约束对于命中的 profile 数组matched profile array只有在建立了每个候选的 harness 支持、provider 关系与不确定性之后才回到quota-array-dispatch做配额感知的最终选择。这对应 SKILL.md 的路由矩阵.agents/skills/harness-adapters/SKILL.md中model-effort操作的两个场景场景加载的参考model-effort/ defaultreferences/common/model-and-effort.mdmodel-effort/ configured-profilereferences/common/model-and-effort.mdreferences/common/dispatch.md即仅做轴选择时加载双轴参考涉及已配置 profile 的优先级configured profile precedence时再叠加 dispatch 参考。而 dispatch.md 进一步解释了 inheritance 语义secondmate 的 worker 会收到字面的config/crew-harness与config/crew-dispatch.json分派配置被继承但 primary-only 的config/secondmate-harness从不被继承——secondmate 不会再派发 secondmate。具体值如codex会带入 secondmate homeunset/default则不带具体值其 worker 使用该 home 自身或检测到的 harness。源码纵深各 harness 的 effort 映射全景表将文档的cap / omit契约落到 effort_flag_for_harness 的实现可以得到一张完整的映射表全部行为均有源码注释佐证版本号为注释中记录的被验证版本Harness发射方式接受级别关键边界claude--effortlow | medium | high | xhigh | max全词汇直通codex-c model_reasoning_effort...low | medium | high | xhighmax 仅限gpt-5.6-lunamax 被模型目录条目限定fm-spawn.shgrok--reasoning-effortlow | medium | highxhigh / max 省略grok 0.2.99 起拒绝agy--effortlow | medium | highxhigh / max 省略agy 1.2.0 精确词汇pi / pi-signed--thinkinglow | medium | high | xhigh | maxultra走--codex-effort需validate-native-effort放行omp--thinkinglow | medium | high | xhigh | max词汇超集18.1.11 支持 off/minimal/low/.../auto直通opencodeOPENCODE_CONFIG_CONTENTJSON 中agent.build.variant依 provider 族anthropic 有 high|maxopenai 有 low|medium|high|xhigh无模型解析则省略fm-spawn.shmuse--reasoning-effortlow | medium | high | xhighmax →ultramuse 的 none/minimal 刻意不可达fm-spawn.shrovo--config-override与 allowedExternalPaths 授权合并单值映射run无--effortflagfm-spawn.shkimi无已 live 验证的 launch flag仅任务元数据请求轴留在 meta永不进命令cursoreffort 编码在 model id如cursor-grok-4.5-high无独立 effort flag不发射独立 flagdevineffort 属于 model id独立--effort轴记录但省略见 fm-spawn.sh这张表正是cap / omit / record-and-omit三种策略的完整集合capmuse 的 max→ultra、codex 的 max 限定模型、omitgrok/agy 的 xhigh、max、以及纯recordkimi、devin 与一切无 effort flag 的 harness。小结model-and-effort.md虽然短小却是 firstmate harness 适配层最核心的双轴契约它界定了脚本与自然语言规则的边界、effort 的优先级链与回退语义、ultra的原生拒绝模型、record-and-omit 的保成功哲学以及 harness 身份与 provider 的严格分离。所有契约都能在 fm-spawn.sh 的参数解析与 flag 映射、fm-harness.sh 的validate-native-effort、以及 fm-agy-harness.test.sh 与 fm-pi-codex-native.test.sh 的回归测试中找到一一对应的实现与验证。理解这套契约等于掌握了 firstmate 如何在不传坏参、不丢信息、不越权推断的前提下把哪个模型、多大推理强度这个决策安全地下放到每一次 crewmate / secondmate 启动。赞分享【免费下载链接】firstmateTalk to one agent. Ship with a crew.项目地址https://gitcode.com/gh_mirrors/fi/firstmate点击查看免费下载相关推荐Firstmate 接入 ompOh My PiHarness 适配器启动契约、检测机制与主代理集成指南Firstmate 接入 ompOh My PiHarness 适配器启动契约、检测机制与主代理集成指南 导读 本文基于 Firstmate 开源仓库中Firstmate 的 Away 与 Quiet 监督安全契约/afk 与 /quiet 模式的守护机制详解Firstmate 的 Away 与 Quiet 监督安全契约/afk 与 /quiet 模式的守护机制详解 在 FirstmateGitHub 加速计划videospeed 控制器可见性契约分层状态机、渲染优先级与 TLA 形式化验证videospeed 控制器可见性契约分层状态机、渲染优先级与 TLA 形式化验证 videospeedHTML5 video speed control前端音视频上一篇IDM激活脚本免费永久解锁IDM下载管理器的完整指南下一篇Pinia 状态管理在 vue3-h5-template 中的实践从入门到精通创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
延伸阅读

更多相关文章

2026/10/9 1:39:34

Windows 下载 Claude Code 后 PowerShell 环境变量与 Git 配置避坑指南

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/9 1:34:34

W55MH32L-EVB上I2S音频播放实战:协议、驱动与调试全攻略

接到这块板子的时候,标题里那个问号我很有共鸣——I2S? Playing Audio Using W55MH32L-EVB,这几乎是每个拿到新开发板的人都会干的事:点灯太无聊,得让它出声。W55MH32L-EVB这个平台本身主打音视频处理,片上带ARM9核心…

2026/10/9 3:29:39

68.QT-信号槽Lamda表达式新写法

什么是Lamda表达式Lamda表达式是一个函数,其通用写法为: [capture](parameters) mutable ->return-type{statement} 其中:capture:捕捉列表------可以在表达式中使用代码前后的变量parameters:给这个lamda表达式传递的参数…

2026/10/9 3:29:39

SpringBoot整合EasyExcel:高性能报表导入导出与性能调优实践

报表导出导入这个需求,几乎每个后台管理系统都躲不掉。早些年我用POI硬刚百万级数据,结果GC频繁、内存爆掉,被运维约谈过好几次。后来换成EasyExcel,情况才好转。这篇文章就把我在SpringBoot项目里整合EasyExcel做高性能报表导入导…

2026/10/9 3:29:39

基于ESP32与GC9A01的智能雪茄柜控制器:PID控湿与3D打印实战

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/9 3:29:39

Docker官网不是入口,而是工程师的实时知识操作系统

1. 为什么“Docker官方网站”不是一句空话,而是工程师每天打开的第一扇门很多人第一次听说Docker,是在某次部署失败后同事甩来的一句:“你没看官网文档?”——语气里带着三分无奈、七分笃定。我试过在深夜排查一个容器启动超时问题…

2026/10/9 3:24:38

n8n Schedule Trigger节点详解:原理、配置与定时任务排查指南

早上9点整,销售日报准时推到了钉钉群;凌晨1点,数据库备份工作流默默跑完;每30分钟,监控脚本检查一次线上接口是不是还活着。这些看起来“到了点就自动发生”的事情,背后其实都是n8n的Schedule Trigger节点在…

2026/10/8 10:03:18

Jev+Agent接管浏览器:browser-use实战与jev-ultrafast性能优化

1. 从“Jev”说起:为什么我要把Agent接进浏览器“Jev”这个词最近在圈子里出现的频率越来越高,很多人第一次听到会以为是某个新模型的名字,其实它更像是一种思路——把Jev模型的能力当作底座,通过Agent的方式去接管浏览器&#xf…

2026/10/8 10:03:20

多智能体集群实战:DeepAgents编排、MCP与A2A协议及Skills体系

1. 从"单兵作战"到"集群协同":多智能体编排到底在解决什么问题如果你最近在折腾 Agent 相关的东西,大概率会有一种感觉:单个 Agent 能做的事情,其实很快就摸到天花板了。你给它一个提示词,挂几个工…

2026/10/8 6:05:44

无源低通滤波器设计实战:从RC到LC,手把手教你避开那些坑

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/9 0:04:27

毕业论文初稿完成后首次进行AIGC疑似度自查的摸底与分流策略

毕业论文初稿完成后首次进行AIGC疑似度自查的摸底与分流策略当数万字的学位论文初稿经历开题、实验、问卷与多轮文献梳理最终成形时,绝大多数研究生都会面临一道全新的形式审查关卡:AIGC 疑似度排查。在高校毕业审核流程中,盲审前的文本检测通…

2026/10/9 0:04:27

食堂节能改造源头工厂,商用厨房设备焕新方案广受好评

商用厨房作为餐饮经营、单位供餐的核心后勤阵地,其设备配置、动线规划与运维体系直接决定后厨作业效率、运营成本与合规性。从基础的灶具、制冷存储设备,到油烟净化、水处理等配套系统,每一个环节的合理性都与食品安全、能耗管控、消防安全挂…

还想了解更多?直接咨询顾问

免费诊断 + 免费方案 + 透明报价。

全国咨询热线400-8866-253
免费获取方案
☎咨询二维码 ☎ ↑