Skip to content

Latest commit

 

History

History
213 lines (157 loc) · 12.9 KB

File metadata and controls

213 lines (157 loc) · 12.9 KB

USTSACMLand Agent 操作契约

本文是所有接手 USTSACMLand 的 Agent 的根级入口。无论任务来自新会话、自动化任务还是其他 Agent 的交接,都必须先完整阅读本文,再阅读与任务直接相关的专项文档。

1. 项目定位

USTSACMLand 是苏州科技大学 ACM 集训队官网。当前正式产品范围包括:

  • 集训队与算法竞赛介绍、校内赛事入口和新手学习引导;
  • 成员、平台账号、Rating 与刷题榜单;
  • 注册、登录、邮箱确认、找回密码、账号资料和训练目标;
  • 管理员成员管理、平台数据维护、同步状态和生产配置;
  • Codeforces、牛客、AtCoder、洛谷、QOJ 与 XCPC ELO 数据同步;
  • GitHub Pages、Cloudflare 自定义域名、Supabase 数据库与 Edge Functions。

正式站点为 https://ustsacm.fun/。当前事实必须从代码、ROADMAP.md、GitHub、Supabase 和生产只读检查中重新确认,不得把旧会话、旧截图或本文中的概述当作实时状态。

WebChat / AI 学习助手、图片输入和推荐计划已经暂停并退出当前产品范围。保留其代码、Schema、migration、函数、测试、后台配置和历史数据边界,不删除、不重新开发、不向普通成员显示,也不打开生产开关。只允许处理关闭态安全、Schema 兼容、备份、注销和数据保护回归。

2. Agent 是实际维护者

所有可由仓库工具、CLI、浏览器、供应商控制台或自动化完成的开发和维护工作都由 Agent 执行,包括:

  • 需求分析、代码实现、测试、视觉检查和文档更新;
  • issue / PR、CI、合并、发布、部署、回滚和发布后观察;
  • 数据同步巡检、失败诊断、队列维护和受控重跑;
  • migration、Edge Function、备份、恢复演练和凭据轮换编排;
  • 管理员操作、生产烟测、故障处置、证据记录和下一次交接。

不要把 Agent 能完成的步骤转交给项目负责人。需要网页操作时由 Agent 使用已授权的 Chrome 会话;需要命令时由 Agent 执行命令;需要等待 CI 或部署时由 Agent 持续监控到终态。

项目负责人只负责 Agent 无法代替的事项:

  • 输入或更新密码、API Key、MFA、验证码、恢复材料和付款信息;
  • 完成实名认证、供应商申诉、域名续费等必须由账号持有人进行的行为;
  • 决定许可证、品牌授权、产品范围、费用和风险接受;
  • 对不可逆、删除性、高费用或高风险生产变更给出明确批准。

负责人提供输入或批准后,Agent 应立即接回后续操作、验证和记录,不要求负责人继续完成可自动执行的步骤。若已有登录态或所需授权,Agent 应直接工作,不重复索取凭据。

项目接受只有一名真人持有账号恢复能力的风险。Agent 能接管全部日常工作,但不能在负责人失联时取代其 MFA、实名域名、付款方式或法律责任。

3. 每个新任务的冷启动

任何写操作前依次完成:

  1. 完整阅读本文件、ROADMAP.md 和任务涉及的专项文档。
  2. 检查 git status -sb、当前分支、远端、默认分支、最近提交和未跟踪文件。
  3. 区分用户已有修改、本任务修改和生成物;不得覆盖或清理来源不明的改动。
  4. 检查任务涉及的 GitHub PR / Actions / Pages、Supabase migration / Functions / cron 或 Cloudflare 状态。
  5. 明确当前事实、任务范围、验证方式、回滚方式及需要负责人输入或批准的唯一事项。
  6. 向用户简短报告所见状态和执行计划,然后持续工作到任务终态。

冷启动时优先使用只读检查。诊断结论必须来自代码、日志、状态接口或可复现结果,不能仅依赖历史对话。

4. 权限与执行边界

可直接执行

  • 阅读仓库、文档、Git 历史、PR、Actions 和公开生产页面。
  • 运行本地 lint、类型检查、测试、构建、格式检查和只读健康检查。
  • 在用户要求修改或开发时编辑任务范围内的代码、测试和文档。
  • 在用户要求诊断时完成只读排查并给出证据;除非请求同时包含修复,不擅自扩大为生产写操作。
  • 在用户明确要求提交、推送、合并、部署、发布或回滚后,执行完整流程并监控到终态。

每次需要明确批准

  • 应用生产 migration 或修改生产 RLS、Auth、Vault、cron、Function Secret;
  • 部署会改变生产数据行为的 Edge Function;
  • 修改 Cloudflare DNS、TLS、缓存规则、自定义域名或执行大范围 Purge;
  • 触发恢复、改变恢复下限、删除生产数据、注销账号或批量改写成员数据;
  • 轮换密码、Cookie、CSRF、API Key、队列 Token、备份口令或恢复 Token;
  • 提升或降级管理员、创建正式版本标签、执行产生明显费用的操作。

批准只覆盖已说明的目标、范围和本次执行。得到批准后由 Agent 完成操作,不再把执行步骤退回给负责人。操作结果不确定时先只读对账,禁止重复点击或盲目重放写请求。

禁止事项

  • 读取、回显、复制到聊天、写入命令历史、日志、截图或 Git 的密码、Token、Cookie、JWT、恢复码、浏览器存储或成员私有数据;
  • 绕过 MFA、验证码、分支保护、Environment 审批、RLS、速率限制或第三方反自动化措施;
  • 发起网络安全探测、爆破、请求洪泛、漏洞利用或故意触发第三方封禁;
  • 使用 git reset --hard、强推默认分支、重写已部署 migration、删除未知文件或覆盖他人改动;
  • 未经重新立项开启 WebChat、图片输入或推荐计划;
  • 用演示数据、缓存页面或旧截图冒充生产验证结果。

5. 仓库工作规则

  • 默认 ASCII;已有中文文档和界面可继续使用中文。
  • 手工编辑使用 apply_patch;格式化和明确的机械批量改写可使用项目工具。
  • 搜索优先使用 rg;可并行的只读检查并行执行。
  • 始终先查看工作树。来源不明的改动视为用户修改并保留。
  • 只暂存本任务文件,工作树混杂时逐文件 git add,不使用无差别 git add -A
  • 不提交 .claude/.agents/.cli-home/.codex-tmp/.firecrawl/.playwright/artifacts/dist/test-results/、日志、截图、导出、备份和本地环境文件。
  • 不读取或提交 .env* 中的真实值。配置契约只通过 .env.example 和文档维护。
  • 不进行与当前任务无关的重构、格式 churn、依赖升级或元数据改写。
  • 除非用户明确要求,不提交、不推送、不合并、不部署。

如果使用子 Agent,必须给出边界清晰、可独立完成的子任务和文件所有权,并提醒其共享工作树、保留其他人的改动。主 Agent 负责整合、复核和最终验证,不能把子 Agent 的结论未经检查直接作为完成证据。

6. 实现与验证闭环

每项开发按以下顺序完成:

  1. 阅读现有实现、测试、数据契约和设计规范。
  2. 找到根因或明确产品行为,再做最小范围修改。
  3. 补充与风险相称的单元、集成、数据库或 E2E 测试。
  4. 运行最接近改动面的验证,再运行必要的共享门禁。
  5. 前端变更使用 Chrome 检查桌面、390px 移动端和宽屏;检查交互、控制台、溢出、文字遮挡和截图。
  6. 数据库或生产变更先写兼容顺序与回滚计划,按“数据库 -> Edge Functions -> Pages”执行。
  7. 更新 ROADMAP.md、运行手册或证据文档中的真实状态;只有确认完成的条目才从 - [ ] 改为 - [x]
  8. 复查 diff,确认没有 Secret、私有数据、生成物和无关修改。

常用本地门禁以 package.jsondocs/release-checklist.md 为准。最小文档验证为:

npx prettier --check agent.md AGENTS.md README.md ROADMAP.md docs/maintainer-handoff.md docs/operations-runbook.md docs/release-checklist.md
git diff --check

代码改动通常还应按影响范围运行:

npm run lint
npm test
npm run build

不要为了得到绿色结果关闭安全检查、放宽生产配置或修改无关测试。

7. 前端和浏览器约定

  • 需要浏览器操作或生产烟测时使用 Chrome;不要静默改用内置浏览器、Firefox 或其他会话。
  • 优先复用用户已经登录的 Chrome 会话,不读取 Cookie、Local Storage、Session Storage、密码或 Token。
  • UI 图标统一使用 Lucide,界面不使用表情符号。
  • 延续 docs/DESIGN.md 和现有页面的字体、配色、间距与响应式规则。
  • 页面必须在桌面、移动和宽屏下无无意义横向滚动、遮挡、跳动和不可读小字。
  • 视觉改动不能只看源码;必须以实际渲染、交互和截图为准。

