不是又一个脚手架,而是一套跑通的工程实践:AI 工作流全程参与,CI 门禁和灰度发布都验证过
后台、PWA、App 共用一套后端
一个想法拆成任务 → AI 并行开写 → 自动审查 → 灰度发布。 交付节奏从"周"变成"天"。
接口只写在 proto 里,Rust SDK、TS SDK、前端 hooks 全部自动生成。 改接口像改文档一样安全,前后端不会对不上。
RBAC 权限、审计日志、MFA、OAuth、文件预签名、站内信、数据字典、任务调度、多语言、暗色模式——不用再自己搭一遍。
FDE 一条命令装好 Forgejo、8 个数据库、缓存、消息队列、对象存储和可观测组件,离线也能交付;数据库结构用版本化迁移管理。
样板代码、类型转换、CRUD,AI 顺手就写,不用再套一层生成器。
接口边界、一致性、验证这些 AI 容易翻车的地方,才该用工具管住。
proto 里写下接口和数据结构,Rust SDK、TS SDK、前端类型和 hooks 全部由它生成。不用手写,也就不会前后端对不上。
把要求写成 CI 检查——契约校验、数据库迁移、回归测试、lint/audit。检查不过就合不进去,比靠人盯着靠谱。
生成分两种:SDK、类型、hooks 这类不用手改(文件头带 @generated,写明来源和怎么重新生成);服务骨架、RPC 占位是留着让你填的(todo!),已经写好的实现绝不覆盖。出问题能顺着找到源头。
把交付流程写成 AI 能照着做的技能(loop-it / review-it / ship-it),每一步都能查、能回滚、能重复用,不靠谁记性好。
# ① 新建 / 补服务:生成骨架和 RPC 占位(签名对齐 proto,已写的实现不覆盖) $ just new-service bffadmin port=8083 # 服务骨架:鉴权和日志中间件已接好 $ just gen-service bffadmin # 按 proto 生成 RPC 占位(todo!),不覆盖已写实现 $ just gen-deploy bffadmin # K8s 清单 + overlay 接线 + 服务注册 # ② 契约变更:三层 SDK 全部重新生成 $ buf lint && buf breaking --against main # 契约校验 · 向后兼容 $ just gen-sdk && just gen-sdk-ts # Rust SDK + TS SDK $ pnpm generate:hooks # 前端 hooks(proto → TanStack Query) ✓ 服务骨架 + RPC 占位 ✓ 三层 SDK 生成(RS / TS / hooks) ✓ 219 个 RPC 覆盖率审计
每个 RPC 一个独立文件(services/<svc>/src/service/<method>.rs),又小又独立。AI 可以并行改,不会互相踩文件。
真正省下的不是打字的时间,是读懂的成本:AI 要看的只有几千行契约和规则,而不是几十万行代码。
Web / PWA → Envoy 网关(HTTP/JSON 转码)· 原生 App → gRPC 直连领域服务
同一套后端,两种复用方式
每个服务独立部署、独立演进,按需水平扩展
目标即需求:想法进来,生产代码出去。每一步可审查、可回滚
需求登记为任务卡片,AI 按依赖拓扑排序
拆成可并行执行的原子任务
隔离 worktree 并发开发 + 自动审查
/review-it 并行测试与差异审查
分支驱动 CD,合入即部署到 K8s
循环执行 loop-it → review-it → ship-it,一个 Goal 闭环 = 一次可交付增量
React 19 + Ant Design 6 + Vite 8,hooks 由 proto 自动生成,手写逻辑永不覆盖
菜单 / API 双层权限守卫,动态路由,权限码聚合
登录 / 操作 / API / 数据访问审计可视化
多因子认证、备份码、OAuth 提供商配置
i18next 命名空间 + 字典 i18n 管理
AntD Token + UnoCSS,暗色 / 亮色一键切换
proto → TanStack Query hooks,类型安全开箱即用
$ git push origin feat/goal-42 $ fj pr create --title "feat: internal_message inbox" $ fj pr merge --squash --delete-branch $ fj issue close 42 ⏱ 检测到 gitops 分支更新 → 渲染 kustomize overlay prod → 同步到 K8s 集群 ✓ internal_message 滚动发布完成 :8009
自建 ClickHouse 调用链(零外部依赖),日志 / 指标 / 追踪一体
跨服务全链路还原,一条命令看调用树
rust_ddd_logs.traces 直写(零 collector 依赖),trace_id 跨服务串连
just trace <trace_id> 一条命令还原调用树,排障直接贴进 issue
日志与 span 共用 trace_id / request_id,一键跳到链路,慢查询自动标记
just topology 5 灰度 / main 双泳道实时拓扑,kubectl 实况渲染
$ just trace 4f9a3c… # 还原整条调用树 $ just topology 5 # 集群实时流量泳道(每 5s 刷新) ✓ 服务端 span(server)✓ 客户端 span(client)✓ 慢查询标记 ✓ trace_id 跨服务串连 ✓ 灰度 / main 泳道实时拓扑 ✓ ClickHouse 直写,无 collector
🔍 just topology 泳道 dash · 点击放大
同样的能力,从零搭建约 3 个月;方法沉淀下来,起步即 1 天
| 能力 | 自己从零搭建 | RustSaaS |
|---|---|---|
| 微服务拆分与 DDD 建模 | 从架构评审开始 | 8 领域直接可用 |
| 前后端接口契约 | 手写 SDK + 文档 + 反复对齐 | proto 自动生成,永不失配 |
| RBAC / 审计 / MFA / OAuth | 逐个实现,半年量 | 开箱即用 |
| 后台前端 | 选型 + 搭建 + 联调 | React 19 + AntD 6 就绪 |
| 持续交付 | 自己搭 CI/CD + 环境 | GitOps 分支部署 |
| 可观测性(日志/指标/追踪) | 后期补课,选型+接入耗时 | ClickHouse 自建 APM + just trace |
| CI 质量门禁 | 自己搭 lint/测试/漏洞扫描 + 分支保护 | 全 PR 必跑,红则无法合并 |
| 数据库迁移 | 手写 ALTER / 全量重建 | refinery 版本化迁移 |
| 功能开发流程 | 手写 → 自测 → 提测 | AI Goal Workflow 自动闭环 |
| 上线时间 | 3~6 个月 | 1 天 |
这是一套自用的项目底座,也是一份可展示的工程方法论。
不为它标价,只按结果合作。
私有化落地 / AI 产研工作流 / 工程方法交流
