Coding
PromptBeginner5 minmarkdown
Nano Banana Pro
Agent skill for nano-banana-pro
6
请开发一个 VSCode 插件,功能是将用户选中的文件及其所在的项目结构智能整合成一个单一文件,并以适用于大语言模型(如 GPT 等)的 XML 格式输出。插件应具备以下特性:
Sign in to like and favorite skills
需求描述:
请开发一个 VSCode 插件,功能是将用户选中的文件及其所在的项目结构智能整合成一个单一文件,并以适用于大语言模型(如 GPT 等)的 XML 格式输出。插件应具备以下特性:
项目结构与文件整合:
.vscode/settings.json 配置文件设置默认行为(如忽略规则、根标签名称、是否包含文件路径、是否递归扫描、文件大小阈值等)。.gitignore 文件,插件应自动忽略其中指定的文件和文件夹。.gitignore 文件中的规则,应使用 glob 匹配规则进行处理。.vscode/settings.json 和 .gitignore 同时存在,.vscode/settings.json 中的规则优先于 .gitignore。XML 格式内容生成:
<structure> 标签表示项目结构,文件夹用 <folder> 标签表示,文件用 <file> 标签表示。name 属性表示名称,文件标签中包含 path 属性表示完整路径。<files> 标签列出所有文件内容,每个文件内容用 <file> 标签包裹,并使用 <![CDATA[]]> 确保内容兼容 XML 规范。<project>),包裹整个项目结构和文件内容。<prompt> 标签,将用户提供的初始提示语包含其中。处理大型项目上下文超长问题:
chunk="1/3")。分块策略为按文件数量进行分块,每个文件最多包含 10 个文件内容。<summary> 标签中,便于快速了解文件内容。内容格式化:
<, >, &)以符合 XML 规范,具体处理方式为:< 转义为 <,> 转义为 >,& 转义为 &。输出配置:
用户交互:
扩展性:
settings.json),允许用户自定义默认行为(如根标签名称、是否包含文件路径、是否递归扫描、文件大小阈值等)。可配置选项包括:
rootTagName:根标签名称,默认值为 project。includeFilePath:是否包含文件路径,默认值为 true。recursiveScan:是否递归扫描文件夹,默认值为 true。fileSizeThreshold:文件大小阈值,默认值为 1MB。示例场景: 用户选中了一个包含以下结构的文件夹,并提供了初始提示语:“请帮我分析这个项目的代码结构。”:
project/ ├── src/ │ ├── file1.py │ └── file2.txt └── README.md
插件生成一个
project.xml 文件,内容如下:
<project> <prompt>请帮我分析这个项目的代码结构。</prompt> <structure> <folder name="project"> <folder name="src"> <file name="file1.py" path="project/src/file1.py" /> <file name="file2.txt" path="project/src/file2.txt" /> </folder> <file name="README.md" path="project/README.md" /> </folder> </structure> <files> <file path="project/src/file1.py"> <summary><![CDATA[ print("Hello, World!") ]]></summary> <content><![CDATA[ print("Hello, World!") ]]></content> </file> <file path="project/src/file2.txt"> <summary><![CDATA[ This is a text file. ]]></summary> <content><![CDATA[ This is a text file. ]]></content> </file> <file path="project/README.md"> <summary><![CDATA[ # Project README ]]></summary> <content><![CDATA[ # Project README This is a sample project. ]]></content> </file> </files> </project>
分块输出示例: 当项目过大时,插件生成多个文件,如
project_part1.xml 和 project_part2.xml,并在每个文件中标注分块信息:
<project chunk="1/2"> <prompt><![CDATA[ 请帮我分析这个项目的代码结构。 ]]></prompt> <!-- 部分内容 --> </project>
技术要求:
交付物: