# AGENTS.md 每次对话注入系统提示,保持极简;细节读链出文档/源码,勿在此扩写。 搭建/环境/部署:README.md、DEPLOY.md。产品/使用问答:skills/mao-cli/SKILL.md。细案:docs/plan/(2026-05-20-technical-design.md、2026-08-04-android-app-technical-design.md)。初版:重构不考虑存量数据与兼容。 ## 部署坑 线上目录是 `/opt/mao`,不是会话工作区 `/opt/mao-data/workspace/...`(两套 git 检出)。改代码:工作区提交并推 origin/main。部署/线上 git:一律在 `/opt/mao` 跑 pull、scripts/deploy-{admin,desktop}.sh、构建、restart-backend.sh。勿混用。双域名合并为单域名:`docs/guides/single-domain-nginx-migration.md`。 ## CHANGELOG 根 CHANGELOG.md 唯一发版说明。用户/运维可见改动须同任务写入顶部 `## x.y.z (日期)`(无则新建);内部重构/单测/注释/无行为依赖升级可不记。打包/发版/OTA 前先写完。 每次功能变更除补 CHANGELOG 外,还须同任务同步更新对应文档(README.md、DEPLOY.md 等;历史设计与 review 文档除外),并保持 mao-cli(skills/mao-cli/)同步更新。 小节:backend-ts→后端;admin→管理后台;desktop 共用 UI→前端(桌面 / Web / 安卓);desktop/electron→桌面 Electron;android/android/app→安卓原生;agent-cli→终端 CLI(mao-agent);skills/mao-cli→终端 CLI(mao-cli)。 `./scripts/changelog-extract.sh {version|body 0.0.x --section 后端|ota-text 0.0.x|sync-desktop}`。desktop/package.json 版本用 sync-desktop,勿手改。 ## 命令 后端:`cd backend-ts && npm run {build|test|start:dev}`(tsc / Vitest / tsx)。 前端构建验证:desktop/admin 一律跑 `npm run build`(`vue-tsc -b && vite build`)。两端根 `tsconfig.json` 都是 `files: []` + references,`npx vue-tsc --noEmit` 一个文件都不检查(假通过,曾致构建失败漏到合并后),勿拿它替代;确有残留缓存时用 `vue-tsc -b --force`。 跑测试/构建等长输出命令必须先落盘再看:`npm test > /tmp/x.log 2>&1; echo exit=$?`,用 grep 提取摘要(Test Files|Tests|FAIL)。禁止 `tail -N` 截断——会丢掉覆盖率表格之前的 passed/failed 摘要,导致重跑浪费时间。 部署:`bash scripts/deploy-{admin,desktop}.sh`(均不接受参数,无 dry-run;admin 用 rsync --delete,无需重启)。Electron 包:`cd desktop && npm run dist`(用户自行跑)。 安卓壳:`cd android && bash build-apk.sh`(`--dry-run` 不发布;`--version 0.0.x`)。 mao-agent:`cd agent-cli && npm ci && npm run build && npm test`;`bash scripts/agent-cli-e2e.sh`;`npm link`。 CI:backend-ts build+test、admin/desktop build、agent-cli build+test;不跑 Playwright。 ## 架构 五端:backend-ts(NestJS+Fastify :9080 `/api/v1/`,`Result` code=0)+ admin + desktop(Electron/Web)+ android(Capacitor 远程加载 https://mao.etarch.cn,仅 CLOUD)+ agent-cli(mao-agent)。生产单域:桌面 `/`、管理后台 `/admin/`、API `/api/`、上传 `/uploads/`;desktop 路由勿占用这些前缀。 领域:`src//*.{routes,service,repository,spec}.ts`。引擎 `backend-ts/src/harness/`:AgentLoop、PromptEngine、ContextManager/CompactionService、ToolDispatcher→ToolRegistry(内置 `harness/tool/impl/`)、LlmAdapter、LocalToolExecutor(WS 委托桌面)、HarnessService、delegate/、skill/。CLOUD 服务端执行 / LOCAL Electron 执行。WS `/api/ws/stream` StreamingWsHandler。拦截器 Audit+Permission,`/v1/**` 排除 auth/ws。DB:MySQL8 + Flyway `backend-ts/db/migration/`,TS 启动执行(FLYWAY_ENABLED)。 admin:router `admin/src/router/index.ts`,视图 `views/`。desktop:useStreamWS、useChat、stores/auth|agent|session、electron/{main,preload}.cjs。Side Task:HarnessService + StreamingWsHandler + useCenterTabs/CenterTabBar。 ## 规范 后端 TS Node22+ Nest11 Fastify;表列 snake_case,BIGINT 自增,created_at/updated_at。 前端 Vue3 `