Files
lyxy-document/openspec/specs/cli-advice/spec.md
lanyuanxiaoyao aaa1171e60 feat: 添加 --advice 参数,支持快速获取执行建议
- 新增 scripts/core/advice_generator.py 建议生成器模块
- 在 config.py 中添加 DEPENDENCIES 依赖配置
- 在 lyxy_document_reader.py 中添加 -a/--advice 参数
- 复用 Reader 实例的 supports 方法检测文件类型
- 支持平台检测,对 macOS x86_64 PDF 返回特殊命令
- 添加单元测试和集成测试
- 更新 SKILL.md,引导优先使用 --advice 参数
- 更新 README.md,添加项目结构说明
- 添加 openspec/specs/cli-advice/spec.md 规范文档
2026-03-09 18:13:00 +08:00

141 lines
4.4 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.
## Purpose
CLI 执行建议生成功能,根据文件类型返回 uv 和 python 命令,帮助 AI 快速获取准确的执行建议,无需翻阅文档。
## Requirements
### Requirement: 依赖配置结构
依赖配置必须同时包含 python 版本要求和依赖包列表,按文件类型和平台组织。
#### Scenario: 配置结构包含 python 和 dependencies
- **WHEN** 访问 `config.DEPENDENCIES`
- **THEN** 每个文件类型配置包含多个平台配置
- **AND** 每个平台配置包含 `python` 字段(可为 None`dependencies` 列表字段
#### Scenario: default 平台配置
- **WHEN** 平台无特殊配置时
- **THEN** 使用 `default` 配置
- **AND** `python``None` 表示不需要指定 `--python` 参数
---
### Requirement: CLI 支持 --advice 参数
命令行工具必须支持 `-a/--advice` 参数,当指定该参数时不执行实际解析,仅输出执行建议。
#### Scenario: 用户指定 --advice 参数
- **WHEN** 用户执行 `scripts/lyxy_document_reader.py --advice <input_path>`
- **THEN** 工具输出执行建议,不解析文件内容
---
### Requirement: 轻量文件类型检测
`--advice` 参数必须复用 Reader 实例的 supports 方法识别文件类型,不打开文件。
#### Scenario: 复用 Reader 实例
- **WHEN** 检测文件类型时
- **THEN** 使用已实例化的 readers 列表
- **AND** 调用每个 reader 的 supports() 方法
- **AND** 根据第一个支持的 reader 类名识别文件类型
#### Scenario: 检测 PDF 文件
- **WHEN** 输入路径以 `.pdf` 结尾(不区分大小写)
- **THEN** PdfReader.supports() 返回 True
- **AND** 识别为 PDF 类型
#### Scenario: 检测 DOCX 文件
- **WHEN** 输入路径以 `.docx` 结尾(不区分大小写)
- **THEN** DocxReader.supports() 返回 True
- **AND** 识别为 DOCX 类型
#### Scenario: 检测 XLSX 文件
- **WHEN** 输入路径以 `.xlsx` 结尾(不区分大小写)
- **THEN** XlsxReader.supports() 返回 True
- **AND** 识别为 XLSX 类型
#### Scenario: 检测 PPTX 文件
- **WHEN** 输入路径以 `.pptx` 结尾(不区分大小写)
- **THEN** PptxReader.supports() 返回 True
- **AND** 识别为 PPTX 类型
#### Scenario: 检测 HTML 文件
- **WHEN** 输入路径以 `.html``.htm` 结尾(不区分大小写)
- **THEN** HtmlReader.supports() 返回 True
- **AND** 识别为 HTML 类型
#### Scenario: 检测 URL
- **WHEN** 输入路径以 `http://``https://` 开头
- **THEN** HtmlReader.supports() 返回 True
- **AND** 识别为 HTML 类型
#### Scenario: 不验证文件存在
- **WHEN** 输入路径指向不存在的文件
- **THEN** 仍根据 reader.supports() 返回建议,不报错
---
### Requirement: 平台检测
必须检测当前平台并返回适配的命令。
#### Scenario: 检测平台格式
- **WHEN** 工具执行时
- **THEN** 返回格式为 `{system}-{machine}`,例如 `Darwin-arm64``Linux-x86_64``Windows-AMD64`
#### Scenario: macOS x86_64 PDF 特殊命令
- **WHEN** 平台为 `Darwin-x86_64` 且文件类型为 PDF
- **THEN** 返回包含 `--python 3.12` 和特定版本依赖的命令
---
### Requirement: 输出 uv 命令
必须输出使用 `uv run --with ...` 格式的命令。
#### Scenario: 生成 uv 命令
- **WHEN** 检测到文件类型
- **THEN** 输出格式为:`uv run [--python X.Y] --with <dep1> --with <dep2> ... scripts/lyxy_document_reader.py <input_path>`
---
### Requirement: 输出 python 命令
必须输出直接使用 python 的命令及 pip 安装命令。
#### Scenario: 生成 python 命令
- **WHEN** 检测到文件类型
- **THEN** 输出 python 命令:`python scripts/lyxy_document_reader.py <input_path>`
- **AND** 输出 pip 安装命令:`pip install <dep1> <dep2> ...`
---
### Requirement: 输出格式规范
输出必须包含文件类型、输入路径、平台如需要、uv 命令、python 命令和 pip 安装命令。
#### Scenario: 普通平台输出格式
- **WHEN** 平台无特殊配置
- **THEN** 输出格式为:
```
文件类型: <type>
输入路径: <input>
[uv 命令]
<uv_command>
[python 命令]
python scripts/lyxy_document_reader.py <input>
pip install <deps>
```
#### Scenario: 特殊平台输出格式
- **WHEN** 平台有特殊配置
- **THEN** 输出格式为:
```
文件类型: <type>
输入路径: <input>
平台: <system-machine>
[uv 命令]
<uv_command>
[python 命令]
python scripts/lyxy_document_reader.py <input>
pip install <deps>
```