DeepTask Sandbox 文档

一个安全、本地优先的沙箱,将您的 AI 助手连接到您的环境。
5 min read
Updated

DeepTask Sandbox 是一个跨平台桌面应用程序,用于在安全、隔离的环境中执行自动化工具。基于 Electron 构建并与 Go 语言的 MCP(Model Context Protocol)服务器集成,为您的 AI 助手在您的机器上提供安全、可工具化的环境。通过自然对话(经由 MCP),您的助手可以运行工具、访问已批准的本地功能并可靠地编排工作流 —— 当任务需要真实页面时,可使用可选的基于浏览器的执行(Puppeteer)。

注意:DeepTask Sandbox 对个人和教育用途免费。商业用途需要根据用户数量按月订阅的付费许可证。

核心原则

  • 隐私优先:所有自动化均在本地运行。您的数据永远不会离开您的机器。
  • 助手就绪:专为 Model Context Protocol (MCP) 原生构建。与 Claude、Cursor 等无缝配合。
  • 可工具化沙箱:运行 Node 工具进行后端自动化,运行 Puppeteer 工具进行浏览器自动化和网页抓取 —— 各自在隔离的 worker 进程中。
  • 内置护栏:调度(cron)、任务历史、资源限制(内存 64–2048 MB,CPU 阈值)、域名允许列表以及加密的设置/凭据。

01. 快速开始

五分钟内即可启动运行。

步骤 1:安装桌面应用

下载并运行适用于您操作系统的安装程序。

下载 DeepTask Sandbox

步骤 2:连接您的助手

DeepTask 使用 Model Context Protocol (MCP) 与您的 AI 通信。请根据您使用的环境按照相应说明操作:

OS安装类型命令路径
WindowsSystem (Default)C:\Program Files\deeptask-sandbox\resources\mcp\deeptask-mcp.exe
WindowsUserC:\Users\<user>\AppData\Local\Programs\deeptask-sandbox\resources\mcp\deeptask-mcp.exe
macOSStandard/Applications/DeepTask Sandbox.app/Contents/Resources/mcp/deeptask-mcp
LinuxStandard/opt/deeptask-sandbox/resources/mcp/deeptask-mcp

配置块示例(Claude Desktop):

{
  "mcpServers": {
    "deeptask": {
      "command": "PASTE_THE_COMMAND_PATH_HERE"
    }
  }
}

步骤 3:您的第一个工具

连接后,只需让您的助手在沙箱内创建并运行一个小工具即可。

试试这个提示:

"使用 DeepTask,编写一个小的 node 工具,获取 https://example.com 的标题并以结构化输出返回。"


02. 工具指南

DeepTask 工具功能强大、类型安全且易于构建。您的 AI 可以为您生成,您也可以自己编写。

工具结构

每个工具由两部分组成:元数据(配置)和主函数(逻辑)。工具名称必须使用 snake_case(仅小写字母、数字、下划线;例如 web_scraper)。工具必须是 ESM(.mjs)模块;支持 Node.js 24+。

import { browser } from "@deeptask/sandbox";

export const metadata = {
    name: "web_scraper",
    type: "puppeteer", // "node" for pure logic, "puppeteer" when you need a real browser
    description: "Extracts basic info from a webpage",
    networkEnabled: true,
    domainsAllowed: ["example.com"],
    inputSchema: {
        type: "object",
        properties: {
            url: {type: "string", format: "uri"}
        },
        required: ["url"]
    }
};

export async function main({url}) {
    const page = browser.getPage();
    await page.goto(url, {waitUntil: "networkidle0"});

    const title = await page.title();
    return {
        content: [{type: "text", text: `Scraped: ${title}`}],
        structuredContent: {title},
        isError: false
    };
}

高级功能

文件上传

您可以使用 JSON Schema 定义接受文件的输入(PDF、图片等):contentEncoding: "base64"contentMediaType(例如 application/pdf)以及大小限制的 maxLength(base64 约大 33%;例如 ~5MB → maxLength: 6990506)。

inputSchema: {
    properties: {
        document: {
            type: "string",
            contentEncoding: "base64",
            contentMediaType: "application/pdf",
            maxLength: 6990506,  // ~5MB file
            description: "Upload a PDF for analysis"
        }
    }
}

在您的工具中,使用 atob(input.document) 解码(或对二进制使用 new Uint8Array(atob(input.document).split('').map(c=>c.charCodeAt(0))))并按需处理。大小限制:maxLength = Math.ceil(bytes/3)*4(例如 1MB → 1398101,5MB → 6990506)。

加密设置

安全存储敏感配置。用户会在 UI 中被提示输入这些值,它们会在存储时加密。对密码字段使用 format: "password"

