我如何搭建用最短诚实循环教授任何技能的 Grok Bot 系统

How I Built a Grok Bot System That Teaches Any Skill in the Shortest Honest Loop

中文译文 · 13k 字

一句话摘要

用 Grok Bot 系统教授技能

我如何构建一个 Grok Bot 系统,用最短的诚实循环教任何技能 August 27, 2026 · 阅读时长11分钟 · 查看原文 ↗ Grok Bot 自动化 大多数人打开 Grok Bot,输入某个版本的「教我编程」,然后得到一份头二十分钟感觉挺有成效的东西:一份大纲、一个项目列表、几个推荐的概念,也许还有一个欢快的「坚持最重要」的承诺。那个回复里没有什么是错的,但它仍然是错的机器。 失败是后来才显现的,当有人让你在没有聊天窗口牵着手的情况下做那件事时。你知道那些术语,你记得大致的操作顺序,你甚至可能在看到正确答案后认出它,但这项技能无法按需调用。那堂课创造的是熟悉感,不是证明。 缺的那块不是另一段解释。是一张桌子,它强制生产、收集证据、把尝试拿去跟一份契约对照评判、从失败里写出下一个练习,并在会话之间保留那道疤。 我围绕一个简单的循环搭了我自己的:练习 -> 证据 -> 评判 -> 下一个练习。模型几乎什么都能解释,但这张桌子拒绝让我把「解释」和「能力」混为一谈。如果证据文件夹里没有尝试,那就还没有什么可研究的。 技能必须先被定义,才能被教 我的 Grok Bot 学习配置的第一个版本太客气了。我让它帮我进步,它给了我一个计划,而那个计划得了那种常见病:它是写给一个「我希望自己是的人」,而不是那个坐在那里、想逃避下一个不舒服的重复的人。 所以我不再求课程,开始写契约。一份技能契约不是大纲;它是对「会做这件事」在聊天之外的世界里意味着什么的窄定义。 如果目标是编程,契约必须点明要交付的工件。如果目标是公开演讲,它必须点明录音、时限、追问问题,以及这次表现算数的条件。 这是我在开一个新的技能桌时用的、可直接粘贴的任务契约: # SKILL_CONTRACT.md 技能: 我现在已经能做到的证明: 14 天后的目标证明: 允许的资源: 禁止的拐杖: 完成的定义(Definition of Done): 要警惕的失败模式: 升级规则: 如果技能边界不清楚,请 CHIEF 澄清契约。 不要用一节更长的课来替代一个不清楚的边界。 「禁止的拐杖」这个字段比它看起来更重要。对编程来说,它可能禁止接受只在聊天记录里跑过的代码。对演讲来说,它可能禁止一边假装答案是即兴的、一边照着笔记念。 一旦契约存在,学习规则就变得直白:如果你不能指出上一次失败的尝试,就不要学这一章。下一次会话从那次失误开始,而不是从第一章开始,而这一条规则砍掉了数量惊人的虚假进展。 桌上的五个 bot 在 Grok Bot 里,我把它设置成几个有名字的 bot,在一台共享电脑上工作,配有文件、例行任务和审批关卡。重点是把每项职责保持得足够窄,让一个糟糕的输出能被抓住,而不污染循环的其余部分。 > COACH(教练) -> 根据任务和上一次失败,设计最小的下一个练习。它能读任务、账本和持久约束,但它不能给自己创建的尝试打分。一个给自己的练习打分的教练,就是一个带着教案的辩护律师。 > SPARRING(陪练) -> 和我一起跑尝试。对编程,它能生成 kata、fixture 或场景;对演讲,它问问题并记录条件;对写作,它给简报并掐表。它的职责是让我进入那个重复,而不是把我从里面哄出来。 > JUDGE(裁判) -> 刻意地冷酷。它带着全新上下文开始,只读契约、评分标准和工件,然后返回通过、失败,以及具体的失误。它没有写工具,因为裁判一旦开始修工件,证据就被污染了。 > MEMORY CLERK(记忆书记) -> 只把持久规则晋升进 constraints.md。会话语气死在这里。「我今天更有信心了」除非改变了一条未来规则,否则活不下来。「除非测试是在一个人类没有在聊天里手改过的 fixture 上跑的,否则绝不接受绿灯」能活下来,因为它防止重复失败。 > CHIEF(主管) -> 给这张桌子做路由。它拦住我在练习变得不舒服时做的那个动作:「再解释一遍」。它也拥有红色动作,比如发布、联系任何人、花钱,或覆盖契约。绿色动作可以生成练习和审阅笔记;红色动作需要明确的审批。 COACH 和 JUDGE 的分离是这个系统的核心。一个导师想让会话顺畅进行。一张桌子需要一个能让工作被无歉意拒绝的地方。 共享电脑就是记忆 文件布局刻意做得普通。我不想要依赖某条聊天串心情的记忆;我想要能打开、检查、diff、并带进下一次运行的文件。 SKILL_CONTRACT.md 说什么才算数。 NEXT.md 是当前练习。 evidence/ 放尝试本身,而不是摘要。 RUBRIC.md 给裁判评分面。constraints.md 存未来规则,ledger.jsonl 让运行历史可搜索。 这是更好的 COACH 提示词: 你是这张技能桌的 COACH。 读 mission/SKILL_CONTRACT.md、state/constraints.md、state/ledger.jsonl,以及最后一份裁判报告。 把一次练习写进 drills/NEXT.md。 练习必须瞄准最近一次失败的证明,要求在 evidence/ 里产出一个工件,并避开每一个禁止的拐杖。 不要给用户的尝试打分。 如果不存在失败的尝试,就创建最小的、能产生一次失败尝试的诊断练习。 弱版本是大多数人输入的那个:「教我这个技能,给我做个计划。」那条提示词奖励覆盖,不奖励证明。 这是我用的 JUDGE 提示词: 你是这张技能桌的 JUDGE。 全新上下文。没有教练语气。 只读 mission/SKILL_CONTRACT.md、judge/RUBRIC.md,以及 evidence/ 里的工件。 返回: PASS 或 FAIL 决定它的确切契约条款 最小的具体失误 一句描述下一个练习目标的话 你不可以重写工件。 你不可以添加新的教学材料。 你不可以通过那些不是在练习条件下产出的工作。 弱裁判提示词是「审阅一下并改进它」。那把裁判变成了另一个导师。 编程运行:那个在真实文件夹上失败的 CLI 第一个真实测试是一个小 CLI:读一个笔记文件夹并输出一个摘要 JSON,带测试。它听起来简单到让模型一遍就能做出「看起来完成」的样子,这正是它是个好陷阱的原因。 我第一周的失败很熟悉。代码在聊天里能跑,能处理那个小示例路径,但在一个文件名带空格的真实文件夹上死了。更糟的是,我没有把失败的测试捕获进 evidence/,所以那个「绿灯」结果是演戏。 桌子是这样写运行块的: [ 我给了什么 ] 任务:交付一个 notes-to-summary-json 的 CLI,带测试。 工件:cli.js、package.json、一个 happy-path fixture。 声明:「本地能跑。」 [ 尝试是什么 ] 用时:42 分钟。 尝试的命令:node cli.js ./fixtures/notes folder 结果:路径切分 bug、缺输出文件、没有捕获的失败测试。 [ 裁判拒绝了什么 ] FAIL。 契约条款:「完成的定义:在真实文件夹 fixture 上通过测试。」 具体失误:在没有脏路径 fixture、没有把命令输出存进 evidence/ 的情况下,就声称了绿灯。 [ 什么活进了 constraints.md ] 除非测试是在一个人类没有在聊天里手改过的 fixture 上跑的,否则绝不接受绿灯。 脏路径必须包括空格、嵌套文件夹,以及至少一个空笔记。 COACH 没有用另一篇 JavaScript 教程来回应。它写下了下一个练习:先为脏路径写失败测试,把终端输出存到 evidence/YYYY-MM-DD/ 下,然后只实现足够通过的部分。这个重复变得更小、更难造假。 三次运行之后,账本里有了比信心更有用的东西: {"run":1,"skill":"coding","score":42,"failed":"no dirty-path test","next":"write failing fixture first"} {"run":2,"skill":"coding","score":71,"failed":"summary schema drift","next":"lock expected JSON shape"} {"run":3,"skill":"coding","score":86,"failed":"weak error message","next":"add human-readable failure output"} 那才是我会去排一个每日自动化的时候,而不是之前。只有当循环瞄准了一个真实失败,坚持才有帮助。 演讲运行:大纲流利,追问不流利 第二个测试是公开演讲,但不是那种你排练一段打磨过的独白、直到它听起来令人印象深刻的那种戏剧性演讲。任务更窄:不靠笔记、大声解释一个技术概念 90 秒,然后回答一个敌对问题。 第一次尝试听起来不错,直到追问到来。我有一个流利的大纲,却没有真正的掌控。当 SPARRING 问「这不就是一个套在清单上的花哨壳子吗?」,答案崩成了支支吾吾、重复的短语和死寂。 JUDGE 没有给意图打分。它根据结构、死寂、回避、以及那个敌对问题是否被真正回答,给录音和转写打分。 [ 我给了什么 ] 任务:解释一个技术概念 90 秒,然后回答一个敌对问题。 工件:音频录音和转写。 主题:为什么技能桌胜过导师聊天。 [ 尝试是什么 ] 用时:90 秒回答加一次追问。 转写备注:开头清晰、例子弱、敌对问题后有 11 秒死寂。 [ 裁判拒绝了什么 ] FAIL。 契约条款:「完成的定义:不回避地回答一个敌对问题。」 具体失误:答案泛泛地为概念辩护,但没有回答那个清单异议。 [ 什么活进了 constraints.md ] 每次演讲练习必须包含一个针对主答案里最弱句子的对抗性追问。 超过 6 秒的死寂触发重做同一个问题,而不是换新话题。 下一个练习不是「练习公开演讲」。它是一个 90 秒的、针对那个打破这次运行的精确问题的回答。桌子移除了「多样性」这个逃生舱;你不会因为旧话题暴露了失误,就换一个新话题。 同样的模式在工件是另一种语言的音频时也适用:证据是录音,JUDGE 检查犹豫和被禁止的翻译习惯,MEMORY CLERK 只晋升那些该塑造明天练习的纠正模式。 记忆晋升不是日记 毁掉这个系统最简单的方式,就是让一切进入记忆。如果每条会话笔记都变成永久规则,桌子就会堆满过时的建议。 MEMORY CLERK 有一份很窄的工作:只晋升能防止重复失败的规则。情绪活不下来。偏好活不下来。一次性技巧活不下来,除非账本显示同一个失误出现了两次,或者裁判把它标记为结构性重要。 我在一条规则进入 constraints.md 之前用三道门:这影响了工件吗,它改变了下一次练习吗,以及忘掉它会让未来某次运行虚假地通过吗?如果都不是,它就该进 output/review.md,而不是记忆。 过时也需要一个断电开关。一条第二天有用的约束,到第十二天可能就变成辅助轮了,所以 CHIEF 会审阅旧规则,问它们是否还在保护契约。 这才是「最短时间」的诚实版本。桌子没有删掉那些小时。它删掉的是:重读你已经理解的材料、生成更多教程而不是一次被打分的尝试、以及在会话之间丢失上一次错误。 最短时间意味着更少的浪费循环。它意味着下一个小时从上一个小时真正失败的地方开始。 不要排错循环 当循环未经证明时,自动化是危险的。Grok Bot 的例行任务能让桌子每天早上出现,但如果第一个练习很含糊,例行任务就会忠实地制造含糊的工作。 我想要在排任何东西之前,先跑三次手动运行。一次运行证明桌子能产出一个工件。两次运行证明裁判能拒绝工作而不变成导师。三次运行证明账本能改变下一个练习。 在那之后,一个每日例行任务可以很简单:CHIEF 打开桌子,COACH 从上次失误写出练习,SPARRING 跑尝试,JUDGE 给工件打分,MEMORY CLERK 晋升持久规则,CHIEF 拦下另一段想取代重复的解释。 红绿边界保持可见。绿色动作生成练习、审阅笔记、评分标准和摘要。红色动作发布、花钱、联系任何人,或覆盖契约。如果桌子在教一项触及外部世界的技能,主管可以给工作做路由,但未经审批,它不应执行有后果的动作。 这就是一个会教的聊天机器人和一张让教学留下来的桌子之间的区别。聊天机器人能回答每一个问题。桌子一直在要证明。 你不需要对技能有更好的解释。你需要一个不会让上一次失败消失的系统。 标签: # X # Grok Bot # 自动化 # 串 # 指南 相关文章 如何用 17 步精通 Grok Bot 2026 年 8 月 11 日,埃隆·马斯克的 xAI 以早期测试版发布了 Grok Bot。 Grok Bot AI 自动化

原文参考:https://maxed.wiki/posts/how-i-built-a-grok-bot-system-that-teaches-any-skill-in-the-shortest-honest-loop/ (Maxed.wiki,本页为站内中文整理)