GitHub Repo thành văn bản: Biến toàn bộ kho lưu trữ thành một tệp LLM có thể đọc
Dán URL GitHub ở trên và bạn sẽ nhận được cây tệp của kho lưu trữ trong danh sách hộp kiểm. Đánh dấu cái gì vấn đề, tạo và bạn có một tệp văn bản duy nhất: cấu trúc thư mục ở trên cùng, sau đó mỗi tệp tệp đã chọn bên dưới, được phân tách bằng tiêu đề có đường dẫn của nó. Đó là định dạng phù hợp với ChatGPT, Claude, Gemini, DeepSeek hoặc bất cứ thứ gì khác mà bạn dán vào — mô hình sẽ thấy hình dạng của dự án và mã cùng một lúc, vì vậy nó có thể suy luận về cách các phần khớp với nhau thay vì đoán từ một tập tin một cách riêng biệt.
Không cần sao chép, không cần cài đặt, không cần đăng ký và hoàn toàn miễn phí. Kho lưu trữ được đọc qua GitHub API trực tiếp từ trình duyệt của bạn, do đó bạn hoàn toàn không cần dự án trên máy của mình — đó là điểm khi bạn đang xem mã của người khác, một phần phụ thuộc mà bạn đang đánh giá hoặc một kho lưu trữ mà bạn đã vừa được cấp quyền truy cập.
Dán URL, bao gồm Chi nhánh hoặc Thẻ
đồng bằng https://github.com/owner/repo biểu mẫu hoạt động và cung cấp cho bạn nhánh mặc định. Nhưng
URL còn mang nhiều ý nghĩa hơn thế và nó đáng để sử dụng. Sao chép thanh địa chỉ trong khi bạn đang duyệt
GitHub và bất cứ điều gì bạn đang xem đều xuất hiện:
- một chi nhánh —
/tree/develophoặc một nhánh tính năng, để bạn có thể chuyển đổi công việc đang được tiến hành hơn là những gì đang diễn ra chính. - Thẻ hoặc bản phát hành —
/tree/v2.1.0. Hữu ích khi bạn hỏi về phiên bản bạn thực sự gửi hoặc phân biệt hai bản phát hành trong cuộc trò chuyện bằng cách chuyển đổi từng bản phát hành. - Một thư mục con —
/tree/main/packages/api. Đây là cái giúp tiết kiệm bạn trong một monorepo. Bắt đầu từ gói bạn quan tâm và cây bạn nhận lại đã có rồi có phạm vi, thay vì mười nghìn tệp thì bạn phải bỏ chọn.
Nếu nhánh hoặc đường dẫn không tồn tại, bạn sẽ được thông báo phần nào không được giải quyết, thường là phần lỗi đánh máy trong tên nhánh hoặc kho lưu trữ riêng tư đối với mã thông báo bạn đang sử dụng.
Kho lưu trữ riêng tư và mã thông báo của bạn đi đâu
Kho lưu trữ riêng tư hoạt động với mã thông báo truy cập cá nhân GitHub. Tạo một cái trong nhà phát triển GitHub của bạn cài đặt có quyền truy cập đọc vào kho lưu trữ bạn cần - mã thông báo chi tiết nằm trong phạm vi một kho lưu trữ duy nhất là đủ và đó là lựa chọn đáng để thực hiện. Dán nó vào trường mã thông báo và cây sẽ tải giống như cách mà một công chúng làm.
Mã thông báo được lưu giữ trong trình duyệt của bạn localStorage vì vậy bạn không phải gõ lại nó mỗi lần truy cập, và
nó đi đến đúng một nơi: api.github.com, trong tiêu đề yêu cầu, từ chính bạn
máy. Không có tài khoản nào ở đây để đính kèm nó và không có phần phụ trợ nào của chúng tôi trên đường dẫn. Xóa trường
và nó đã bị xóa khỏi bộ lưu trữ. Trên máy dùng chung, hãy xóa nó khi bạn hoàn tất và nếu bạn muốn
chắc chắn, hãy thu hồi mã thông báo sau GitHub sau đó — đó là hành động chỉ bằng một cú nhấp chuột và bạn sẽ phải trả phí
không có gì.
Mã thông báo cũng hữu ích trên các kho lưu trữ công khai. Các yêu cầu API GitHub không được xác thực bị giới hạn tỷ lệ khá nhiều mạnh mẽ, vì vậy nếu bạn đang chuyển đổi một kho lưu trữ lớn hoặc nhiều kho lưu trữ liên tiếp thì việc thêm mã thông báo là sự khác biệt giữa nó hoạt động và bạn chờ đợi một giờ.
Những gì cần bỏ chọn trước khi bạn tạo
Đây là bước quyết định xem đầu ra có hữu ích hay không. Một kho lưu trữ chứa rất nhiều tập tin được theo dõi vì những lý do chính đáng và vẫn vô giá trị như bối cảnh mẫu. Đi qua cây và thả:
- Các phần phụ thuộc được nhà cung cấp —
node_modules,vendor,third_party. Hiếm trong một repo nhưng tàn khốc khi có mặt. Đó là nguồn của người khác mã, và nó sẽ nhấn chìm mã của bạn. - Xây dựng đầu ra —
dist,build,out,.next,target, báo cáo bảo hiểm. Mã của riêng bạn một lần nữa, được dịch mã hoặc được rút gọn, do đó mô hình đọc mọi thứ hai lần và không học được gì mới vào lần thứ hai. - Tệp khóa —
package-lock.json,yarn.lock,poetry.lock,Cargo.lock. Hàng chục ngàn mã thông báo băm với hầu như không có ý nghĩa gì trong đó. Thay vào đó hãy giữ bản kê khai;package.jsonhoặcpyproject.tomllà thông tin cho mô hình biết bạn đang ở ngăn xếp nào. - Mã được tạo — đầu ra protobuf và gRPC, codegen GraphQL, ứng dụng khách OpenAPI, di chuyển cơ sở dữ liệu, kiểm tra ảnh chụp nhanh. Được viết bằng máy, lặp đi lặp lại và nó đẩy mô hình về phía chỉnh sửa các tập tin vẫn được tái tạo.
- Tệp dữ liệu lớn — đồ đạc, bãi chứa hạt giống, CSV mẫu, gói rút gọn đã cam kết cách đây nhiều năm. Một trong số này có thể tự ăn một cửa sổ ngữ cảnh.
Lọc theo tiện ích mở rộng là cách nhanh chóng khi kho lưu trữ lớn: thu hẹp đến .ts và
.tsxhoặc .py, và bạn đã loại bỏ hầu hết tiếng ồn chỉ trong một lần di chuyển. Sau đó cộng lại
một số tệp cấu hình và tài liệu giải thích dự án — README, cấu hình chính,
lược đồ.
Bộ đếm mã thông báo là phần quan trọng
Đầu ra được tạo đi kèm với số lượng mã thông báo, được tính bằng gpt-tokenizer thư viện
thay vì ước tính chia cho bốn ký tự. Kiểm tra nó trước khi bạn dán. Biết liệu một bãi rác
phù hợp với cửa sổ ngữ cảnh bạn sắp sử dụng cho toàn bộ trò chơi — lựa chọn thay thế là dán, chờ,
và đọc lỗi độ dài.
Sử dụng nó để chỉ đạo, không chỉ để kiểm tra. Nếu số lượng gấp đôi số lượng bạn có, hãy quay lại cây và bỏ chọn một thư mục thay vì cắt bớt tập tin ở cuối, vì một kết xuất đã cắt bỏ giữa dự án khiến mô hình chỉ thực hiện được một nửa và không biết nó bị thiếu. Và hãy ghi nhớ rằng một cửa sổ ngữ cảnh lớn không giống một cửa sổ ngữ cảnh tốt: một lựa chọn tập trung 8.000 mã thông báo — mô-đun, các thử nghiệm của nó và hai tệp mà nó nhập - thường vượt qua 200.000 mã thông báo của mọi thứ. Gửi toàn bộ repo khi câu hỏi mang tính kiến trúc và một lát cắt khi câu hỏi mang tính cục bộ.
Khi đã sẵn sàng, hãy sao chép văn bản vào khay nhớ tạm, tải xuống dưới dạng .txt, hoặc lấy
các tệp đã chọn dưới dạng ZIP nếu bạn muốn có chúng dưới dạng tệp hơn là một tài liệu được hợp nhất.
Cách sử dụng nó
Mọi người thực sự sử dụng nó để làm gì
- Tham gia vào một cơ sở mã không quen thuộc. Công việc mới, nhóm mới hoặc nguồn mở dự án bạn muốn đóng góp. Chuyển đổi nó, dán nó và yêu cầu các điểm vào, cốt lõi sự trừu tượng và ba điều sẽ gây ngạc nhiên cho người bảo trì mới. Bạn sẽ được định hướng nhanh hơn việc đọc README và nhấp qua các tệp trong một ngày.
- Xem xét một yêu cầu kéo với môi trường xung quanh nó. Một khác biệt hiển thị những gì đã thay đổi nhưng không phải những gì nó chạm vào. Chuyển đổi chi nhánh hoặc chỉ gói bị ảnh hưởng và hỏi những gì khác gọi chức năng đã thay đổi và những giả định mà mã mới đưa ra về nó.
- Viết tài liệu thực sự đúng. README bị hỏng vì chúng được viết một lần. Tạo tổng quan về kiến trúc, tóm tắt mô-đun hoặc danh sách môi trường thực tế các biến từ mã như nó tồn tại trên main ngày nay.
- Tạo các bài kiểm tra. Bao gồm mô-đun cộng với một tệp thử nghiệm hiện có làm kiểu tham khảo. Mô hình phù hợp với khuôn khổ, cách đặt tên và đồ đạc của bạn thay vì phát minh ra một quy ước không ai trong nhóm sử dụng.
- Lập kế hoạch di chuyển và tái cấu trúc. Các thành phần lớp cho hook, JavaScript cho TypeScript, ORM này sang ORM khác. Một mô hình có thể thấy mọi trang web cuộc gọi sẽ tạo ra một chuỗi thực sự các bước thay vì một danh sách kiểm tra chung chung.
- Kiểm toán và thẩm định. Đánh giá kho lưu trữ mà bạn đang kế thừa, mua lại, hoặc xem xét như một sự phụ thuộc. Một tập tin hợp nhất giúp việc hỏi bí mật ở đâu trở nên thực tế được xử lý, đường dẫn lỗi trông như thế nào và các mẫu rủi ro tồn tại ở đâu.
- RAG và nhúng. Các phần được phân cách bằng đường dẫn sẽ được phân tách rõ ràng, do đó kết quả đầu ra sẽ giảm xuống vào một kho vector với rất ít quá trình tiền xử lý.
Câu hỏi thường gặp
Làm cách nào để chuyển đổi repo GitHub thành tệp văn bản?
Dán URL kho lưu trữ ở trên và cây tệp sẽ xuất hiện dưới dạng danh sách hộp kiểm. Bỏ chọn những gì mô hình không cần, tạo và bạn nhận được một tệp văn bản: cấu trúc thư mục ở trên cùng, sau đó mỗi tệp được chọn dưới tiêu đề có đường dẫn của nó. Không có gì để sao chép, không có gì để cài đặt, miễn phí và không cần đăng ký.
Làm cách nào để chuyển đổi kho lưu trữ GitHub riêng tư?
Dán mã thông báo truy cập cá nhân dọc theo URL. Tạo mã thông báo chi tiết trong phạm vi chỉ một kho lưu trữ đó với quyền Nội dung chỉ đọc và thời gian hết hạn ngắn - đó là đặc quyền ít nhất mà API sẽ chấp nhận cho việc này. Mã thông báo được sử dụng để gọi GitHub từ trình duyệt của bạn và không được lưu trữ ở phía chúng tôi.
Cơ sở mã của tôi có bao nhiêu mã thông báo và nó có phù hợp không?
Bộ đếm cập nhật khi bạn đánh dấu các tệp, vì vậy bạn có thể xem số trước khi dán bất cứ thứ gì. Theo hướng dẫn sơ bộ, mã nguồn chạy khoảng 3 đến 4 ký tự cho mỗi mã thông báo, do đó, lựa chọn 500 KB sẽ có gần 140.000 mã thông báo. Điều đó vừa với cửa sổ ngữ cảnh 200K và sẽ không vừa với một tin nhắn trò chuyện trên hầu hết các giao diện.
Tôi nên loại trừ những tệp nào trước khi cung cấp kho lưu trữ cho LLM?
node_modules, vendorvà bất kỳ thư mục phụ thuộc nào trước tiên - chúng thường chiếm phần lớn byte và không đóng góp gì cho mã của bạn. Sau đó, các tệp khóa, đầu ra bản dựng, các gói được rút gọn, các thiết bị thử nghiệm và nội dung nhị phân. Trong một dự án JavaScript điển hình chỉ chạy qua thường sẽ loại bỏ hơn 90% mã thông báo.
Điều này so sánh với gitingest, repomix hoặc code2prompt như thế nào?
Đó là những công cụ mạnh mẽ và sự khác biệt thực sự là ở quy trình làm việc chứ không phải ở khả năng. Trước tiên, chúng là dòng lệnh, có thể viết được tập lệnh và là câu trả lời đúng trong CI hoặc một công việc hàng loạt. Điều này chạy trong tab trình duyệt có cây hộp kiểm, vì vậy bạn có thể xem kho lưu trữ, bỏ chọn những gì bạn không muốn và xem số lượng mã thông báo di chuyển - tốt hơn cho trường hợp một lần mà bạn vẫn đang quyết định nên đưa vào cái gì.
Có an toàn khi đặt mã của tôi thông qua điều này?
Các kho lưu trữ công khai được đọc qua API GitHub từ trình duyệt của bạn, do đó mã sẽ chuyển từ GitHub tới bạn. Đối với bất cứ điều gì bí mật, lựa chọn mạnh hơn là trình chuyển đổi thư mục cục bộ, không bao giờ tải lên chút nào. Dù bằng cách nào, hãy quét lựa chọn của bạn để tìm khóa API và thông tin đăng nhập trước khi dán nó vào mô hình - đó là bước mọi người bỏ qua.
Thư mục cục bộ, GitLab và mọi thứ không phải là mã
Không phải mọi thứ bạn muốn chuyển đổi đều phát trực tiếp trên GitHub. các chuyển đổi thư mục cục bộ sang văn bản mất một thư mục ngay từ đĩa của bạn và kết hợp nó thành một tệp mà không cần tải lên bất cứ thứ gì - không các cuộc gọi mạng, đó là những gì bạn muốn cho công việc của khách hàng, các chi nhánh chưa được cam kết hoặc một dự án chưa bao giờ là một repo git. Đối với GitLab, GitLab sang trình chuyển đổi văn bản làm điều tương tự công việc chống lại các dự án công cộng, tư nhân và tự lưu trữ.
Mã thường chỉ là một nửa bối cảnh. Thông số kỹ thuật ở dạng PDF, lược đồ ở dạng JSON, bản kế thừa config bằng XML, dữ liệu mẫu ở dạng CSV. Chuyển đổi chúng cùng với repo của bạn với PDF sang Markdown, JSON tới Markdown, XML tới Markdown, CSV tới Markdownhoặc HTML tới Markdown. Nếu ai đó đưa cho bạn một kho lưu trữ, ZIP thành văn bản kéo phần có thể đọc được nội dung của nó, và File2Txt mất bất kỳ mười ba định dạng được hỗ trợ nếu bạn không muốn chọn một trang. Đối với tài liệu chỉ tồn tại trên mạng, Web2Txt xóa một URL vào sạch Markdown, bao gồm các trang được hiển thị bằng JavaScript — ghép nối một tham chiếu API cóp nhặt với repo được chuyển đổi và trợ lý mã hóa có thể nhìn thấy cả hai mặt cùng một lúc.
Có chiều sâu hơn trên blog: hướng dẫn đầy đủ để chuyển đổi kho lưu trữ GitHub cho LLM, biến cơ sở mã thành tệp sẵn sàng LLM, đưa toàn bộ kho lưu trữ vào AIvà hướng dẫn thư mục để nhắn tin cho các thư mục địa phương.
Repo2Txt được xây dựng và duy trì bởi v12hero, một nhà phát triển độc lập xây dựng các ứng dụng web và ứng dụng gốc ưu tiên quyền riêng tư.