移动端使用与发布
在手机上登录公有或私有 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. 登录私有化服务
- 打开 App,在登录页填写服务器域名,例如
https://ai.example.com。不要填写控制服务 8003 或数据库地址。 - 输入平台用户邮箱与密码,完成登录。
- App 通过
monkeycode_ai_sessionsession cookie 访问/api/v1/users/*;原生网络层持久化 cookie。 - 登录后默认进入“任务”Tab;如果服务器地址不可达,返回登录页检查域名、HTTPS 和后端状态。
3. 查看与创建任务
任务列表
- 底部“任务”显示当前用户任务,按后端状态更新。
- 进入详情查看任务目标、Agent 消息/事件、执行结果和 Token 统计。
- 失败任务先查看错误和节点/模型状态,不要连续重复提交同一目标。
新建任务
- 点击底部中央“+”,进入
/new-task。 - 选择项目;描述清晰目标、范围和验收标准。
- 选择有权限的模型/API Key;如任务需要自有机器,选择在线且获授权的 execution 节点。
- 确认提示词不包含密码、Token、客户个人数据或不必要源码。
- 提交后进入任务详情跟踪执行。
手机上更快地把目标说清楚
在手机上打字描述一个开发任务很费劲,所以新建任务和任务会话页支持语音与附件输入。
| 输入方式 | 怎么用 | 限制 |
|---|---|---|
| 实时语音转写 | 按住麦克风说话,文字边说边出现(流式返回中间结果与最终结果),可继续手动修改后提交。 | 需要麦克风权限。依赖原生模块,Expo Go 里不可用,须使用 Dev Client 或正式构建;不支持时界面不显示该入口。 |
| 图片附件 | 从相册或拍照选择截图/设计图,随任务描述一起提交,供模型作为视觉上下文。 | 单张 ≤ 2 MB,最多 3 张;超限会在客户端压缩或提示。 |
| zip 文件 | 选择打包好的代码或资料一起上传。 | 单个 ≤ 10 MB。 |
附件走预签名直传:客户端先向平台申请一次性上传地址,再把文件字节直接 PUT 到该地址,提交任务时只带回可访问 URL 和文件名。限制与 Web 端一致,两端行为不会分叉。
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 | 开发客户端 | internal | Development Client |
preview | 内测 | internal;channel=preview | APK |
production | 生产商店 | channel=production;autoIncrement | AAB |
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.json 的 version 一致,数字/日期串如 260608)、版本说明与 iOS App Store 链接。上传后服务端自动写 mobile-releases/version.json,无需手动提交。
- 仅 Android 走下载升级:App 内下载 APK + 调起系统安装(需
REQUEST_INSTALL_PACKAGES权限与 FileProvider,app.json已配)。系统会弹安装确认,App 不静默装。 - iOS 只跳 App Store:iOS 装不了自下载的包,检查更新只展示版本并跳商店链接,不自检。
- 版本号用可比较的数字/日期串(与
app.jsonversion一致),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 或客户数据。