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-internml-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_KEYyour-anthropic-api-key # 如果使用anthropic模型 HF_TOKENyour-hugging-face-token GITHUB_TOKENgithub-personal-access-token如果未设置HF_TOKENCLI将在首次启动时提示你粘贴一个。获取GITHUB_TOKEN可以按照GitHub官方文档中的教程进行。2. 贡献方式2.1 添加内置工具如果你想为ml-intern添加新的内置工具可以编辑agent/core/tools.py文件。在create_builtin_tools函数中添加新的ToolSpec对象示例如下def create_builtin_tools() - list[ToolSpec]: return [ ToolSpec( nameyour_tool, description你的工具功能描述, parameters{ type: object, properties: { param: {type: string, description: 参数描述} }, required: [param] }, handleryour_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),仅供参考