openmath解题平台

【标签】 学习工作

【标题】 【学习工作赛道】+openmath解题平台

【正文】

0. 先和大家打个招呼吧 :waving_hand:

  • **你是谁:**我是一名清华大一学生 ;

  • *你是怎么用 TRAE 把 Demo 做出来的:我是刚接触vibecoding的爱好者,没有过多的技术背景,但是我对于现在AI编程技术的迅猛发展感到非常震惊,于是我想靠这么强大的技术,来完成我内心中想要为世界,为这个社会添把力的想法。我想要真切地用trae的技术向我一样的学生群体以及相处较多的老师和科研工作者们提供一些便利。原本做一个集成各种数理工具和skills的外界模型式解题平台是我以前不敢想象的,现在有了trae,我只需要耐心地与他对话,讲出自己内心的想法(产品的功用),听取trae的建议设计框架,然后一点一点在框架中添加血肉。最重要的是,一定要保持耐心,debug的过程是最艰辛的,需要一点一点测试,对话,修改,***这样一轮轮地迭代优化。解决bug后我是很有成就感的,大家应该也感同身受。

1. Demo 简介

  • 是什么:一个跑在终端的AI数理解题平台,给AI“计算器”、“参考书”、“草稿纸”(数理解题工具和技能),让AI在它们的辅助下工作;

  • 面向谁:所有阶段的学生(做题卡住时)、老师(快速生成猜想、生成证明思路)、基础科学工作者(需要符号推导和数值验证,或者需要多种思路和灵感时);

  • 主要功能:1.多工具协同解题:CAS符号计算+沙箱验证+定理检索+…

    • 需要说明的是,现在开发状态可以帮助AI模型完成奥数中档题难度以下的大部分题目,但更难的题目模型会陷入到自我怀疑、无用循环的状态,而且整个架构中可能存在部分冗余和错误代码,导致最终解题可能会犯低级失误,但该项目将会一直进行完善和优化,诚恳请求大家的支持,希望可以助力广大学生的学习和科技工作者的工作!感谢大家的支持!

    2.方法论技能匹配,自动识别题型,匹配何合适策略

    3.实时思考可视化,推理过程实时显示,支持中断思考

2. Demo 创作思路

  • 我是一名大学生,平时学习高数课程苦于没有靠谱的AI助手,使用的AI助手总是会搅乱自己的思路,让自己更加迷惑。于是我就想怎么提高AI解决数理问题的能力;我联想到了opencode。我看到opencode为接入的模型提供了一套专门为了编程而集成的工具和环境。 我就想:能不能给解题的AI也搭建一个这样的平台?大模型做数理题目,遇到陌生题目最大的问题是没办法通过搜索数据库搜到答案,只能自己在脑子里算,没有专门的解题工具和技能的帮助和指导,导致算不准,形成不了思路,无法验证猜想。它需要这样一个平台给它“草稿纸”、“计算器”、“解题技巧”。所以我做的openmath,不是更强的模型,而是更好的解题环境。
  • 需要说明的是,现在开发状态可以帮助AI模型完成奥数中档题难度以下的大部分题目,但更难的题目模型会陷入到自我怀疑、无用循环的状态,而且整个架构中可能存在部分冗余和错误代码,导致最终解题可能会犯低级失误,但该项目将会一直进行完善和优化,诚恳请求大家的支持,希望可以助力广大学生的学习和科技工作者的工作!感谢大家的支持!

3. Demo 体验地址:这个需要在终端运行,不适配前两种方案,采用视频录制的方案。

