用途:在编写或审查 Erlang 目标的 Gleam 代码时使用,尤其适合 Wisp + Mist HTTP 服务、基于 OTP 的进程(gen_server / supervisor 类比)以及 wisp + mist + gleam_otp + just 技术栈。
主要能力与约定:默认流程从 gleam new 与 gleam add 开始,让求解器选择依赖;采用 TDD(探索→红→绿→重构);纯逻辑与状态管理分离,领域模块与 actor/server 模块分离;保持公共 API 小,优先 pub opaque type;@external 仅作最后手段并封装在薄适配模块;Web 层保持薄,handler 只做解码、调用服务、编码响应;任务集中在 justfile,CI 也调用 just ci。
项目初始化示例:gleam new my_app --template erlang;gleam add wisp mist gleam_otp gleam_erlang;gleam add gleam_json envoy;gleam add --dev gleeunit。按需添加 HTTP 客户端、文件 I/O、快照测试、属性测试、交互测试、未用导出检查、基准、日志、热重载等依赖。建议 wisp 与 mist 一起添加以让求解器解析兼容版本。
推荐布局:src 下拆分入口、DI 与监督启动、路由、纯领域逻辑、actor 包装、JSON 编解码;test、docs、bench 与 justfile 分列。Wisp + Mist 骨架包含端口与 secret 读取、app.start、wisp_mist.handler、mist 绑定与启动。
OTP 模式:gleam_otp 是 Erlang gen_server 的静态类型包装,API 不兼容,不要直接调用 :gen_server.call / :gen_server.cast,应使用 Subject 与 actor.Message。监督树分静态、factory、dynamic 三类,按固定子进程、同规格动态生成、任意规格动态增删选择;重启策略有 Permanent、Transient、Temporary,超过 restart_intensity 与 period 时监督者自身崩溃并向上传播。
JSON:使用 gleam/dynamic/decode 与 gleam/json,decode.field 必填、decode.optional_field 可选,编码用 json.object 与 json.to_string_tree;gleam-language-server v1.2+ 提供生成编解码器的 Code Action。
测试与质量:先纯函数、再 actor、最后 HTTP;HTTP 测试优先 wisp/simulate;birdie 做快照,qcheck 做属性测试,glacier 做交互循环;质量以 gleam format --check .、gleam check、gleam build --warnings-as-errors、gleam test 为主,辅以 gleam fix、gleam docs build、cleam。性能分微基准、集成基准、HTTP 负载三层,工具含 glychee、k6、wrk 与 BEAM 的 :eprof、:fprof 等。
限制:资料未提供具体收费、价格、平台支持范围与效果数据;部分 API 名称随版本变化,需查阅官方 gleam_otp hex 文档确认。