跳转到主要内容

一个生成带项目结构和文件内容的提示的CLI工具

项目描述

kopipasta

一个CLI工具,用于生成带项目结构、文件内容和网页内容的提示,同时安全地处理环境变量,并为大文件提供代码片段,还允许您只包含代码中最相关的部分。

kopipasta
  • 一个LLM告诉我,在有些语言中,kopi意味着咖啡,然后一个扩散模型制作了这个美味的汤。

安装

您可以使用pipx(或pip)安装kopipasta

pipx install kopipasta

使用方法

要使用kopipasta,请在您的终端中运行以下命令

kopipasta [files_or_directories_or_urls]

[files_or_directories_or_urls]替换为您希望在提示中包含的文件或目录的路径,以及您希望从中获取内容的任何网页URL。

示例

kopipasta src/ config.json https://example.com/api-docs

这将生成一个包含以下内容的提示

  • 项目结构
  • 指定文件和目录的内容(对于大文件提供代码片段选项)
  • 从提供的URL获取的内容(对于大内容提供代码片段选项)
  • 处理.env文件中找到的环境变量(如果存在)

基于常见的.gitignore模式通常排除的文件和目录将被忽略。

生成的提示将在控制台中显示,并自动复制到您的剪贴板。

功能

  • 生成一个包含项目概述、文件内容、网页内容和任务说明的结构化提示
  • 为大文件(>100 KB)和网页内容(>10,000字符)提供代码片段选项
  • 从网页URL获取并包含内容
  • 检测并安全处理来自.env文件的环境变量
  • 基于常见的.gitignore模式忽略文件和目录
  • 允许交互式选择要包含的文件
  • 自动将生成的提示复制到剪贴板

环境变量处理

如果当前目录中存在 .env 文件,kopipasta 将

  1. 读取并存储环境变量
  2. 在文件内容和网页内容中检测这些变量
  3. 提示您选择如何处理每个检测到的变量
    • (m)ask: 将值替换为星号
    • (s)kip: 将值替换为"[REDACTED]"
    • (k)eep: 保持值不变

这确保了在生成的提示中安全地处理敏感信息。

代码片段功能

对于大于100 KB的大文件和大于10,000字符的网页内容,kopipasta 提供了代码片段选项

  • 对于文件:前50行或4 KB(4,096字节),以先到者为准
  • 对于网页内容:前1,000个字符

这有助于管理整个提示的大小,同时仍然提供有关内容结构的有用信息。

示例输出

 kopipasta . https://example.com/api-docs

Directory: .
Files:
- __init__.py
- main.py (120 KB, ~120000 chars, ~30000 tokens)
- large_data.csv (5 MB, ~5000000 chars, ~1250000 tokens)
- .env

(y)es add all / (n)o ignore all / (s)elect individually / (q)uit? y
main.py is large. Use (f)ull content or (s)nippet? s
large_data.csv is large. Use (f)ull content or (s)nippet? s
Added all files from .
Added web content from: https://example.com/api-docs

File and web content selection complete.
Current prompt size: 10500 characters (~ 2625 tokens)
Summary: Added 3 files from 1 directory and 1 web source.

Detected environment variables:
- API_KEY=12345abcde

How would you like to handle API_KEY? (m)ask / (k)eep: m

Enter the task instructions: Implement new API endpoint

Generated prompt:
# Project Overview

## Project Structure

|-- ./ |-- init.py |-- main.py |-- large_data.csv |-- .env


## File Contents

### __init__.py

```python
# Initialize package

main.py (代码片段)

import os
import pandas as pd

API_KEY = os.getenv('API_KEY')

def process_data(file_path):
    df = pd.read_csv(file_path)
    # Rest of the function...

# More code...

large_data.csv (代码片段)

id,name,value
1,John,100
2,Jane,200
3,Bob,150
4,Alice,300
# ... (first 50 lines or 4 KB)

网页内容

https://example.com/api-docs (代码片段)

API Documentation
Endpoint: /api/v1/data
Method: GET
Authorization: Bearer **********
...

任务说明

实现新的API端点

任务分析和规划

开始之前,请用您自己的话复述任务。如有需要,请要求澄清。一旦您清楚,请要求继续。

然后,概述任务计划。最后,使用您的计划来完成任务。

提示已复制到剪贴板。最终大小:1500个字符(~ 375个标记)


## License

This project is licensed under the MIT License.

项目详情


下载文件

下载适用于您的平台的文件。如果您不确定选择哪个,请了解更多关于安装包的信息。

源分发

kopipasta-0.13.0.tar.gz (13.0 KB 查看哈希值)

上传时间

构建分发

kopipasta-0.13.0-py3-none-any.whl (11.6 kB 查看哈希值)

上传时间 Python 3

支持者

AWS AWS 云计算和安全赞助商 Datadog Datadog 监控 Fastly Fastly CDN Google Google 下载分析 Microsoft Microsoft PSF 赞助商 Pingdom Pingdom 监控 Sentry Sentry 错误记录 StatusPage StatusPage 状态页面