13个版本 (5个破坏性版本)

0.7.3 2024年8月10日
0.7.2 2024年7月28日
0.6.1 2024年7月28日
0.5.0 2024年7月27日
0.2.1 2024年4月14日

#78 in 文件系统

Download history 307/week @ 2024-05-06 2/week @ 2024-05-13 18/week @ 2024-05-20 44/week @ 2024-07-01 344/week @ 2024-07-22 322/week @ 2024-07-29 94/week @ 2024-08-05 28/week @ 2024-08-12

每月 788 次下载

MIT 许可证

11KB
154

mkcontext

mkcontext 是一个命令行工具,可以从文件和命令输出生成上下文,适用于大型语言模型。

功能

  • 使用glob模式处理多个文件
  • 执行shell命令并包含其输出
  • 使用OpenAI的tiktoken对内容进行标记化
  • 将生成的上下文复制到剪贴板
  • 限制令牌总数
  • 根据glob模式包含或排除文件

安装

要安装 mkcontext,您需要在系统上安装Rust和Cargo。然后,可以使用以下命令安装:

cargo install mkcontext

用法

mkcontext [OPTIONS]

选项

  • -t, --token-limit <TOKEN_LIMIT>: 可选令牌限制(默认:200000)
  • -c, --command <COMMAND>: 要执行并包含在输出中的命令(可以多次使用)
  • -g, --glob <GLOB>: 包含或排除文件的glob模式(可以多次使用)
  • -h, --help: 打印帮助信息
  • -V, --version: 打印版本信息

示例

  1. 处理当前目录中的所有Rust文件

    mkcontext -g "*.rs"
    
  2. 处理 src 目录及其子目录中的所有JavaScript文件,令牌限制为16000

    mkcontext -t 16000 -g "src/**/*.js"
    
  3. git status命令的输出包含在上下文中

    mkcontext -g "*.rs" -c "git status"
    
  4. 处理Python文件,并包含多个命令的输出

    mkcontext -g "*.py" -c "pip list" -c "python --version"
    
  5. 结合文件处理和命令执行

    mkcontext -g "src/**/*.rs" -g "tests/**/*.rs" -c "cargo test" -c "rustc --version"
    
  6. 排除特定的目录或文件模式

    mkcontext -g "src/**/*.js" -g "!node_modules/**" -g "!*.log"
    

工作原理

  1. mkcontext处理匹配包含模式的指定文件,排除任何由排除模式指定的路径或模式。
  2. 执行任何指定的命令并捕获它们的输出。
  3. 使用cl100k_base分词器对文件内容和命令输出进行分词。
  4. 如果总标记数超过指定限制,则返回错误。
  5. 生成的上下文将复制到剪贴板。

全局模式

-g--glob选项允许您在处理过程中指定包含或排除文件的模式。这对于选择特定文件类型或排除某些目录或文件非常有用。

  • 要包含文件,使用正则表达式全局模式:-g "src/**/*.rs"
  • 要排除文件或目录,在全局模式前加前缀!-g "!node_modules/**"

您可以使用多个-g选项来指定多个包含和排除模式

mkcontext -g "src/**/*.js" -g "!node_modules/**" -g "!*.log" -g "!build/**"

这将处理src目录及其子目录中的所有JavaScript文件,同时忽略node_modules目录、任何.log文件和build/目录。

注意

该工具使用系统剪贴板,所以请确保您的操作系统已安装适当的剪贴板驱动程序。

许可协议

本项目采用MIT许可协议。

依赖项

~14–24MB
~180K SLoC