settingsSchema: {
    properties: {
        apiKey: {
            type: "string",
            format: "password",
            title: "API Key"
        }
    }
}

03. 安全与隔离

所有计划均包含这些保护措施。DeepTask 为可靠性和安全性而构建:

  • 域名允许列表:除非您设置 networkEnabled: true 并指定 domainsAllowed(使用 ["*"] 允许所有主机),否则工具无法访问网络。当 URL 被阻止时,fetch() 会在任何请求之前抛出 —— 请用 try/catch 包裹 fetch()
  • 资源限制:可配置内存(64–2048 MB;Node 默认 256 MB,Puppeteer 512 MB)和 CPU 阈值(50–100%,默认 95%)。超出限制的工具会自动终止。
  • 超时保护:可通过 defaultTimeout 按工具配置(默认 5 分钟)。
  • 文件系统:可选读写访问虚拟文件系统(根 /),包含文件夹 /Temp/Documents/Images/Videos/Audios/Downloads。无主机文件系统访问;路径无法脱离根目录。使用 fsEnabledfsWriteEnabled。使用 fs/promises —— 同步方法如 readFileSync 被阻止。文件在工具调用之间持久化;/Temp 在应用启动时和每 24 小时清理(最长 48 小时)。

04. Pro 功能

智能调度

使用内置 Cron 支持自动化您的工作流。

  • 每日报告0 9 * * *(每天早上 9 点)
  • 每周清理0 0 * * 0(每周日午夜)

05. API 与工具参考

Sandbox API

@deeptask/sandbox 导入:

API描述
browser(Puppeteer only) browser.getPage() → primary Page; browser.getPages() → all pages. Use import { browser } from "@deeptask/sandbox";
tooltool.self.settings (encrypted at rest), tool.call(name, params, sandboxId?), tool.chain([{name, params, sandboxId?}, ...]). Use import { tool } from "@deeptask/sandbox";
document, image, audio, video, model, archive内置 API(见下方各节)。均返回 { files, data, isError, message }
language, timeZone沙箱区域设置和时区。
fs / fs/promises(当 fsEnabled 时)/ 下的虚拟 FS,包含 /Temp/Documents/Images 等。使用 fs/promises —— 同步方法被阻止。

Puppeteer: page.goto() 仅接受 http/https。请用 try/catch 包裹。对响应字节使用 response.buffer()(而非 body())。

document

import { document } from "@deeptask/sandbox"

文档转换、PDF 操作和全文搜索。所有方法返回 { files, data, isError, message }。使用 filesdata 前请始终检查 isError

Method描述
convertDocument格式间转换。配对:md↔html, pdf↔html, docx/pptx/epub↔html, html→docx/pdf/pptx/epub, csv↔xlsx。选项因配对而异(例如 html→pdf: format, printBackground; pdf→html: startPage, endPage)。
mergePdf合并多个 PDF 为一个。
splitPdf将 PDF 按页分割。省略 pages 则每页一个文件。输出到 /Temp/
compressPdf压缩 PDF。选项:quality(screen, ebook, printer, prepress)。
fillPdfForm填写 PDF 表单字段。键为原始 PDF 字段名(区分大小写)。
getPdfInfo获取页数、标题、作者等。
getPdfForm列出 PDF 中的表单字段。
extractArticle提取主要文章文本(Readability)。支持 md、pdf、docx、pptx、epub、html。返回 data.text;检查空字符串。
extractPages从 PDF 提取页面范围(1-based 包含)。
searchFiles索引文件的全文搜索。/Documents 被索引。 返回 data.hitsdata.total。使用 limit(默认 20)。
searchInFile在单个文件内搜索。支持文本和办公类型。offset/limit 对结果分页。

注意:protectPdf 未实现 —— 请勿使用。

image

import { image } from "@deeptask/sandbox"

使用 Sharp/libvips 进行图像处理。所有方法返回 { files, data, isError, message }

Method描述
resizeImage调整大小。选项:fit(cover, contain, fill, inside, outside)、withoutEnlargement
compressImage重新编码以减小大小;保留元数据。
minifyImage仅移除元数据。
cropImagelefttopwidthheight 裁剪。
rotateImage按角度旋转。
flipImage / flopImage水平或垂直镜像。
convertImage格式转换。支持 png、jpeg、gif、tiff、webp、ico、icns;SVG 作为源。
removeBackground简单颜色匹配(非 AI)。输出 PNG。threshold 0–255(默认 10)。
compositeImagelefttop 处叠加图像,可选 opacity
mergeImages合并图像。选项:layout(horizontal, vertical, grid)、gapcolumnsmaxWidthmaxHeight
getImageInfo返回 data: { width, height, format, channels, hasAlpha, space }
blurImage, sharpenImage模糊或锐化;sigma 控制强度。
grayscaleImage, trimImage, normalizeImage, extendImage, modulateImage, negateImage, tintImage颜色和布局操作。

