AutoDL 云服务器上安装 Kimi Code + NanoBot 并配置 GPU 使用完整教程

AutoDL 云服务器上安装 Kimi Code + NanoBot 并配置 GPU 使用完整教程

环境说明:PyTorch 2.8.0 / Python 3.12 / Ubuntu 22.04 / CUDA 12.8

目标:在 AutoDL 云服务器上安装 Kimi Code 和 NanoBot,并让 Kimi Code 帮我们"教会" NanoBot 使用服务器上的 GPU,实现一个 AI Agent 能自主调用 GPU 干活。
本博客全部操作流程均由 DeepSeek V4 与 Kimi Code 全程辅助完成

对话链接:https://chat.deepseek.com/share/55tp06oxipe38spewe


一、前言

最近发现了一个非常有趣的玩法:在 AutoDL 云服务器上安装 Kimi Code ,然后让 Kimi Code 帮我们管理和优化 NanoBot。这样一来,我们只需要把需求丢给 Kimi Code,它自己就能在服务器上干活,包括配置 GPU、写代码、跑实验,完全不用我们手动折腾。

这篇博客会完整记录整个过程,包括:

  • Kimi Code 的安装与登录
  • NanoBot 的安装与初始化
  • 配置 DeepSeek API
  • 让 Kimi Code 教会 NanoBot 使用 GPU
  • 最终验证

二、环境信息

项目 配置
云平台 AutoDL
镜像 PyTorch 2.8.0
Python 3.12
系统 Ubuntu 22.04
CUDA 12.8
GPU NVIDIA GeForce RTX 4080 SUPER (32GB)

三、安装 Kimi Code

Kimi Code 是 Kimi 推出的命令行 AI 编程助手,安装教程可以参考官网:

👉 https://www.kimi.com/code/docs/

3.1 添加 PATH(关键前置步骤)

在 Linux 环境下安装前,必须先执行以下命令,否则后续会报错:

bash 复制代码
export PATH="$HOME/.local/bin:$PATH"

⚠️ 如果不做这一步,直接运行安装脚本会报错 uv not found after installation

bash 复制代码
root@autodl-container-1b714b8fee-a95fb261:~# curl -LsSf https://code.kimi.com/install.sh | bash

downloading uv 0.11.7 x86_64-unknown-linux-gnu
installing to /root/.local/bin
  uv
  uvx
everything's installed!

To add $HOME/.local/bin to your PATH, either restart your shell or run:

    source $HOME/.local/bin/env (sh, bash, zsh)
    source $HOME/.local/bin/env.fish (fish)
Error: uv not found after installation.

3.2 执行安装命令

bash 复制代码
curl -LsSf https://code.kimi.com/install.sh | bash

安装完成后,在终端直接输入:

bash 复制代码
kimi

3.3 登录 Kimi Code

在 Kimi Code 交互界面中输入:

bash 复制代码
/login

选择 Kimi Code (输入 1):

bash 复制代码
1. Kimi Code

点击终端中出现的链接,跳转到网页完成登录:

登录成功后,Kimi Code 就可以正常使用了!

四、安装 NanoBot

NanoBot 是一个开源的 AI Agent 框架,GitHub 地址:

👉 https://github.com/HKUDS/nanobot

安装部署指南可以参考:

👉 NanoBot 安装部署完全指南:从零开始配置你的 AI 助手

4.1 使用 uv 安装 NanoBot

bash 复制代码
uv tool install nanobot-ai

4.2 初始化 NanoBot

bash 复制代码
nanobot onboard

初始化成功后,会显示如下输出:

bash 复制代码
root@autodl-container-1b714b8fee-a95fb261:~# nanobot onboard
✓ Created config at /root/.nanobot/config.json
2026-04-26 13:34:39.062 | DEBUG    | nanobot.channels.registry:discover_all:64 - Skipping built-in channel 'matrix': Matrix dependencies not installed. Run: pip install nanobot-ai[matrix]
  Created AGENTS.md
  Created HEARTBEAT.md
  Created SOUL.md
  Created TOOLS.md
  Created USER.md
  Created memory/MEMORY.md
  Created memory/history.jsonl
2026-04-26 13:34:41.331 | INFO     | nanobot.utils.gitstore:init:113 - Git store initialized at /root/.nanobot/workspace

🐈 nanobot is ready!

Next steps:
  1. Add your API key to /root/.nanobot/config.json
     Get one at: https://openrouter.ai/keys
  2. Chat: nanobot agent -m "Hello!" --config /root/.nanobot/config.json

Want Telegram/WhatsApp? See: https://github.com/HKUDS/nanobot#-chat-apps

NanoBot 的安装路径在 /root/.nanobot/,后续所有配置都在这个目录下。


五、配置 DeepSeek API

NanoBot 需要配置 LLM API 才能工作,这里我们使用 DeepSeek 的 API。

5.1 打开配置文件

在 AutoDL 上可以通过以下方式打开 /root/.nanobot/config.json

方式一 :文件 → 从路径打开,然后输入 /root/.nanobot/config.json

如果"从路径打开"不成功,可以用方式二。

方式二:先把文件复制到根目录,修改后再替换回去。

bash 复制代码
cp /root/.nanobot/config.json /root/

5.2 修改配置

修改后的配置内容如下(重点关注 agents.defaultsproviders.openai 部分):

