openGym纯函数训练引擎设计:为什么核心算法放在frontend/src/lib

发布时间:2026/10/9 6:14:49

openGym纯函数训练引擎设计:为什么核心算法放在frontend/src/lib openGym纯函数训练引擎设计为什么核心算法放在frontend/src/lib【免费下载链接】openGymSelf-hosted gym body-weight tracker — plan routines, log workouts (supersets, warm-ups, cardio), see which muscles are trained, fatigued or detrained, import from FitNotes/Strong/Hevy, passkey login. Your data, your server.项目地址: https://gitcode.com/GitHub_Trending/op/openGymopenGym 是一款自托管的健身训练与体重追踪应用self-hosted gym body-weight tracker而它最值得关注的设计是把自动渐进、1RM 估算、肌肉疲劳计算等核心训练算法全部写成纯函数并集中在 frontend/src/lib/ 目录下。这套纯函数训练引擎不依赖界面、不依赖网络相同输入永远得到相同输出——这也是本文要讲清楚的事。什么是纯函数训练应用为什么需要它对新手来说纯函数pure function只有一条规则输入相同输出就相同而且不偷偷修改外部状态、不发请求、不读写全局变量。听起来是学术概念但对健身记录工具却是刚需。你的训练数据是发生了的事而下一次该加多少重量、哪块肌肉该休息都是从历史记录推导出来的结论。openGym 的 progression.js 开头就写明了这一原则日志只记录事实下一次训练处方是每次需要时现场推导的不存任何计数器。好处非常实际好处对你的意义可推导改一次策略、修正一个打错的重量下一次目标立刻算对不会出现存错的状态可测试纯函数可以拿任意历史数据反复验证不需要真机、不需要数据库可复用同一份逻辑可以在网页、手机、本地工具里跑结果永远一致为什么核心算法放在 frontend/src/lib打开 frontend/src/lib/ 你会看到 230 多个文件100 个功能模块129 个配套测试文件几乎每个模块都成双成对。这不是巧合而是刻意的分层UI 层views/、components/只负责画出来lib 层只负责算出来接收一个状态对象S返回计算结果不碰界面。几个典型的模块分工workout-model.js —— 组set的语义热身、正式组、递减组、rest-pause 都挂在同一行数据上界面读什么姿势都不用改history.js —— 对状态对象的纯工具函数决定动作按次数 / 时间 / 有氧哪种模式记录onerm.js —— 用 Epley 公式重量 × (1 次数/30)估算每个动作的 1RMrecovery.js —— 肌肉疲劳模型每次训练产生刺激按半衰期指数衰减输出 ready / recovering / fatigued 三档状态structuralBalance.js —— 力量结构平衡比例plates.js —— 根据你拥有的杠铃片算出这一组该挂哪些片。把算法放在前端而不是后端还有一个常被忽略的原因同步合并发生在客户端。多设备同步409 冲突由前端纯函数解决openGym 的同步流程是这样的设备保存数据时携带版本号baseRev服务器发现版本过期就返回 409 冲突并把最新文档交回来——合并逻辑由前端的纯函数完成再重新提交这个合并函数就是 sync-merge.js按字段制定规则——标量取较新的、训练记录按 id 取并集、杠铃片按单位分别合并……全是确定性规则没有任何随机性。正因为是纯函数同样的两份数据在任何设备上合并出的结果都一样手机上记的一组训练永远不会被电脑端覆盖丢失。同一份引擎跑在三个地方纯函数设计最大的回报是复用PWA / 网页Vite 直接打包 lib 层训练界面、统计页、结构平衡页共用同一套计算Android / iOS 应用Capacitor 包装同一套前端行为零分叉MCP 服务器本地只读问答服务见 mcp/README.md是纯 Node 环境没有 React、没有 Vite却能直接 import lib 里的函数回答我上周卧推多少这类问题。代码注释里还专门解释了这一点像 history.js 会刻意 importi18n-core.js而不是i18n.js就是为了不带入任何 Vite/React 依赖让同一份算法在无框架环境里也能加载。测试侧同样受益在 frontend/package.json 中npm test一条命令跑 vitestfrontend/src/lib/ 下 129 个测试文件把打错一组会不会误加重量半衰期衰减是否单调这类问题全部钉死在提交之前。总结纯函数让你的数据可信核心算法渐进、1RM、疲劳、平衡、合并集中在 frontend/src/lib/与界面彻底解耦一切结论从日志现场推导不存易失同步的中间状态同一份纯函数驱动网页、手机与本地 MCP多端行为永远一致129 个单元测试保证算法改一行都能立刻验证。对想学习前端架构的读者来说openGym 是一个很好的范本当你看到算法为什么放在 frontend这样的疑问时答案往往不是前端更方便而是——把计算写成纯函数前端、后端、工具链就都能安全地共享它。【免费下载链接】openGymSelf-hosted gym body-weight tracker — plan routines, log workouts (supersets, warm-ups, cardio), see which muscles are trained, fatigued or detrained, import from FitNotes/Strong/Hevy, passkey login. Your data, your server.项目地址: https://gitcode.com/GitHub_Trending/op/openGym创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
延伸阅读

更多相关文章

2026/10/9 6:14:48

