1135 字
6 分钟
Qmai 全局约束:AI 做事前先守住这些底线

全局约束是 AI 执行任务前必须遵守的底线。

它不解决“具体需求怎么写代码”,而是先规定什么能做、什么不能做、什么时候要先说明、什么时候必须停下来确认。

1. 修改前先说清楚#

除非用户明确要求直接修改,否则 AI 修改前必须先给出简要方案:

  • 修改目标是什么。
  • 影响范围有哪些。
  • 准备怎么改。
  • 如何验证。

如果涉及多个文件或多个模块,还要先列出预计影响文件。

这条规则的目的不是拖慢执行,而是避免 AI 在没有边界判断时直接动手。

2. 先读上下文,再改代码#

AI 不能只凭需求关键词猜仓库或路径。

开始前至少要确认:

  • 当前项目根目录在哪里。
  • 当前项目是否属于 Qmai 国际前端体系。
  • 当前文件属于哪个系统、模块和业务边界。
  • 是否需要联查基座、组件库、公共业务页或打印项目。

如果当前工作区看不到相关仓库,只能说明缺少上下文,不能猜本机路径。

3. 跨仓影响要先分析#

这些场景不能只看当前页面:

场景需要关注
菜单、登录、头部、侧栏、容器、微应用挂载console-vue-international
多仓库共享组件、选择器、表格、上传、弹窗、组件样式vue-kylin-international
公共业务页、公共配置、打印模板、票据模板common-vue-international
打印插件、桥接、国际打印代码、打印通用入口operation

4. 代码改动保持最小#

AI 实现时遵守:

  • 保持当前文件和模块已有风格。
  • 不主动引入新依赖、新范式或新目录结构。
  • 不做无关重构。
  • 不删除错误处理、异常捕获或兼容逻辑。
  • 不把临时需求名写进长期变量名。

一个需求只做一个可验证闭环,不把历史治理混进来。

5. 接口规则#

如果接口文档路径包含 /sellers,默认按 /assistant 进行接口定位、联调和代码映射,除非用户明确要求保持原样。

涉及 sellerId 的接口入参、路由参数或函数透传参数时,默认不需要前端主动传递。后端会从登录态中解析。

历史代码已有 sellerId 时,不顺手治理;只有当前需求明确要求、联调确认或它已经导致问题时再处理。

6. UI、i18n 和 RTL#

只要任务涉及 UI、UX、页面布局、组件视觉、后台视觉规范、长文本或 RTL,就必须先读 UI 详细设计规范。

实现时还要遵守:

  • 可见文案走项目既有 i18n 方案。
  • 不把中文、英文或临时文案硬编码进模板。
  • 样式考虑长文本和 RTL。
  • 共享组件问题优先评估组件库,不在多个业务仓库复制补丁。

7. 飞书内容先读取,再判断#

用户提供飞书链接时,AI 的第一步是读取内容,再判断目标系统和仓库。

业务任务中的读取链路是:

MCP -> lark-cli -> 浏览器兜底

只有三条链路都失败、权限不足或内容不可读时,才说明阻塞原因。

注意:规则中心安装或接入不属于业务内容读取,不使用浏览器或 Chrome。

8. Git 和发布不能越界#

未经用户明确要求,AI 不执行:

  • git commit
  • git push
  • 发布或部署

国际需求开发默认从目标仓最新 pre 切出 feature/* 分支,不能直接在 pre 上改需求代码。

发布不属于默认主流程。只有任务明确进入发布或部署阶段时,才应用发布规则。

普通国际仓发布到 OPMS 平台必须走本地配置文件和 opms_release.py 脚本,不使用浏览器或 Chrome 控制发布平台。

部署 pre 的固定顺序是:

当前任务分支
-> merge 到 pre
-> push origin/pre
-> OPMS 部署 branch/pre

不能直接部署 feature 分支,也不能把 master、main、tag 作为普通国际仓 pre 环境发布 ref。

9. 最小自查#

AI 每次交付前至少自查:

  1. 是否明确目标系统和目标仓库?
  2. 是否读了必要的职责清单或 UI 规范?
  3. 是否只改了当前需求相关文件?
  4. 是否说明了验证方式?
  5. 是否没有擅自提交、推送或发布?
  6. 是否把不确定处标成“需确认”?
Qmai 全局约束:AI 做事前先守住这些底线
https://blog.961121.xyz/posts/global-constraints/
作者
LOOK
发布于
2026-05-28
许可协议
CC BY-NC-SA 4.0