移动端使用与发布

在手机上登录公有或私有 Ai Lubricant,查看项目和任务、发起新任务、选择模型与节点,并跟踪 Agent 执行结果。

1. 移动端提供什么

移动端位于 mobile/(独立仓库 ai-lubricant-mobile,以 git submodule 挂在主仓该路径),基于 Expo SDK、React Native 与 Expo Router。它使用与 Web 门户相同的用户账号和后端 API,登录时可填写任意私有化部署域名。

任务

查看任务列表、状态、执行详情、Agent 输出与 Token 统计。

项目

查看项目概况与相关任务,在移动场景中掌握工作进度。

新建任务

选择项目、模型和节点,在手机上发起新的 AI 开发任务。

我的

查看账号、服务地址、模型、Git identity 与应用版本。

移动端适合发起、跟踪和复核任务,不替代桌面编辑器与完整终端。高风险代码审查、节点管理和 Secret 配置应在受控桌面环境完成。

2. 登录私有化服务

  1. 打开 App,在登录页填写服务器域名,例如 https://ai.example.com。不要填写控制服务 8003 或数据库地址。
  2. 输入平台用户邮箱与密码,完成登录。
  3. App 通过 monkeycode_ai_session session cookie 访问 /api/v1/users/*;原生网络层持久化 cookie。
  4. 登录后默认进入“任务”Tab;如果服务器地址不可达,返回登录页检查域名、HTTPS 和后端状态。
生产必须使用 HTTPS自签名证书可能被 iOS/Android 拒绝;不要在生产包关闭证书验证。HTTP Basic Auth 透传只用于受控测试环境。

3. 查看与创建任务

任务列表

  • 底部“任务”显示当前用户任务,按后端状态更新。
  • 进入详情查看任务目标、Agent 消息/事件、执行结果和 Token 统计。
  • 失败任务先查看错误和节点/模型状态,不要连续重复提交同一目标。

新建任务

  1. 点击底部中央“+”,进入 /new-task
  2. 选择项目;描述清晰目标、范围和验收标准。
  3. 选择有权限的模型/API Key;如任务需要自有机器,选择在线且获授权的 execution 节点。
  4. 确认提示词不包含密码、Token、客户个人数据或不必要源码。
  5. 提交后进入任务详情跟踪执行。

手机上更快地把目标说清楚

在手机上打字描述一个开发任务很费劲,所以新建任务和任务会话页支持语音与附件输入。

输入方式怎么用限制
实时语音转写按住麦克风说话,文字边说边出现(流式返回中间结果与最终结果),可继续手动修改后提交。需要麦克风权限。依赖原生模块,Expo Go 里不可用,须使用 Dev Client 或正式构建;不支持时界面不显示该入口。
图片附件从相册或拍照选择截图/设计图,随任务描述一起提交,供模型作为视觉上下文。单张 ≤ 2 MB,最多 3 张;超限会在客户端压缩或提示。
zip 文件选择打包好的代码或资料一起上传。单个 ≤ 10 MB。

附件走预签名直传:客户端先向平台申请一次性上传地址,再把文件字节直接 PUT 到该地址,提交任务时只带回可访问 URL 和文件名。限制与 Web 端一致,两端行为不会分叉。

iOS 首次会请求 AI 数据处理同意为满足 App Store 审核要求,iOS 上首次进入「即将把内容发给 AI」的页面(新建任务、任务会话)会弹出同意确认;点「同意并继续」后才发起 AI 交互,选择结果保存在本机,之后不再询问。选「暂不使用」则退出该页,不进行任何 AI 交互。Android 不弹此确认。

4. 项目与工作上下文

  • “项目”Tab 显示当前用户可访问项目;进入详情查看项目概况与任务。
  • 新建项目前确认名称、仓库与成员边界;敏感 Git 凭据通过专用配置录入。
  • 复杂编辑器、文件和浏览器终端操作建议回到 Web 端;移动端主要用于概览、发起和跟踪。

5. 模型、Git identity 与节点

  • 用户模型来自平台授权的 API Key 与模型列表;移动端不保存上游模型 Token。
  • “模型”页可查看/配置用户可用模型(具体能力由后端权限决定)。
  • Git identity 用于 Agent 提交身份,按用户维护,不从设备账号自动推断。
  • 新建任务选择节点时,只应看到获授权、approved 且可用的 execution 节点。
  • 节点 onboard、审批、终端和容量管理在 Web 管理端完成,详见 节点管理员手册

6. 移动端本地开发

cd mobile
npm install

# Expo 开发服务
npm start

# 本地原生运行(需要 Android/iOS 工具链)
npm run android
npm run ios

# Web 预览(不能替代原生验收)
npm run web

# 代码检查与测试
npm run lint
npm test

App 默认 API 地址为项目代码配置的在线域名,但登录页允许覆盖服务器域名。开发/截图使用独立演示账号,不把密码写进脚本、日志或文档。

7. EAS 构建与商店发布

Profile用途分发Android
development开发客户端internalDevelopment Client
preview内测internal;channel=previewAPK
production生产商店channel=production;autoIncrementAAB
cd mobile
eas login

# 内测 APK
eas build --profile preview --platform android

# 生产 AAB
eas build --profile production --platform android

# 提交 Google Play(需受控的 service account key)
eas submit --profile production --platform android
  • 发布前核对 app.json 的 name、slug、scheme、bundleIdentifier/package。
  • google-service-account.json 是高敏感凭据,不提交 Git,不打入公开构建产物。
  • 开发、preview、production 使用不同后端环境;不要让内测包访问生产数据。

8. 版本发布与下载升级

移动端升级与节点下载升级同构、共用同一个市场 GitHub 仓库:管理员在市场管理页「移动端」Tab 上传 APK,服务端写 mobile-releases/version.json 并缓存进 PG;App「我的 → 检查更新」从后端拿最新版本与 APK 直链,下载、校验 sha256、调起系统安装器。

# 出包(mobile 是 submodule,首次需 git submodule update --init mobile)
cd mobile && bash scripts/pack-release.sh         # 产出 dist/ai-lubricant--android.apk

随后把产物拖进市场管理页「移动端 → 上传新版本」弹框,填版本号(与 app.jsonversion 一致,数字/日期串如 260608)、版本说明与 iOS App Store 链接。上传后服务端自动写 mobile-releases/version.json,无需手动提交。

  • 仅 Android 走下载升级:App 内下载 APK + 调起系统安装(需 REQUEST_INSTALL_PACKAGES 权限与 FileProvider,app.json 已配)。系统会弹安装确认,App 不静默装。
  • iOS 只跳 App Store:iOS 装不了自下载的包,检查更新只展示版本并跳商店链接,不自检。
  • 版本号用可比较的数字/日期串(与 app.json version 一致),App 据此判断是否需要升级。
  • APK 直链来自 GitHub Release,公开可读;App 端按 sha256 校验下载完整性后才调起安装。

9. 移动端安全清单

  • ☐ 生产服务器地址使用 HTTPS,证书链在目标设备正常。
  • ☐ App 不包含上游 API Key、管理员密码、node secret 或内部 token。
  • ☐ Session cookie 为 HttpOnly,并按部署设置 SameSite/Secure。
  • ☐ 相机、相册、麦克风等权限只在实际使用时请求,并在隐私政策说明。
  • ☐ EAS service account、签名证书和 Apple/Google 凭据由 Secret 管理。
  • ☐ APK 下载升级按 sha256 校验;GitHub 写入 token 只在服务端,前端与 App 从不接触。
  • ☐ 截图、崩溃报告和遥测不包含任务提示词、代码、Token 或客户数据。