json 复制代码
{
  "agents": {
    "defaults": {
      "workspace": "~/.nanobot/workspace",
      "model": "deepseek-v4-pro",
      "provider": "openai",
      "maxTokens": 8192,
      "contextWindowTokens": 65536,
      "contextBlockLimit": null,
      "temperature": 0.1,
      "maxToolIterations": 200,
      "maxToolResultChars": 16000,
      "providerRetryMode": "standard",
      "reasoningEffort": null,
      "timezone": "UTC",
      "unifiedSession": false,
      "disabledSkills": [],
      "idleCompactAfterMinutes": 0,
      "dream": {
        "intervalH": 2,
        "modelOverride": null,
        "maxBatchSize": 20,
        "maxIterations": 15,
        "annotateLineAges": true
      }
    }
  },

providers 部分添加 DeepSeek 的 API 配置:

json 复制代码
    "openai": {
      "apiKey": "sk-你的DeepSeek API密钥",
      "apiBase": "https://api.deepseek.com/v1",
      "extraHeaders": null
    },

💡 获取 API Key :前往 https://openrouter.ai/keys 或 DeepSeek 官方获取。

5.3 保存配置

如果用方式二复制的文件,修改完成后复制回原来路径:

bash 复制代码
cp /root/config.json /root/.nanobot/config.json

六、启动 NanoBot

配置完成后,启动 NanoBot 进入交互模式:

bash 复制代码
nanobot agent

到这里,NanoBot 已经在 AutoDL 上成功运行了!


七、让 Kimi Code 教会 NanoBot 使用 GPU(核心步骤)

这是整个教程最精彩的部分------让 Kimi Code 来帮我们优化和配置 NanoBot

7.1 启动 Kimi Code

bash 复制代码
kimi

7.2 给 Kimi Code 下任务

输入以下提示词,告诉 Kimi Code 当前环境和需求:

复制代码
我现在需要你帮养"nanobot",我先给你说说你(kimi code)和nanobot所在环境:
当前环境在AutoDL云服务器上,环境是:PyTorch  / 2.8.0 / 3.12(ubuntu22.04) / 12.8

nanobot的路径在:/root/.nanobot

nanobot的项目github:https://github.com/HKUDS/nanobot

然后这里有一块GPU,你试试可以调用这个GPU不?然后你教会nanobot来使用GPU。你需要告诉我如何教会nanobot使用GPU的。

7.3 Kimi Code 的自动处理过程(完整记录)

Kimi Code 收到任务后,开始自主分析并执行操作。下面是完整的处理过程:

bash 复制代码
root@autodl-container-c904489327-a588448e:~# kimi
╭────────────────────────────────────────────────────────────────────────────────────────────────────────────╮
│                                                                                                            │
│   ▐█▛█▛█▌  Welcome to Kimi Code CLI!                                                                       │
│   ▐█████▌  Send /help for help information.                                                                │
│                                                                                                            │
│  Directory: ~                                                                                              │
│  Session: b50b72bb-43a3-400a-92c6-0223a8e01279                                                             │
│  Model: Kimi-k2.6                                                                                          │
│                                                                                                            │
│  Tip: Spot a bug or have feedback? Type /feedback right in this session --- every report makes Kimi better.  │
│                                                                                                            │
╰────────────────────────────────────────────────────────────────────────────────────────────────────────────╯
✨ 我现在需要你帮养"nanobot",我先给你说说你(kimi code)和nanobot所在环境:
当前环境在AutoDL云服务器上,环境是:PyTorch  / 2.8.0 / 3.12(ubuntu22.04) / 12.8

nanobot的路径在:/root/.nanobot

nanobot的项目github:https://github.com/HKUDS/nanobot

然后这里有一块GPU,你试试可以调用这个GPU不?然后你教会nanobot来使用GPU。你需要告诉我如何教会nanobot使用GPU的。
• 用户需要我:

  1. 检查当前环境中的GPU是否可用
  2. 查看nanobot项目(在/root/.nanobot)
  3. 教会nanobot使用GPU
  4. 告诉用户我是如何做的

  让我先了解nanobot是什么,以及检查GPU情况。
• Used Shell (nvidia-smi)
• Used Shell (cat /root/.nanobot/config.json)
• Used Shell (ls -la /root/.nanobot/)
• 首先,让我了解nanobot是什么项目。用户提到了GitHub地址:https://github.com/HKUDS/nanobot。让我先了解一下nanobot项目的详情,以及它的GPU使用情况。

  当前环境:

  • GPU: NVIDIA GeForce RTX 4080 SUPER, 32GB显存
  • CUDA Version: 13.0
  • PyTorch 2.8.0
  • Python 3.12

  nanobot在/root/.nanobot,但看起来这里主要是配置目录。我需要看看workspace里面有什么,以及nanobot是否有其他安装位置或者代码仓库。

  让我先搜索一下nanobot的安装位置,以及它是否支持GPU。
• Used Shell (which nanobot 2>/dev/null... f 2>/dev/null | head -20)
• Used Shell (ls -la /root/.nanobot/workspace/)
• Used Shell (pip show nanobot 2>/dev/n...not found as pip package")
• Used Shell (python -c "import torch; ...available() else None}')")
• 好的,让我继续了解nanobot。它似乎是一个可执行文件在/root/.local/bin/nanobot。我需要看看它是什么类型的文件,以及它的来源。

  用户说nanobot的GitHub是:https://github.com/HKUDS/nanobot

  我需要:

  1. 了解nanobot是什么,是否支持GPU
  2. 检查nanobot的代码结构
  3. 看看它是否有使用GPU的功能

  让我先看看nanobot可执行文件是什么,以及是否有源码安装。
• Used Shell (file /root/.local/bin/nanobot)
• Used Shell (ls -la /root/.local/bin/nanobot)
• Used Shell (head -c 2000 /root/.local/bin/nanobot)
• Used Shell (find / -path "*/nanobot*"... d 2>/dev/null | head -20)
• 好的,nanobot是一个通过uv安装的Python包。让我深入了解nanobot的代码,看看它是否已经有GPU支持,或者是否需要配置。

  让我先看看nanobot的源码结构。
• Used Shell (ls -la /root/.local/share...13/site-packages/nanobot/)
• Used Shell (cat /root/.nanobot/workspace/AGENTS.md)
• Used Shell (cat /root/.nanobot/workspace/TOOLS.md)
• Used Shell (cat /root/.nanobot/workspace/SOUL.md)
• 让我继续了解nanobot的代码,特别是skills目录,因为用户说需要"教会"nanobot使用GPU。我需要看看nanobot是否已经有相关的skill,或者它是否支持自定义skill。

  让我看看skills目录和agent目录。
• Used Shell (ls -la /root/.local/share...-packages/nanobot/skills/)
• Used Shell (ls -la /root/.nanobot/workspace/skills/)
• Used Shell (cat /root/.local/share/uv...anobot/skills/__init__.py)
  Failed with exit code: 1
• Used Shell (find /root/.local/share/u...epth 1 -type d | head -20)
• 让我继续查看nanobot的skill结构和README,了解如何创建自定义skill。
• Used Shell (cat /root/.local/share/uv.../nanobot/skills/README.md)
• Used Shell (ls -la /root/.local/share...bot/skills/skill-creator/)
• Used Shell (cat /root/.local/share/uv...ls/skill-creator/SKILL.md)
• 现在我对nanobot有了较好的理解。nanobot是一个AI agent框架,它通过skills来扩展能力。用户的请求是"教会nanobot使用GPU"。

  我需要理解用户所说的"教会nanobot使用GPU"是什么意思。nanobot本身是一个LLM agent框架,它不直接运行深度学习模型,而是调用工具(包括exec来运行命令)。但是,用户可能希望:

  1. nanobot能够感知到GPU的存在,并在需要时利用GPU(比如运行PyTorch代码、训练模型等)
  2. 创建一个skill,让nanobot知道如何在当前环境中使用GPU

  让我先看看nanobot当前的配置和工具设置,特别是exec工具的配置。从config.json中可以看到:

  "exec": {
    "enable": true,
    "timeout": 60,
    "pathAppend": "",
    "sandbox": "",
    "allowedEnvKeys": []
  }

  GPU在PyTorch中已经是可用的:

  • PyTorch 2.8.0+cu128
  • CUDA available: True
  • GPU: NVIDIA GeForce RTX 4080 SUPER

  所以问题可能是:

  1. nanobot运行在一个隔离的Python环境中(uv tools environment, Python 3.13),而PyTorch是安装在系统环境(miniconda3, Python 3.12)中的
  2. nanobot的exec工具可能无法访问到正确的CUDA和PyTorch环境

  让我检查一下nanobot运行时使用的Python环境,以及系统Python环境的情况。
• Used Shell (/root/.local/share/uv/too...Torch not in nanobot env")
• Used Shell (which python && python --version)
• Used Shell (conda info --envs 2>/dev/null || echo "no conda")
• Used Shell (python -c "import torch; ...available() else None}')")
• 现在我理解了问题所在:

  1. nanobot运行在自己的uv隔离环境中(Python 3.13),这个环境里没有PyTorch,也没有CUDA支持。
  2. 系统上有一个conda base环境(Python 3.12),里面安装了PyTorch 2.8.0+cu128,可以正常使用GPU。
  3. 当nanobot使用exec工具执行命令时,它默认使用的是nanobot自己的Python环境,无法访问到PyTorch和GPU。

  要"教会nanobot使用GPU",我需要:

  1. 让nanobot的exec工具能够访问到正确的conda环境(或者让nanobot的Python环境也能使用GPU)
  2. 创建一个skill,告诉nanobot关于GPU的信息,以及如何在当前环境中使用它

  有几种方案:

  1. 在nanobot的uv环境中安装PyTorch - 这样nanobot自己就能import torch。但是uv环境是Python 3.13,而PyTorch 2.8.0+cu128是为Python 3.12安装的。
  2. 配置nanobot的exec工具,使其使用conda环境的Python - 修改pathAppend或者设置环境变量,让exec调用时能找到conda的python和torch。
  3. 创建一个GPU skill - 让nanobot知道GPU的存在,以及在执行涉及GPU的任务时使用conda环境。

  让我先检查uv能否给nanobot环境安装torch,或者是否可以通过conda来激活环境。

  实际上最简单的方法可能是:

  • 让nanobot的exec工具默认使用 /root/miniconda3/bin/python 而不是它自己的python
  • 或者在config.json中设置 pathAppend 包含conda路径
  • 或者创建一个skill,告诉nanobot在执行涉及GPU的代码时,使用完整路径 /root/miniconda3/bin/python

  让我看看nanobot exec工具的实现,了解它是如何执行命令的。
• Used Shell (cat /root/.local/share/uv...init_skill.py | head -100)
• Used Shell (grep -r "exec" /root/.loc...l\|class\|def" | head -20)
• Used Shell (find /root/.local/share/u...exec\|sandbox" | head -10)
• 让我查看nanobot的exec工具具体实现,特别是它如何执行命令和环境变量设置。
• Used Shell (find /root/.local/share/u...ool\|def exec" | head -10)
• Used Shell (grep -r "ExecTool\|exec_t...ools/ --include="*.py" -l)
• 让我查看shell.py中exec工具的实现。
• Used ReadFile (.local/share/uv/tools/nan...obot/agent/tools/shell.py)
• 现在我理解了nanobot的exec工具是如何工作的:

  1. 在Linux上,它使用 bash -l -c 来执行命令
  2. 环境变量只传递 HOME, LANG, TERM,以及 allowed_env_keys 中指定的环境变量
  3. bash -l 会加载用户的profile(.bashrc, .profile等),所以PATH等变量会在shell启动时从profile中加载
  4. path_append 会在命令前添加 export PATH="$PATH:...

  所以nanobot执行命令时,理论上可以访问到系统的conda环境(因为.bashrc通常会配置conda)。

  让我测试一下nanobot执行命令时能否访问到GPU相关的工具。
• Used Shell (bash -l -c "which python ...ch.cuda.is_available())'")
• Used Shell (cat /root/.bashrc | grep ...da\|miniconda" | head -30)
• Used Shell (bash -l -c 'echo $PATH')
• 好的,bash -l 环境下可以正确访问conda的python和torch.cuda。所以nanobot的exec工具实际上已经可以调用GPU了,因为exec工具使用bash -l -c来执行命令。

  但是问题在于:

  1. nanobot自己(它的Python进程)运行在uv的隔离环境中,无法import torch
  2. nanobot的exec工具通过bash -l -c执行命令时,实际上可以访问conda环境的python和torch

  所以如果用户想要nanobot"使用GPU",可能需要:

  1. 让nanobot知道GPU的存在,这样它在回答相关问题时能利用GPU
  2. 创建一个skill,告诉nanobot当前环境有GPU,以及如何在exec中调用GPU相关的工具

  让我再检查一下nanobot是否有其他方式来直接运行Python代码(而不是通过shell exec)。
• Used Shell (grep -r "python\|python3"...include="*.py" | head -20)
• Used Shell (cat /root/.nanobot/workspace/USER.md)
• Used Shell (cat /root/.nanobot/workspace/HEARTBEAT.md)
• 让我整理一下目前的发现:

  1. GPU可用性:系统上有一块NVIDIA RTX 4080 SUPER (32GB),CUDA 12.8,PyTorch 2.8.0+cu128已经安装在conda base环境(Python 3.12)中,可以正常使用GPU。
  2. nanobot的环境问题:
    • nanobot本身运行在uv隔离环境中(Python 3.13),这个环境里没有PyTorch
    • 但是nanobot的exec工具使用bash -l -c执行命令,会加载用户profile,所以exec中可以访问conda环境的python和torch
  3. 如何"教会"nanobot使用GPU: 用户所说的"教会",在nanobot的语境下,最合理的解释是创建一个skill,让nanobot知道:
    • 当前环境有GPU
    • GPU的规格和CUDA版本
    • 如何在当前环境中调用GPU(使用conda base环境的python,而不是nanobot自己的python)
     然后还需要确保nanobot的exec配置正确,让GPU环境变量(如CUDA_VISIBLE_DEVICES等)可以传递。

  让我再看看nanobot的notebook工具,因为它提到了python kernel,看看是否有相关的配置。
• Used ReadFile (.local/share/uv/tools/nan...t/agent/tools/notebook.py)
• Used Shell (grep -r "kernel\|jupyter\...include="*.py" | head -20)
• 现在我有了完整的理解。让我总结:

  nanobot使用GPU的能力现状:

  • nanobot的exec工具使用bash -l -c执行命令,会自动加载用户profile,所以可以访问conda环境中的python和pytorch
  • 但nanobot自己运行的uv环境(Python 3.13)没有安装PyTorch

  "教会"nanobot使用GPU的最佳方式:

  1. 创建一个gpu skill,包含:
    • 当前环境的GPU信息(RTX 4080 SUPER, 32GB, CUDA 12.8)
    • PyTorch安装位置(conda base环境, Python 3.12)
    • 告诉nanobot在执行涉及GPU的Python代码时,使用/root/miniconda3/bin/python而不是默认的python
  2. 确保exec工具的环境变量配置正确:
    • allowedEnvKeys应该包含CUDA相关的环境变量(如CUDA_VISIBLE_DEVICES, CUDA_HOME等)
    • pathAppend应该包含conda和cuda的路径

  让我先测试一下nanobot exec环境下nvidia-smi和python torch的可用性。
• Used Shell (bash -l -c "nvidia-smi --...ailable() else None}\")'")
  Failed with exit code: 2
• Used Shell (echo $CUDA_HOME && ls -la...ocal/cuda/bin/ | head -10)
• Used Shell (cat /root/.local/share/uv...py | grep -A20 "def main")
• 让我继续执行。我需要:

  1. 创建一个gpu skill
  2. 配置nanobot的config.json,确保GPU环境变量可以传递

  让我先检查当前config.json中allowedEnvKeys是否为空,然后添加CUDA相关的环境变量。

  让我也检查一下/usr/local/cuda是否存在以及CUDA_HOME的情况。
• Used Shell (ls -la /usr/local/cuda &&...| echo "no cuda-12.8 dir")
• Used Shell (bash -l -c 'echo $CUDA_HO...E; echo $LD_LIBRARY_PATH')
• Used Shell (cat /etc/environment 2>/d...cho "no /etc/environment")
• 我现在需要做的:

  1. 创建gpu skill - 让nanobot知道环境中有GPU,以及如何使用
  2. 更新config.json - 添加GPU相关的环境变量到allowedEnvKeys,这样exec子进程可以继承这些变量
  3. 可能需要更新USER.md - 添加一些关于GPU环境的信息

  让我先用init_skill.py创建skill,然后手动编辑。

  实际上,我可以直接手动创建skill目录和文件,这样更快捷。

  另外,我还需要确认bash -l是否能正确加载conda环境。让我测试一下。
• Used Shell (bash -l -c 'echo $CONDA_D...NDA_PREFIX; which python')
• Used Shell (bash -l -c '/root/minicon...cuda.get_device_name(0))")
  Failed with exit code: 2
• Used Shell (bash -l -c 'nvidia-smi --...on --format=csv,noheader')
• 引号问题,让我修复。
• Used Shell (bash -l -c "/root/minicon...uda.get_device_name(0))'")
• 现在我已经确认了:

  1. bash -l 环境下可以访问conda python和torch
  2. GPU是RTX 4080 SUPER,32GB显存,驱动580.76.05
  3. PyTorch 2.8.0+cu128,CUDA可用

  接下来我需要:

  1. 创建一个 gpu skill,放在 /root/.nanobot/workspace/skills/gpu/
  2. 更新 config.json,添加 allowedEnvKeys 包含 CUDA 相关环境变量
  3. 可能需要更新 USER.md 添加GPU环境信息

  让我开始创建skill和更新配置。

  对于skill,我需要创建:

  • /root/.nanobot/workspace/skills/gpu/SKILL.md

  内容应该包括:

  • 环境GPU信息
  • 告诉nanobot在执行GPU相关任务时使用conda python
  • 提供torch版本和CUDA版本信息

  对于config.json更新:

  • tools.exec.allowedEnvKeys 添加 CUDA_VISIBLE_DEVICES, CUDA_HOME, LD_LIBRARY_PATH, CONDA_DEFAULT_ENV 等
  • tools.exec.pathAppend 添加 /usr/local/cuda/bin:/root/miniconda3/bin

  让我直接操作。
• Used Shell (mkdir -p /root/.nanobot/workspace/skills/gpu)
• Used WriteFile (.nanobot/workspace/skills/gpu/SKILL.md)
  ╭─  +50 /root/.nanobot/workspace/skills/gpu/SKILL.md  ──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╮
  │  1 + ---                                                                                                                                                                  │
  │  2 + name: gpu                                                                                                                                                            │
  │  3 + description: GPU computing on AutoDL with NVIDIA RTX 4080 SUPER. Use when the user asks about GPU, CUDA, PyTorch, deep learning, model training/inference, or any t... │
  │  4 + ---                                                                                                                                                                  │
  │  5 +                                                                                                                                                                      │
  │  6 + # GPU Environment                                                                                                                                                    │
  │  7 +                                                                                                                                                                      │
  │  8 + This skill describes the local GPU environment available to nanobot.                                                                                                 │
  │  9 +                                                                                                                                                                      │
  │ 10 + ## Hardware                                                                                                                                                          │
  │ 11 +                                                                                                                                                                      │
  │ 12 + - **GPU**: NVIDIA GeForce RTX 4080 SUPER                                                                                                                             │
  │ 13 + - **VRAM**: 32 GB (32760 MiB)                                                                                                                                        │
  │ 14 + - **Driver**: 580.76.05                                                                                                                                              │
  │ 15 + - **CUDA Version**: 12.8                                                                                                                                             │
  │ 16 +                                                                                                                                                                      │
  │ 17 + ## Software Stack                                                                                                                                                    │
  │ 18 +                                                                                                                                                                      │
  │ 19 + - **PyTorch**: 2.8.0+cu128 (installed in conda base environment)                                                                                                     │
  │ 20 + - **Python (with GPU support)**: /root/miniconda3/bin/python (Python 3.12.3)                                                                                         │
  │ 21 + - **CUDA Toolkit**: /usr/local/cuda (symlink to CUDA 12.8)                                                                                                           │
  │ 22 + - **Conda**: /root/miniconda3 (base environment)                                                                                                                     │
  │ 23 +                                                                                                                                                                      │
  │ 24 + ## Critical Usage Rules                                                                                                                                              │
  │ 25 +                                                                                                                                                                      │
  │ 26 + 1. **Always use `/root/miniconda3/bin/python` for GPU tasks**                                                                                                        │
  │ 27 +    - nanobot runs in its own uv-isolated Python 3.13 environment which does NOT have PyTorch or CUDA support.                                                        │
  │ 28 +    - The conda base environment has PyTorch 2.8.0+cu128 and full GPU support.                                                                                        │
  │ 29 +    - When writing or running Python scripts that need GPU, explicitly invoke them with `/root/miniconda3/bin/python script.py`.                                      │
  │ 30 +                                                                                                                                                                      │
  │ 31 + 2. **When running shell commands with exec:**                                                                                                                        │
  │ 32 +    - `bash -l` automatically loads conda into PATH, so `python` inside exec usually resolves to `/root/miniconda3/bin/python`.                                       │
  │ 33 +    - But to be safe, always use the full path `/root/miniconda3/bin/python` for GPU-dependent code.                                                                  │
  │ 34 +                                                                                                                                                                      │
  │ 35 + 3. **Common verification commands:**                                                                                                                                 │
  │ 36 +    ```bash                                                                                                                                                           │
  │ 37 +    /root/miniconda3/bin/python -c "import torch; print(torch.cuda.is_available()); print(torch.cuda.get_device_name(0))"                                             │
  │ 38 +    nvidia-smi                                                                                                                                                        │
  │ 39 +    ```                                                                      │
  │ 40 +                                                                                                                                                                      │
  │ 41 + 4. **Environment variables preserved in exec:**                                                                                                                      │
  │ 42 +    - `CUDA_VISIBLE_DEVICES`, `CUDA_HOME`, `LD_LIBRARY_PATH`, `CONDA_PREFIX`, `CONDA_DEFAULT_ENV`                                                                     │
  │ 43 +    - These are forwarded to subprocesses via `tools.exec.allowedEnvKeys` in config.json.                                                                             │
  │ 44 +                                                                                                                                                                      │
  │ 45 + ## Typical Workflows                                                                                                                                                 │
  │ 46 +                                                                                                                                                                      │
  │ 47 + - **Run a PyTorch script**: `/root/miniconda3/bin/python my_script.py`                                                                                               │
  │ 48 + - **Install GPU packages**: `/root/miniconda3/bin/pip install ...` or `conda install ...`                                                                            │
  │ 49 + - **Check GPU status**: `nvidia-smi`                                                                                                                                 │
  │ 50 + - **Jupyter with GPU**: Use `/root/miniconda3/bin/python -m jupyter ...` if needed                                                                                   │
  ╰───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯
• Used StrReplaceFile (.nanobot/config.json)
  ╭─  +2 -2 /root/.nanobot/config.json  ──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╮
  │ 387       "exec": {                                                                                                                                                       │
  │ 388         "enable": true,                                                                                                                                               │
  │ 389         "timeout": 60,                                                                                                                                                │
  │ 390 -       "pathAppend": "",                                                                                                                                             │
  │ 390 +       "pathAppend": "/usr/local/cuda/bin:/root/miniconda3/bin",                                                                                                     │
  │ 391         "sandbox": "",                                                                                                                                                │
  │ 392 -       "allowedEnvKeys": []                                                                                                                                          │
  │ 392 +       "allowedEnvKeys": ["CUDA_VISIBLE_DEVICES", "CUDA_HOME", "LD_LIBRARY_PATH", "CONDA_PREFIX", "CONDA_DEFAULT_ENV", "CONDA_SHLVL", "PATH"]                        │
  │ 393       },                                                                                                                                                              │
  │ 394       "my": {                                                                                                                                                         │
  │ 395         "enable": true,                                                                                                                                               │
  ╰───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯
• 好的,我已经创建了gpu skill并更新了config.json。现在让我验证一下配置是否正确,然后测试一下nanobot是否能正确使用GPU。

  我还需要:

  1. 验证config.json的JSON格式正确
  2. 确保skill能被nanobot识别
  3. 可能需要更新USER.md,添加GPU相关的工具使用信息
  4. 重启nanobot使配置生效(如果需要)

  让我先验证JSON格式和skill结构。
• Used Shell (python -m json.tool /root...onfig.json is valid JSON")
• Used Shell (ls -la /root/.nanobot/workspace/skills/gpu/)
• Used Shell (cat /root/.nanobot/config...json | grep -A10 '"exec"')
• 现在让我再验证一下nanobot的skill是否被正确加载。我需要检查nanobot的日志或者启动nanobot看看是否能识别新skill。

  另外,我还需要检查nanobot是否正在运行,以及如何重启它。
• Used Shell (ps aux | grep nanobot | grep -v grep)
  Failed with exit code: 1
• Used Shell (cat /root/.nanobot/workspace/AGENTS.md)
• Used Shell (cat /root/.nanobot/workspace/USER.md)
• nanobot当前没有在运行。让我更新USER.md添加一些GPU环境信息,然后验证整个配置。

  我还应该测试一下skill是否能被nanobot识别。不过因为nanobot没在运行,我可以直接检查skill文件结构是否正确。

  让我也确保config.json的其他部分没有问题,特别是channels和providers。

  我还需要考虑一个问题:config.json中有一些敏感的API key(deepseek的api key)。我应该在回复中提醒用户注意安全。

  现在让我确认一下我的改动是否完整:

  1. ✅ 创建了 /root/.nanobot/workspace/skills/gpu/SKILL.md
  2. ✅ 更新了 config.json:
    • tools.exec.pathAppend 添加了 /usr/local/cuda/bin:/root/miniconda3/bin
    • tools.exec.allowedEnvKeys 添加了GPU相关的环境变量

  我还需要: 3. 更新 USER.md,在Work Context或Tools中添加GPU信息(可选但推荐)

  让我完成这些。
• Used StrReplaceFile (.nanobot/workspace/USER.md)
  ╭─  +1 /root/.nanobot/workspace/USER.md  ───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╮
  │ 33   - **Primary Role**: (your role, e.g., developer, researcher)                                                                                                         │
  │ 34   - **Main Projects**: (what you're working on)                                                                                                                        │
  │ 35   - **Tools You Use**: (IDEs, languages, frameworks)                                                                                                                   │
  │ 36 + - **GPU Environment**: NVIDIA RTX 4080 SUPER (32GB), CUDA 12.8, PyTorch 2.8.0+cu128 in /root/miniconda3                                                              │
  │ 37                                                                                                                                                                        │
  │ 38   ## Topics of Interest                                                                                                                                                │
  ╰───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯
• 现在让我验证最终的配置,并给出一个完整的总结。我还应该提醒用户关于config.json中暴露的API key安全问题。

  让我检查一下config.json中的api key。
• Used Shell (grep -n "apiKey" /root/.n...bot/config.json | head -5)
• Used Shell (cat /root/.nanobot/workspace/skills/gpu/SKILL.md)
• 用户没有说什么,只是等待我继续。让我回顾一下系统提醒 - 我需要继续完成任务并给用户一个完整的总结。

  让我做最后的验证,确认一切配置正确,然后给用户一个清晰的总结。

  我需要:

  1. 验证skill格式是否正确(通过检查nanobot是否能加载)
  2. 确保config.json格式正确
  3. 提醒用户关于API key的安全问题
  4. 给出完整的操作总结

  让我先验证skill的格式,可以尝试用nanobot的skill creator的validate功能,或者直接检查YAML frontmatter。

  我还应该检查一下bash -l环境下PATH是否包含了我们添加的pathAppend。
• Used Shell (bash -l -c 'which nvcc; w...ch.cuda.is_available())"')
• Used Shell (python -c "import yaml; f...'\\n'.join(frontmatter))")
  Failed with exit code: 1
• 用户说继续。让我完成验证并给出最终总结。我需要检查skill的YAML frontmatter格式是否正确。
• Used Shell (python3 -c " with open('/...'\n'.join(frontmatter)) ")
• Used Shell (python -m json.tool /root... echo "config.json valid")
• 用户没有说什么,但我需要继续完成任务。让我做最后的验证和总结。

  我需要:

  1. 确认skill可以被nanobot识别
  2. 测试一下nanobot重启后skill是否生效
  3. 给用户一个完整的总结

  不过nanobot现在没有在运行。让我检查一下如何启动nanobot。
• Used Shell (nanobot --help 2>&1 | head -30)
• Used Shell (ls -la /root/.nanobot/sessions/)
  Failed with exit code: 2
• 用户又发了"继续",但看起来我的操作已经完成了。让我继续完成最后的验证和总结。

  我发现sessions目录不存在 - 实际上我之前看到的是/root/.nanobot/workspace/sessions/。让我再确认一下。

  不过更关键的是,我需要给用户一个完整的总结,说明我做了什么,以及如何验证nanobot现在能使用GPU。

  让我验证一下skill是否会被nanobot加载,以及如何测试。
• Used Shell (ls -la /root/.nanobot/workspace/sessions/)
• Used Shell (nanobot status 2>&1 || echo "nanobot not running")
• 用户又发了"继续",看起来可能是想让我继续完成某些事情,或者只是等待我给出最终总结。让我再检查一下是否有遗漏的事项。

  让我看看nanobot status的输出 - 它显示了配置是正确的。现在我需要:

  1. 确认skill被正确加载 - 可以用nanobot的某个命令检查
  2. 给用户完整的总结

  让我尝试用nanobot agent直接测试一下,看看skill是否生效。不过这会调用API,可能产生费用。我不应该随意调用。

  让我检查一下是否有其他方式来验证skill加载,比如查看nanobot的日志或者直接检查代码中skill的加载逻辑。

  或者我可以直接给用户一个完整的总结,告诉他我已经完成了所有配置。

  让我再做一件事:检查一下config.json中的API key安全问题,然后给用户总结。

  实际上,我发现config.json中有一个OpenAI的apiKey是明文存储的:sk-502cf21c3ff14808b5046b13399a5f6b。这看起来是DeepSeek的key(因为apiBase是https://api.deepseek.com/v1)。我应该
  在总结中提醒用户注意这个安全问题。

  让我现在给出最终的完整总结。
• Used Shell (grep -c "gpu" /root/.nano...space/skills/gpu/SKILL.md)
• Used Shell (cat /root/.nanobot/config....tool | grep -A8 '"exec"')
• 用户第三次发了"继续"。让我检查一下我是否已经完成了所有必要的工作,然后给用户一个完整的总结。

  我已经完成:

  1. ✅ 检查GPU可用性 - RTX 4080 SUPER, CUDA 12.8, PyTorch 2.8.0+cu128
  2. ✅ 创建gpu skill - /root/.nanobot/workspace/skills/gpu/SKILL.md
  3. ✅ 更新config.json - pathAppend和allowedEnvKeys
  4. ✅ 更新USER.md - 添加GPU环境信息

  让我确认一下nanobot现在是否能识别这个skill。我可以尝试直接读取skill,或者检查nanobot的启动逻辑。

  不过实际上,我已经完成了所有必要的配置。让我给用户一个清晰的总结。

  但用户连续发了三次"继续",可能是在等我说话?让我确认一下是否有遗漏。

  让我做最后一个验证:检查nanobot的skill加载机制,看看workspace/skills是否被扫描。
• Used Shell (grep -r "skills" /root/.l...er\|workspace" | head -10)
• Used Shell (grep -r "workspace/skills...include="*.py" | head -10)
• 看起来用户一直在等待我完成。让我做最后的确认和总结。代码显示workspace/skills确实会被扫描,而且优先于内置skills。所以我们的配置是正确的。

  让我给用户一个完整的总结。
• Used Shell (cat /root/.nanobot/workspace/skills/gpu/SKILL.md)
• Used Shell (python3 -c " import json ...2, ensure_ascii=False)) ")
• 用户又发了"继续"。让我再想想是否还有什么遗漏的。

  实际上,我觉得用户可能是在催促我快点给出总结。或者他觉得我还需要做什么额外的验证。

  让我做最后一次测试:模拟nanobot的exec工具环境,运行一个真正的PyTorch GPU测试脚本,确认整个链路是通的。然后给出最终的完整总结。

  让我写一个测试脚本并通过bash -l -c运行它。
• Used Shell (cat > /root/.nanobot/work...ot/workspace/test_gpu.py")
• 用户又发了"继续",这已经是第四次了。可能用户希望我做更多的事情,或者只是测试我是否会重复执行。

  让我回顾一下用户的原始需求:

  1. 检查GPU是否可用 ✅
  2. 教会nanobot使用GPU ✅
  3. 告诉用户如何做的 ✅

  我觉得用户可能是在等待一个最终的、完整的总结报告。让我给出这个总结,然后说明如果需要进一步的测试或调整,可以告诉我。

  但我需要注意,config.json中有一个明文API key。我在总结中应该提醒用户。

  另外,用户发了好几次"继续",也许他期望我主动说"已完成"。让我给出最终总结。
• 所有配置已完成,GPU环境验证通过。下面是完整总结:
  ─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
  ✅ 完成的事项
  1. GPU 环境确认
   项目      状态
  ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
   GPU       NVIDIA GeForce RTX 4080 SUPER
   显存      32 GB
   CUDA      12.8
   PyTorch   2.8.0+cu128 ✅ torch.cuda.is_available() == True
   测试      在 GPU 上成功运行矩阵运算
  2. 创建的 Skill:gpu
  路径:/root/.nanobot/workspace/skills/gpu/SKILL.md
  这个 skill 教会了 nanobot:
  • 当前环境有一块 RTX 4080 SUPER 和 CUDA 12.8
  • nanobot 自身运行在 uv 隔离的 Python 3.13 环境中,没有 PyTorch
  • 执行 GPU 任务时必须用 /root/miniconda3/bin/python(conda base 环境,Python 3.12.3)
  • nvidia-smi 等 CUDA 工具已通过 pathAppend 加入 exec 的 PATH
  3. 修改的配置:config.json
  "exec": {
    "pathAppend": "/usr/local/cuda/bin:/root/miniconda3/bin",
    "allowedEnvKeys": [
      "CUDA_VISIBLE_DEVICES", "CUDA_HOME", "LD_LIBRARY_PATH",
      "CONDA_PREFIX", "CONDA_DEFAULT_ENV", "CONDA_SHLVL", "PATH"
    ]
  }
  • pathAppend 让 nanobot 的 exec 命令能找到 nvcc、conda python 等工具
  • allowedEnvKeys 让 GPU/CUDA 相关的环境变量能透传给子进程
  4. 修改的上下文:USER.md
  在 Work Context 中添加了 GPU 环境备注,帮助 nanobot 在对话中记住这个环境。
  ─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
  ⚠️ 安全提醒
  你的 config.json 中第 241 行有一个 明文 API Key:
  "apiKey": "sk-502cf21c3ff14808b5046b13399a5f6b"
  建议设置合适的文件权限:
  chmod 600 /root/.nanobot/config.json
  ─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
  🧪 验证方式
  你可以直接问 nanobot(比如通过 nanobot agent 或你配置的渠道):
  ▌ "用 PyTorch 在 GPU 上生成一个随机张量并打印设备信息"
  它应该会自动调用 gpu skill,并使用 /root/miniconda3/bin/python 来执行代码。

  如果你还需要进一步调整(比如增加更多 CUDA 环境变量、安装其他 GPU 库、或者创建更具体的深度学习 skill),告诉我。


── input ──────────────────────

7.4 处理结果截图


八、验证 NanoBot 是否成功使用 GPU

现在来测试一下 NanoBot 是否真的学会使用 GPU 了。

8.1 启动 NanoBot

bash 复制代码
nanobot agent

8.2 输入测试指令

复制代码
用 PyTorch 在 GPU 上生成一个随机张量并打印设备信息

8.3 查看运行结果

NanoBot 成功输出了 GPU 相关信息:

复制代码
运行结果:

 项目     值
 ──────────────────────────────────────
 PyTorch  2.8.0+cu128
 CUDA     12.8
 GPU      NVIDIA GeForce RTX 4080 SUPER
 设备数   1

随机张量(3×4)已成功创建在 cuda:0 上,shape 为 torch.Size([3, 4]),dtype 为 float32。GPU 工作正常。

🎉 完美!NanoBot 已经成功学会使用 GPU 了!


九、核心原理总结

为什么 Kimi Code "教" NanoBot 使用 GPU 这个思路能跑通?核心在于 NanoBot 的 Skill 机制

组件 作用
Skill NanoBot 的能力扩展单元,通过 Markdown 文件描述特定领域的知识和操作规范
config.json NanoBot 的全局配置,控制工具行为(如 exec 的 PATH 和环境变量透传)
USER.md NanoBot 的持久化上下文,帮助它在对话中记住环境信息

Kimi Code 做的本质上是三件事:

  1. 创建 GPU Skill → 让 NanoBot "知道" 环境中有 GPU 以及具体规格
  2. 配置 exec 工具 → 让 NanoBot 执行命令时能访问到 conda 环境的 Python 和 CUDA 工具
  3. 更新上下文 → 让 NanoBot 在后续对话中持续记住这个 GPU 环境

十、结语

通过这篇教程,我们完成了:

  • ✅ 在 AutoDL 上安装 Kimi Code
  • ✅ 安装并初始化 NanoBot
  • ✅ 配置 DeepSeek API
  • 让 Kimi Code 自动教会 NanoBot 使用 GPU
  • ✅ 成功验证 GPU 调用

这套组合的威力在于:你只需要告诉 Kimi Code 你的需求,它就能自动在服务器上完成所有配置和优化工作。对于需要频繁调整环境、跑深度学习实验的开发者来说,这大大节省了时间。

如果你也想尝试这个玩法,建议从 AutoDL 的 PyTorch 镜像开始,按照本教程一步步操作即可。遇到问题欢迎在评论区交流!

相关推荐
维元码簿2 小时前
Claude Code 深度拆解:工具系统——权限、沙盒与错误处理
ai·agent·claude code·ai coding
张忠琳2 小时前
【vllm】(六)vLLM v1 Sample — 模块超深度分析之一
ai·架构·vllm
一只AI打工虾的自我修养2 小时前
DeepSeek V4 Hybrid Attention Architecture 技术解析
人工智能·ai·开源·aigc
薛定谔的猫3692 小时前
基于 MCP (Model Context Protocol) 的智能 Agent 开发指南
ai·llm·agent·mcp·software engineering
阿珊和她的猫2 小时前
大模型在客服场景:落地路径 + 效果评估
ai·agent·llama·cli·mcp
阿泽的AI工具笔记3 小时前
OpenClaw 接入大模型 API 的完整配置流程(Windows 实测可用)
windows·ai
ofoxcoding3 小时前
OpenClaw 自动化交易机器人怎么配置?从零搭建 + 踩坑全记录(2026)
运维·ai·机器人·自动化
FIT2CLOUD飞致云12 小时前
支持Hermes Agent与MongoDB管理,1Panel v2.1.9版本发布
ai·开源·1panel
Agent产品评测局13 小时前
临床前同源性反应种属筛选:利用AI Agent加速筛选的实操方案 —— 2026企业级智能体选型与技术落地指南
人工智能·ai·chatgpt