Thư mục cục bộ thành văn bản: Codebase của bạn thành một tệp mà không cần tải nó lên
Trỏ cái này vào một thư mục trên máy của bạn và bạn nhận được một tệp văn bản duy nhất: một cây thư mục ở trên cùng, sau đó đến mọi tệp bạn đã chọn, mỗi tệp được phân tách bằng tiêu đề có đường dẫn của nó. Dù bạn gọi nó là gì — kết hợp một cơ sở mã thành một tệp, nối các tệp nguồn, hợp nhất một thư mục thành một tài liệu - đó là toàn bộ ý tưởng. Đó là định dạng mà LLM xử lý tốt nhất vì mô hình có thể thấy hình dạng của dự án và nội dung cùng một lúc và nó có thể suy luận về mối liên hệ của một tệp đến cái khác.
Nó miễn phí, không cần đăng ký và không cần cài đặt. Chọn một thư mục, bỏ chọn mô hình không cần và xuất dự án dưới dạng một tệp văn bản mà bạn có thể dán vào bất cứ đâu.
Phần được nhiều người quan tâm nhất: không có gì được tải lên. Không có máy chủ trong này đường ống. Các tệp của bạn được đọc trong trình duyệt, được tập hợp trong bộ nhớ và được chuyển lại cho bạn. Nếu bạn đã đang tránh các trình chuyển đổi trực tuyến vì cơ sở mã thuộc về khách hàng hoặc thuộc NDA hoặc đơn giản là không phải là của bạn để dán vào dịch vụ bên thứ ba, sự phản đối đó không áp dụng ở đây — và điều tiếp theo phần giải thích chính xác lý do vì "hãy tin chúng tôi, nó an toàn" không phải là câu trả lời mà bất kỳ ai cũng nên chấp nhận.
Cách thức chuyển đổi cơ sở mã riêng sang văn bản thực sự hoạt động mà không cần tải lên
Các trình duyệt hiện đại có thể đọc tệp từ đĩa mà không cần gửi chúng đi bất cứ đâu. Khi bạn chọn một thư mục,
trình duyệt cung cấp cho trang một danh sách các thẻ xử lý tập tin. Mỗi cái được đọc theo tiêu chuẩn
FileReader API, giải mã các byte thành một chuỗi trong bộ nhớ riêng của tab. các
cây thư mục, số lượng mã thông báo, phép nối - tất cả đều xảy ra trong JavaScript chạy trên
máy. không có fetch, không có XHR, không có điểm cuối API, không có lệnh gọi phân tích của bên thứ ba
mang nội dung tập tin. Mở tab mạng của trình duyệt trong khi bạn chuyển đổi và bạn sẽ xem nó ở lại
trống rỗng.
Cơ chế đó có một số tác dụng phụ hữu ích ngoài quyền riêng tư:
- Nó hoạt động ngoại tuyến. Khi trang đã được tải, hãy kéo cáp ethernet. Chuyển đổi vẫn chạy. Hữu ích trên máy có air-gap hoặc mạng công ty bị khóa.
- Không có giới hạn tải lên hoặc giới hạn tốc độ. Không có hạn ngạch API nào để đạt được vì không có API. Giới hạn duy nhất là bộ nhớ của trình duyệt và sự kiên nhẫn của bạn.
- Nó hoạt động trên mã chưa bao giờ được cam kết. Một cành cào xước, một cành không dấu vết
thí nghiệm, một thư mục chưa bao giờ thấy
git init- cái GitHub repo sang trình chuyển đổi văn bản không thể chạm vào bất kỳ thứ nào trong số đó vì nó đọc từ API GitHub. Cái này đọc từ đĩa, nên nó không quan tâm đến tình hình kiểm soát phiên bản của bạn. - Không có gì được giữ lại. Đóng tab và trạng thái biến mất - không có lịch sử nào để xóa, không có tài khoản nào giữ bản sao nguồn của bạn.
Ba cách để nhận được một dự án
Sử dụng bộ chọn thư mục để duyệt đến một thư mục hoặc kéo thư mục đó trực tiếp từ Finder hoặc Explorer vào vùng thả. Cả hai đều đi theo cây một cách đệ quy, do đó bạn có được toàn bộ dự án bao gồm cả các phần lồng nhau thư mục con, không chỉ cấp cao nhất.
Bạn cũng có thể thả một kho lưu trữ ZIP và nó sẽ được giải nén trong trình duyệt - rất hữu ích khi ai đó gửi email cho bạn một dự án, hoặc bạn không muốn giải nén nó chút nào. Một điểm khác biệt đáng biết: sử dụng trang này khi kho lưu trữ chứa một dự án mã, bởi vì bạn muốn cây thư mục và tiêu đề đường dẫn cho mỗi tệp. Nếu đó là một đống tài liệu — báo cáo, bảng tính, PDF — ZIP thành văn bản hoặc ZIP tới Markdown phù hợp hơn, vì chúng kéo nội dung có thể đọc được ra khỏi mỗi tài liệu thay vì coi tệp là nguồn.
Bất kỳ IDE, bất kỳ trình soạn thảo nào - Nó chỉ muốn một thư mục
Không có plugin để cài đặt và không có tiện ích mở rộng nào để phê duyệt vì tiện ích này không tích hợp với biên tập viên cả. Nó cần một thư mục. Cho dù thư mục đó có phải là không gian làm việc của VS Code hay không, Dự án IntelliJ IDEA hoặc PyCharm, giải pháp Visual Studio, mô-đun Android Studio, Xcode dự án, không gian làm việc Eclipse hoặc thư mục bạn mới mở trong Neovim, đó là cùng một bộ các tập tin trên cùng một đĩa. Trỏ bộ chọn vào nó và bạn đã hoàn tất.
Đáng chú ý vì "xuất dự án VS Code của tôi dưới dạng một TXT" và "xuất IntelliJ dự án thành một tệp" là những câu hỏi mà mọi người thường hỏi biên tập viên của họ trước tiên. Các biên tập viên thường là nhìn nhầm chỗ rồi Họ xuất khẩu tập tin, từng cái một. Một số có phần mở rộng thị trường điều đó giải quyết được một nửa, hầu hết thì không, và mỗi cách giải quyết nó một cách khác nhau, vì vậy câu trả lời cho một IDE là vô ích thời điểm bạn chuyển đổi. Thư mục là mẫu số chung.
Đó cũng là một động thái tốt hơn là nén dự án và gửi nó. Một kho lưu trữ là điều tốt cho nhà phát triển
nhà phát triển, nhưng mô hình trò chuyện muốn có văn bản chứ không phải vùng chứa và người đánh giá phải trích xuất nó trước
đọc một dòng. Hợp nhất .txt có thể đọc được
nội tuyến: dán nó vào một cuộc trò chuyện, đính kèm nó vào một phiếu, thả nó vào chuỗi email. Và nếu
ai đó đã gửi rồi bạn ZIP, bạn có thể thả thẳng nó vào trang này thay vì
giải nén nó đầu tiên.
Cắt tỉa cẩn thận trước khi bạn tạo ra
Đây là bước mọi người bỏ qua và là bước quyết định liệu đầu ra có thể sử dụng được hay không. Mọi thứ bắt đầu được đánh dấu vào cây hộp kiểm, có nghĩa là theo mặc định bạn sắp đưa vào rất nhiều thứ mô hình cần xem.
Có một điều có lợi cho bạn ở đây. Nếu thư mục chứa một .gitignore, nó được đọc và
các quy tắc của nó được áp dụng - bao gồm các quy tắc được lồng sâu hơn trong cây, nằm trong thư mục riêng của chúng, với
dòng bình luận bị bỏ qua. Trên một kho lưu trữ bình thường, nó lặng lẽ loại bỏ hầu hết những kẻ phạm tội tồi tệ nhất trước bạn
chạm vào bất cứ thứ gì, bởi vì những thứ làm đầy bãi rác thường giống như những thứ bạn đã nói với git
để lại một mình. các .git bản thân thư mục luôn bị loại trừ.
Tuy nhiên, đừng hoàn toàn dựa vào nó. Một thư mục không có .gitignore - một ZIP được trích xuất, một
nhà cung cấp chuyển giao, một thư mục không bao giờ là kho lưu trữ - không nhận được sự bảo vệ nào. Và rất nhiều ồn ào
mọi thứ được theo dõi hợp pháp trong git. Quét cây và bỏ chọn những thứ này:
node_modules,vendor,.venv,site-packages. Cây phụ thuộc rất lớn và không có cây nào trong số đó là mã của bạn. Một không cắt tỉanode_modulesriêng có thể là hàng trăm ngàn token của người khác nguồn. Nó sẽ tràn ngập dự án thực tế và các câu trả lời của mô hình sẽ trôi dạt vào thư viện nội bộ.- Xây dựng đầu ra —
dist,build,.next,target,out, báo cáo bảo hiểm. Đó là mã của riêng bạn, được rút gọn hoặc được dịch mã, nhân bản. Tiếng ồn thuần túy. - Tệp khóa.
package-lock.json,yarn.lock,poetry.lock,Cargo.lock. Hàng ngàn dòng băm gần như không có thông tin ngữ nghĩa. Giữ bảng kê khai (package.json,pyproject.toml) — đó là phần cho mô hình biết bạn đang ở ngăn xếp nào. - Mã và đồ đạc được tạo - đầu ra protobuf, codegen GraphQL, cơ sở dữ liệu di chuyển, hạt giống lớn hoặc tập tin ảnh chụp nhanh.
- Bất cứ điều gì có bí mật. Không có gì được truyền đi, nhưng tập tin đầu ra đang được chuyển vào
cuối cùng là một cửa sổ trò chuyện. Rời khỏi
.envra ngoài.
Các tệp nhị phân được xử lý cho bạn: hình ảnh, phông chữ, các tạo phẩm được biên dịch và những thứ tương tự được lọc ra bởi phần mở rộng trước khi chúng đến được cây và bất kỳ thứ gì trượt qua sẽ bị bắt bởi một byte rỗng quét và thay thế bằng một trình giữ chỗ ngắn thay vì bị vứt bỏ dưới dạng rác. Các tệp trên 1 MB sẽ nhận được trình giữ chỗ cũng lưu ý kích thước, điều này giúp một CSV đi lạc không tiêu tốn toàn bộ ngân sách ngữ cảnh của bạn.
Ngoài ra còn có một nút chuyển đổi cho cây thư mục ở đầu kết quả: được lọc chương trình
chỉ những gì bạn đã chọn, đầy đủ hiển thị cấu trúc hoàn chỉnh với các lựa chọn của bạn được đánh dấu.
Full là lựa chọn tốt hơn khi bạn hỏi về kiến trúc, bởi vì mô hình có thể thấy rằng
tests/ thư mục tồn tại ngay cả khi bạn không đưa nó vào. Lọc sẽ tốt hơn khi bạn
muốn mô hình tập trung vào phạm vi hẹp và không có gì khác.
Ở bên trong cửa sổ ngữ cảnh
Đầu ra được tạo đi kèm với số lượng mã thông báo thực, được tạo bởi gpt-tokenizer thư viện
thay vì đoán theo cách chia cho bốn ký tự. Kiểm tra nó với mô hình của bạn trước khi dán. Đó là một
quy trình làm việc tốt hơn nhiều so với việc dán, chờ đợi và nhận lại lỗi về độ dài.
Hướng dẫn sơ bộ về số tiền cần gửi. Gửi toàn bộ dự án khi nó đủ nhỏ để vừa vặn thoải mái và câu hỏi của bạn mang tính kiến trúc — "xác thực thực sự được thực thi ở đâu", "điều gì sẽ xảy ra nếu tôi thay đổi giao diện này", "giải thích luồng dữ liệu từ yêu cầu đến cơ sở dữ liệu". các mô hình cần bức tranh đầy đủ để trả lời những câu hỏi đó một cách trung thực và việc kết xuất một phần tạo ra những phỏng đoán tự tin về những tập tin mà nó chưa từng thấy.
Gửi một lát khi câu hỏi mang tính cục bộ — một mô-đun cộng với các bài kiểm tra bao gồm nó, cộng với hai hoặc ba tệp mà nó nhập từ đó. Ngữ cảnh nhỏ hơn có nghĩa là câu trả lời sắc nét hơn và ít trôi dạt hơn, đồng thời bạn thường sẽ nhận được kết quả tốt hơn từ 5.000 mã thông báo được lựa chọn kỹ càng hơn 200.000 mã thông báo bừa bãi.
Monorepos cần một cách tiếp cận có chủ ý. Đừng chuyển đổi gốc repo. Chuyển đổi một gói tại một thời điểm và nếu gói đó phụ thuộc vào thư viện nội bộ được chia sẻ, hãy bao gồm thư viện công cộng của thư viện đó bề mặt bên cạnh nó. Nếu bạn cần ngữ cảnh gói chéo, một mẹo hay là chạy hai lượt: một lượt đầy đủ cây hầu như không có tệp nào được chọn - nó cung cấp cho mô hình một bản đồ - và sau đó chuyển tiếp thứ hai, chứa nhiều tệp gói bạn đang thực sự làm việc.
Tại sao không chạy cat hoặc Shell Script?
Câu hỏi công bằng và đôi khi câu trả lời trung thực là bạn nên làm như vậy. Nếu bạn muốn ba tập tin đã biết
đã gắn kết với nhau, cat auth.py models.py routes.py > out.txt nhanh hơn việc mở một
browser. Không ai cố gắng nói với bạn về điều đó.
Nơi nó ngừng phát huy tác dụng là thời điểm bạn nhắm nó vào toàn bộ dự án. Chạy
find . -type f -exec cat {} + trên một repo thực sự và đây là những gì bạn nhận được:
- Các tệp nhị phân ở giữa nguồn của bạn. PNG, phông chữ, đối tượng được biên dịch, đi lạc Lịch thi đấu SQLite - tất cả đều được giải mã dưới dạng văn bản, tất cả đều là mojibake. Sau đó bạn bắt đầu duy trì một danh sách trắng mở rộng.
- Toàn bộ cây phụ thuộc.
node_modules,.venv,vendor,target, và nội dung của.gitchính nó. Loại trừ điều đó có nghĩa là viết các biểu thức tinh gọn và cập nhật chúng cho mọi dự án bạn thực hiện. Đây, của bạn.gitignoređã mô tả chính xác điều đó, bao gồm các tệp lồng nhau và nó sẽ được áp dụng cho bạn. - Không biết nó lớn đến mức nào. Việc ghép nối cung cấp cho bạn byte chứ không phải mã thông báo và chia ký tự của bốn là một dự đoán sai ở cả hai hướng. Bạn phát hiện ra nó không phù hợp khi người mẫu từ chối nó.
- Kiểm soát chọn lọc tốn nhiều kịch bản hơn. “Mọi thứ dưới
srcngoại trừ ứng dụng khách API được tạo, cộng với hai tệp cấu hình ở thư mục gốc" là một cờ khác và một cờ khác biểu thức chính quy. Cây hộp kiểm thực hiện điều đó trong khoảng bốn lần nhấp chuột. - Không có bản đồ ở trên cùng. Ghép nối thô là một bức tường văn bản không có tiêu đề cấu trúc, vì vậy mô hình không thể biết một tệp kết thúc ở đâu và tệp tiếp theo bắt đầu ở đâu hoặc bố cục của dự án là gì trông giống như. Hầu hết các phần được phân cách bằng đường dẫn và cây thư mục là những yếu tố tạo nên kết xuất dễ đọc.
Tất cả đều có thể xây dựng được và rất nhiều người đã xây dựng nó. Đó là một buổi chiều viết kịch bản và sau đó là một công cụ nhỏ mà bạn duy trì. Giao dịch là liệu bạn muốn tập lệnh hay đầu ra.
Mọi người thực sự sử dụng cái này để làm gì
- Cơ sở mã bạn vừa kế thừa. Ai đó đã rời đi và bây giờ có dịch vụ 40.000 đường dây của bạn. Chuyển đổi nó, dán nó và yêu cầu các điểm đầu vào, các phần tóm tắt chính và ba điểm những điều khiến người bảo trì mới ngạc nhiên nhất. Đó là một sự định hướng nhanh hơn bất kỳ sự chuyển giao nào tài liệu bạn sẽ được cung cấp.
- Tài liệu từ nguồn thực tế. README bị hỏng vì chúng được viết một lần. Tạo chúng từ mã hiện có — tổng quan về kiến trúc, tóm tắt mô-đun, thông tin chính xác danh sách các biến môi trường mà ứng dụng thực sự đọc.
- Kiểm tra mã chưa được 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ủa bạn, cách đặt tên, mẫu vật cố định của bạn, thay vì phát minh ra một quy ước thử nghiệm mà bạn không 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ể nhìn thấy mọi địa điểm cuộc gọi sẽ cung cấp cho bạn một kế hoạch thực tế hơn hơn là một danh sách kiểm tra chung chung.
- RAG và nhúng. Một tệp văn bản sạch có các phần được phân cách bằng đường dẫn là dễ dàng phân tách các dấu phân cách đó và đẩy vào kho lưu trữ vectơ.
Khi bạn hoàn tất, hãy sao chép kết quả đầu ra vào khay nhớ tạm hoặc tải xuống dưới dạng .txt tập tin - giá trị
giữ lại nếu bạn sử dụng lại cùng một bối cảnh trong một số cuộc hội thoại.
Mã chỉ là một nửa bối cảnh
Hầu hết các câu hỏi thực sự về một dự án cũng liên quan đến những thứ không phải là tệp nguồn. Thông số kỹ thuật tồn tại trong một PDF, lược đồ trong tệp JSON, cấu hình trong XML, dữ liệu trong CSV. Chuyển đổi chúng một cách riêng biệt và dán chúng cùng với kết xuất cơ sở mã của bạn: PDF sang Markdown cho thông số kỹ thuật và tài liệu của nhà cung cấp, Word sang Markdown cho tài liệu yêu cầu, JSON tới Markdown cho API tải trọng và lược đồ, XML tới Markdown cho di sản cấu hình, CSV tới Markdown cho mẫu dữ liệu và HTML tới Markdown cho các trang được xuất. Nếu bạn không muốn chọn một định dạng, File2Txt lấy bất cứ thứ gì bạn ném vào đó.
Câu hỏi thường gặp
Làm cách nào để chuyển đổi một thư mục thành một tập tin văn bản?
Chọn một thư mục ở trên và bạn sẽ có được cây của nó dưới dạng danh sách hộp kiểm. Đánh dấu vào các tệp bạn muốn và xuất một tệp văn bản - trước tiên là cấu trúc thư mục, sau đó đến từng tệp dưới tiêu đề có đường dẫn của nó. Miễn phí, không cần đăng ký, không cần cài đặt.
Mã của tôi có được tải lên máy chủ không?
Không. Không có máy chủ nào trong đường dẫn này cả. Thư mục được đọc trong trình duyệt, đầu ra được tập hợp trong trình duyệt và không có gì qua mạng - bạn có thể mở devtools và xem hoặc ngắt kết nối Internet sau khi tải trang và nó vẫn hoạt động. Đó là sự khác biệt giữa điều này và Công cụ chuyển đổi GitHub, phải gọi API.
Chuyển đổi cơ sở mã công ty trực tuyến có an toàn không?
Trang này là phiên bản trả lời câu hỏi đó bằng cơ học hơn là một lời hứa: các tập tin không bao giờ rời khỏi máy, vì vậy không có gì đáng tin cậy ở chúng tôi. Điều vẫn quan trọng là bạn làm gì tiếp theo — việc dán kết quả đầu ra vào một mô hình được lưu trữ sẽ gửi kết quả đó đến nhà cung cấp đó, vì vậy hãy kiểm tra chính sách của tổ chức của bạn và loại bỏ các bí mật trước khi thực hiện.
Tôi có thể chuyển đổi toàn bộ dự án bao gồm các thư mục con không?
Có, toàn bộ cây đều được đi lại và mọi cấp độ đều có thể lựa chọn. Việc bỏ chọn một thư mục sẽ xóa mọi thứ trong đó chỉ bằng một cú nhấp chuột, đó là cách bạn thả node_modules hoặc .git mà không săn lùng trẻ em. Bộ đếm mã thông báo cập nhật khi bạn thực hiện để bạn có thể thấy hiệu ứng ngay lập tức.
Trình duyệt nào có thể chọn toàn bộ thư mục?
Lựa chọn thư mục sử dụng thuộc tính tải lên thư mục mà Chrome, Edge, Firefox và Safari đều đã hỗ trợ trong nhiều năm, vì vậy mọi trình duyệt máy tính để bàn hiện tại đều hoạt động. Trình duyệt di động là khoảng trống - cả iOS và Android đều không hiển thị trình chọn thư mục. Trên điện thoại, nén thư mục và sử dụng ZIP thành văn bản thay vào đó.
Giới hạn kích thước tập tin là gì?
Không có tải lên nên không có giới hạn tải lên — hạn chế là bộ nhớ máy của bạn và lượng văn bản bạn có thể dán vào bất cứ đâu một cách hữu ích sau đó. Trong thực tế, bộ đếm mã thông báo trở thành giới hạn thực sự rất lâu trước khi trình duyệt thực hiện. Một kho lưu trữ có nguồn hữu ích dưới megabyte bao gồm hầu hết các dự án sau khi bỏ chọn các phần phụ thuộc.
Phần còn lại của bộ công cụ
Nếu mã được lưu trữ chứ không phải cục bộ, GitHub sang trình chuyển đổi văn bản và GitLab sang trình chuyển đổi văn bản làm tương tự công việc dựa trên kho lưu trữ từ xa, bao gồm cả kho lưu trữ riêng tư có mã thông báo. Đối với tài liệu chỉ tồn tại trên web, Web2Txt vết xước một URL thành Markdown sạch — ghép nối tham chiếu API cóp nhặt với nguồn cục bộ của bạn và trợ lý mã hóa có thể nhìn thấy cả hai bên cùng một lúc.
Có nhiều bài viết hơn trên blog nếu bạn muốn đi xa hơn: biến cơ sở mã thành tệp sẵn sàng LLM, hướng dẫn của chuyển đổi thư mục sang văn bản, một hướng dẫn để đưa toàn bộ kho lưu trữ vào AI, và cái chung hướng dẫn chuyển file sang văn bản cho mọi thứ không phải là mã.
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ư.