audio

import { audio } from "@deeptask/sandbox"

音频转换和处理。所有方法返回 { files, data, isError, message }

Method描述
convertAudio格式转换。支持 mp3、wav、aac、ogg、flac、m4a、wma、opus。
trimAudiostartendduration(秒)裁剪。
concatAudio拼接音频文件。
setAudioVolume设置音量(数字)。
setAudioTempoTempo 0.5–2.0(FFmpeg 限制)。
fadeAudio淡入/淡出。选项:typestartduration
normalizeAudio响度标准化。target LUFS(默认 -16)。
removeAudioSilence移除静音。threshold dB(默认 -50)、duration 秒(默认 0.5)。
mixAudio混合多个音频文件。可选 volumes
getAudioInfo返回 data: { duration, sampleRate, channels, bitrate, format, codec }
textToSpeech文本转语音。仅 macOS/Windows。format:mp3、wav、ogg。

注意:voiceToText 未实现 —— 请勿使用。

video

import { video } from "@deeptask/sandbox"

视频转换、裁剪和特效。所有方法返回 { files, data, isError, message }

Method描述
convertVideo格式转换。支持 mp4、webm、avi、mov、mkv、m4v、flv、wmv。
compressVideo压缩。选项:crf(18–28,默认 23)、maxWidthmaxHeightvideoBitrateaudioBitrate
trimVideostartendduration 裁剪。
concatVideos拼接视频文件。
extractAudioTrack将音频提取为 mp3、wav、aac、m4a、ogg、flac。
extractFrametimestamp 提取单帧。
screenshotVideo在多个 timestamps 提取帧。按顺序每个时间戳返回一张图像。
videoToGif将视频转换为 GIF。选项:startdurationfpswidthheight
generateGif从图像序列创建 GIF。选项:fpswidthheightloop
burnSubtitles将字幕文件烧录到视频中。
extractSubtitles将字幕提取为 srt 或 vtt。
cropVideo, rotateVideo裁剪或旋转(90、180、270)。
setVideoSpeed, setVideoVolume, fadeVideo速度、音量、淡入淡出效果。
getVideoInfo返回 data: { duration, width, height, fps, videoBitrate, audioBitrate, format, ... }

model

import { model } from "@deeptask/sandbox"

LLM 文本生成、图像生成和视频生成。需要 networkEnabled 和 API 密钥。在 settingsSchema 中以 format: "password" 存储 apiKey;通过 tool.self.settings.apiKey 访问。切勿硬编码密钥。

Method描述
generateText聊天补全。messages、可选 systemoptions: { provider, apiKey, baseURL }。提供方:openai、anthropic、google、cohere、mistral、openrouter、grok、deepseek、groq。默认:openai (gpt-4o-mini)。
generateImage图像生成。prompt、可选 image(图生图)。提供方:openai、stability、replicate、fal、together、nano-banana、ideogram。图生图仅在 fal、nano-banana 中支持。
generateVideo视频生成。prompt、可选 image。提供方:runway、replicate、luma、kling、minimax、seedance、veo3。分辨率因提供方而异(例如 ratioresolution)。

archive

import { archive } from "@deeptask/sandbox"

压缩和解压文件。所有方法返回 { files, data, isError, message }

Method描述
zipFiles将文件压缩为一个归档。输出:/Temp/ 中的 archive-{timestamp}.zip。文件位于 zip 根目录(不保留目录结构)。
unzipFile解压。filter:要包含的文件名子串。files[] 包含解压文件的虚拟路径;保留目录结构。

助手用 MCP 工具

您的 AI 助手通过这些 MCP 工具与 DeepTask 交互:

  • install_tool — 安装工具以供重用。随后使用 call_tool 运行。
  • uninstall_tool — 卸载已安装的工具。
  • call_tool — 运行已安装的工具。根据工具 defaultTimeout 同步/异步(>60 秒 = 异步)。
  • get_call_tool_result — 轮询异步 call_tool 的结果(按 taskId)。
  • eval_tool_script — 一次运行工具而无需安装(一次性)。参数:typecontent,可选 sandboxId
  • batch_call_tools — 在一次请求中调用多个工具。
  • list_more_tools — 列出已安装的工具。使用 get_tool_script_syntax 获取工具语法(章节:documentimageaudiovideomodelarchive)。

支持与资源