Files
LWLT-AIBOT/AGENTS.md
2026-08-30 15:31:12 +08:00

100 lines
7.7 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# LTJT 项目文件治理规则
本文件约束所有后续维护会话。用户指令优先;在没有新的明确指令时,必须遵守以下位置、所有权、同步和归档规则。
## 开始工作前
1. 运行 `git status --short`,保留所有既有未提交改动;禁止 `git reset --hard``git clean` 或批量回退。
2. 加载 `maintain-project-docs` Skill先运行其 Concurrent Task Gate。任何代码或项目文档编辑前`task_context.py start` 必须成功,且 `status --json` 中的 task ID、mode、绝对 worktree、branch 与当前任务完全一致。
3. 所有权门禁通过后,按 `.project-docs/05-agent-entry/read-before-planning.md` 的顺序加载当前任务和 canonical 项目记忆Feature 与 Integration 写入边界以该 Skill 和 `.project-docs/90-maintenance/doc-update-policy.md` 为准。
4. 通过 `agent设计规范/business-adaptation-registry.md` 定位业务再读取对应业务页、Skill、Schema、mapping 和实现代码。
5. `archive/` 只供追溯,不能反向覆盖当前业务规则;若历史文件与活动源码冲突,以活动源码及当前契约为准。
## 并发与子智能体
- 原则上不创建子智能体;确有必要时必须先取得用户明确同意。
- 一个活动任务只拥有一个 worktree不得在已被其他任务占用或归属不明的 dirty worktree 中继续。
- 不得用 Markdown 或口头约定模拟任务所有权;只能使用 `maintain-project-docs` 自带的 `task_context.py`
- 未知改动不得自动 stash、reset、移动、删除或认领采用 `--adopt-existing` 必须有用户对已知改动的明确接管授权。
## 根目录边界
允许的长期文件和目录只有:
- 项目入口与约束:`README.md``AGENTS.md`
- 项目记忆:`.project-docs/`
- 构建与部署配置:`package.json`、锁文件、TypeScript、Docker、Compose、Git/Docker ignore 和环境示例;
- 下表登记的活动源码、发布、报告、隔离与历史目录;
- 本地秘密配置 `.env` 可以存在,但必须被 Git 忽略,不得读取、复制、归档或输出其内容。
旧根目录 `task_plan.md``findings.md``progress.md` 已退役并冻结在 `archive/project-history/2026-08-28/`;不得恢复为活动入口或与 `.project-docs/` 并行维护。
禁止在根目录新增临时说明、交接副本、测试输出、ZIP、DOCX、截图、日志、浏览器状态或一次性脚本。新增内容必须进入下表规定的位置。
## 唯一目录职责
| 位置 | 唯一职责 | 禁止内容 |
|---|---|---|
| `.project-docs/` | 任务作用域记录、canonical 项目记忆、证据索引、反思、承诺和文档维护状态 | 运行日志、秘密、业务附件、绕过所有权门禁的共享进度 |
| `agent设计规范/` | Agent Prompt、五个 Skill、业务模板、业务入口与稳定测试夹具的可编辑源 | 发布包、运行日志、历史版本副本 |
| `schemas/` | 当前解析态、执行态和 ERP 表单 Schema | 历史 Schema、运行结果 |
| `mappings/` | 当前 ERP 字段与生命周期 mapping | 探针输出、旧版本副本 |
| `chrome-extension/` | 当前 Chrome ERP 适配器源码 | 打包 ZIP、浏览器 profile |
| `control-plane/` | 当前 TypeScript 控制面源码、迁移和测试 | 编译后的 JavaScript |
| `LianSyn-platform/` | 当前平台页面与 Agent 解析适配器源码 | 本地任务输出、发布包 |
| `tools/` | 可复用构建器、测试、只读诊断与受控写入工具 | 工具运行结果、临时 JSON |
| `infra/` | 当前部署、备份、恢复和网关配置 | 本地秘密、数据库备份文件 |
| `samples/` | 脱敏且稳定的测试输入样例 | 真实客户资料、运行输出 |
| `.build/` | TypeScript 可重建编译输出Git 忽略 | 人工维护文件、发布物 |
| `dist/` | 当前版本化交付物及机器可读发布清单 | 编译输出、无版本别名、松散 Prompt/示例副本、旧版本 |
| `reports/` | 当前会话临时验证输出;除 README 外应为空 | 长期证据、业务规则 |
| `quarantine/` | 无法安全解析的外部输入隔离边界 | 当前源码或已信任 fixture |
| `archive/` | 日期化、只读、可恢复的历史实现、证据、规划和发布物 | 当前入口或需要运行时读取的文件 |
## Maintain Project Docs
- `.project-docs/30-worklog/tasks/<task_id>.md` 是任务局部范围、约束、结果、验证、后续项和 Promotion Candidates 的唯一记录。
- Feature 模式只写当前 task ID 所属记录和允许的 task-prefixed supporting records不得更新 `current-state.md`、共享索引、accepted ADR、canonical 架构、业务规则或共享聚合。
- Integration 模式必须独占 worktree 和集成锁,才能把已接受事实写入 canonical 项目记忆;冲突的产品行为、架构方向或真相源必须由用户决定。
- `current-state.md` 是上次集成快照,不代表其他并行任务的实时状态;其他任务只通过其 task record 做只读范围评估。
- 仓库变更任务完成前必须更新任务记录、运行 `check_doc_drift.py --task-id <task_id>`,再用 `task_context.py complete` 标记 `ready_for_integration`
- 历史 Planning with Files 只供追溯;不得从归档复制回活动项目记忆。
## 单一源与同步矩阵
- Prompt 只编辑 `agent设计规范/agent-prompt.md`;不得在 `dist/`、桌面或其他目录维护文本副本。
- 运营输入 Markdown 只编辑 `agent设计规范/templates/business-input-templates.md`;修改后使用 `tools/build_business_instruction_docx.py` 同步重建当前 DOCX并按 Documents skill 渲染检查全部页面。macOS 的 bundled LibreOffice 若未加载中文字体,先通过 workspace dependencies 定位并设置其 `dependencies/native/poppler/poppler/etc/fonts/fonts.conf``FONTCONFIG_FILE`,不得接受方框字渲染。
- Skill 只编辑 `agent设计规范/skills/<skill>/`;发布 `.skill` 必须由当前源重新打包并逐文件核对。
- Chrome 插件只编辑 `chrome-extension/ltjt-order-assistant/`任何代码改动都必须递增扩展版本同步平台最低版本、mapping、测试、版本化 ZIP 和 `dist/release-manifest.json`
- 控制面只编辑 TypeScript 源;`.build/``node --run build`(或等价包管理器命令)生成,不得手改。
- 当前交付物及哈希只由 `dist/release-manifest.json` 定义README 只链接清单,不重复维护哈希。
- 真实验证证据进入 `archive/evidence/<日期>/`;活动 release gate 只保存当前结论并链接不可变证据。
## 历史与生成物处理
- 旧版本、旧交接、旧发布说明和退役文档按日期移动到相应 `archive/` 分类,并更新该日期 README。
- 可重建编译产物、完全相同的别名包、`.DS_Store`、日志和临时输出不进入历史上下文;确认无唯一信息后清理。
- 不把桌面作为当前源或发布源。桌面只允许用户主动需要的临时交付副本,项目内 `dist/` 才是当前交付位置。
- 移动前必须做引用扫描;移动后必须修复活动链接。归档内部允许保留原始历史措辞,但归档 README 必须声明其非当前规则。
## 验证
项目文档或仓库文件调整后,先按已加载的 `maintain-project-docs` Skill 运行:
```text
scripts/check_project_docs.py
scripts/check_doc_drift.py --task-id <task_id>
```
再至少运行:
```bash
node --run check:repo
node --run check
node --run test:control-plane
node --run test:legacy
node --run build
```
涉及 Skill 时执行官方 Skill 校验和包/源码逐文件比对;涉及 DOCX 时按 Documents skill 完成 render → 全页 PNG 检查;涉及插件时校验版本化 ZIP 与源码逐文件一致。真实 ERP 写入、部署、重启和外部发送仍需用户另行明确授权。