资讯详情

用 omp 的 grill-me + goal 工作流,把 GLM 搭配 vision 识图与 sol 写代码串成一条链

📅 2026/10/12 13:45:27 | 华诺云谱 👁 阅读
用 omp 的 grill-me + goal 工作流,把 GLM 搭配 vision 识图与 sol 写代码串成一条链
1. 从截图到可运行代码omp 里 grill-me 与 goal 串链的真实场景如果你平时用终端里的 AI Coding Agent 写代码大概率遇到过这种割裂感产品经理丢来一张原型图或者报错截图你得先手动把图里的信息读出来、整理成文字再切到另一个模型去写代码。中间这一步「人肉转译」既费时间又容易丢细节。ompoh-my-pi这套终端 Agent 的价值就在于它允许你把「识图」和「写代码」拆成两个模型角色再用工作流把它们串起来。这篇要聊的就是这条链用 omp 的 grill-me 工作流做需求澄清用 goal 工作流做目标拆解中间让 GLM 搭配 vision 完成识图输入最后交给 sol 写代码。核心检索词就是 omp grill-me goal 工作流串联 GLM vision 识图与 sol 写代码。适合谁适合已经在用终端 Agent、想让多模型协作更顺滑的开发者尤其是手里有截图类需求、又不想来回切窗口的人。我实测下来这条链跑通之后最明显的变化不是「AI 变聪明了」而是输入质量变高了。识图环节把图里的结构化信息喂给代码模型比你自己敲一段模糊描述要准得多。而不降智时的表现差异恰恰体现在这种「信息保真度」上——模型没被截断、没被降级它就能把图里的字段名、层级关系、甚至颜色对应的状态都还原出来。下面我会按「先装环境、再配模型角色、然后串工作流、最后验证对比」的顺序走一遍。每一步都给可复制的配置片段和命令你跟着敲就行。踩过的坑我也会标出来比如 PowerShell 版本、环境变量、模型 ID 写错这些。先说清楚 omp 是什么。它是跑在终端里的 AI Coding Agent支持 hash-anchored edits、LSP、Python、浏览器、subagents 这些能力。你可以把它理解成一个「可编排的终端助手」模型不是写死的而是通过models.yml和config.yml定义角色。vision 角色负责看图default 角色负责写代码工作流负责把两者接起来。这个设计对多模型协作特别友好因为你可以让便宜的模型干识图让强的模型干编码。grill-me 这个工作流的作用是「追问式澄清」。你给它一个模糊需求它会反过来问你几个关键问题逼你把边界条件想清楚。goal 工作流则是「目标拆解」把一个大目标拆成可执行的小步骤。两者组合起来正好覆盖了「需求不清 → 澄清 → 拆解 → 执行」这条路径。而 GLM 的 vision 能力插在澄清之前负责把图里的信息变成文字让 grill-me 有东西可问。所以整条链的逻辑是截图 → GLM vision 识图 → grill-me 澄清 → goal 拆解 → sol 写代码。每一环的输出都是下一环的输入中间不需要你手动搬运。这就是「串成一条链」的意思。2. 前置准备omp 安装、models.yml 与 config.yml 的模型角色配置这一节是动手部分。先把 omp 装好再把模型角色配好不然后面工作流跑不起来。安装 omp 有个硬性要求必须在 PowerShell 7 里运行。Windows 自带的 PowerShell 5.1 会出问题别问我怎么知道的。装 PowerShell 7 之后执行irm https://omp.sh/install.ps1 | iex跑完你会发现它自动下载了一堆东西。安装完成后omp 的配置目录在C:\Users\Admin\.omp\agent把 Admin 换成你的用户名。这个目录下有两个关键文件models.yml和config.yml。先看models.yml。这个文件定义 provider 和模型列表。下面是我用的配置你可以直接抄把 apiKey 换成你自己的providers: duojie: baseUrl: https://taotoken.net/api api: openai-completions apiKey: DUOJIE_API_KEY models: - id: gpt-5.6-sol name: gpt-5.6-sol contextWindow: 350000 maxTokens: 32000 - id: gpt-5.6-terra name: gpt-5.6-terra contextWindow: 350000 maxTokens: 32000 - id: gpt-5.6-luna name: gpt-5.6-luna contextWindow: 350000 maxTokens: 32000 - id: glm-5.3 name: glm-5.3 contextWindow: 1000000 maxTokens: 131072 - id: glm-5.3-flash name: glm-5.3-flash contextWindow: 1000000 maxTokens: 131072这里有几个点要注意。baseUrl我填的是 TaoToken 的 API 地址https://taotoken.net/api它兼容 openai-completions 协议所以api字段写openai-completions。apiKey那里写环境变量名DUOJIE_API_KEY实际的值要放到系统环境变量里不要硬编码在文件里。模型 ID 必须和 provider 侧一致写错了会报 model not found。contextWindow和maxTokens这两个参数决定了模型能处理多长的上下文和输出。sol 系列给的是 350000 / 32000GLM 系列给的是 1000000 / 131072。GLM 的上下文窗口大得多适合处理长文档和复杂识图任务。这也是为什么我把 vision 角色交给 GLM——它看得多、记得住。配完models.yml接着配config.yml。这个文件定义模型角色和工作流行为shellPath: C:\windows\system32\bash.exe modelRoles: vision: duojie/glm-5.3-flash default: duojie/gpt-5.6-sol:high symbolPreset: unicode theme: dark: titanium setupVersion: 2 display: showTokenUsage: true cacheMissMarker: true showTurnTime: true externalThinking: true omitThinking: true dev: autoqaConsent: denied statusLine: preset: default composer: shape: box task: showResolvedModelBadge: true terminal: showProgress: true defaultThinkingLevel: high关键在modelRoles这两行。vision: duojie/glm-5.3-flash表示识图任务走 GLM 的 flash 版本快且便宜。default: duojie/gpt-5.6-sol:high表示默认编码任务走 sol思考等级 high。这个:high后缀很重要它决定了模型思考的深度也是后面「不降智」对比的关键变量。display那几项建议都打开。showTokenUsage让你看到 token 消耗externalThinking和omitThinking控制思考过程的显示。defaultThinkingLevel: high是全局默认思考等级配合模型角色里的:high一起用。配完这两个文件还要在系统环境变量里加上DUOJIE_API_KEY。Windows 下可以在「系统属性 → 环境变量」里加或者用 PowerShell[Environment]::SetEnvironmentVariable(DUOJIE_API_KEY, 你的key, User)加完记得重开终端不然读不到。最后配一下 PowerShell 的 profile把常用模型做成快捷函数。先看 profile 路径echo $PROFILE输出类似D:\360MoveData\Users\Admin\Documents\PowerShell\Microsoft.PowerShell_profile.ps1。编辑这个文件加上function sol { omp --model gpt-5.6-sol --thinking high } function terra { omp --model gpt-5.6-terra --thinking high } function luna { omp --model gpt-5.6-luna --thinking high } function glm { omp --model glm-5.3 --thinking high } function glmf { omp --model glm-5.3-flash --thinking high }这样你敲sol就直接进 sol 模型敲glmf就进 GLM flash。省得每次手打一长串参数。到这里前置准备就完成了。检查一下omp 装好了、models.yml和config.yml配好了、环境变量加了、profile 函数也加了。下一步开始串工作流。3. 可复制配置grill-me、goal 与 codegraph 的全局安装与串联这一节是核心。我们要把 grill-me、goal 这两个工作流以及 codegraph 这个代码索引工具全局装好并串起来。先说全局安装 skill 的方式。omp 的 skill 安装参考npx skillslatest add mattpocock/skills这套机制。全局安装的意思是「对所有项目都生效」而不是只在当前项目里可用。grill-me 的全局安装npx skillslatest add mattpocock/skills --skillgrill-me --globalgrill-with-docs 之前是这么装的npx skills add mattpocock/skills --skillgrill-with-docs npx skills update grill-with-docs但这是项目级的要改成全局加上--global参数npx skillslatest add mattpocock/skills --skillgrill-with-docs --globaldomain-modeling 同理npx skillslatest add mattpocock/skills --skilldomain-modeling --global装完之后在 omp 里输入/skill然后按 Tab 键就能把/skill:grill-me补全进来。接着输入你的工作内容就行。这个 Tab 补全的交互很顺手不用记全名。goal 工作流的用法类似。它负责把目标拆解成步骤。你可以在 omp 里直接调用也可以和 grill-me 串起来用。串联的方式是先跑 grill-me 澄清需求把澄清结果作为 goal 的输入goal 拆解完再交给 sol 执行。这里有个关键点识图结果怎么传入代码生成环节。omp 的 vision 角色会在你贴图的时候自动触发。你把截图拖进终端或者用命令引用图片路径omp 会用modelRoles.vision指定的模型也就是 GLM flash去识图把结果作为上下文传给后续环节。所以你不需要手动复制识图结果它是自动流转的。为了让代码生成更准建议装一下 codegraph。它是本地代码库索引工具能节省 token让模型更快定位代码。全局安装irm https://raw.githubusercontent.com/colbymchenry/codegraph/main/install.ps1 | iex装完在项目目录下初始化cd 你的项目 codegraph init codegraph statuscodegraph 的几个常用查询命令很实用codegraph explore 玩家登录流程是怎么实现的 codegraph callers handleRequest codegraph callees handleRequest codegraph impact PlayerActorexplore是自然语言查询callers查谁调用了某个方法callees查某个方法调用了什么impact查修改一个类可能影响什么。这几个命令配合 omp 用能让模型在写代码前先理解现有结构减少瞎改。现在把整条链的配置串起来。在 omp 启动后流程是这样的第一步贴图。omp 自动调用 GLM vision 识图输出结构化描述。第二步跑/skill:grill-me。把识图结果作为输入grill-me 会追问关键问题比如「这个字段是必填吗」「状态切换的触发条件是什么」。第三步跑 goal 工作流。把澄清后的需求拆成可执行步骤。第四步sol 写代码。goal 拆出的每一步交给 sol 执行sol 用 high 思考等级。这套流程的配置文件层面关键就是前面config.yml里的modelRoles。vision 和 default 分开配是整条链能跑通的基础。如果你把两个角色配成同一个模型识图和编码就会互相干扰效果反而差。再补充一个 settings 的调整。omp 启动后输入/settings然后输入show可以设置显示额外思考。建议打开这几项显示用量、去掉闪屏、显示额外的思考。这样你能看到模型在想什么也方便对比降智前后的差异。到这里配置就齐了。下一节验证请求看实际跑起来是什么样。4. 验证请求与成功结果识图到写代码的完整链路实测配置配好了现在跑一遍完整链路看每一步的实际输出。先启动 omp。敲sol进 sol 模型或者直接omp用默认配置。启动后先跑/init生成 AGENTS.md让 AI 了解你的项目结构/init这个命令会扫描项目生成一份项目说明。有了它后续的识图和编码都有上下文基础。然后准备一张测试图。我用的是一个简单的登录页原型图里面有用户名输入框、密码输入框、登录按钮还有一个「记住我」复选框。把图贴进 omp或者用路径引用。omp 会自动调用modelRoles.vision指定的 GLM flash 识图。识图输出大概是这样识别到登录表单包含以下元素 - 用户名输入框placeholder 为 请输入用户名类型 text - 密码输入框placeholder 为 请输入密码类型 password - 记住我复选框默认未选中 - 登录按钮文案 登录主色调蓝色 - 底部有 忘记密码 链接 布局为垂直排列表单项间距 16px这个输出质量取决于模型有没有被降智。GLM flash 在正常状态下能把 placeholder、类型、布局间距都还原出来。如果被降级或者上下文被截断输出会变成「一个登录页面有输入框和按钮」这种模糊描述。接着跑 grill-me。输入/skill:grill-me把识图结果作为输入/skill:grill-me 根据上面的登录页识图结果帮我澄清实现细节grill-me 会追问1. 登录接口的请求方式是 POST 还是 GET 2. 密码是否需要前端加密后再传输 3. 记住我 勾选后token 存 localStorage 还是 cookie 4. 登录失败时的错误提示展示在哪里 5. 是否需要防重复提交这些问题正好是写代码前必须明确的。你回答完需求就清晰了。然后跑 goal 工作流把澄清后的需求拆解/goal 实现登录页包含表单校验、接口调用、错误处理、记住我功能goal 会拆成1. 创建 LoginForm 组件包含用户名、密码、记住我、登录按钮 2. 实现表单校验用户名非空、密码长度 6 3. 封装 login API 调用POST /api/login 4. 处理登录成功存 token跳转首页 5. 处理登录失败展示错误提示 6. 实现记住我勾选时 token 存 localStorage 7. 添加防重复提交提交中禁用按钮最后 sol 写代码。sol 在 high 思考等级下会按 goal 的步骤逐个实现。输出大概是import { useState } from react; interface LoginFormProps { onSuccess: () void; } export function LoginForm({ onSuccess }: LoginFormProps) { const [username, setUsername] useState(); const [password, setPassword] useState(); const [remember, setRemember] useState(false); const [loading, setLoading] useState(false); const [error, setError] useState(); const validate () { if (!username.trim()) return 用户名不能为空; if (password.length 6) return 密码长度至少 6 位; return ; }; const handleSubmit async (e: React.FormEvent) { e.preventDefault(); const err validate(); if (err) { setError(err); return; } setLoading(true); setError(); try { const res await fetch(/api/login, { method: POST, headers: { Content-Type: application/json }, body: JSON.stringify({ username, password }), }); if (!res.ok) throw new Error(登录失败); const data await res.json(); if (remember) localStorage.setItem(token, data.token); onSuccess(); } catch (e) { setError(e instanceof Error ? e.message : 未知错误); } finally { setLoading(false); } }; return ( form onSubmit{handleSubmit} input value{username} onChange{e setUsername(e.target.value)} placeholder请输入用户名 / input typepassword value{password} onChange{e setPassword(e.target.value)} placeholder请输入密码 / labelinput typecheckbox checked{remember} onChange{e setRemember(e.target.checked)} /记住我/label {error div classNameerror{error}/div} button typesubmit disabled{loading}{loading ? 登录中... : 登录}/button /form ); }这段代码把 goal 拆的步骤都实现了表单校验、接口调用、错误处理、记住我、防重复提交。sol 在 high 等级下还会加上类型定义和边界处理。现在对比降智前后的差异。降智的触发条件通常是思考等级被调低、上下文被截断、或者模型被换成弱版本。你可以手动把config.yml里的default: duojie/gpt-5.6-sol:high改成:low再跑一遍同样的流程。降智后的输出会明显缩水表单校验可能只做非空检查错误处理可能直接console.log记住我可能忘了存 token防重复提交可能直接没有。识图环节也会退化GLM flash 如果被降级识图输出会丢掉 placeholder 和布局信息。所以「不降智时的表现差异」本质上是信息保真度和步骤完整度的差异。high 等级下模型会把每个边界条件都想到low 等级下它只做最直接的实现。这也是为什么config.yml里defaultThinkingLevel: high和模型角色的:high后缀这么重要。验证成功的标志是识图输出结构化、grill-me 追问到位、goal 拆解完整、sol 代码可运行。四个环节都达标这条链就算跑通了。5. 本篇常见错排查401、local proxy failed、reading choices 与 OAuth 报错跑这条链的时候我踩过几个坑这里集中说一下。每个都对照真实报错给排查方向。401 Unauthorized。这个最常见基本是 API Key 的问题。报错长这样Error: 401 Unauthorized - invalid api key排查顺序先确认系统环境变量DUOJIE_API_KEY有没有设对重开终端再试。然后确认models.yml里apiKey: DUOJIE_API_KEY写的是变量名而不是值。如果变量名写成了值omp 会拿变量名当 key 去请求必然 401。最后确认 key 本身没过期、额度没用完。TaoToken 的 key 可以在控制台的 API Keys 页面管理地址是https://taotoken.net/console/api-keys。local proxy failed。报错类似Error: local proxy failed to connect这个通常是网络层的问题。先确认baseUrl写对了https://taotoken.net/api不要漏掉/api。然后确认本机没有奇怪的网络配置干扰。如果用了公司网络可能有防火墙拦截换个网络试试。注意不要用任何非正规的网络工具这类工具本身就不该出现在开发环境里。reading choices 报错。这个出现在模型返回格式不符合预期的时候Error: reading choices: unexpected response format原因是 provider 返回的 JSON 结构和 omp 期望的不一致。排查确认api: openai-completions写对了这个字段决定了 omp 怎么解析响应。如果 provider 用的是别的协议要改成对应的值。另外确认模型 ID 和 provider 侧一致ID 写错有时会返回错误格式而不是直接报 404。OAuth 相关报错。如果你在配置里用了需要 OAuth 的 provider可能会遇到Error: OAuth token expired排查重新走一遍授权流程或者换成 API Key 认证。omp 的models.yml支持 API Key 方式配好apiKey字段就行不需要 OAuth。如果你同时配了 OAuth 和 API Key可能会冲突建议只用一种。模型 ID 找不到。报错Error: model not found: gpt-5.6-sol确认models.yml里的id和config.yml里modelRoles引用的名字完全一致。duojie/gpt-5.6-sol里的duojie是 provider 名gpt-5.6-sol是模型 id中间用斜杠分隔。少一个字符都会找不到。CC Switch / Cline MCP / Codex auth.json 三件套。如果你在 omp 里接了这些工具配置时要写全三件套Base URL、Key、Model ID。缺任何一个都会连不上。Base URL 用https://taotoken.net/apiKey 用你的 API KeyModel ID 用models.yml里定义的 id。这三个在 omp 的配置里分别对应baseUrl、apiKey、id。识图不触发。贴了图但 omp 没调 vision 角色。排查确认config.yml里modelRoles.vision配了且指向的模型支持 vision。GLM flash 是支持的。另外确认图片格式是常见的 png/jpg有些特殊格式可能不被识别。思考过程不显示。/settings里show之后还是看不到思考。确认display.externalThinking: true和display.omitThinking: true都配了。externalThinking控制是否显示外部思考omitThinking控制是否省略内部思考。两个配合才能看到完整的思考流。token 消耗异常高。如果发现 token 用得特别快先跑codegraph init建索引让模型用索引而不是全量扫描。然后确认display.showTokenUsage: true打开了能看到每轮的消耗。GLM 的上下文窗口大但大不代表可以浪费索引能省不少。排障的核心思路是先看报错关键词再对照配置项最后确认环境变量。大部分问题都出在这三处。如果报错信息不明确可以在 omp 里跑/clear清一下上下文再试有时候是上下文污染导致的。6. 把这条链用起来从单次验证到日常编码的落地建议跑通一次不代表能日常用。这一节说几个落地建议帮你把这条链变成习惯。第一把常用工作流做成快捷方式。除了前面 profile 里的模型函数你还可以把 grill-me 和 goal 的组合写成一个脚本。比如在项目根目录放一个workflow.md里面写清楚「贴图 → grill-me → goal → sol」的步骤每次照着走。omp 的/resume可以回退到之前的会话如果某一步跑歪了回退重来比从头开始快。第二识图环节尽量给清晰的图。GLM vision 的能力有边界模糊的、手写的、低分辨率的图识别率会下降。如果是报错截图尽量截全包括堆栈信息。如果是原型图尽量给带标注的版本。图越清晰识图输出越结构化后面 grill-me 和 goal 的质量越高。第三grill-me 的追问要认真回答。很多人图省事grill-me 问五个问题只答两个结果 goal 拆解出来的步骤就有遗漏。grill-me 的价值就在于逼你想清楚边界条件你敷衍它它就敷衍你。回答的时候尽量具体比如「token 存 localStorage」比「存起来」有用得多。第四goal 拆解的步骤要可验证。好的 goal 输出应该是「每一步都能单独测试」。如果拆出来的步骤是「实现登录功能」这种大颗粒说明拆得不够细可以让 goal 再拆一层。sol 写代码时步骤越细它越不容易跑偏。第五降智对比要定期做。模型服务会更新有时候你以为在用 high 等级实际上配置被改了。定期把:high改成:low跑一遍对比输出差异能帮你确认当前是不是在「不降智」状态。这个对比也是排查「为什么今天输出变差了」的有效手段。第六codegraph 索引要跟着代码更新。codegraph init建完索引后代码改了要重新索引不然模型查到的是旧结构。可以在 git hook 里加一步提交后自动codegraph init。这样模型每次拿到的都是最新代码结构。第七注意上下文管理。omp 的/clear用来清理输出/resume用来回退会话。长会话容易上下文污染跑完一个任务就/clear一下保持上下文干净。GLM 的上下文窗口虽然大但塞太多无关信息反而会降低识图质量。关于 CTA 分流按你的需求选如果你在排障或者接入阶段需要管理 Key 和看接入文档去 API Keys 页面https://taotoken.net/console/api-keys接入文档在https://taotoken.net/doc。如果你想先验证模型能力比如试试 GLM 的识图效果去模型对话页面https://taotoken.net/chat。如果你是长期编码、要跑 Agent 工作流建议上 Coding Planhttps://taotoken.net/coding-plan额度更划算。最后说一个实用技巧。omp 的/codegraph命令配合 codegraph 用能在写代码前先让模型理解现有结构。我通常的顺序是/init生成项目说明 →codegraph init建索引 → 贴图识图 → grill-me → goal → sol。这套顺序跑下来模型对项目的理解最完整写出来的代码也最贴合现有风格。这条链不是银弹它解决的是「多模型协作时的信息流转」问题。识图、澄清、拆解、编码各司其职比让一个模型干所有事要稳。你可以先从单次验证开始跑顺了再固化成日常流程。
📝

华诺云谱内容团队

资深建站顾问 · 行业研究员

10年+企业数字化服务经验,专注智能建站、SEO优化与品牌营销,持续输出建站技巧、行业洞察与营销干货,已帮助5000+企业实现数字化增长。

你可能需要的服务

订阅华诺云谱资讯周报

每周一封,精选建站技巧、SEO与营销干货,直达邮箱。已有 8,000+ 企业主订阅,助你少走弯路。

↑