DeepTask Sandbox 文档
一个安全、本地优先的沙箱,将您的 AI 助手连接到您的环境。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:安装桌面应用
下载并运行适用于您操作系统的安装程序。
步骤 2:连接您的助手
DeepTask 使用 Model Context Protocol (MCP) 与您的 AI 通信。请根据您使用的环境按照相应说明操作:
| OS | 安装类型 | 命令路径 |
|---|---|---|
| Windows | System (Default) | C:\Program Files\deeptask-sandbox\resources\mcp\deeptask-mcp.exe |
| Windows | User | C:\Users\<user>\AppData\Local\Programs\deeptask-sandbox\resources\mcp\deeptask-mcp.exe |
| macOS | Standard | /Applications/DeepTask Sandbox.app/Contents/Resources/mcp/deeptask-mcp |
| Linux | Standard | /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。无主机文件系统访问;路径无法脱离根目录。使用fsEnabled和fsWriteEnabled。使用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"; |
tool | tool.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 }。使用 files 或 data 前请始终检查 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.hits、data.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 | 仅移除元数据。 |
cropImage | 按 left、top、width、height 裁剪。 |
rotateImage | 按角度旋转。 |
flipImage / flopImage | 水平或垂直镜像。 |
convertImage | 格式转换。支持 png、jpeg、gif、tiff、webp、ico、icns;SVG 作为源。 |
removeBackground | 简单颜色匹配(非 AI)。输出 PNG。threshold 0–255(默认 10)。 |
compositeImage | 在 left、top 处叠加图像,可选 opacity。 |
mergeImages | 合并图像。选项:layout(horizontal, vertical, grid)、gap、columns、maxWidth、maxHeight。 |
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。 |
trimAudio | 按 start、end 或 duration(秒)裁剪。 |
concatAudio | 拼接音频文件。 |
setAudioVolume | 设置音量(数字)。 |
setAudioTempo | Tempo 0.5–2.0(FFmpeg 限制)。 |
fadeAudio | 淡入/淡出。选项:type、start、duration。 |
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)、maxWidth、maxHeight、videoBitrate、audioBitrate。 |
trimVideo | 按 start、end 或 duration 裁剪。 |
concatVideos | 拼接视频文件。 |
extractAudioTrack | 将音频提取为 mp3、wav、aac、m4a、ogg、flac。 |
extractFrame | 在 timestamp 提取单帧。 |
screenshotVideo | 在多个 timestamps 提取帧。按顺序每个时间戳返回一张图像。 |
videoToGif | 将视频转换为 GIF。选项:start、duration、fps、width、height。 |
generateGif | 从图像序列创建 GIF。选项:fps、width、height、loop。 |
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、可选 system、options: { 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。分辨率因提供方而异(例如 ratio、resolution)。 |
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— 一次运行工具而无需安装(一次性)。参数:type、content,可选sandboxId。batch_call_tools— 在一次请求中调用多个工具。list_more_tools— 列出已安装的工具。使用get_tool_script_syntax获取工具语法(章节:document、image、audio、video、model、archive)。
支持与资源
- 网站:deeptask.ai
- 邮箱:[email protected]
- 问题:通过应用的反馈菜单报告错误或请求功能。