用 Codex 创建教育 Agent:关键不是写代码,而是拆判断流程
一个有用的教育 Agent,需要系统提示词、知识库、槽位流程和调用外壳四件套,而不是把资料塞给 AI 就结束。
这两天我在拆一个开源项目,叫雪峰 Agent。它表面上是一个高考志愿填报 Agent,用户输入省份、分数、位次、选科和家庭情况,它就能像一个志愿规划师一样追问、分析、劝退、推荐方向。但我真正感兴趣的,不只是它能不能报志愿,而是它背后有一套很清楚的 Agent 创建方法论。
如果以前让我做一个教育 Agent,我可能会先想到“收集资料”“整理知识库”“写提示词”。但拆完这个项目之后,我的理解更明确了:一个有用的 Agent,不是把资料塞给 AI 就结束,而是要把一个人的判断流程、表达风格、咨询边界和调用方式全部系统化。Codex 在这里的价值,也不是简单帮我写代码,而是帮我把一个现成项目拆开,看懂它为什么能工作,再反推出我自己的 Agent 应该怎么搭。
这篇文章就偏技术一点,讲我会怎么用 Codex,从雪峰 Agent 这个项目里拆出一套可复制的方法,并迁移到本地同城教育场景里。
一、第一步不是写代码,而是让Codex先读懂项目
很多人用 AI 写代码,一上来就说“帮我做一个 Agent”。这个提示太大了,AI 很容易给你一个看起来完整、实际很空的模板。我的做法相反:先把一个已经能跑的项目交给 Codex,让它从源码、提示词、知识库、README、测试文件里反向拆解。
比如雪峰 Agent 这个项目里,真正关键的文件不是很多。`agent.py` 是主程序,负责模型调用、槽位提取、搜索和对话状态;`system_prompt.md` 是人设和行为规则,决定这个 Agent 像谁、怎么说话、什么不能说;`knowledge_base.md` 是领域知识库,里面放的是志愿填报方法论、专业判断、学校选择、家庭资源分析等内容;`web_app.py` 和 `auth_store.py` 则负责本地 Web 调用、登录、邀请码和历史会话保存。
我会让 Codex 先回答几个问题:这个项目的核心架构是什么?用户输入经过哪些步骤变成回复?哪些逻辑写在代码里,哪些逻辑写在提示词里,哪些逻辑放在知识库里?如果我要迁移到本地教育咨询,哪些模块可以复用,哪些必须重写?这一步非常重要,因为它能避免我们陷入“盲目重做一个新项目”的冲动。真正高效的方式,是先理解一个成功样板的结构,再决定自己要改哪一层。
二、雪峰Agent的核心,其实是四件套
Codex 拆完之后,雪峰 Agent 的结构可以概括成四件套:系统提示词、知识库、槽位流程、调用外壳。理解这四件套,基本就理解了大多数垂直领域 Agent 的雏形。
系统提示词解决“它是谁”的问题。雪峰 Agent 不是一个普通 AI 助手,而是一个直爽、有经验、敢说真话的志愿规划师。它会追问,不会一上来乱推荐;它会劝退,不会只说漂亮话;它会提醒数据边界,不会编造录取分数线。这个人设不是装饰,而是 Agent 的行为约束。
知识库解决“它知道什么”的问题。雪峰 Agent 的知识库不是简单堆资料,而是把志愿填报拆成方法论、专业选择、学校层次、就业路径、家庭资源、选科策略、专科路径等模块。这样模型在回答时,不是随机搜索一段材料,而是有相对稳定的判断依据。
槽位流程解决“它怎么问”的问题。这个项目里有一个很关键的设计,就是从用户输入里自动提取省份、分数、位次、选科、兴趣、地域、家庭、诉求等信息。信息不够时,它先追问;信息够了,再分析。这个设计让 Agent 不像一个问答机器人,而更像一个咨询师。
调用外壳解决“它怎么被使用”的问题。它既可以用命令行跑,也可以用本地 Web 页面调用,还能保存用户会话和状态。也就是说,Agent 不只是一个 prompt,而是一个可以被持续使用的小系统。
这四件套迁移到本地教育场景里,就很清楚了:我要写自己的教育顾问人设,整理南宁本地教育知识库,设计家长咨询槽位,再做一个方便自己调用的 Web 或命令行入口。
三、用Codex创建自己的Agent,可以按这个流程走
如果我要基于 Codex 做一个本地同城教育 Agent,我不会一上来让它“从零生成一个完整项目”。更稳的做法,是分六步走。
第一步,让 Codex 生成项目拆解报告。提示可以这样写:请阅读这个项目的 README、agent.py、system_prompt.md、knowledge_base.md 和 web_app.py,拆解它的 Agent 架构,说明每个文件负责什么,用户输入到模型回复的完整链路是什么,并指出哪些部分适合迁移到本地教育咨询 Agent。这个提示的重点是让 Codex 先理解,不急着改。
第二步,让 Codex 帮我设计本地教育 Agent 的信息槽位。雪峰 Agent 采集的是高考志愿信息,而本地教育 Agent 要采集的是孩子年级、所在城区、当前学校、成绩水平、薄弱科目、目标路径、家庭投入、户籍房产学籍限制、孩子学习状态、家长最焦虑的问题。槽位设计越清楚,后面的回答越不容易跑偏。
第三步,让 Codex 重写系统提示词。这里不能只写“你是一个教育专家”。这种提示太空。要写清楚它服务谁、擅长什么、怎么说话、什么时候追问、什么时候给判断、哪些话不能说。比如涉及南宁本地政策、招生规则、学校变化时,必须提示以官方最新通知为准;不能承诺某个孩子一定进某所学校;不能制造焦虑逼家长报班。
第四步,让 Codex 设计知识库目录。我的建议是不要把所有资料塞进一个大文件,而是按场景拆开:`local_policy.md` 放本地政策和时间节点,`school_database.md` 放学校信息和适合人群,`learning_diagnosis.md` 放学科诊断和提分路径,`parent_cases.md` 放典型家庭案例,`content_style.md` 放公众号和短视频表达风格,`risk_boundaries.md` 放不能乱说的边界。
第五步,让 Codex 修改代码,把雪峰 Agent 的高考槽位换成本地教育槽位。这里 Codex 的优势就出来了。它可以读原来的 `extract_slots_from_message`,再根据新的槽位重写关键词识别;可以调整 `is_consultation_intent`,让它识别择校、小升初、中考、转学、补课、成绩下滑等意图;也可以修改 `_build_system_message`,把新的知识库和当前用户状态拼进模型上下文。
第六步,让 Codex 写测试和案例。一个 Agent 做出来不能只靠感觉,要准备几类典型输入测试:比如“孩子六年级,青秀区,数学下滑,要不要转学”;“初二英语一直提不上来,家长想冲重点高中”;“小升初到底要不要提前规划”;“想写一篇南宁家长焦虑小升初的公众号”。每一类输入,都要看它有没有追问关键信息,有没有乱编政策,有没有给出可执行建议。
这套流程听起来像技术步骤,但本质上是在做一件事:把你的专业判断拆成机器能执行的结构。
四、Codex不只是写代码,更适合帮你沉淀工作流
我现在越来越觉得,Codex 最适合做的不是一次性生成代码,而是长期沉淀工作流。比如这次拆雪峰 Agent,我可以让它不断帮我做三类事情。
第一类是代码层面的改造。比如把高考志愿 Agent 改成本地教育 Agent,把单一知识库拆成多个文件,把本地 Web 页面改成更适合自己使用的后台,把会话记录和家长画像保存下来。这些是传统意义上的开发工作,Codex 可以读文件、改文件、跑测试、看报错,再继续修。
第二类是内容层面的蒸馏。比如我给它一篇政策通知、一段家长咨询记录、一篇公众号文章,让它提取成知识库条目:这条资料属于哪个场景?能支持什么判断?有哪些不能外推的边界?可以转化成什么选题?这一步不是写代码,但对教育内容生产特别有用。
第三类是流程层面的固化。Codex 有一个很重要的能力,是可以把反复出现的工作写成 Skill。简单说,Skill 就是一套可复用的任务说明、参考资料和可选脚本。比如我以后可以做一个“南宁教育文章写作 Skill”,专门规定公众号文章怎么选题、怎么开头、怎么落到家长痛点;也可以做一个“本地教育资料蒸馏 Skill”,专门把政策、学校资料、家长案例整理成知识库。这样我下次不用重新解释一遍,Codex 看到任务就会按固定流程做。
如果再往前一步,还可以用 `AGENTS.md` 固化项目规则。这个文件可以理解为给 Codex 看的项目说明书,里面写清楚目录结构、运行命令、写作风格、测试方式、禁止事项。比如我可以在里面写:涉及南宁政策不得编造,必须保守表达;文章必须面向南宁家长;新增知识库条目要标注来源和适用边界;改代码后要运行对应测试。这样每次打开项目,Codex 都会先读这些规则,工作就不会每次从零开始。
五、一个教育Agent真正难的,不是技术,而是边界
从技术上说,用 Codex 复刻雪峰 Agent 并不难。难的是我们要决定:哪些东西可以让 Agent 说,哪些东西不能让 Agent 说。
教育领域最怕的就是过度承诺。比如家长问“我家孩子能不能进某某学校”,一个不负责任的 Agent 很容易为了显得专业,直接给出肯定答案。但真实情况是,学校招生政策、学区规则、摇号、转学、名额、孩子状态,都会影响结果。没有最新官方依据,就不能给确定性承诺。
所以我在设计本地教育 Agent 时,一定会把边界写进系统提示词和知识库里。它可以帮家长梳理问题,可以提醒风险,可以给下一步行动建议,但不能替代官方政策,不能替代线下诊断,也不能把复杂孩子简单标签化。尤其是涉及学校、政策、升学结果、提分效果,必须谨慎。
这一点其实也是专业度的体现。一个好的教育 Agent,不是回答得越满越好,而是知道什么时候该追问,什么时候该提醒核实,什么时候该说“这个需要结合孩子具体情况判断”。
六、我会怎么落地自己的本地教育Agent
如果把这件事真正落地,我会先做一个最小可用版本,而不是一开始追求大而全。
第一版只做三个能力:家长咨询、资料蒸馏、内容生成。家长咨询负责根据孩子情况追问和给方向;资料蒸馏负责把政策、学校信息、家长案例整理进知识库;内容生成负责把本地教育话题转成公众号文章、短视频脚本和选题库。
代码上,可以沿用雪峰 Agent 的结构:保留 `agent.py` 的主流程,替换系统提示词和知识库,重写槽位提取和咨询意图识别;保留 Web 调用方式,方便自己在浏览器里使用;保留会话状态,这样每个家长的问题可以持续追踪。等第一版跑顺了,再考虑更复杂的能力,比如接入搜索、接入本地资料库、做多用户后台、做案例标签系统。
工作方式上,我会让 Codex 参与整个循环:先让它读资料,再让它整理知识库;先让它改代码,再让它跑测试;先让它生成文章初稿,再由我补充真实观察和本地判断。这样人负责判断,Codex 负责执行和沉淀,效率会高很多。
这也是我从雪峰 Agent 得到的最大启发:做 Agent,不是把 AI 当成一个万能老师,而是把自己的专业能力拆成一套可以被调用、被测试、被迭代的系统。
七、最后总结一下这套方法论
如果你也想用 Codex 创建一个自己的 Agent,可以按这个顺序来:先找一个可参考的项目,让 Codex 拆源码和流程;再定义自己的业务场景和用户问题;然后写系统提示词,确定人设、风格和边界;接着整理知识库,不按资料来源整理,而按使用场景整理;再设计槽位,让 Agent 学会先问清楚再回答;最后用测试案例反复验证,哪里乱答就改提示词,哪里信息不够就补槽位,哪里知识缺失就补知识库。
当这个流程跑通以后,再把稳定的部分沉淀成 `AGENTS.md`、Skill,甚至插件。这样 Codex 就不只是一次性帮你写代码,而是变成一个长期参与你工作流的协作者。
对我来说,雪峰 Agent 不是一个终点,而是一个样本。它让我看到,一个教育从业者完全可以把自己的经验、资料、判断流程和表达方式,一步步沉淀成自己的 Agent。这个 Agent 不一定替代人,但它可以帮我们更快整理资料,更稳定输出内容,更清楚地诊断问题,也让我们的专业能力不再只停留在脑子里。
未来做教育内容,拼的可能不只是你会不会写文章,而是你有没有一套可以持续积累的专业系统。Codex 提供的,正是把这套系统搭起来的工具。
而真正关键的,还是人自己的判断。AI 可以帮我们写、帮我们改、帮我们跑、帮我们整理,但它不能替我们决定什么是对孩子负责,什么是对家长有用,什么是不能乱说的边界。一个好的教育 Agent,最终不是技术炫技,而是专业判断的产品化。
结构判断:
这篇文章属于技术方法论型和信任型内容。它吸引的是对 AI 工具、本地教育内容生产、学业规划数字化感兴趣的家长或同行;核心落点是“如何用 Codex 把雪峰 Agent 的结构迁移成本地教育 Agent”;文章通过具体文件、流程、槽位、知识库、Skill、AGENTS.md 等技术路径,建立作者既懂教育规划也懂 AI 工具落地的专业形象。