# 知识项目目录结构 ## 目录结构 每个知识项目是当前工作目录(CWD)下的一个子目录,包含以下固定结构: ``` / ├── project.md # 高度摘要 + 文件索引 ├── manifest.json # 增量追踪 ├── parsed/ # 解析后的 markdown(中间产物) ├── sources/ # 待处理区(用户放入原始文档) └── archive/ # 原始文件备份(带时间戳) ``` ### 各目录/文件职责 | 路径 | 职责 | |------|------| | `project.md` | 项目的高度摘要和文件索引,作为问答时的入口文件 | | `manifest.json` | 记录已处理文件的元信息,用于增量检测和版本追踪 | | `parsed/` | 存放解析后的 markdown 文件,便于大模型读取分析 | | `sources/` | 用户放入待处理文档的目录,解析后文件会被移走 | | `archive/` | 原始文件的备份,每个文件都带时间戳后缀 | ### 结构完整性验证 执行任何 command(ingest / rebuild / ask)时,必须先验证项目目录结构是否完整,即以下 5 项是否全部存在: - `/project.md` - `/manifest.json` - `/parsed/` - `/sources/` - `/archive/` 若不完整,提示用户先执行 `/lyxy-kb-init `,终止当前操作。 ## 项目名称规则 项目名称只允许使用以下字符: - 中文字符 - 英文字母(a-z、A-Z) - 数字(0-9) - 短横线(-) - 下划线(_) **不允许包含空格或其他特殊字符。** 不符合规则时应提示用户修改。 ## project.md 格式规范 ```markdown # <项目名称> ## 概述 (高度总结的项目信息,几百字以内) ## 关键信息 (从所有文档中提炼的核心要点) ## 文件索引 | 文件名 | 解析文件 | 最新归档 | 摘要 | |--------|----------|----------|------| | 需求文档 | parsed/需求文档.md | archive/需求文档_202602181600.docx | 简要摘要... | ## 更新记录 - 2026-02-18 16:00: 解析 需求文档.docx ``` ## manifest.json 结构 ```json { "project": "<项目名称>", "created_at": "2026-02-18T16:00", "last_ingest": "2026-02-18T17:25", "files": [ { "name": "需求文档", "ext": ".docx", "parsed": "parsed/需求文档.md", "versions": [ { "archived": "archive/需求文档_202602181600.docx", "hash": "sha256:abc123...", "ingested_at": "2026-02-18T16:00" } ] } ] } ``` ### 字段说明 | 字段 | 说明 | |------|------| | `project` | 项目名称 | | `created_at` | 项目创建时间 | | `last_ingest` | 最近一次 ingest 的时间 | | `files[].name` | 文件名(不含扩展名) | | `files[].ext` | 原始文件扩展名 | | `files[].parsed` | 解析产物的相对路径 | | `files[].versions` | 版本历史数组 | | `files[].versions[].archived` | 归档文件的相对路径 | | `files[].versions[].hash` | 文件内容的 SHA-256 哈希(使用 `sha256sum` 命令计算) | | `files[].versions[].ingested_at` | 该版本的入库时间 | ## parsed 文件元信息标记 每个 parsed markdown 文件头部必须包含元信息注释: ```markdown # 技术方案 (文档正文内容...) ``` | 元信息 | 说明 | |--------|------| | `source` | 原始文件名(含扩展名) | | `archived` | 对应的归档文件相对路径 | | `parsed_at` | 解析时间(YYYY-MM-DD HH:mm 格式) |