← 返回主报告:Kimi Agent(云端沙箱)技术报告 | GitHub 原文
合规与风险声明:本报告为安全研究与互操作学习目的的逆向分析,全程只读采集,未对目标系统做任何修改;文中所有密钥、token、账号级标识(chat_id / project_id / tenant_id 等)均已脱敏;沙箱内发现的默认弱口令(VNC/SSH)属平台侧配置,仅作安全发现披露,请勿用于访问任何不属于自己的系统。docx/pdf/xlsx/kimi-slides 等引擎二进制为 Moonshot 专有许可(禁再分发/逆向),本文仅作行为级描述。报告基于单次分析窗口(约 50 分钟生命周期),软件版本与技能库存随镜像更新可能变化。
采集时间:2026-08-18。采集方式:SSH(kimi 用户,只读)。 环境基线:Debian 12 (bookworm),内核 6.6.69-cube.pvm.guest(x86_64),3 核 CPU / 3.9 GiB 内存,无 GPU(
nvidia-smi不存在)。
1. Python 工具链
- Python 3.12.12(编译安装在
/usr/local,非 apt 包),pip 25.0.1。 pip list共约 180 个包,/usr/local/lib/python3.12占 7.9 GB。按能力分类摘录:
| 能力域 | 已装包(版本略) |
|---|---|
| PDF 全家桶 | pymupdf, pikepdf, pypdf, PyPDF2, pdfplumber, pdfminer.six, pdf2image, pypdfium2, reportlab, fpdf, PyLaTeX, tabula |
| Office 文档 | python-docx, python-pptx, openpyxl, xlsxwriter, xlrd |
| 文档转 Markdown | markitdown 0.1.7(微软),markdownify, striprtf |
| 图像 / OCR | pillow, opencv-python-headless, scikit-image, imageio, tifffile, easyocr, pytesseract, onnxruntime |
| 科学计算 / 绘图 | numpy, pandas, scipy, scikit-learn, statsmodels, lightgbm, matplotlib, seaborn, plotly, networkx, sympy, simpy, patsy |
| 地理 | geopandas, shapely, pyproj, pyogrio |
| 金融 | yfinance, backtrader |
| 深度学习 | torch 2.8.0 + torchvision + 全套 nvidia-cu12 CUDA 库(cuBLAS/cuDNN/NCCL 等,共十余个包)——但容器无 GPU,纯浪费磁盘 |
| 浏览器 / GUI 自动化 | playwright 1.62(pip 版),PyAutoGUI + PyGetWindow + PyScreeze + MouseInfo + pyperclip + python3-xlib(配合 Xvnc :99 做桌面操控) |
| Web/服务 | fastapi + uvicorn + starlette + httpx + curl_cffi + websockets + requests |
| 其他 | ipython/ipykernel/jupyter_client(kernel-server 用),paramiko,peewee,cryptography,chess,magika(Google 文件类型 AI 识别),rignore(Rust 版 rg),agent-gw 0.2.6 |
| 明显缺口 | 无任何音频处理库(librosa/pydub/whisper 均为 0 命中)——音频/tts 走 skills 里的 edge-tts 等外部服务 |
agent-gw:Moonshot 自研包,pip show元数据自述为 “Kimi agent-gw(Kimi For Coding Backend)的 Python SDK —— 覆盖 tools/chat/messages/embeddings/search/fetch 等接口”,License: Proprietary,Home-page: github.com/MoonshotAI。这是 kimiagent 调云端后端的客户端 SDK。
2. Node 工具链
- Node v20.20.2,npm 11.19.0。全局前缀是用户目录
/home/kimi/.npm-global(占 714 MB),npm ls -g --depth=0:
@kimi-slides/cli@2.2.15 ← Moonshot 第一方 PPT 工具链(见 §4)
@mermaid-js/mermaid-cli@11.16.0
docx@9.7.1 / pptxgenjs@4.0.1 / pdf-lib@1.17.1 / pdftk@0.0.0-rc.0
md-to-pdf@5.2.5
react@19.2.8 / react-dom@19.2.8 / react-icons@5.7.0
sharp@0.35.3
playwright@1.56.1 ← npm 版,与 pip 版并存
即:文档生成(docx/pptx/pdf-lib)、图表(mermaid)、HTML 中间层(react + sharp 渲染截图)、md→pdf,全部走 Node。
3. 系统级二进制(dpkg / which)
已装(均为 Debian 12 官方包):
| 工具 | 版本 | 备注 |
|---|---|---|
| ffmpeg | 5.1.9 | 音视频处理 |
| ImageMagick | 6.9.11(convert,无 magick 命令) | 图像批处理 |
| pandoc | 2.17.1.1 | 文档互转 |
| LibreOffice | 7.4.7.2(core/writer/impress/calc 四件,301 MB) | headless 办公转换主力 |
| Chromium | 151.0.7922.71(338 MB) | 带 CDP :9222 常跑 |
| tesseract | 5.3.0 | 只有 eng + osd 两个语言包,无 chi_sim —— 中文 OCR 依赖 easyocr(torch 模型) |
| qpdf / poppler-utils / libpoppler | 有 | PDF 结构操作 |
| wkhtmltopdf | 有 | HTML→PDF 备选 |
LaTeX 缺口由 tectonic 0.17.0 补齐:/usr/local/bin/tectonic(26 MB 单二进制,属 kimi 用户安装),缓存 ~/.cache/tectonic 63 MB——按需下载宏包,免去 2-3 GB 的 texlive。pdf skill 的 LaTeX 路由即用它。
4. /app/.ppt 考证(任务预设勘误)
/app/.ppt 不存在(file 报 No such file or directory,find / -maxdepth 3 -name '.ppt' 也无结果)。PPT 能力的真实载体是:
- skill:
/app/.agents/skills/kimi-slides/(SKILL.md + reference/pptd.md + reference/cli.md)。它定义了 .pptd —— 一种 YAML 格式的 OOXML 抽象 DSL,”每页自包含、所见即所得”,SKILL.md 强制规定”任何 PPTX 生成/编辑任务必须用此 skill”。 - 配套 CLI:
kimi-slides(npm 包@kimi-slides/cli@2.2.15,软链进/usr/local/bin),子命令convert(pptx→pptd)、check(校验 pptd)、screenshot(pptd/pptx 渲染 PNG)。
同理 /app/pdf-viewer/ 不是查看器服务,而是一个 Chromium PDF viewer 扩展(contentscript.js / background.js / extension-router.js)。
5. 字体
fc-list | wc -l= 1996,其中 CJK 相关 177 条。- Noto CJK 全家桶齐全:Sans/Serif/Mono × SC/TC/HK/JP/KR 共 15 个家族;另有 Noto 全球语种(阿拉伯、老挝等)、Noto Color Emoji、Liberation/DejaVu/Carlito/Caladea(MS 字体度量兼容替代)。
- 结论:中文渲染(PPT/PDF/截图)无字体缺口,这是”出厂电池”里很重要的一块。
6. /usr/local/bin 自研/第三方二进制
除 portal(52M)/envd(18M)/drive9(19.7M) 三个已知自研守护进程外:
| 文件 | 性质 |
|---|---|
magika (32 MB) | Google Magika 文件类型识别,Rust 独立二进制(pip 包附带的 CLI 也被装成二进制) |
tectonic (26 MB) | LaTeX 引擎(见 §3),kimi 用户所有 |
btrun / bt-run.py | 1 KB Python 小脚本(backtrader 相关入口) |
dws → ~/.cli-tools/dws-cli/bin/dws | 钉钉 CLI:dws --help 显示一棵 MCP 服务树(aisearch/aitable/attendance/calendar/chat/contact/doc/drive/hrmregister/live 等),即把钉钉开放平台的 MCP 工具包装成命令行 |
lark-cli → ~/.cli-tools/lark-cli/bin/lark-cli | 飞书/Lark CLI:lark-cli <command> [subcommand] [method] + api <method> <path> 任意调开放接口 |
kimi-slides → npm-global | 见 §4 |
proton / proton-viewer | 非自研——只是 triton(torch 附带)profiler 的入口脚本 |
| 其余 | 均为 pip 包的 console_scripts(ipython/jupyter/pymupdf/easyocr/uvicorn/playwright 等) |
7. 磁盘占用
du: /app 1.8G(其中 /app/.agents/skills 1.8G —— 技能包本体是大头,/app 其余文件仅 ~10M)
/usr 13G(python3.12 site-packages 7.9G、chromium 338M、libreoffice 301M)
/opt 80K(空)
/home/kimi 4.3G(.cache 2.3G = ms-playwright 1.6G + puppeteer 636M + tectonic 63M;.npm-global 714M)
dpkg -l 共 1274 个包
df /:41G 盘(overlay2,guest 视角 used 显示 32M 不可靠,以 du 为准,实际镜像约 19G)
注意浏览器二进制存在三份冗余:系统 chromium(338M) + playwright 缓存(chromium-1194/-1234 + headless_shell ×2 + ffmpeg,共 1.6G)+ puppeteer 缓存(chrome + chrome-headless-shell,636M)。
8. “出厂电池”总评与缺口
齐的:文档(PDF/Office/Markdown 互转三套栈)、图像、绘图、数据科学、浏览器自动化、桌面 GUI 自动化、中文渲染字体、金融数据。
缺的/有意思的取舍:
- 无 GPU 却装了 CUDA 版 torch 全家桶——约 5 GB 以上的浪费,easyocr 是装机理由。
- 无 texlive/ghostscript,用 tectonic 按需方案替代。
- tesseract 无中文包,中文 OCR 走 easyocr。
- 无音频处理栈,tts/音频生成全部外包给云端服务(plugins 里有 audio_generation/speech-synthesis/musepool)。
- 钉钉/飞书以 CLI 形式预装,说明沙箱定位覆盖”办公协同”场景。
9. 对 Hermes 的借鉴清单(按价值排序)
- .pptd DSL + 配套 CLI 的中间层模式:LLM 不直接写 OOXML,而是写每页自包含的 YAML,由确定性 CLI 转换/校验/截图。同样思路可推广到 docx/xlsx。这是整套工具链里工程含量最高的设计。
- tectonic 替代 texlive:单二进制 26 MB + 63 MB 缓存,省 2-3 GB 镜像体积;LaTeX 能力完全够用(pdf skill 的 latex 路由就是跑它)。
- 文档转换的最小充分集:markitdown(任意→md)+ pandoc + LibreOffice headless + 系统三件套(ffmpeg/imagemagick/qpdf)+ Noto CJK 字体全套,即可覆盖 95% 的文档类任务。
- 反面教材:裁剪 CPU-only torch(或把 easyocr/onnxruntime 模型按需下载),浏览器只保留一份(系统 chromium 复用 CDP,playwright 用 channel=chrome 而非自带缓存),可再省 ~6 GB。
- GUI 自动化栈(PyAutoGUI + Xvnc)与企业 IM CLI(dws/lark-cli 模式:把 MCP server 包装成子命令树)也值得参考。