GitLab Repo thành văn bản: Một tệp LLM của bạn thực sự có thể đọc được
Dán mã vào cửa sổ trò chuyện từng tệp một là một cách tồi để dành một buổi chiều. mô hình trả lời từng câu hỏi bằng chế độ xem lỗ khóa về dự án của bạn, bạn cứ phải nói "đợi đã, đây là tệp khác mà nó nhập" và khi bối cảnh hoàn tất, cuộc trò chuyện đã đi ngang. Cách khắc phục khá nhàm chán nhưng lại hiệu quả: đưa toàn bộ phần có liên quan của kho lưu trữ lên phía trước, trong một khối văn bản.
Đó là những gì trang này làm. Đó là con đường ngắn nhất từ kho lưu trữ GitLab đến bối cảnh LLM: dán một
https://gitlab.com/... URL dự án, công cụ sẽ đọc
cây kho lưu trữ thông qua API của GitLab và bạn nhận được cây hộp kiểm của mọi tệp. Đánh dấu vào những gì quan trọng,
Bỏ chọn những gì không, nhấn tạo. Xuất hiện một bản đồ thư mục theo sau là nội dung đầy đủ của các tập tin
bạn đã chọn, với số lượng mã thông báo để bạn biết liệu nó có phù hợp hay không. Sao chép nó, tải xuống dưới dạng văn bản hoặc lấy
các tập tin đã chọn dưới dạng ZIP.
Dán URL bạn đang xem
Không có ID dự án để tra cứu và không có trường không gian tên riêng biệt. Sao chép URL ra khỏi trình duyệt của bạn
thanh địa chỉ và dán vào. Các nhóm con lồng nhau hoạt động — thói quen chôn vùi ba hoặc bốn dự án của GitLab
cấp độ sâu bên dưới company/platform/services/billing được xử lý, bởi vì đường dẫn dự án
được mã hóa URL trước khi đến API.
Nếu URL bạn đã sao chép bao gồm một nhánh hoặc thẻ thì tham chiếu đó sẽ được sử dụng. Nếu đó chỉ là URL dự án trống, thì
nhánh mặc định của dự án được giải quyết tự động, do đó bạn không cần phải nhớ liệu nhánh cụ thể này có
repo đã được giải quyết main, masterhoặc develop. Cây được lấy
đệ quy và phân trang, điều này quan trọng hơn âm thanh của nó — rất nhiều GitLab monorepos chạy tới
hàng nghìn tệp và một yêu cầu không phân trang sẽ lặng lẽ cung cấp cho bạn một dự án bị cắt bớt.
Các dự án tư nhân và chính xác nơi mã thông báo của bạn đi
Các dự án công cộng không cần gì cả. Đối với mã thông báo riêng tư, hãy thêm mã thông báo truy cập cá nhân GitLab và nó được gửi dưới dạng
PRIVATE-TOKEN tiêu đề trên các yêu cầu tới
API của GitLab.
Thận trọng khi dán mã thông báo vào công cụ web là bản năng đúng đắn, vì vậy đây là phiên bản đơn giản:
mã thông báo được lưu trữ trong trình duyệt của bạn localStorage và chỉ được sử dụng để gọi
gitlab.com trực tiếp từ trình duyệt của bạn. Nó không được gửi đến bất kỳ máy chủ nào của chúng tôi, bởi vì
yêu cầu không định tuyến thông qua một.
Phạm vi chỉ đọc là tất cả những gì nó cần - read_api hoặc read_repository. Đừng đưa nó
quyền ghi mà nó sẽ không bao giờ sử dụng và đặt thời hạn hết hạn khi bạn đang ở màn hình mã thông báo. Nó cũng có giá trị
thêm mã thông báo ngay cả đối với các kho lưu trữ công khai: các lệnh gọi không được xác thực tới API GitLab bị giới hạn tốc độ, vì vậy nếu
bạn đang thực hiện một dự án lớn hoặc chạy lại cùng một chuyển đổi một vài lần, một yêu cầu đã được xác thực
là sự khác biệt giữa một lần tìm nạp trơn tru và một bức tường lỗi.
Tự quản lý GitLab: Câu trả lời trung thực
Công cụ này nói chuyện với gitlab.com và chỉ gitlab.com. Không có trường cho tùy chỉnh
URL ví dụ và dán gitlab.yourcompany.internal sẽ không hoạt động. Nếu bạn đang sử dụng máy chủ tự lưu trữ
hoặc trường hợp tự quản lý, đó là điều không nên.
Tin vui là câu trả lời tốt hơn cho phiên bản tự quản lý không bao giờ là lệnh gọi API. bản sao kho lưu trữ - bạn đã có thông tin xác thực - và trỏ tới bộ chuyển đổi thư mục cục bộ tại thư mục. Nó đọc các tệp thông qua API tệp của trình duyệt, do đó không có gì được tải lên và không có gì rời khỏi máy của bạn. Đối với một phiên bản riêng nằm sau tường lửa của công ty, đó là phiên bản mà nhóm bảo mật của bạn sẽ sử dụng đã yêu cầu bất kể. Cây hộp kiểm giống nhau, đầu ra giống nhau, số lượng mã thông báo giống nhau. Nó cũng cần một ZIP nếu bạn muốn xuất một kho lưu trữ hơn là sao chép.
Chọn cái gì và bỏ cái gì
Mọi thứ bắt đầu được kiểm tra, đây là lựa chọn sai cho hầu hết mọi dự án thực tế. Bản năng khi bạn chuyển đổi một repo GitLab thành văn bản là lấy tất cả nó; chống lại điều đó. Một kho lưu trữ hữu ích là ngân sách được quản lý — ngân sách mã thông báo bạn chi tiêu cho tiếng ồn được tạo ra là ngân sách mà mô hình không chi tiêu cho mã thực tế. Bỏ chọn những cái này trước:
- Các phần phụ thuộc được cung cấp và cài đặt —
node_modules,vendor,.venv, mọi thứ được kiểm tra từ sổ đăng ký gói. Người mẫu đã biết Express là gì trông giống như. - Tệp khóa.
package-lock.json,yarn.lock,poetry.lock,Gemfile.lock. Một lockfile có thể có hàng chục nghìn token các hàm băm và ghim phiên bản không trả lời bất kỳ câu hỏi nào mà bất kỳ ai cũng từng hỏi. Giữ bản kê khai, bỏ khóa. - Xây dựng sản lượng và tài sản được rút gọn —
dist,build,.next, gói biên dịch, bản đồ nguồn. Đó là mã của riêng bạn, được trình bày lại dưới dạng không gì có thể lý do về. - Ảnh chụp nhanh và đồ đạc. Các tập tin ảnh chụp nhanh và đồ đạc thử nghiệm lớn được lặp đi lặp lại bởi thiết kế. Một vài người đại diện đánh bại tất cả bốn trăm.
- Di cư, chủ yếu. Một thư mục lược đồ với sáu năm di chuyển gia tăng là chỉ có giá trị khi câu hỏi liên quan đến lịch sử di chuyển.
Giữ những thứ giải thích ý định: tệp nguồn, README, bảng kê khai và
.gitlab-ci.yml. Mẹo cuối cùng thực sự là một mẹo có hương vị GitLab - cấu hình CI là nơi
các bước xây dựng, lệnh kiểm tra, mục tiêu triển khai và các giả định về môi trường, tất cả đều tồn tại ở một nơi. Bao gồm nó
và mô hình có thể trả lời "tại sao điều này không thành công trong CI nhưng lại vượt qua cục bộ" thay vì đoán.
Chuyển đổi chế độ xem thư mục là nửa còn lại của điều này. Đã chuyển sang Đầy đủ, đầu ra bao gồm
cấu trúc kho lưu trữ hoàn chỉnh với các tệp đã chọn của bạn được đánh dấu để mô hình có thể thấy rằng
payments mô-đun tồn tại ngay cả khi bạn không đưa nó vào - bối cảnh hữu ích, giá trị mã thông báo rẻ.
Đã chuyển sang Đã lọc, chỉ những gì bạn đã chọn mới xuất hiện. Đầy đủ thường là mặc định tốt hơn
khi bạn đã chọn một dịch vụ từ monorepo; được lọc gọn gàng hơn khi bạn gửi tập trung
một số tập tin.
Công việc này thực sự giỏi
- Hạ cánh trên một dự án xa lạ. Chọn thư mục nguồn, README và CI config, sau đó yêu cầu hướng dẫn chi tiết về các điểm truy cập và nơi yêu cầu được thực hiện khi nó đến. Hai mươi phút định hướng được gói gọn trong một lời nhắc.
- Xem xét yêu cầu hợp nhất với môi trường xung quanh. Sự khác biệt cho bạn biết điều gì đã thay đổi; nó không cho bạn biết cái gì khác gọi hàm đã thay đổi. Xuất thư mục được chạm và của nó hàng xóm, dán phần khác biệt bên cạnh nó và bạn sẽ nhận được các nhận xét đánh giá về hậu quả thay vì phong cách.
- Viết tài liệu không ai viết. Đưa mô-đun vào và yêu cầu README, ghi chú kiến trúc hoặc các chuỗi tài liệu phù hợp với các quy ước hiện có của mã thay vì phát minh ra những cái mới.
- Tạo các bài kiểm tra. Bao gồm mô-đun cộng với hai hoặc ba tệp thử nghiệm hiện có. các phần thứ hai là những gì làm cho đầu ra có thể sử dụng được - mô hình sao chép các đồ đạc, cách đặt tên và xác nhận của bạn phong cách thay vì tạo ra thứ gì đó không phù hợp với bộ sản phẩm.
- Công việc di chuyển và nâng cấp. Phiên bản khung bị lỗi, viết lại ngôn ngữ, hoán đổi ORM. Chúng cần khả năng hiển thị toàn bộ cơ sở mã để nắm bắt mọi trang web cuộc gọi, đó chính xác là những gì một xuất văn bản mang lại cho bạn.
- Kiểm toán. Hỏi nơi bí mật được đọc, điểm cuối nào bỏ qua quá trình xác thực hoặc nội dung nào vẫn đạt yêu cầu API nội bộ không được dùng nữa. Những câu hỏi rộng như thế này không thể trả lời được từng tệp một.
Trong hầu hết các phần này, phần thú vị là một thư mục dịch vụ chứ không phải toàn bộ nhóm. Chọn cái đó
cây con, để lại phần còn lại và kiểm tra số lượng mã thông báo trước khi dán - nó được tạo bằng
gpt-tokenizer thư viện, vì vậy đây là số lượng thực mà bạn có thể so sánh với bối cảnh mô hình của mình
window thay vì đoán. Đó là cùng một kết quả cho dù bạn xuất mã GitLab cho thẻ đánh giá AI hay
biến dự án GitLab thành tệp văn bản cho ChatGPT, Claude hoặc Gemini — một tệp và bạn có thể đọc nó
trước khi bạn gửi nó.
Các tập tin nằm bên cạnh mã của bạn
Kho lưu trữ không chỉ có các tập tin nguồn. Cấu hình, lược đồ, dữ liệu gốc và thông số kỹ thuật được cam kết cùng với một số trong số chúng đọc rất tệ khi được bán ở dạng thô. Các định dạng có cấu trúc phù hợp hơn dưới dạng Markdown: JSON tới Markdown cho cấu hình và tải trọng API, XML tới Markdown cho các tệp Maven, Android và SOAP cũ không bao giờ biến mất, CSV sang Markdown cho dữ liệu hạt giống và xuất khẩu và HTML tới Markdown cho mẫu và tài liệu được tạo. Thông số kỹ thuật đã đến dưới dạng PDF cũng chuyển đổi, và một kho lưu trữ ZIP có thể được làm phẳng thẳng thành văn bản. File2Txt xử lý rất nhiều nếu bạn không muốn chọn một trang.
Câu hỏi thường gặp
Làm cách nào để chuyển đổi kho lưu trữ GitLab thành tệp văn bản?
Dán URL dự án ở trên và cây tệp sẽ tải dưới dạng danh sách hộp kiểm. Chọn các tệp bạn muốn và xuất một tệp văn bản có cấu trúc thư mục ở trên cùng và mỗi tệp ở bên dưới, dẫn đầu bởi đường dẫn của nó. Miễn phí, không cần cài đặt, không cần đăng ký.
Nó có hoạt động với GitLab tự lưu trữ không?
Các phiên bản tự quản lý hiển thị API REST giống như gitlab.com, do đó, một phiên bản có thể truy cập sẽ hoạt động theo cách tương tự. Vấn đề là quyền truy cập mạng — không thể truy cập được phiên bản đằng sau VPN công ty hoặc mạng riêng từ tab trình duyệt của bạn và không có số lượng mã thông báo nào sẽ thay đổi điều đó. Đối với những điều đó, hãy sao chép dự án và sử dụng trình chuyển đổi thư mục cục bộ.
Làm cách nào để chuyển đổi dự án GitLab riêng tư?
Cung cấp mã thông báo truy cập cá nhân với read_repository phạm vi. Tạo nó trong Tùy chọn → Mã thông báo truy cập, cho thời hạn sử dụng ngắn nhất trong phiên của bạn và xóa nó sau đó. Chỉ đọc là tất cả những nhu cầu này - một mã thông báo có phạm vi ghi hoặc toàn API sẽ hiển thị nhiều hơn mức nhiệm vụ yêu cầu.
Tại sao nên sử dụng cái này thay vì nhân bản repo?
Nhân bản giúp bạn có một cây làm việc có hình dạng sai cho công việc. Những gì một mô hình muốn là một tài liệu chứa cấu trúc và nội dung cùng nhau, loại bỏ tiếng ồn. Nhân bản cũng lấy toàn bộ lịch sử và mọi phần phụ thuộc - thường nhiều byte hơn nguồn mà bạn thực sự muốn giải thích.
Nó có xử lý các nhóm con và đường dẫn dự án lồng nhau không?
Vâng. Cấu trúc nhóm lồng nhau của GitLab có nghĩa là các đường dẫn dự án chạy sâu trong nhiều phân đoạn và đường dẫn đầy đủ là thứ xác định dự án — dán URL hoàn chỉnh từ thanh địa chỉ của trình duyệt của bạn thay vì tập hợp từng cái một bằng tay và việc tra cứu sẽ giải quyết chính xác.
Tôi có thể chuyển đổi yêu cầu hợp nhất khác biệt thay vì toàn bộ dự án không?
Không phải từ trang này - nó hoạt động trên cây kho lưu trữ tại một giới thiệu nhất định. Đối với công việc đánh giá, mẫu thông thường là chuyển đổi các tệp mà yêu cầu hợp nhất chạm vào, dán tệp đó dưới dạng ngữ cảnh, sau đó dán chính phần khác biệt bên dưới. Mô hình cần mã xung quanh để đánh giá một sự thay đổi và chỉ một sự khác biệt hiếm khi cung cấp được điều đó.
Mọi thứ khác trong Bộ công cụ
Thay vào đó, hãy viết mã trên GitHub? các GitHub repo thành văn bản bộ chuyển đổi hoạt động theo cùng một cách Chỉ trên máy của bạn hoặc trên phiên bản tự quản lý mà bạn đã sao chép? sử dụng cái bộ chuyển đổi thư mục cục bộ. Cần trang web tài liệu chứ không phải là nguồn tạo ra nó? Web2Txt loại bỏ một URL vào Markdown.
Để biết những lập luận dài hơn đằng sau tất cả những điều này, có hướng dẫn về đưa kho lưu trữ vào mô hình AI, một trên biến cơ sở mã thành tệp sẵn sàng LLM, một hướng dẫn đầy đủ để chuyển đổi kho lưu trữ cho LLM, và một phần rộng hơn trên chuẩn bị file cho công cụ AI.
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ư.