[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"similar-facebookresearch--CodeGen":3,"tool-facebookresearch--CodeGen":61},[4,18,26,36,44,53],{"id":5,"name":6,"github_repo":7,"description_zh":8,"stars":9,"difficulty_score":10,"last_commit_at":11,"category_tags":12,"status":17},4358,"openclaw","openclaw\u002Fopenclaw","OpenClaw 是一款专为个人打造的本地化 AI 助手，旨在让你在自己的设备上拥有完全可控的智能伙伴。它打破了传统 AI 助手局限于特定网页或应用的束缚，能够直接接入你日常使用的各类通讯渠道，包括微信、WhatsApp、Telegram、Discord、iMessage 等数十种平台。无论你在哪个聊天软件中发送消息，OpenClaw 都能即时响应，甚至支持在 macOS、iOS 和 Android 设备上进行语音交互，并提供实时的画布渲染功能供你操控。\n\n这款工具主要解决了用户对数据隐私、响应速度以及“始终在线”体验的需求。通过将 AI 部署在本地，用户无需依赖云端服务即可享受快速、私密的智能辅助，真正实现了“你的数据，你做主”。其独特的技术亮点在于强大的网关架构，将控制平面与核心助手分离，确保跨平台通信的流畅性与扩展性。\n\nOpenClaw 非常适合希望构建个性化工作流的技术爱好者、开发者，以及注重隐私保护且不愿被单一生态绑定的普通用户。只要具备基础的终端操作能力（支持 macOS、Linux 及 Windows WSL2），即可通过简单的命令行引导完成部署。如果你渴望拥有一个懂你",349277,3,"2026-04-06T06:32:30",[13,14,15,16],"Agent","开发框架","图像","数据工具","ready",{"id":19,"name":20,"github_repo":21,"description_zh":22,"stars":23,"difficulty_score":10,"last_commit_at":24,"category_tags":25,"status":17},3808,"stable-diffusion-webui","AUTOMATIC1111\u002Fstable-diffusion-webui","stable-diffusion-webui 是一个基于 Gradio 构建的网页版操作界面，旨在让用户能够轻松地在本地运行和使用强大的 Stable Diffusion 图像生成模型。它解决了原始模型依赖命令行、操作门槛高且功能分散的痛点，将复杂的 AI 绘图流程整合进一个直观易用的图形化平台。\n\n无论是希望快速上手的普通创作者、需要精细控制画面细节的设计师，还是想要深入探索模型潜力的开发者与研究人员，都能从中获益。其核心亮点在于极高的功能丰富度：不仅支持文生图、图生图、局部重绘（Inpainting）和外绘（Outpainting）等基础模式，还独创了注意力机制调整、提示词矩阵、负向提示词以及“高清修复”等高级功能。此外，它内置了 GFPGAN 和 CodeFormer 等人脸修复工具，支持多种神经网络放大算法，并允许用户通过插件系统无限扩展能力。即使是显存有限的设备，stable-diffusion-webui 也提供了相应的优化选项，让高质量的 AI 艺术创作变得触手可及。",162132,"2026-04-05T11:01:52",[14,15,13],{"id":27,"name":28,"github_repo":29,"description_zh":30,"stars":31,"difficulty_score":32,"last_commit_at":33,"category_tags":34,"status":17},1381,"everything-claude-code","affaan-m\u002Feverything-claude-code","everything-claude-code 是一套专为 AI 编程助手（如 Claude Code、Codex、Cursor 等）打造的高性能优化系统。它不仅仅是一组配置文件，而是一个经过长期实战打磨的完整框架，旨在解决 AI 代理在实际开发中面临的效率低下、记忆丢失、安全隐患及缺乏持续学习能力等核心痛点。\n\n通过引入技能模块化、直觉增强、记忆持久化机制以及内置的安全扫描功能，everything-claude-code 能显著提升 AI 在复杂任务中的表现，帮助开发者构建更稳定、更智能的生产级 AI 代理。其独特的“研究优先”开发理念和针对 Token 消耗的优化策略，使得模型响应更快、成本更低，同时有效防御潜在的攻击向量。\n\n这套工具特别适合软件开发者、AI 研究人员以及希望深度定制 AI 工作流的技术团队使用。无论您是在构建大型代码库，还是需要 AI 协助进行安全审计与自动化测试，everything-claude-code 都能提供强大的底层支持。作为一个曾荣获 Anthropic 黑客大奖的开源项目，它融合了多语言支持与丰富的实战钩子（hooks），让 AI 真正成长为懂上",154349,2,"2026-04-13T23:32:16",[14,13,35],"语言模型",{"id":37,"name":38,"github_repo":39,"description_zh":40,"stars":41,"difficulty_score":32,"last_commit_at":42,"category_tags":43,"status":17},2271,"ComfyUI","Comfy-Org\u002FComfyUI","ComfyUI 是一款功能强大且高度模块化的视觉 AI 引擎，专为设计和执行复杂的 Stable Diffusion 图像生成流程而打造。它摒弃了传统的代码编写模式，采用直观的节点式流程图界面，让用户通过连接不同的功能模块即可构建个性化的生成管线。\n\n这一设计巧妙解决了高级 AI 绘图工作流配置复杂、灵活性不足的痛点。用户无需具备编程背景，也能自由组合模型、调整参数并实时预览效果，轻松实现从基础文生图到多步骤高清修复等各类复杂任务。ComfyUI 拥有极佳的兼容性，不仅支持 Windows、macOS 和 Linux 全平台，还广泛适配 NVIDIA、AMD、Intel 及苹果 Silicon 等多种硬件架构，并率先支持 SDXL、Flux、SD3 等前沿模型。\n\n无论是希望深入探索算法潜力的研究人员和开发者，还是追求极致创作自由度的设计师与资深 AI 绘画爱好者，ComfyUI 都能提供强大的支持。其独特的模块化架构允许社区不断扩展新功能，使其成为当前最灵活、生态最丰富的开源扩散模型工具之一，帮助用户将创意高效转化为现实。",108322,"2026-04-10T11:39:34",[14,15,13],{"id":45,"name":46,"github_repo":47,"description_zh":48,"stars":49,"difficulty_score":32,"last_commit_at":50,"category_tags":51,"status":17},6121,"gemini-cli","google-gemini\u002Fgemini-cli","gemini-cli 是一款由谷歌推出的开源 AI 命令行工具，它将强大的 Gemini 大模型能力直接集成到用户的终端环境中。对于习惯在命令行工作的开发者而言，它提供了一条从输入提示词到获取模型响应的最短路径，无需切换窗口即可享受智能辅助。\n\n这款工具主要解决了开发过程中频繁上下文切换的痛点，让用户能在熟悉的终端界面内直接完成代码理解、生成、调试以及自动化运维任务。无论是查询大型代码库、根据草图生成应用，还是执行复杂的 Git 操作，gemini-cli 都能通过自然语言指令高效处理。\n\n它特别适合广大软件工程师、DevOps 人员及技术研究人员使用。其核心亮点包括支持高达 100 万 token 的超长上下文窗口，具备出色的逻辑推理能力；内置 Google 搜索、文件操作及 Shell 命令执行等实用工具；更独特的是，它支持 MCP（模型上下文协议），允许用户灵活扩展自定义集成，连接如图像生成等外部能力。此外，个人谷歌账号即可享受免费的额度支持，且项目基于 Apache 2.0 协议完全开源，是提升终端工作效率的理想助手。",100752,"2026-04-10T01:20:03",[52,13,15,14],"插件",{"id":54,"name":55,"github_repo":56,"description_zh":57,"stars":58,"difficulty_score":32,"last_commit_at":59,"category_tags":60,"status":17},4721,"markitdown","microsoft\u002Fmarkitdown","MarkItDown 是一款由微软 AutoGen 团队打造的轻量级 Python 工具，专为将各类文件高效转换为 Markdown 格式而设计。它支持 PDF、Word、Excel、PPT、图片（含 OCR）、音频（含语音转录）、HTML 乃至 YouTube 链接等多种格式的解析，能够精准提取文档中的标题、列表、表格和链接等关键结构信息。\n\n在人工智能应用日益普及的今天，大语言模型（LLM）虽擅长处理文本，却难以直接读取复杂的二进制办公文档。MarkItDown 恰好解决了这一痛点，它将非结构化或半结构化的文件转化为模型“原生理解”且 Token 效率极高的 Markdown 格式，成为连接本地文件与 AI 分析 pipeline 的理想桥梁。此外，它还提供了 MCP（模型上下文协议）服务器，可无缝集成到 Claude Desktop 等 LLM 应用中。\n\n这款工具特别适合开发者、数据科学家及 AI 研究人员使用，尤其是那些需要构建文档检索增强生成（RAG）系统、进行批量文本分析或希望让 AI 助手直接“阅读”本地文件的用户。虽然生成的内容也具备一定可读性，但其核心优势在于为机器",93400,"2026-04-06T19:52:38",[52,14],{"id":62,"github_repo":63,"name":64,"description_en":65,"description_zh":66,"ai_summary_zh":66,"readme_en":67,"readme_zh":68,"quickstart_zh":69,"use_case_zh":70,"hero_image_url":71,"owner_login":72,"owner_name":73,"owner_avatar_url":74,"owner_bio":75,"owner_company":76,"owner_location":76,"owner_email":76,"owner_twitter":76,"owner_website":77,"owner_url":78,"languages":79,"stars":115,"forks":116,"last_commit_at":117,"license":118,"difficulty_score":119,"env_os":120,"env_gpu":120,"env_ram":120,"env_deps":121,"category_tags":128,"github_topics":76,"view_count":32,"oss_zip_url":76,"oss_zip_packed_at":76,"status":17,"created_at":129,"updated_at":130,"faqs":131,"releases":159},7401,"facebookresearch\u002FCodeGen","CodeGen","Reference implementation of code generation projects from Facebook AI Research. General toolkit to apply machine learning to code, from dataset creation to model training and evaluation. Comes with pretrained models.","CodeGen 是 Facebook AI Research 推出的开源工具包，旨在将机器学习技术应用于编程领域。它提供了一套完整的解决方案，涵盖从数据集构建、代码预处理、模型训练到效果评估的全流程，并附带了多个预训练模型，帮助用户快速上手。\n\n该工具主要解决了代码生成、跨语言翻译及代码去混淆等任务中数据准备复杂、复现难度大的痛点。通过内置针对 C++、Java 和 Python 的处理器，CodeGen 能高效完成代码的分词、混淆处理及函数提取，让研究人员无需从零搭建底层设施即可开展实验。\n\nCodeGen 特别适合人工智能研究人员、算法工程师以及对代码大模型感兴趣的开发者使用。无论是希望复现 TransCoder、DOBF 等前沿论文成果，还是想要自定义训练特定编程语言的模型，它都能提供强有力的支持。\n\n其技术亮点在于基于 TreeSitter 解析器构建了灵活的语言处理框架，支持轻松扩展至三十多种编程语言；同时提供了 Fast BPE 和 Roberta BPE 等多种分词策略，并内置了标准化的数据预处理流水线，显著降低了高质量代码数据集的制作门槛。","This repository is a toolkit to do machine learning for programming languages. It implements tokenization, dataset preprocessing, model training and model evaluation.\n\nWe provide reference implementations of the following papers:\n- [TransCoder: Unsupervised Translation of Programming Languages](https:\u002F\u002Farxiv.org\u002Fpdf\u002F2006.03511.pdf) (2020)\n- [DOBF: A Deobfuscation Pre-Training Objective for Programming Languages](https:\u002F\u002Farxiv.org\u002Fpdf\u002F2102.07492.pdf) (2021)\n- [TransCoder-ST: Leveraging Automated Unit Tests for Unsupervised Code Translation](https:\u002F\u002Farxiv.org\u002Fpdf\u002F2110.06773.pdf) (2021)\n- [TransCoder-IR: Code Translation with Compiler Representations](https:\u002F\u002Farxiv.org\u002Fpdf\u002F2207.03578.pdf) (2022)\n\nWe also provide pre-trained models for language modeling, translation and deobfuscation.\n\nYou can find some documentation for each projects in the docs folder:\n- [TransCoder](docs\u002Ftranscoder.md).\n- [DOBF](docs\u002Fdobf.md)\n- [TransCoder-ST](docs\u002FTransCoder-ST.md)\n- [TransCoder-IR](docs\u002FTransCoder-IR.md)\n\n\n## Dependencies\nRun [install_env.sh](install_env.sh).\nWe use black code formatter.\n\n## Data\n### Source code processors\n\nThis repository contains [programming languages processors](codegen_sources\u002Fpreprocessing\u002Flang_processors\u002Flang_processor.py) for C++, Java and Python. These processors include:\n - tokenization and detokenization\n - obfuscation\n - function extractions \n \n These processors are based on [TreeSitter](https:\u002F\u002Ftree-sitter.github.io\u002Ftree-sitter\u002F) parsers. As these parsers are available in more than 30 programming languages, one can easily create a new programming language processor.\n\nExample of code tokenization:\n\n```python\nfrom codegen_sources.preprocessing.lang_processors.java_processor import JavaProcessor\n\njava_code = r\"\"\"class HelloWorld {\n    public static void main(String[] args) {\n        System.out.println(\"Hello, World!\"); \n    }\n}\"\"\"\njava_processor = JavaProcessor(root_folder=\"\u003CYOUR_TREESITER_FOLDER>\")\ntokenized_java_code = java_processor.tokenize_code(java_code)\nprint(tokenized_java_code)\n```\n\n### BPE\nThis repository provides wrappers for [fast BPE](codegen_sources\u002Fpreprocessing\u002Fbpe_modes\u002Ffast_bpe_mode.py) and [Roberta BPE](codegen_sources\u002Fpreprocessing\u002Fbpe_modes\u002Froberta_bpe_mode.py) at file level.\n\n### Dataset Preprocessing\n\nThis repository contains a [pipeline](codegen_sources\u002Fpreprocessing\u002Fpreprocess.py) to create programming languages datasets. Now it supports [four datasets modes](codegen_sources\u002Fpreprocessing\u002Fdataset_modes):\n- Monolingual (ex: Java source code) \n- Monolingual Functions (ex: Java functions) \n- Monolingual Obfuscated (ex: Obfuscated Java source code.)\n- Monolingual Obfuscated Functions (ex: Obfuscated Java functions)\n\nFirst, download C++ \u002F Java \u002F Python source code from [Google BigQuery](https:\u002F\u002Fcloud.google.com\u002Fblog\u002Fproducts\u002Fgcp\u002Fgithub-on-bigquery-analyze-all-the-open-source-code). To run our preprocessing pipeline, you need to donwload the raw source code on your machine in a JSON format. A sample of it is given [here](data\u002Ftest_dataset).\n\nThe pipeline does the following:\n- Source code extraction from json (`.json.gz`) and tokenization (`.tok`)\n- Train BPE codes and vocab \n- Apply BPE (`.bpe`)\n- Binarization (`.pth`)\n- Symlink folder with appropriate file names for `.pth` (XLM-syml). To be given as `data_path` argument for training.\n\nTo run the pipeline : \n\n```bash\npython -m codegen_sources.preprocessing.preprocess \\\n\u003CDATA_PATH> \\                            # folder containing json.gz\n--langs java cpp python  \\               # languages to process\n--mode monolingual_functions \\           # dataset mode\n--bpe_mode=fast \\                    # BPE mode. by default it is fast. can be roberta\n--local=True \\                           # Run on your local machine if True. If False run on a cluster (requires submitit setup)\n--train_splits=1                         # Number of trainings splits\n```\nIf you give several languages, the BPE codes and vocab will be learned commonly on these languages , so that you will have a common vocabulary to train one model for several languages. If you do not want that, launch the pipeline on every language separatly. [These tests](codegen_sources\u002Fpreprocessing\u002Ftests\u002Fpipeline\u002Ftest_pipeline.py) test the pipeline on different modes. It will give you an overview of the possible options. \n\nAlso, we provide the BPE codes and vocabulary [here](data\u002Fbpe\u002Fcpp-java-python). These are the codes and vocabulary used for TransCoder and DOBF. They were learned on concatenated C++, Java, and Python data. If you want to use them instead of learning new ones, give the corresponding paths as ```fastbpe_code_path``` and ```fastbpe_vocab_path``` arguments.\n\nIn TransCoder and DOBF readmes, we provide the commands to preprocess the respective datasets.\n\n\n## Model\n\n### Overview\nIn this repository, we provide [code](codegen_sources\u002Fmodel) to [train](codegen_sources\u002Fmodel\u002Ftrain.py) transformer-based models (code based on [XLM repository](https:\u002F\u002Fgithub.com\u002Ffacebookresearch\u002FXLM)). The available training tasks are the following:\n- Masked Language Model (MLM)\n- Causal Language Model (CLM)\n- Supervised Machine translation (MT)\n- Classification\n- Deobfuscation = DOBF \n- Unsupervised Machine translation = TransCoder (Denoising auto encoding AE + Back Translation BT) \n\nWe [evaluate](codegen_sources\u002Fmodel\u002Fsrc\u002Fevaluation\u002Fevaluator.py) our models with metrics adapted to each task (e.g. computation accuracy and BLEU score for TransCoder, subtoken score for Deobfuscation).\n\nAlso, we provide [wrappers](codegen_sources\u002Fwrappers) to fine-tune and evaluate our models on [CodeXGLUE](https:\u002F\u002Farxiv.org\u002Fpdf\u002F2102.04664.pdf) benchmark.\n\n\n### Download models\nYou can download the following models:\n- [MLM](docs\u002Fdobf.md#pre-trained-models)\n- [TransCoder](docs\u002Ftranscoder.md#pre-trained-models). Use it to translate some code [here](codegen_sources\u002Fmodel\u002Ftranslate.py).\n- [DOBF](docs\u002Fdobf.md#pre-trained-models). Use it to deobfuscate some code [here](codegen_sources\u002Fmodel\u002Fdeobfuscate.py).\n\n### Re train specific models\n\nTo have details on how to retrain specific models, please refer to the README specific to each model.\n- [TransCoder README](docs\u002Ftranscoder.md).\n- [DOBF README](docs\u002Fdobf.md)\n\n## References\n\n### TransCoder model (NeurIPS 2020)\n\n[1] B. Roziere*, M.A. Lachaux*, L. Chanussot, G. Lample [Unsupervised Translation of Programming Languages](https:\u002F\u002Fresearch.fb.com\u002Fwp-content\u002Fuploads\u002F2020\u002F11\u002FUnsupervised-Translation-of-Programming-Languages.pdf).\n\n```\n@article{roziere2020unsupervised,\n  title={Unsupervised translation of programming languages},\n  author={Roziere, Baptiste and Lachaux, Marie-Anne and Chanussot, Lowik and Lample, Guillaume},\n  journal={Advances in Neural Information Processing Systems},\n  volume={33},\n  year={2020}\n}\n```\n\n### DOBF\n\n[2] B. Roziere*, M.A. Lachaux*, M. Szafraniec , G. Lample [DOBF: A Deobfuscation Pre-Training Objective for Programming Languages](https:\u002F\u002Farxiv.org\u002Fabs\u002F2102.07492).\n\n```\n@article{roziere2021dobf,\n  title={{DOBF}: A Deobfuscation Pre-Training Objective for Programming Languages},\n  author={Roziere, Baptiste and Lachaux, Marie-Anne and Szafraniec, Marc and Lample, Guillaume},\n  journal={arXiv preprint arXiv:2102.07492},\n  year={2021}\n}\n```\n\n### TransCoder-ST\n[3] B. Roziere, J.M. Zhang, F. Charton, M. Harman, G. Synnaeve, G. Lample [Leveraging Automated Unit Tests for Unsupervised Code Translation](https:\u002F\u002Farxiv.org\u002Fpdf\u002F2110.06773.pdf).\n\n```\n@article{roziere2021leveraging,\n  title={Leveraging Automated Unit Tests for Unsupervised Code Translation},\n  author={Roziere, Baptiste and Zhang, Jie M and Charton, Francois and Harman, Mark and Synnaeve, Gabriel and Lample, Guillaume},\n  journal={ICLR},\n  year={2022}\n}\n```\n\n### TransCoder-IR\n```\n@article{szafraniec2022code,\n  title={Code translation with Compiler Representations},\n  author={Szafraniec, Marc and Roziere, Baptiste and Charton, Hugh Leather Francois and Labatut, Patrick and Synnaeve, Gabriel},\n  journal={ICLR},\n  year={2023}\n}\n```\n\n\\* Equal Contribution\n\n## License\nThe validation and test parallel datasets from GeeksForGeeks, and the evaluation scripts under [data\u002Ftranscoder_evaluation_gfg](data\u002Ftranscoder_evaluation_gfg) are released under the Creative Commons Attribution-ShareAlike 2.0 license. See https:\u002F\u002Fcreativecommons.org\u002Flicenses\u002Fby-sa\u002F2.0\u002F for more information.\n\nThe rest of the `CodeGen` repository is under the MIT license. See [LICENSE](LICENSE) for more details.\n","该仓库是一个用于编程语言机器学习的工具包。它实现了分词、数据集预处理、模型训练和模型评估等功能。\n\n我们提供了以下论文的参考实现：\n- [TransCoder：无监督编程语言翻译](https:\u002F\u002Farxiv.org\u002Fpdf\u002F2006.03511.pdf)（2020年）\n- [DOBF：面向编程语言的去混淆预训练目标](https:\u002F\u002Farxiv.org\u002Fpdf\u002F2102.07492.pdf)（2021年）\n- [TransCoder-ST：利用自动化单元测试进行无监督代码翻译](https:\u002F\u002Farxiv.org\u002Fpdf\u002F2110.06773.pdf)（2021年）\n- [TransCoder-IR：基于编译器表示的代码翻译](https:\u002F\u002Farxiv.org\u002Fpdf\u002F2207.03578.pdf)（2022年）\n\n我们还提供了用于语言建模、翻译和去混淆的预训练模型。\n\n您可以在docs文件夹中找到每个项目的相关文档：\n- [TransCoder](docs\u002Ftranscoder.md)\n- [DOBF](docs\u002Fdobf.md)\n- [TransCoder-ST](docs\u002FTransCoder-ST.md)\n- [TransCoder-IR](docs\u002FTransCoder-IR.md)\n\n\n## 依赖\n运行[install_env.sh](install_env.sh)脚本。我们使用black代码格式化工具。\n\n## 数据\n### 源代码处理器\n\n该仓库包含针对C++、Java和Python的[编程语言处理器](codegen_sources\u002Fpreprocessing\u002Flang_processors\u002Flang_processor.py)。这些处理器包括：\n - 分词与反分词\n - 去混淆\n - 函数提取\n \n 这些处理器基于[TreeSitter](https:\u002F\u002Ftree-sitter.github.io\u002Ftree-sitter\u002F)解析器。由于这些解析器支持超过30种编程语言，用户可以轻松创建新的编程语言处理器。\n\n代码分词示例：\n\n```python\nfrom codegen_sources.preprocessing.lang_processors.java_processor import JavaProcessor\n\njava_code = r\"\"\"class HelloWorld {\n    public static void main(String[] args) {\n        System.out.println(\"Hello, World!\"); \n    }\n}\"\"\"\njava_processor = JavaProcessor(root_folder=\"\u003CYOUR_TREESITER_FOLDER>\")\ntokenized_java_code = java_processor.tokenize_code(java_code)\nprint(tokenized_java_code)\n```\n\n### BPE\n该仓库提供了针对文件级别的[fast BPE](codegen_sources\u002Fpreprocessing\u002Fbpe_modes\u002Ffast_bpe_mode.py)和[Roberta BPE](codegen_sources\u002Fpreprocessing\u002Fbpe_modes\u002Froberta_bpe_mode.py)的封装。\n\n### 数据集预处理\n\n该仓库包含一个用于创建编程语言数据集的[流水线](codegen_sources\u002Fpreprocessing\u002Fpreprocess.py)。目前支持[四种数据集模式](codegen_sources\u002Fpreprocessing\u002Fdataset_modes)：\n- 单语（例如：Java源代码）\n- 单语函数（例如：Java函数）\n- 单语混淆代码（例如：混淆后的Java源代码）\n- 单语混淆函数（例如：混淆后的Java函数）\n\n首先，从[Google BigQuery](https:\u002F\u002Fcloud.google.com\u002Fblog\u002Fproducts\u002Fgcp\u002Fgithub-on-bigquery-analyze-all-the-open-source-code)下载C++\u002FJava\u002FPython源代码。要运行我们的预处理流水线，您需要将原始源代码以JSON格式下载到本地。示例数据可在[data\u002Ftest_dataset]中找到。\n\n流水线执行以下操作：\n- 从`.json.gz`文件中提取源代码并进行分词，生成`.tok`文件\n- 训练BPE编码和词汇表\n- 应用BPE，生成`.bpe`文件\n- 将数据二进制化，生成`.pth`文件\n- 创建指向`.pth`文件的符号链接，以便在训练时作为`data_path`参数传入。\n\n运行流水线的命令如下：\n\n```bash\npython -m codegen_sources.preprocessing.preprocess \\\n\u003CDATA_PATH> \\                            # 包含json.gz文件的文件夹\n--langs java cpp python  \\               # 需要处理的语言\n--mode monolingual_functions \\           # 数据集模式\n--bpe_mode=fast \\                    # BPE模式。默认为fast，也可设置为roberta\n--local=True \\                           # 如果为True，则在本地运行；若为False，则在集群上运行（需配置submitit）\n--train_splits=1                         # 训练分割的数量\n```\n如果您指定了多种语言，BPE编码和词汇表将基于这些语言共同学习，从而得到一个可用于训练多语言模型的通用词汇表。如果您不希望这样，可以分别对每种语言单独运行流水线。[这些测试](codegen_sources\u002Fpreprocessing\u002Ftests\u002Fpipeline\u002Ftest_pipeline.py)展示了流水线在不同模式下的运行情况，帮助您了解可用的选项。\n\n此外，我们还在[data\u002Fbpe\u002Fcpp-java-python]中提供了BPE编码和词汇表。这些是TransCoder和DOBF所使用的编码和词汇表，它们是在合并的C++、Java和Python数据上学习得到的。如果您想直接使用这些编码和词汇表，而不是重新学习，只需将相应的路径作为`fastbpe_code_path`和`fastbpe_vocab_path`参数传入即可。\n\n在TransCoder和DOBF的README文件中，我们提供了各自数据集预处理的具体命令。\n\n\n## 模型\n\n### 概述\n在本仓库中，我们提供了用于[训练](codegen_sources\u002Fmodel\u002Ftrain.py)基于Transformer的模型的[代码](codegen_sources\u002Fmodel)（代码基于[XLM仓库](https:\u002F\u002Fgithub.com\u002Ffacebookresearch\u002FXLM)）。可用的训练任务包括：\n- 掩码语言模型（MLM）\n- 因果语言模型（CLM）\n- 监督机器翻译（MT）\n- 分类\n- 去混淆 = DOBF\n- 无监督机器翻译 = TransCoder（去噪自编码AE + 反向翻译BT）\n\n我们使用针对不同任务的指标来[评估](codegen_sources\u002Fmodel\u002Fsrc\u002Fevaluation\u002Fevaluator.py)模型性能，例如TransCoder中的计算准确率和BLEU分数，以及去混淆任务中的子词得分。\n\n此外，我们还提供了用于在[CodeXGLUE](https:\u002F\u002Farxiv.org\u002Fpdf\u002F2102.04664.pdf)基准上微调和评估模型的[封装](codegen_sources\u002Fwrappers)。\n\n\n### 下载模型\n您可以下载以下模型：\n- [MLM](docs\u002Fdobf.md#pre-trained-models)\n- [TransCoder](docs\u002Ftranscoder.md#pre-trained-models)。可使用此模型在此处进行代码翻译：[codegen_sources\u002Fmodel\u002Ftranslate.py]。\n- [DOBF](docs\u002Fdobf.md#pre-trained-models)。可使用此模型在此处进行代码去混淆：[codegen_sources\u002Fmodel\u002Fdeobfuscate.py]。\n\n### 重新训练特定模型\n\n有关如何重新训练特定模型的详细信息，请参阅各模型的README文件。\n- [TransCoder README](docs\u002Ftranscoder.md)\n- [DOBF README](docs\u002Fdobf.md)\n\n## 参考文献\n\n### TransCoder模型（NeurIPS 2020）\n\n[1] B. Roziere*, M.A. Lachaux*, L. Chanussot, G. Lample [无监督编程语言翻译](https:\u002F\u002Fresearch.fb.com\u002Fwp-content\u002Fuploads\u002F2020\u002F11\u002FUnsupervised-Translation-of-Programming-Languages.pdf)。\n\n```\n@article{roziere2020unsupervised,\n  title={Unsupervised translation of programming languages},\n  author={Roziere, Baptiste and Lachaux, Marie-Anne and Chanussot, Lowik and Lample, Guillaume},\n  journal={Advances in Neural Information Processing Systems},\n  volume={33},\n  year={2020}\n}\n```\n\n### DOBF\n\n[2] B. Roziere*, M.A. Lachaux*, M. Szafraniec , G. Lample [DOBF：一种用于编程语言的去混淆预训练目标](https:\u002F\u002Farxiv.org\u002Fabs\u002F2102.07492)。\n\n```\n@article{roziere2021dobf,\n  title={{DOBF}: A Deobfuscation Pre-Training Objective for Programming Languages},\n  author={Roziere, Baptiste and Lachaux, Marie-Anne and Szafraniec, Marc and Lample, Guillaume},\n  journal={arXiv preprint arXiv:2102.07492},\n  year={2021}\n}\n```\n\n### TransCoder-ST\n[3] B. Roziere, J.M. Zhang, F. Charton, M. Harman, G. Synnaeve, G. Lample [利用自动化单元测试进行无监督代码翻译](https:\u002F\u002Farxiv.org\u002Fpdf\u002F2110.06773.pdf)。\n\n```\n@article{roziere2021leveraging,\n  title={Leveraging Automated Unit Tests for Unsupervised Code Translation},\n  author={Roziere, Baptiste and Zhang, Jie M and Charton, Francois and Harman, Mark and Synnaeve, Gabriel and Lample, Guillaume},\n  journal={ICLR},\n  year={2022}\n}\n```\n\n### TransCoder-IR\n```\n@article{szafraniec2022code,\n  title={Code translation with Compiler Representations},\n  author={Szafraniec, Marc and Roziere, Baptiste and Charton, Hugh Leather Francois and Labatut, Patrick and Synnaeve, Gabriel},\n  journal={ICLR},\n  year={2023}\n}\n```\n\n\\* 共同贡献\n\n## 许可证\n来自 GeeksForGeeks 的验证和测试并行数据集，以及位于 [data\u002Ftranscoder_evaluation_gfg](data\u002Ftranscoder_evaluation_gfg) 下的评估脚本，均采用知识共享署名-相同方式共享 2.0 许可证发布。更多信息请参见 https:\u002F\u002Fcreativecommons.org\u002Flicenses\u002Fby-sa\u002F2.0\u002F。\n\n`CodeGen` 仓库的其余部分则采用 MIT 许可证。更多详情请参阅 [LICENSE](LICENSE)。","# CodeGen 快速上手指南\n\nCodeGen 是一个用于编程语言机器学习的工具包，支持代码分词、数据集预处理、模型训练及评估。它实现了 TransCoder（代码翻译）、DOBF（代码去混淆）等前沿算法，并提供预训练模型。\n\n## 环境准备\n\n- **操作系统**：Linux \u002F macOS（Windows 需通过 WSL 运行）\n- **Python 版本**：建议 Python 3.7+\n- **核心依赖**：\n  - [TreeSitter](https:\u002F\u002Ftree-sitter.github.io\u002Ftree-sitter\u002F)：用于多语言代码解析\n  - `black`：代码格式化工具\n  - PyTorch 及相关深度学习库（由安装脚本自动处理）\n\n> **注意**：本项目基于 Facebook XLM 仓库构建，需确保网络通畅以下载相关依赖。国内用户若遇到连接问题，可配置 PyPI 镜像源（如 `pip install -i https:\u002F\u002Fpypi.tuna.tsinghua.edu.cn\u002Fsimple ...`）。\n\n## 安装步骤\n\n1. 克隆仓库并进入目录：\n   ```bash\n   git clone https:\u002F\u002Fgithub.com\u002Ffacebookresearch\u002FCodeGen.git\n   cd CodeGen\n   ```\n\n2. 运行官方提供的安装脚本配置环境：\n   ```bash\n   bash install_env.sh\n   ```\n\n3. （可选）验证代码格式化依赖：\n   ```bash\n   black --version\n   ```\n\n## 基本使用\n\n### 1. 代码分词示例\nCodeGen 内置了基于 TreeSitter 的 C++、Java 和 Python 处理器。以下展示如何对 Java 代码进行分词：\n\n```python\nfrom codegen_sources.preprocessing.lang_processors.java_processor import JavaProcessor\n\njava_code = r\"\"\"class HelloWorld {\n    public static void main(String[] args) {\n        System.out.println(\"Hello, World!\"); \n    }\n}\"\"\"\n# 请替换 \u003CYOUR_TREESITER_FOLDER> 为实际 TreeSitter 安装路径\njava_processor = JavaProcessor(root_folder=\"\u003CYOUR_TREESITER_FOLDER>\")\ntokenized_java_code = java_processor.tokenize_code(java_code)\nprint(tokenized_java_code)\n```\n\n### 2. 数据集预处理\n支持从原始源码构建单语、函数级或混淆数据集。首先需从 [Google BigQuery](https:\u002F\u002Fcloud.google.com\u002Fblog\u002Fproducts\u002Fgcp\u002Fgithub-on-bigquery-analyze-all-the-open-source-code) 下载 JSON 格式的源码数据。\n\n运行预处理流水线（以 Java 函数级数据集为例）：\n\n```bash\npython -m codegen_sources.preprocessing.preprocess \\\n\u003CDATA_PATH> \\                            # 包含 json.gz 文件的文件夹路径\n--langs java cpp python  \\               # 需要处理的语言\n--mode monolingual_functions \\           # 数据集模式：单语函数\n--bpe_mode=fast \\                        # BPE 模式：fast 或 roberta\n--local=True \\                           # 本地运行设为 True，集群运行设为 False\n--train_splits=1                         # 训练集切分数量\n```\n\n> **提示**：若指定多种语言，系统将学习共享的 BPE 词表，适用于多语言联合训练模型。若需独立词表，请分别对每种语言运行流水线。也可直接使用项目提供的预训练 BPE 代码和词表（位于 `data\u002Fbpe\u002Fcpp-java-python`）。\n\n### 3. 加载预训练模型\n项目提供多种预训练模型，可直接用于推理：\n\n- **代码翻译 (TransCoder)**：\n  ```bash\n  python codegen_sources\u002Fmodel\u002Ftranslate.py\n  ```\n- **代码去混淆 (DOBF)**：\n  ```bash\n  python codegen_sources\u002Fmodel\u002Fdeobfuscate.py\n  ```\n\n具体模型下载链接及详细参数配置请参阅 `docs` 文件夹下的对应文档（如 `docs\u002Ftranscoder.md`）。","某跨国金融科技公司急需将遗留的 C++ 高频交易核心模块迁移至 Python 以适配新的数据分析平台，但面临代码逻辑复杂且缺乏文档的挑战。\n\n### 没有 CodeGen 时\n- 工程师需人工逐行翻译数千行 C++ 代码，耗时数周且极易因疏忽引入逻辑错误。\n- 混淆变量名和复杂指针操作导致代码可读性差，团队难以准确理解原始业务逻辑。\n- 缺乏自动化验证手段，迁移后的代码必须依赖大量手动编写单元测试来确保功能一致。\n- 不同语言间的语法差异处理全靠经验，新手成员几乎无法参与核心迁移工作。\n\n### 使用 CodeGen 后\n- 利用 TransCoder 模型自动完成 C++ 到 Python 的无损转换，将数周的工期缩短至几天。\n- 通过 DOBF 预训练目标对混淆代码进行反混淆处理，清晰还原变量语义，大幅降低理解门槛。\n- 结合 TransCoder-ST 利用自动生成单元测试验证迁移结果，确保新旧代码行为严格一致。\n- 内置的 TreeSitter 解析器精准提取函数级代码片段，让团队成员能分模块并行处理迁移任务。\n\nCodeGen 将高风险、高成本的手动代码迁移转变为自动化、可验证的标准流程，显著提升了跨语言重构的效率与安全性。","https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Ffacebookresearch_CodeGen_0be8b567.png","facebookresearch","Meta Research","https:\u002F\u002Foss.gittoolsai.com\u002Favatars\u002Ffacebookresearch_449342bd.png","",null,"https:\u002F\u002Fopensource.fb.com","https:\u002F\u002Fgithub.com\u002Ffacebookresearch",[80,84,88,92,96,100,103,107,111],{"name":81,"color":82,"percentage":83},"Python","#3572A5",39.9,{"name":85,"color":86,"percentage":87},"Rust","#dea584",29,{"name":89,"color":90,"percentage":91},"Java","#b07219",12.8,{"name":93,"color":94,"percentage":95},"C","#555555",8.2,{"name":97,"color":98,"percentage":99},"C++","#f34b7d",6.6,{"name":101,"color":102,"percentage":10},"Go","#00ADD8",{"name":104,"color":105,"percentage":106},"HTML","#e34c26",0.2,{"name":108,"color":109,"percentage":110},"Shell","#89e051",0.1,{"name":112,"color":113,"percentage":114},"Perl","#0298c3",0,773,146,"2026-04-08T21:46:29","MIT",4,"未说明",{"notes":122,"python":120,"dependencies":123},"README 中未明确列出具体的操作系统、GPU、内存或 Python 版本要求。用户需运行 install_env.sh 脚本安装依赖。该工具基于 Facebook Research 的 XLM 仓库构建，支持 C++、Java 和 Python 的处理。若需在集群上运行预处理管道，需要配置 submitit 环境。Tree-sitter 解析器支持超过 30 种编程语言。",[124,125,126,127],"tree-sitter","fastBPE","submitit (可选，用于集群运行)","black (代码格式化)",[35,14,16],"2026-03-27T02:49:30.150509","2026-04-14T15:24:43.335348",[132,137,142,147,151,155],{"id":133,"question_zh":134,"answer_zh":135,"source_url":136},33210,"如何微调 TransCoder 模型进行代码翻译？","即使只有少量平行数据（例如 2388 个训练样本），也能观察到性能提升。关键是要确保训练数据与测试数据（如 TransCoder_gfg 测试集）没有重叠。建议从训练集中移除与测试集相同或几乎相同的函数。如果遇到问题，可以对比不同版本代码的输出，检查是否因语法错误增加导致差异。","https:\u002F\u002Fgithub.com\u002Ffacebookresearch\u002FCodeGen\u002Fissues\u002F12",{"id":138,"question_zh":139,"answer_zh":140,"source_url":141},33211,"在评估代码翻译模型时，测试集和验证集的数据格式有什么特殊要求？","如果使用类似项目组织的单元测试进行评估，需要在测试和验证序列的开头添加函数 ID，格式为 `ID | code`。评估代码会使用此 ID 查找对应的评估脚本。如果不使用单元测试进行评估，可以在运行命令时设置 `--has_sentence_id false` 和 `--eval_computation false`，这样就不需要在数据集中包含句子 ID 了。","https:\u002F\u002Fgithub.com\u002Ffacebookresearch\u002FCodeGen\u002Fissues\u002F40",{"id":143,"question_zh":144,"answer_zh":145,"source_url":146},33212,"预处理步骤完成后生成的 .pth 文件名带有后缀（如 _cl.pth, _sa.pth），导致训练时报错找不到文件怎么办？","这是因为预处理模式（如 monolingual_functions）生成了特定后缀的文件。如果在训练 MLM 模型时遇到找不到 `train.java.pth` 等文件的问题，请检查训练命令中的 `--mlm_steps` 参数是否与生成的文件后缀匹配（例如应指定 `java_sa` 而不是 `java`）。此外，如果不提供预训练的 BPE 代码和词汇表，管道会训练新的 BPE 模型；若想使用官方提供的模型，需下载并使用 data\u002Fbpe\u002Fcpp-java-python 目录下的 BPE tokens 和词汇表。还可以使用 `--keep_comments` 参数来保留注释。","https:\u002F\u002Fgithub.com\u002Ffacebookresearch\u002FCodeGen\u002Fissues\u002F4",{"id":148,"question_zh":149,"answer_zh":150,"source_url":146},33213,"运行预处理步骤时报错 \"there is no json in {folder}\" 是什么原因？","这通常是因为数据下载或保存格式不正确。当从 Google BigQuery 导出数据时，必须确保：1. 导出格式设置为 JSON；2. 压缩方式设置为 GZIP；3. 文件名格式正确（例如 `python-*.json`）。请检查存储在 Google Storage 中的文件是否符合这些要求，确保预处理脚本能正确识别并读取 JSON 文件。",{"id":152,"question_zh":153,"answer_zh":154,"source_url":136},33214,"用于 MLM 训练的数据应该是原始代码还是混淆后的代码？","根据社区复现经验，数据可以是原始的。在复现过程中，重要的是确保数据清洗和质量控制（例如过滤掉大量低质量数据是常见现象），并没有强制要求必须使用混淆数据。关键在于数据集的构建方式是否与测试域相似（例如都是小型算法函数）。",{"id":156,"question_zh":157,"answer_zh":158,"source_url":141},33215,"预处理生成的 test.java_cl-java_sa.java_cl.pth 文件是什么？","该文件通常是一个符号链接（symbolic link），指向实际的预处理文件（例如 `java.test.cl.bpe.pth`）。这是为了方便在不同语言对的任务中引用正确的数据文件。",[]]