4. TRAE 实践过程

  • 第一阶段:搭建框架
    从设计文档出发,搭建了 opencode 风格的全屏终端 CLI 框架,确立了"推理与计算分离"的核心架构。
    具体产出:1.终端 UI 框架:

    • 用 React + ink 构建全屏 TUI,纯 createElement(无 JSX)

    • 实现了:消息流显示、输入框、弹窗系统、命令解析(/help、/clear 等)

    • 后续打磨加入了:字符级复制选取、Ctrl+A 全选、滚轮滚动、ESC 中断
      2.Agent 系统骨架

    • 4 个内置角色:solve(解题)、analyze(分析)、research(研究)、explore(探索)

    • 每个 agent 有独立的系统提示词和工具权限控制(checkPermission)

    • 定义了每个角色能用哪些工具 3.配置外接模型入口

    • providers.js:内置 LLM 提供商(DeepSeek、GLM、OpenAI、Anthropic)

    • provider.js:API Key / baseURL / 模型解析

    • 支持 openmath.json 配置文件 + 环境变量 4.对话引擎初版基础的 OpenAI 兼容流式调用

    • 工具调用循环的雏形(chatWithToolLoop)

    • 难度评估系统(D1-D6 六级,影响 token 上限和工具轮次) 5.MCP 侧车架构(mcp/ + src/mcp/)

    • mcp/server.js:Express HTTP 服务器

    • src/mcp/index.js:JSON-RPC 2.0 客户端,管理 MCP 子服务器生命周期

    • 工具可以通过嵌入式或 HTTP 侧车两种模式执行; 第二阶段:工具层
      构建了 29 个工具 + 12 个适配器 + 6 个 Python 后端 + Docker 隔离 CAS,覆盖从数值计算到形式化证明的全链条。
      具体产出:

      1. 工具注册表
      • 定义了 29 个工具的 JSON Schema(名称、描述、参数、返回格式)
      • ToolRegistry 类:注册/查找/执行工具
      • ToolResult:
        代码执行 sandbox_exec
        符号计算 cas_exec、lightweight_math、research_cas
        证明验证 proof_step、verify、proof_audit
        领域专用 geometry_solve、physics_conservation、physics_quantum、extremal_graph、combinatorial_opt 等
        知识检索 rag_search、research_search、websearch、webfetch
        编排 task(子 agent)、question(用户提问)、scratchpad(草稿本)
      1. 适配器层(mcp/adapters/,12 个文件)
      • 每个 Python 后端对应一个 JS 适配器,负责参数转换和结果标准化
      • 关键:sandbox.js(持久会话 + 变量跨调用保留 + ESC 中断 SIGINT)、cas.js(CAS 路由层:按 op/expr 特征分流到 sympy/ntheory 后端 + sandbox fallback)、verify.js(278行,最大的适配器,多闸门验证:symbolic/numeric/lean/dimensional/conservation)
      1. Python 后端(mcp/backends/)
      • sympy_runner.py:SymPy 符号计算(化简/求导/积分/解方程/因式分解)
      • ntheory_runner.py:数论专精(素数/整除/CRT/二次剩余/离散对数)
      • lightweight_math_runner.py:受限 JSON DSL(FLINT 分解/Z3 可满足性/OR-Tools CP-SAT/CVXPY/igraph)
      • doc_extractor.py:文档提取(docx/pdf/xlsx/pptx + Unicode→LaTeX 标准化)
      • newclid_runner.py:几何推理(DD+AR 搜索)
      1. MCP 服务器(mcp/servers/,10 个文件)
      • sympy-mcp.js、ntheory-mcp.js、lean-mcp.js(Lean 4 形式化证明)、physics-mcp.js、qdrant-mcp.js(向量数据库)、alphageometry-mcp.js(AlphaGeometry 几何发现)
      • 共享基类 _base.js
      1. Docker 隔离的研究级 CAS(docker/research-cas/)
      • GAP(群论)、Singular(多项式代数)、PARI/GP(数论)
      • 只读容器,无网络访问
      1. 知识库(mcp/data/)
      • books/:22 本参考书籍的蒸馏文本(Polya 三部曲、Tao、Zeitz、Lakatos、Mason 等)
      • lemmas.json:引理库、lessons.json:解题经验教训
      • RAG 种子向量 + Qdrant 向量检索
        第三阶段:技能层
        从数学方法论书籍中蒸馏出 67 个解题技能,分为 9 大类,并构建了基于 Polya 四步法的技能路由系统。
        具体产出
        1. 67 个技能(skills)

        2. 技能加载器(src/skills/loader.js)

        3. 智能技能路由(selectSkills())

        • 第一优先级:6 个元认知思考技能始终加载(understand-problem、devise-plan、polya-discovery、tao-strategies、look-back、metacognitive-monitoring)
        • 第二优先级:按题型关键词匹配领域技能(组合/数论/代数/几何/分析/物理)
        • 第三优先级:通用解题范式技能(极端原理、构造法、归纳法、反证法)
        • 难度越高,加载的技能越多(D5-D6 加载全部)
        1. Polya 四步法技能映射(POLYA_SKILL_MAP)
        • 第1步理解问题
        • 第2步制定计划
        • 第3步执行计划
        • 第4步回顾反思
        • 按步骤组织技能注入系统提示词
        1. 规划子系统(src/planning/)
        • essence.js:问题本质分析器(提取任务类型 prove/find/disprove、目标形式、结构信号、歧义检测)
        • ledger.js:证明义务账本(追踪未证明的义务 → 提示渲染)
        • verification.js:多闸门验证需求分析
        • model-planner.js:基于模型的规划 第四阶段:打磨优化
          这是最耗精力的阶段。通过分析模型失败案例,进行了大量迭代优化和结构修改
          具体产出:
          1. 推理-工具交替机制(核心改进,多轮迭代)

          2. Polya 四步法 + 元认知监控写入全工程

          3. 全量工具/技能目录注入

          • buildToolCatalog():15 个工具完整列出(名称+Polya步骤+描述+何时用)
          • buildSkillCatalog():67 个技能按分类列出(名称+触发词)
          • buildSearchActionDirective():强制"先搜工具库→再行动→后推理"的工作流
          1. 动态难度重评估
          • 模型输出中每出现 【难度:X】 实时更新
          • 每 5 分钟自动检查:超时且难度 < D4 → 升至 D4
          1. 上下文管理
          • compactMessages():上下文超限时自动压缩(保留 system + 最近消息 + 摘要)
          • 输出长度续写
          • scratchpad 草稿本:记录关键约束/中间结果/失败路线(精简注入,~50字)
          1. ESC 中断完善

          2. 文档理解修复 SessionID .2983425024753097:585b9e1c42288f5704a95e9cfd1c4b26_6a4cb90b9c9f65f29a6e6cf6.6a4cd7089c9f65f29a6e6e2c.6a4cd708bbe72723ff4fb03f:Trae CN.T(2026/7/7 18:38:00)
            .2983425024753097:f1db34773aad893375d32909f1120ac6_6a4cb90b9c9f65f29a6e6cf6.6a4cd7e09c9f65f29a6e6e69.6a4cd7e0bbe72723ff4fb040:Trae CN.T(2026/7/7 18:41:36)
            .2983425024753097:4cb97d9c639b9aa2df7d99cba9b91238_6a4cb90b9c9f65f29a6e6cf6.6a4dc6c99c9f65f29a6e6f26.6a4dc6c9bbe72723ff4fb042:Trae CN.T(2026/7/8 11:40:57) .2983425024753097:36b9e30387092cb5755107bbdab1e3fa_6a4cb90b9c9f65f29a6e6cf6.6a4f10a19c9f65f29a6e7334.6a4f10a0bbe72723ff4fb049:Trae CN.T(2026/7/9 11:08:17) .2983425024753097:e830e0934447dc2f5ee92c0ed87082d4_6a4cb90b9c9f65f29a6e6cf6.6a4fa8949c9f65f29a6e7666.6a4fa893bbe72723ff4fb055:Trae CN.T(2026/7/9 21:56:36) .2983425024753097:b1c5e1a676edd5b3f64459829eaf2fa9_6a4cb90b9c9f65f29a6e6cf6.6a546711bc21ac5ecde13165.6a546711c7823b1df7ce1d3c:Trae CN.T(2026/7/13 12:18:25) .2983425024753097:dce3cf7b3c198a8f2e9d75083af4ae47_6a4cb90b9c9f65f29a6e6cf6.6a5469d1bc21ac5ecde131bb.6a5469d1c7823b1df7ce1d3d:Trae CN.T(2026/7/13 12:30:09) .2983425024753097:b9b9f75e4935b99e05d9ebcd40fea53c_6a4cb90b9c9f65f29a6e6cf6.6a5597a1bc21ac5ecde1361f.6a5597a1c7823b1df7ce1d51:Trae CN.T(2026/7/14 09:57:53)
            .2983425024753097:b74a3a427803911c6b71d59639ae5619_6a4cb90b9c9f65f29a6e6cf6.6a562ec0bc21ac5ecde13fb2.6a562ec0c7823b1df7ce1d6f:Trae CN.T(2026/7/14 20:42:40)

            需要说明的是,现在开发状态可以帮助AI模型完成奥数中档题难度以下的大部分题目,但更难的题目模型会陷入到自我怀疑、无用循环的状态,而且整个架构中可能存在部分冗余和错误代码,导致最终解题可能会犯低级失误,但该项目将会一直进行完善和优化,诚恳请求大家的支持,希望可以助力广大学生的学习和科技工作者的工作!感谢大家的支持!

**5. 对应的报名审核通过的帖子链接:**数理解题平台

厉害的呀,大佬!

已投票~互相支持一下~
也来看看我的帖子吧,为听障人士做的公益AI服务员
AI服务员-无声有市:一部手机,让无声摊位也能开口接单

已投 :grinning_face:你做的也很好呀:+1: