:从源码看第三方模型如何获得 Codex 级行为)
【免费下载链接】magpieEvery agents model. One place. Codex on DeepSeek, Claude Code on Kimi, from the menu bar.项目地址https://gitcode.com/gh_mirrors/magpie28/magpie点击查看免费下载导读internal/codexcat/codex_prompt.md 是 magpie 项目为 Codex CLI 场景准备的通用系统提示词它定义了当一名第三方模型以 Codex 身份工作时应该遵循什么样的行为准则。本文以这份文档为骨架结合 internal/codexcat/codexcat.go、internal/gateway/codex_backend.go、internal/agent/codex.go 等源码讲清楚三个问题这份提示词为什么存在、它规范了哪些行为、以及它如何被嵌入 magpie 生成给 Codex 的模型目录models.json中。读完你可以理解在 DeepSeek 上跑 Codex、在 Kimi 上跑 Claude Code这类场景下第三方模型到底是在什么样的系统指令约束下工作的。提示词的来源与存在意义为什么第三方模型需要一份通用提示词magpie 的定位是Every agents model. One place.——把 Codex、Claude Code 等 Agent 工具与各类第三方模型DeepSeek、Kimi 等对接起来。但这里有一个原生约束Codex CLI 自带的模型目录catalog只为 OpenAI 自家的模型携带了 system promptbase_instructions第三方模型没有。internal/codexcat/codexcat.go 包注释与代码明确说明了这一点该包renders models the way Codex describes them即把 magpie 的模型渲染成 Codex 认识的models.json条目交给model_catalog_json或模型列表接口其中第 19-24 行通过//go:embed codex_prompt.md把这份提示词编译进二进制var Prompt string就是它的运行时形态注释还说明Prompt是 Codex 的通用系统提示词Apache-2.0源自 openai/codex 的core/gpt-5.2-codex_prompt.md因为the bundled catalog only carries prompts for OpenAI models。也就是说凡是被 magpie 挂进 Codex 模型目录、但本身不属于 OpenAI 官方目录的第三方模型其base_instructions字段就会落到这份通用提示词上。它承担了让第三方模型表现得像一个合格的 Codex 编码 Agent的职责。在 internal/provider/codex_request.go 中这份提示词还作为兜底被用于构造请求codexInstructions会依次查找 magpie 保存的模型指令、Codex CLI 自己缓存的模型指令最后兜底返回codexcat.Prompt第 235 行。测试 internal/provider/codex_request_test.go 第 145 行断言codexInstructions(gpt-9) codexcat.Prompt验证了兜底路径。提示词的五个行为板块逐段解读1. 身份与搜索偏好General提示词开篇声明了 Agent 的身份You are Codex, based on GPT-5. You are running as a coding agent in the Codex CLI on a users computer.随后给出的唯一一条通用规则是搜索性能偏好搜索文本或文件时优先使用rgrg --files列出文件因为rg比grep等替代方案快得多若rg不可用再考虑替代。这与 magpie 的代码习惯一致仓库本身大量使用search_in_files基于 ripgrep类检索也说明该提示词期望第三方模型在用户的终端环境里高效工作。2. 编辑约束Editing constraints这是提示词中篇幅最大、约束最细的部分直接关系到编码 Agent 是否会破坏用户的工作区默认 ASCII编辑或新建文件时默认使用 ASCII只有存在明确理由且文件本身已使用非 ASCII 时才引入其他 Unicode 字符注释从简为不直观的代码块添加简洁注释说明发生了什么但禁止写把值赋给变量这类废话注释的使用应当罕见编辑工具偏好单文件编辑优先使用apply_patch不适用于自动生成内容如生成 package.json、运行 gofmt 等格式化命令或批量脚本化替换时不强求脏工作区保护绝不回退用户未要求回退的、由用户自己做的改动遇到自己没做过的意外改动要立即停下并询问用户如何处理禁用破坏性命令除非用户明确要求或批准绝不使用git reset --hard、git checkout --这类破坏性命令未经明确要求不得 amend 提交。这段约束在 magpie 的接入逻辑中有呼应internal/agent/codex.go 在切换模型/路由时大量使用edit.SetTOMLTop、edit.DelTOMLTop等原子化编辑工具而非粗暴覆写用户配置体现了同样的尊重用户既有改动原则。3. 计划工具Plan tool提示词给规划工具的使用划了边界约最轻松 25% 的直截了当任务跳过规划工具不要做单步计划一旦做出计划完成其中任一子任务后要更新计划。4. 特殊用户请求Special user requests简单请求直接执行用户问时间这类简单请求用date之类的终端命令直接满足Review 默认代码审查心态优先找 bug、风险、行为回归与缺失的测试发现的问题放在回复首要位置、按严重程度排序并给出文件/行号引用概述放在次要位置若无发现要明确说明并提及残余风险或测试缺口。5. 前端任务规范Frontend tasks提示词专门约束了前端设计任务防止生成AI 味AI slop的平庸布局排版使用有表现力、有目的的字体避免默认字体栈Inter、Roboto、Arial、system配色与观感确定清晰的视觉方向、定义 CSS 变量避免紫色配白底的默认组合不偏向紫色或暗色动效使用少量有意义的动画页面加载、交错显现而非泛化的微动效背景不要依赖单一纯色背景用渐变、形状或细腻纹理营造氛围整体避免模板化布局和千篇一律的 UI 模式在不同输出间变化主题、字族与视觉语言适配确保页面在桌面端和移动端都正常加载例外在既有网站或设计系统内工作时保留既有的模式、结构与视觉语言。6. 成果呈现与最终消息Presenting your work and final message提示词的最后部分定义了输出将被 CLI 排版的回复规范对最终回复的结构做了详细约定默认非常简洁、语气像友好编码伙伴仅在必要时提问实质性工作要清晰总结简单确认跳过重排版不要把写好的大文件内容倾倒出来只引用路径不要写保存/复制这个文件给出逻辑上的下一步测试、提交、构建并简要提供没做成的事要给出验证步骤代码变更先快速解释改了什么再给在哪、为什么的上下文不要以 summary 开头多个建议用数字列表便于用户回复用户看不到命令执行输出被要求展示命令输出时如git show要转述要点或总结关键行。随后还有一套最终答案结构与风格指南Final answer structure and style guidelines包括纯文本、由 CLI 处理样式标题用短 Title Case1-3 词且包在**…**中列表用-且尽量一行一条、按重要性 4-6 条、措辞保持一致等宽字体反引号用于命令/路径/环境变量/代码标识代码块尽量带语言标识段落按总-分-支撑组织语气合作、简洁、事实化禁止嵌套列表、ANSI 码、塞无关关键词。文件引用规则要求使用行内代码使路径可点击、每条引用独立成行、支持绝对/工作区相对路径与 1 基行号列号引用如src/app.ts:42、b/server/index.js#L10不使用file://、vscode://或https://URI。这些呈现规范正是为了应对 Codex 在终端里展示回复的场景保证跨模型输出风格一致、易于扫描。提示词的注入路径从嵌入变量到模型目录再到网关理解了提示词的内容再看它在 magpie 中如何生效。整条链路横跨三个包第一步编译期嵌入internal/codexcatinternal/codexcat/codexcat.go 用//go:embed codex_prompt.md将文档作为字符串常量Prompt编译进程序。随后Entries(ms []catalog.Model, after int)为每个第三方模型构造model结构体其中Instructions: Prompt第 94 行——第三方模型的base_instructions一律指向这份通用提示词同时填充supported_reasoning_levels默认取DefaultEffort优先medium/high否则列表首项见第 28-35 行、shell_type: unified_exec、visibility: list、supported_in_api: true、apply_patch_tool_type: freeform、input_modalities: [text]支持图片时追加image、truncation_policy: {mode: tokens, limit: 10000}对 OpenAI 自己模型的ownEntry第 151-163 行保留 Codex 已知的镜像能力图片、上下文窗口、工具、instructions只把 slug/display_name/priority/visibility 换成 magpie 侧的值并删除availability_nux启动提示与upgrade升级引导若缓存条目缺少base_instructions则回填Prompt。测试 internal/codexcat/codexcat_test.go 验证了这些行为TestCodexCatalogKeepsOwnEntries断言第三方条目base_instructions Prompt、input_modalities长度为 1同时断言 Codex 自有模型保留context_window: 272000、图片模态且upgrade、availability_nux被剔除TestCodexCatalogImages验证支持图片的模型会追加image模态TestCodexCatalogServiceTiers验证只有 ChatGPT 账号的 GPT 模型才获得 Fast 服务层级。第二步写入 Codex 的模型目录internal/agentinternal/agent/codex.go 在把 magpie 设为 Codex 的 provider 时会把codexcat.Catalog(...)的完整模型目录原子写入 Codex 的magpie-models.json第 201 行并在~/.codex/config.toml中设置model_provider magpie、model_catalog_json 该文件路径和model 选中的模型第 204-210 行。切换模型后settle()还会用codexcat.DefaultEffort校正model_reasoning_effort保证推理档位对当前模型有效第 61-68 行。第三步网关合并模型列表并携带 ETaginternal/gatewayinternal/gateway/codex_backend.go 的codexBackend暴露/backend-api/codexCodexPath第 27 行处理/models与/responses、/responses/compactcodexModels第 388-438 行请求 OpenAI 后端拿到 ChatGPT 账号的模型列表随后append(own, codexcat.Entries(ms, len(own)100)...)把 magpie 的模型携带上述base_instructions Prompt追加在其后若后端不可用则回退到codexcat.CacheEntries()模型列表的 ETag 通过codexcat.WithTag(etag, codexcat.Tag(ms))注入 magpie 模型列表的标签第 436 行回复的X-Models-Etag同样被改写modelsEtag第 443-447 行。Tag用模型列表的 JSON 计算 SHA-256 前 6 字节十六进制作为标签第 174-178 行WithTag把标签拼进 ETagW/abc→W/abcmagpie-tagTagged检测标签是否在其中第 181-195 行。测试 internal/codexcat/tag_test.go 的TestETagTag验证了这套机制模型列表变化 → 标签变化 → ETag 变化 → Codex 重新拉取列表internal/agent/codex.go 的codexStaleCache第 461-489 行还会在标签不匹配时把~/.codex/models_cache.json的fetched_at改写成 Unix 纪元时间强制 Codex 下次启动时重新向 magpie 拉取模型列表。由此第三份提示词最终作为每个第三方模型条目的base_instructions出现在 Codex 看到的模型目录里随会话请求到达模型。提示词在请求侧的双重身份instructions 兜底除了模型目录这份提示词还出现在请求构造路径中。internal/provider/codex_request.go 的codexInstructions第 219-236 行依次尝试magpie 保存的模型指令 → Codex CLI 自己的models_cache.json中的模型指令 → 最终兜底返回codexcat.Prompt。同文件codexBody第 242-259 行会构造 Codex CLI 风格的 Responses 请求仅流式、不保留 item、把客户端指令放在 input 首位、删除max_output_tokens/temperature/top_p/previous_response_id/user/safety_identifier等采样旋钮service_tier只允许priorityFast 模式。这些约束与提示词中简洁、结构化、无冗余参数的呈现规范相互呼应。小结一份提示词两种注入身份注入路径位置作用模型目录internal/codexcat/codexcat.go 的Entries/ownEntry第三方模型条目的base_instructionsPromptCodex 自有模型缺省时回填网关模型列表internal/gateway/codex_backend.go 的codexModels合并进/backend-api/codex/models响应并参与 ETag 标签化请求兜底internal/provider/codex_request.go 的codexInstructions无已知指令时以codexcat.Prompt作为系统指令兜底配置写入internal/agent/codex.go 的putProvider/settle把含该提示词的模型目录写入magpie-models.json并同步校正 effort可以看到codex_prompt.md绝不只是一段给模型的自我介绍它通过与 codexcat.go、codex_backend.go、codex_request.go、codex.go 四个文件的协同成为 magpie 把任意第三方模型包装成 Codex 体验的关键一环——既约束模型在终端环境中的行为搜索偏好、编辑安全、计划与呈现规范也决定了模型在 Codex 模型选择器中的可见形态名称、层级、模态、推理档位。如果你想继续深入可以阅读 internal/codexcat/codexcat_test.go 与 internal/codexcat/tag_test.go 的测试用例它们几乎覆盖了上述每一条行为分支。赞分享【免费下载链接】magpieEvery agents model. One place. Codex on DeepSeek, Claude Code on Kimi, from the menu bar.项目地址https://gitcode.com/gh_mirrors/magpie28/magpie点击查看免费下载相关推荐GyroFlow视频防抖教程三步把抖动的画面变平稳GyroFlow视频防抖教程三步把抖动的画面变平稳 刚拍完的素材走路一迈步整个画面就开始晃——能用但看着晕。这就是 GyroFlow 要解决的事它读取视频处理桌面应用音视频Open Interpreter 中的 GPT-5 系统提示词解析Codex CLI 如何用一份 Markdown 约束编码 Agent 的行为Open Interpreter 中的 GPT 5 系统提示词解析Codex CLI 如何用一份 Markdown 约束编码 Agent 的行为 本文以 co人工智能大模型AI Agent代码智能体AI 应用CLIWeave Router opencode与pi扩展实战Loom头、Wooly吉祥物和/fm命令怎么用Weave Router opencode与pi扩展实战Loom头、Wooly吉祥物和/fm命令怎么用 Weave Router 是一个面向 AI 编程工具的后端LLM 网关大模型创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考