AGENTS.md 4.8 KB

AGENTS.md

本文件用于约束在 Loan/client 仓库内工作的 AI agent / 协作者,目标是让改动更稳、更贴近当前项目结构,并减少无关返工。仓库信息变化后,请同步更新此文件。

项目概览

  • 项目名称:Loan Assistant / 借贷助手 客户端
  • 技术栈:Expo 55React Native 0.83React 19TypeScriptexpo-routerNativeWind 4@ant-design/react-native 5
  • 目标平台:iOSAndroidWeb
  • 包管理器:仓库包含 pnpm-lock.yaml,默认优先使用 pnpm
  • 当前 UI 基调:浅色主题,根布局与全局 Provider 在 src/app/_layout.tsx

常用命令

  • 安装依赖:pnpm install
  • 启动开发环境:pnpm start
  • 启动 Android:pnpm android
  • 启动 iOS:pnpm ios
  • 启动 Web:pnpm web
  • 代码检查:pnpm lint

如果必须使用 npm,请确保不要混乱提交锁文件;默认仍以 pnpm-lock.yaml 为准。

目录约定

  • src/appexpo-router 路由入口、layout、页面级 screen 文件
  • src/app/(tabs):底部标签页相关路由
  • src/components:跨页面复用组件
  • src/components/ui:更基础的 UI 组件与页面积木
  • src/hooks:自定义 hooks
  • src/utils:基础能力与业务支撑工具,例如 apiauthstorage
  • src/constants:主题和常量
  • src/global.cssNativeWind 全局样式入口
  • assets:运行时资源
  • design:设计参考稿或静态参考资料,默认不作为运行时代码来源
  • docs/antd:本地 Ant Design RN 参考文档,新增或调整组件时优先查阅
  • androidios:原生工程,除非是原生能力、权限、构建配置相关改动,否则不要随意修改
  • dist:构建产物目录,不要手工编辑

代码组织规则

  • 路由文件尽量保持轻量,复杂 UI 和业务逻辑优先下沉到 src/componentssrc/hookssrc/utils
  • 本项目已配置路径别名:
    • @/* -> src/*
    • @/assets/* -> assets/*
  • 新页面优先放在 src/app 下对应路由位置,不要回退到旧式集中路由表
  • 涉及标签页结构时,同时检查 src/app/(tabs)/_layout.tsx
  • 平台差异优先通过 *.web.tsx 等平台文件处理,避免在单文件里堆过多平台分支
  • 尽量复用已有基础组件,不要在页面里重复造按钮、输入框、弹窗、状态标签

UI 与样式约定

  • 样式方案以 NativeWind + global.css + tailwind.config.js 为主
  • 组件型交互优先复用 @ant-design/react-native
  • 根节点已经包裹 @ant-design/react-nativeProvider,全局 Provider 变更集中放在 src/app/_layout.tsx
  • 项目已有一套 Tailwind 扩展颜色和圆角 token,新增样式优先复用,不要到处散落魔法值
  • 如果引入新的 Ant Design RN 组件,先查 docs/antd/llms-semantic.mddocs/antd/llms-full.txt
  • Web 与 Native 表现如果需要分流,优先延续现有 component.tsx / component.web.tsx 结构

数据、认证与存储

  • 网络请求优先复用 src/utils/api.ts 中的统一请求封装,不要重复创建新的 axios client
  • 接口地址与版本信息优先从现有配置读取,不要在页面或组件中硬编码 base URL
  • 鉴权上下文在 src/utils/auth.tsx,修改登录态逻辑时同步检查 Provider、hook、请求头注入
  • 本地持久化与缓存使用 src/utils/storage.ts 中的 MMKV 封装,避免绕过统一入口

工程约定

  • TypeScript 处于 strict 模式,新增代码不要用 any 糊过去,必要时补充明确类型
  • expo-router 已启用 typedRoutes,新增路由时保持类型友好
  • 项目开启了 reactCompiler,默认不要为了“优化”到处添加 useMemo / useCallback
  • JS 层改动默认不要动 android/ios/
  • 配置类文件如 app.jsonbabel.config.jsmetro.config.jstailwind.config.js 修改前先确认影响范围
  • 不要引入重量级新依赖,除非现有方案明显无法满足需求

Agent 工作方式

  • 开始前先看 git status --short,确认工作区是否已有用户未提交改动
  • 不要回滚与当前任务无关的变更
  • 先阅读相关文件,再改代码;避免“按印象重写”
  • 优先做最小必要改动,保持与现有风格一致
  • 修改公共能力时,检查调用方是否需要同步更新
  • 如果改动影响路由、鉴权、全局 Provider、主题或构建配置,在说明中明确指出

验证要求

  • 最低要求:执行 pnpm lint
  • 如果改动影响页面交互、路由、平台差异或构建配置,尽量补充对应平台验证
  • 如果因为环境限制无法完成验证,需要在最终说明中明确写出“未验证项”

提交说明建议

最终汇报建议至少包含以下信息:

  • 改了什么
  • 为什么这么改
  • 怎么验证
  • 还有哪些风险或待补充项

待项目负责人补充