ml-intern贡献指南:如何为开源项目做贡献
【免费下载链接】ml-intern🤗 ml-intern: an open-source ML engineer that reads papers, trains models, and ships ML models项目地址: https://gitcode.com/GitHub_Trending/ml/ml-intern
ml-intern是一个开源的机器学习工程师项目,它能够阅读论文、训练模型并使用Hugging Face生态系统交付高质量的机器学习相关代码。本指南将详细介绍如何为ml-intern项目做贡献,帮助新手和普通用户快速参与到项目开发中。
1. 准备工作
1.1 安装环境
首先,你需要克隆项目仓库并安装必要的依赖。打开终端,执行以下命令:
git clone https://gitcode.com/GitHub_Trending/ml/ml-intern cd ml-intern uv sync uv tool install -e .1.2 配置环境变量
在项目根目录创建一个.env文件,或者在你的shell中导出以下环境变量:
ANTHROPIC_API_KEY=<your-anthropic-api-key> # 如果使用anthropic模型 HF_TOKEN=<your-hugging-face-token> GITHUB_TOKEN=<github-personal-access-token>如果未设置HF_TOKEN,CLI将在首次启动时提示你粘贴一个。获取GITHUB_TOKEN可以按照GitHub官方文档中的教程进行。
2. 贡献方式
2.1 添加内置工具
如果你想为ml-intern添加新的内置工具,可以编辑agent/core/tools.py文件。在create_builtin_tools函数中添加新的ToolSpec对象,示例如下:
def create_builtin_tools() -> list[ToolSpec]: return [ ToolSpec( name="your_tool", description="你的工具功能描述", parameters={ "type": "object", "properties": { "param": {"type": "string", "description": "参数描述"} }, "required": ["param"] }, handler=your_async_handler ), # ... 现有工具 ]2.2 添加MCP服务器
要添加MCP服务器,可以编辑configs/main_agent_config.json文件。在mcpServers对象中添加新的服务器配置,示例如下:
{ "model_name": "anthropic/claude-sonnet-4-5-20250929", "mcpServers": { "your-server-name": { "transport": "http", "url": "https://example.com/mcp", "headers": { "Authorization": "Bearer ${YOUR_TOKEN}" } } } }注意:像${YOUR_TOKEN}这样的环境变量会从.env文件中自动替换。
3. 提交贡献
3.1 代码风格
在提交代码之前,请确保你的代码符合项目的代码风格。虽然项目中没有明确提到代码风格指南,但建议遵循Python的PEP 8规范和TypeScript的相关最佳实践。
3.2 测试
为了确保你的贡献不会引入新的bug,建议添加相应的测试。项目的测试文件位于tests/unit/目录下,你可以参考现有的测试文件编写新的测试。
3.3 提交PR
当你完成代码编写和测试后,可以提交一个Pull Request (PR)。在PR中,请清晰地描述你的贡献内容,包括实现的功能、解决的问题等。项目维护者会审核你的PR,并提供反馈。
4. 项目架构概述
了解项目架构有助于你更好地理解代码结构,从而更有效地进行贡献。ml-intern的主要架构如下:
4.1 组件概览
┌─────────────────────────────────────────────────────────────┐ │ User/CLI │ └────────────┬─────────────────────────────────────┬──────────┘ │ Operations │ Events ↓ (user_input, exec_approval, ↑ submission_queue interrupt, compact, ...) event_queue │ │ ↓ │ ┌────────────────────────────────────────────────────┐ │ │ submission_loop (agent_loop.py) │ │ │ ┌──────────────────────────────────────────────┐ │ │ │ │ 1. Receive Operation from queue │ │ │ │ │ 2. Route to handler (run_agent/compact/...) │ │ │ │ └──────────────────────────────────────────────┘ │ │ │ ↓ │ │ │ ┌──────────────────────────────────────────────┐ │ │ │ │ Handlers.run_agent() │ ├──┤ │ │ │ │ │ │ │ ┌────────────────────────────────────────┐ │ │ │ │ │ │ Agentic Loop (max 300 iterations) │ │ │ │ │ │ │ │ │ │ │ │ │ │ ┌──────────────────────────────────┐ │ │ │ │ │ │ │ │ Session │ │ │ │ │ │ │ │ │ ┌────────────────────────────┐ │ │ │ │ │ │ │ │ │ │ ContextManager │ │ │ │ │ │ │ │ │ │ │ • Message history │ │ │ │ │ │ │ │ │ │ │ (litellm.Message[]) │ │ │ │ │ │ │ │ │ │ │ • Auto-compaction (170k) │ │ │ │ │ │ │ │ │ │ │ • Session upload to HF │ │ │ │ │ │ │ │ │ │ └────────────────────────────┘ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ┌────────────────────────────┐ │ │ │ │ │ │ │ │ │ │ ToolRouter │ │ │ │ │ │ │ │ │ │ │ ├─ HF docs & research │ │ │ │ │ │ │ │ │ │ │ ├─ HF repos, datasets, │ │ │ │ │ │ │ │ │ │ │ │ jobs, papers │ │ │ │ │ │ │ │ │ │ │ ├─ GitHub code search │ │ │ │ │ │ │ │ │ │ │ ├─ Sandbox & local tools │ │ │ │ │ │ │ │ │ │ │ ├─ Planning │ │ │ │ │ │ │ │ │ │ │ └─ MCP server tools │ │ │ │ │ │ │ │ │ │ └────────────────────────────┘ │ │ │ │ │ │ │ │ └──────────────────────────────────┘ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ┌──────────────────────────────────┐ │ │ │ │ │ │ │ │ Doom Loop Detector │ │ │ │ │ │ │ │ │ • Detects repeated tool patterns │ │ │ │ │ │ │ │ │ • Injects corrective prompts │ │ │ │ │ │ │ │ └──────────────────────────────────┘ │ │ │ │ │ │ │ │ │ │ │ │ │ │ Loop: │ │ │ │ │ │ │ 1. LLM call (litellm.acompletion) │ │ │ │ │ │ │ ↓ │ │ │ │ │ │ │ 2. Parse tool_calls[] │ │ │ │ │ │ │ ↓ │ │ │ │ │ │ │ 3. Approval check │ │ │ │ │ │ │ (jobs, sandbox, destructive ops) │ │ │ │ │ │ │ ↓ │ │ │ │ │ │ │ 4. Execute via ToolRouter │ │ │ │ │ │ │ ↓ │ │ │ │ │ │ │ 5. Add results to ContextManager │ │ │ │ │ │ │ ↓ │ │ │ │ │ │ │ 6. Repeat if tool_calls exist │ │ │ │ │ │ └────────────────────────────────────────┘ │ │ │ │ └──────────────────────────────────────────────┘ │ │ └────────────────────────────────────────────────────┴──┘4.2 智能代理循环流程
User Message ↓ [Add to ContextManager] ↓ ╔═══════════════════════════════════════════╗ ║ Iteration Loop (max 300) ║ ║ ║ ║ Get messages + tool specs ║ ║ ↓ ║ ║ litellm.acompletion() ║ ║ ↓ ║ ║ Has tool_calls? ──No──> Done ║ ║ │ ║ ║ Yes ║ ║ ↓ ║ ║ Add assistant msg (with tool_calls) ║ ║ ↓ ║ ║ Doom loop check ║ ║ ↓ ║ ║ For each tool_call: ║ ║ • Needs approval? ──Yes──> Wait for ║ ║ │ user confirm ║ ║ No ║ ║ ↓ ║ ║ • ToolRouter.execute_tool() ║ ║ • Add result to ContextManager ║ ║ ↓ ║ ║ Continue loop ─────────────────┐ ║ ║ ↑ │ ║ ║ └───────────────────────┘ ║ ╚═══════════════════════════════════════════╝5. 总结
通过本指南,你应该已经了解了如何为ml-intern项目做贡献。无论是添加新工具、配置MCP服务器,还是改进现有功能,你的每一个贡献都将帮助项目变得更好。如果你有任何问题,可以在项目的相关讨论区提问,社区会很乐意帮助你。
希望你能享受为开源项目贡献的过程,期待看到你的精彩贡献! 😊
【免费下载链接】ml-intern🤗 ml-intern: an open-source ML engineer that reads papers, trains models, and ships ML models项目地址: https://gitcode.com/GitHub_Trending/ml/ml-intern
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考