工程手册
每一页都对应仓库里的一个文件,与 GitHub 同源渲染。左侧目录负责结构,每篇文档都保留源文件与原始文件入口。
这里的每一页都是一个文件
下表就是全部文档:左边是仓库里的路径,右边是它变成的页面。重建站点时两边由同一个源渲染,改任何一边都会反映到另一边。
docs/ → 网站
没有对应语言版本的那几页会退回另一种语言的原文,并在页首说明。
从这三页开始
全部通过三样东西完成:一个依赖、一个配置对象、一次提交。暂停、继续、取消、批量与诊断都在同一个 client 上。
// build.gradle.kts
dependencies {
implementation("dev.turbodl:turbodl-core:0.4.1.0")
}
// Kotlin
val client = TurboClient(TurboConfig(maxConnectionsPerTask = 16))
val id = client.submit(DownloadRequest(url, File("out.bin")))
val result = client.await(id)java -jar turbodl-cli-all.jar <url> -o out.bin -c 64
java -jar turbodl-cli-all.jar <url> --json # NDJSON
java -jar turbodl-cli-all.jar --batch tasks.txt # one URL per line{"type":"start","url":"<url>","output":"out.bin"}
{"type":"timing","stage":"metadata","t_ms":184,"probe_ms":96,"resume":""}
{"type":"progress","state":"downloading","downloaded":222732288,"total":358411469,"percent":62,"speed":19503514,"connections":16,"eta_ms":7020}
{"type":"completed","url":"<url>","file":"out.bin","bytes":358411469,"sha256":"0f3a…"}
{"type":"summary","total":1,"failed":0}全部配置面
42 个当前公开字段,另有 2 个兼容性废弃字段。下表在构建时从 TurboConfig.kt 读取;废弃项会明确标注,且不是运行控制开关。
展开全部 44 个公开字段
TurboConfig.kt · 公开字段
默认值直接读源码。废弃的 overlapMerge 仅为源码兼容保留,不是有效开关。
一份插件清单长什么样
一个插件 = 一个 JAR + 这个文件。参考页列了每个字段的类型、是否必填、以及允许的取值。
turbodl-plugin.json
{
"manifestVersion": "1.0",
"id": "parser.example",
"name": "Example parser",
"description": "Turns example:// links into download requests.",
"version": "0.1.0",
"author": "you",
"homepage": "https://github.com/you/turbodl-plugin-example",
"license": "MIT",
"category": "turbodl-parser",
"capabilities": [
"dev.turbodl.cap.parser"
],
"protocols": [
"example"
],
"turbodl": {
"apiMajor": 1,
"requiredApiVersion": "1.0.0"
},
"entry": {
"language": "kotlin",
"pluginClass": "com.example.ExamplePlugin"
},
"extensionPoints": [
"turbo.linkParser"
]
}与「清单字段参考」那一页用同一个常量渲染,两页不会各说各话。
文档
项目说明
TurboDL 是什么、能做什么、怎么加进项目、API 有哪些 —— 就是仓库里的那篇 README。
插件开发指南
怎么写出一个插件、怎么被加载进来:接口、分类,以及你必须遵守的生命周期。
开发规范
兼容性规则:什么算稳定 API、版本怎么协商、命名怎么定,以及插件不能弯的安全底线。
发布与发现
没有需要注册的中心仓库。插件靠 GitHub topic 加一份清单被发现 —— 这套约定就是全部。
用 JavaScript 写插件
`host`/`plugin` ABI、构成一切的那三个原语,以及脚本被有意禁止做的事情。
JS 加载器架构
加载器为什么长这样:runtime 与 context 的归属、卸载顺序,以及宿主一侧的边界。
清单字段参考
turbodl-plugin.json 的每一个字段 —— 由校验它的那份 JSON Schema 生成。
协议与说明
架构
这个项目的每个设计问题都由三条规则决定:
- core 能独立工作。turbodl-core 是完整引擎、零插件依赖;插件是纯粹的增量。
- 内核只是机制。它不认识任何协议 —— 只有生命周期、清理、事件总线、服务注册表、扩展点、版本握手、诊断。
- 依赖方向是硬的。runtime → core,绝不反向。