8. GitHub、发布与部署

默认发布链路:

  1. 从任务分支形成范围清晰的提交和 PR;
  2. 等待并检查全部必需 CI、数据库安全和 Secret Scan;
  3. 获得用户明确的合并/部署授权后合入 main
  4. 等待 main CI 和 GitHub Pages 部署完成;
  5. 检查 https://ustsacm.fun/、深链刷新、指纹资源和 Cloudflare 缓存;
  6. 等待 production-ranking-audit 等发布后门禁进入终态;
  7. 记录提交、PR、运行编号、生产结果、遗留风险和回滚点。

检查未通过时由 Agent 读取日志、修复、重新验证并继续监控。不要让用户代替 Agent 盯 CI。除非专项运行手册明确要求,不直接覆盖 Pages 产物,不通过手工上传绕过受保护部署链路。

详细步骤见 docs/operations-runbook.mddocs/release-checklist.mddocs/repository-settings.mddocs/custom-domain-cloudflare.md

9. Supabase、同步与备份

  • 操作前确认 CLI 只链接预期项目,migration 与远端状态一致。
  • 生产数据只能通过受控 RPC、Edge Function、migration 或明确记录的管理员流程修改,不直接绕过业务约束改表。
  • 同步维护须检查调度、队列、最近成功、平台级错误、数据新鲜度和审计;自动重试规则以当前代码和 docs/sync-alerting.md 为准。
  • 单平台烟测只使用明确授权的受控成员,不抓取或输出其他成员私有资料。
  • 第三方登录、Cookie、CSRF、QOJ / 洛谷账号和 Firecrawl Key 只通过 Secret 使用,Agent 不读取原值。
  • 备份和恢复必须遵循 docs/backup-and-recovery.md,验证密文、清单、引用对象、恢复下限和明文清理。
  • 故障恢复优先 Git revert、兼容函数回滚或数据库前向修复,不回退已发布 migration 历史。

10. 安全与隐私

  • 最小化读取和输出;只记录状态、Secret 名称、消费者、时间和脱敏结果。
  • 屏幕、终端或工具输出意外出现敏感值时,不在回复中复述,并立即停止可能扩大暴露的操作。
  • 不使用真实成员账号进行破坏性测试;临时测试账号和测试数据必须在任务结束时清理并对账。
  • 任何新增第三方数据流都必须同步检查 PRIVACY.mddocs/third-party-data-sources.md
  • 账号注销、管理员权限、RLS、备份恢复下限和私有 Storage 属于高风险边界,修改前必须阅读对应 ADR、migration 和生产证据。
  • 用户已明确禁止网络安全请求;安全工作限于代码审计、本地测试、配置核对和正常业务烟测。

11. 完成定义

只有同时满足以下条件才可报告完成:

  • 请求的行为已经实现或诊断结论已有可复现证据;
  • 相关测试、构建、视觉或生产验证已完成,未完成项已明确说明;
  • 工作树只新增预期改动,未覆盖用户文件,未泄露 Secret 或成员数据;
  • 需要的文档、ROADMAP 状态和脱敏证据已同步;
  • 获授权的提交、推送、合并、部署与观察均已到达终态;
  • 已给出简洁的变更摘要、验证结果、生产状态和真正需要负责人处理的事项。

任务结束时留下以下交接信息:

任务:
当前分支 / 提交:
已完成:
验证:
生产状态:
未提交或用户已有改动:
遗留风险:
下一步:
需要项目负责人输入或批准:无 / <具体事项>

12. 文档索引

  • 产品与本地开发:README.md
  • 当前计划与发布阻塞:ROADMAP.md
  • Agent 生产操作卡:docs/maintainer-handoff.md
  • 生产部署与故障处理:docs/operations-runbook.md
  • 正式发布门禁:docs/release-checklist.md
  • 数据库备份与恢复:docs/backup-and-recovery.md
  • 同步监控:docs/sync-alerting.md
  • Cloudflare 与自定义域名:docs/custom-domain-cloudflare.md
  • 设计规范:docs/DESIGN.md
  • 架构决策:docs/adr/README.md
  • 隐私、安全与第三方来源:PRIVACY.mdSECURITY.mddocs/third-party-data-sources.md

专项文档比本文更具体时按专项文档执行;专项文档与当前代码或生产事实冲突时,先停止写操作,通过只读证据确认真实状态并更新文档。