从散件到直驱驾驶舱:openrig开源图纸DIY全记录

最早看到"openrig"这个词,是在某个模拟赛车交流群里。当时有人贴了一张铝型材结构的驾驶舱照片,配文说这是用开源图纸装出来的,整套骨架不到两千块。我第一反应是:这不就是把几根铝条拼起来嘛。直到自己照着图纸搭了一台…

2026/10/9 6:09:48

JSP+Servlet+Mysql客户管理系统实战:建表、连接池与避坑指南

简介:基于JSPServletMySQL实现的客户管理系统,采用B/S架构,适合Java Web初学者、课程设计或毕业设计参考。系统涵盖登录、客户管理、线索管理、交易管理、联系人管理、市场管理、数据统计与系统管理等模块,前后端分别使用Layui与J…

2026/10/9 6:09:48

JavaWeb老项目实战:Eclipse+MySQL运行超市管理系统全解析

简介:系统面向超市日常运营管理场景,基于Eclipse与MySQL实现商品进销存、采购管理、销售收银及数据统计,并提供管理员与收银员双角色界面,适合Java学习者、毕业设计使用者及中小型超市信息化改造参考。压缩包为zip格式&#xff0c…

2026/10/9 7:24:53

星际争霸1重置版兵种数据全局修改:从MPQ编辑到实战验证

星际争霸1重置版的地图里,机枪兵能不能像雷兽一样肉?跳虫能不能跑得比提速后还快?航母的拦截机能不能一次打掉一队飞龙?如果你在自定义地图里被某些“神仙兵种”支配过,多半会想自己动手改一版试试。这事听起来像作弊&…

2026/10/9 7:24:53

ReAct模式深度拆解:手写AI智能体核心循环,告别烧token

如果让我用一个词总结现在 AI Agent 圈子里最“朴素但最管用”的套路,那一定是 ReAct。很多人刚接触 AI Agent 时,总以为它是什么黑魔法,其实剥开来看,核心就是一个循环:让大模型先“想”怎么拆解问题,再“…

2026/10/9 7:24:53

Java人事管理系统源码实战:从环境搭建到二次开发避坑指南

简介:这是一套基于SpringMybatis框架开发的Java人事管理系统完整源码,面向具备Java Web基础、希望积累企业级项目经验的开发者与计算机专业学生,可用于课程设计、毕业设计或二次开发练手。系统涵盖用户管理、部门管理、职位管理、员工管理、公…

2026/10/9 7:24:53

智能硬件设计:从功能清单到场景思维的实战转型方法论

做了快十年的智能硬件产品设计,我见过太多团队拿着洋洋洒洒几十页的功能清单,最后把产品做成“用户买回来吃灰”的摆设。问题不是他们不够勤奋,而是从一开始就陷在功能思维里,没有切换到场景思维。场景这个词听起来很虚&#xff0…

2026/10/9 7:19:52

UE5高级实战:从编辑器操作到引擎底层架构的深度穿透

1. 为什么“UE实战与高级主题”不是教程合集,而是一道分水岭很多人看到《游戏引擎架构深度解析(五):UE实战与高级主题》这个标题,第一反应是:“哦,又一个教你怎么在UE里拖节点、改材质、跑Demo的…

2026/10/8 10:03:18

Jev+Agent接管浏览器:browser-use实战与jev-ultrafast性能优化

1. 从“Jev”说起:为什么我要把Agent接进浏览器“Jev”这个词最近在圈子里出现的频率越来越高,很多人第一次听到会以为是某个新模型的名字,其实它更像是一种思路——把Jev模型的能力当作底座,通过Agent的方式去接管浏览器&#xf…

2026/10/8 10:03:20

多智能体集群实战:DeepAgents编排、MCP与A2A协议及Skills体系

1. 从"单兵作战"到"集群协同":多智能体编排到底在解决什么问题如果你最近在折腾 Agent 相关的东西,大概率会有一种感觉:单个 Agent 能做的事情,其实很快就摸到天花板了。你给它一个提示词,挂几个工…

2026/10/8 6:05:44

无源低通滤波器设计实战:从RC到LC,手把手教你避开那些坑

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/9 0:04:27

毕业论文初稿完成后首次进行AIGC疑似度自查的摸底与分流策略

毕业论文初稿完成后首次进行AIGC疑似度自查的摸底与分流策略当数万字的学位论文初稿经历开题、实验、问卷与多轮文献梳理最终成形时,绝大多数研究生都会面临一道全新的形式审查关卡:AIGC 疑似度排查。在高校毕业审核流程中,盲审前的文本检测通…

2026/10/9 0:04:27

食堂节能改造源头工厂,商用厨房设备焕新方案广受好评

商用厨房作为餐饮经营、单位供餐的核心后勤阵地,其设备配置、动线规划与运维体系直接决定后厨作业效率、运营成本与合规性。从基础的灶具、制冷存储设备,到油烟净化、水处理等配套系统,每一个环节的合理性都与食品安全、能耗管控、消防安全挂…

还想了解更多?直接咨询顾问

免费诊断 + 免费方案 + 透明报价。

全国咨询热线400-8866-253
免费获取方案
☎咨询二维码 ☎ ↑