Skip to content

Releases: smallhug/tkless

v0.7.0

Choose a tag to compare

@github-actions github-actions released this 31 Oct 10:48

TkLess 更新说明

v0.7.0 - 2026-10-31

本次发布聚焦 MCP 2026-07-28 协议与 DeepSeek Harness 插件。

MCP

  • 协议升级到 2026-07-28:移除 initialize 握手、ping 与 logging/setLevel;每个请求在 params._meta 中携带协议版本与客户端能力,服务端实现 server/discover,所有结果带 resultType,tools/list 提供 ttlMs/cacheScope。HTTP 增加 MCP-Protocol-Version、Mcp-Method、Mcp-Name 校验。

DeepSeek Harness

  • 新增根目录 DSH bundle:覆盖 standard/ptc/cordis 三个 agent preset,移除内置 web_search 并保留 web_fetch;以 mcp__tkless__* 暴露动态工具,并转发 structuredContent、支持批量 stream_results。
  • 安装地址 github:smallhug/tkless#v0.7.0;首次启用自动下载并校验 Release 的 SHA256SUMS,Windows x64 与 Linux x64/ARM64 支持自动下载,macOS 需设置 binaryPath。
  • 版本锁定 DSH 0.2.1-rc.5;升级 DSH 后需用 scripts/sync-dsh-presets.cjs 重新生成 preset 覆盖并发布新版本插件。
  • 新会话不再注册 web_search;安装前已打开的会话由 guard 拒绝调用。安装后需新开会话观察。
  • 若发布环境未配置 Minisign Secrets,本次仍上传未签名 SHA256SUMS;tkless upgrade 继续 fail closed,DSH 插件仅依赖 SHA256SUMS。

v0.6.0 - 2026-10-31

本次发布聚焦代码审计修复、CLI 规范与文档一致性。完整条目见 CHANGELOG。

安全

  • 自定义请求头改为白名单,非凭据头只在显式授权的初始 origin 发送;Cookie 不再按 apex 域放行,凭据平台映射收窄,显式 Cookie 存在时不再回退凭据库。
  • cookies.txt 改为临时文件 + rename,Unix 下 0600;MCP HTTP 增加 Host/Origin/Content-Type 校验、定长 Bearer 比较,并限制已完成任务数量。
  • SSRF 判定补齐 NAT64、6to4、IPv4-translated、site-local 等特殊段;下载器拒绝非 HTTP(S) 与私网字面量,限制 16 GiB 并对 Range 使用饱和运算。
  • Retry-After 单次上限降为 60 秒;Cookie Jar 拒绝值内分隔符;缓存维护限制单条大小;PDF 解析移入阻塞线程并限制 60 秒,frontmatter 使用 YAML 转义;CDP 临时配置目录随机化并设置 0700。

逻辑与可靠性

  • 搜索年份前缀按字符边界处理,不再 panic;RSS/Atom 接入统一的预算、分块、摘要与指标管线。
  • --selector 零匹配返回错误,嵌套选择器不重复输出;数学公式按 id 顺序恢复;同步状态自动回收旧事件与未引用快照。
  • research 严格执行 3–20 页预算并复用 Hop 2 去重;表格表头补齐;GitHub 适配器不再误判登录/组织页;采集模板拒绝空格占位符。
  • 分块不再静默放大,代码围栏类型感知,分节使用调用方 tokenizer;无特征短文本使用原始文本哈希;爬虫预算触发前先提交已抓取页面。
  • MCP 任务 TTL 改为 >= 到期判定,修复粗粒度时钟下零 TTL 任务未回收的问题。

CLI 与 MCP

  • 根 --format/-o 由结构化子命令继承,不再静默忽略;子命令格式限制为实际支持的 markdown/json/jsonl(research 仅前两种)。
  • 数量、大小、超时、TTL、日期与 B 站参数在 clap 层校验;新增互斥与依赖声明;--screenshot/--pdf、--out-dir/-o 等冲突在解析期报错。
  • 缺少 TARGET、URL 解析失败与参数错误返回退出码 2;--stats 改写到 stderr;--log-format json 覆盖致命错误;doctor 实际探测缓存并在失败时返回非零。
  • MCP fetch_webpage 增加 jsonl 与 max_size_mb,batch_fetch_webpages 增加链接/表格/去图去链参数,deep_research 增加 proxy;缓存默认改为 opt-in。
  • 破坏性变更:--config 短选项改为 -C,--concurrency 改为 -j,research --max-pages 改为 -P;移除 cache --clear、upgrade --force 的短选项。

文档与发布

  • 移除 README 中不存在的 platforms/update 别名与 watch --once;MCP 业务工具数量统一为 31;修正 REPL 命令、--chunk 输出、退出码与安全边界描述。
  • CI/Release 的 checkout、cache、artifact actions 升级到 Node 24 运行时版本;x86_64 macOS DMG 改在 macos-latest 上交叉编译,避免 Intel runner 退役导致发布排队。
  • 本次发布未配置 Minisign Secrets,因此上传未签名的 SHA256SUMS;tkless upgrade 继续 fail closed。配置真实公钥与 MINISIGN_SECRET_KEY/MINISIGN_PASSWORD 后,后续发布会自动附加 SHA256SUMS.minisig。

v0.5.0 - 2026-10-30(历史)

新增工作流

  • collect 支持下一页链接、页码、JSON 游标分页和列表详情关联。
  • sync 保存快照并输出新增、更新、删除事件;不完整采集不会误删旧记录。
  • crawl 增加持久检查点、恢复与失败重试、时间和输出预算、队列限制及可选 robots.txt 检查。
  • browse 执行等待、填写、点击和滚动步骤,提取实际导航后的页面;不提供任意脚本或验证码自动处理。
  • MCP 增加 collect_pages、sync_collection、browse_page。配置与边界见 采集工作流。

安全与工程改进

  • 加固凭据作用域、DNS 校验、HTML 净化、响应大小限制、资源下载和缓存;具体边界见 安全加固记录。
  • CLI 命令与 MCP 处理器按职责拆分,分页和浏览器限制集中管理;状态损坏、锁冲突、存储预算超限使用独立错误码。
  • 快照和检查点的磁盘操作移入阻塞任务,取消调用时运行中的写入仍保持锁直至完成。
  • 最低支持 Rust 版本为 1.98.1;增加无默认特性、文档契约、支持基线和独立浏览器 CI 检查。

Rust 调用方将 McpServer::run_stdio 改为 run_transport 并传入输入输出流。停止原因与同步事件改为枚举,JSON 名称保持不变。缓存键升级为 v4;批量任务身份包含软件版本,跨版本恢复可能被拒绝,应新建任务。CLI/MCP 同步存储预算统一为 1–65536 MiB。

Skills.sh 平台适配

  • 新增第 22 个内置适配器,支持 skills.sh / www.skills.sh 的技能详情、仓库技能列表、站内搜索及首页、Trending、Hot 榜单自动翻页。
  • 从公开 HTML 和 Next Flight 数据恢复折叠技能正文,无需 API Key、浏览器或新增运行时依赖;正文只作为数据提取,不执行安装命令。
  • CLI --skills-pages / --skills-limit 和 MCP 同名下划线参数控制榜单页数及去重结果上限。默认最多 3 页、1000 条,保留停止原因与后续页失败时的部分结果;公共搜索最多 200 条且没有翻页游标。
  • JSON entity 提供来源、技能标识、安装命令、正文完整性或技能列表。折叠内容缺失时明确返回预览警告;API 目录失败直接返回错误,不降级为无搜索结果的页面外壳。
  • 当前不接入需要认证的 /api/v1,不提供完整仓库文件下载。详见 Skills.sh 适配说明。

第一批可靠性改进

  • 保留搜索查询的连字符、引号、排除词和年份,取消隐式查询放宽;inurl: 等操作符不再误作域名过滤。
  • 搜索 JSON/JSONL 统一使用含查询、过滤数量和警告的报告对象;--diagnostics 控制 Markdown 诊断,未知页面结构明确报错。
  • 增加 --schema-strict / MCP schema_strict,Schema 失败直接报错;默认回退会写入 warnings[]。文档 extraction 记录实际路径。
  • 四个主要 MCP 工具提供结构化输出与输出 Schema。参数和结果集中校验,核心错误及逐项失败包含稳定错误码与重试信息。

第二阶段:批量任务与兼容清理

  • CLI batch -f jsonl 逐项输出并刷新,默认输入顺序,--order completion 按完成顺序;有界缓冲支持背压。
  • --checkpoint 保存完整结果,--resume 继续未完成项,--retry-failed 仅重跑失败项;支持尾部半行恢复、任务身份校验和独占文件锁。
  • 单主机并发默认 2,支持单主机/全局任务启动间隔。完整 JSON 报告新增 resumed / fetched,每项新增从 0 开始的 index。
  • MCP 增加相同恢复参数及 stream_results,通过带 tkless/batch_item 元数据的进度通知流式交付,最终只返回统计。
  • MCP 在 0.5.0 仅实现 2025-11-25,移除旧协议输出降级、旧工具别名和前缀;未发布的 0.7.0 已升级到 2026-07-28。CLI 长参数与子命令仅保留规范名称。
  • 删除弃用的无作用域 Cookie 接口及旧搜索入口;原生搜索统一为 SearchOptions / SearchReport。缓存键升级为 v3,文档必须包含当前来源字段,不迁移旧结构。

示例及限制见 批量任务。当前恢复覆盖固定 URL 列表,站点爬虫队列恢复另行实现。

搜索统一使用 Bing

CLI、Shell、MCP web_search 和深度调研均直接使用 Bing。默认搜索上限为 10 条,实际返回数量取决于上游响应与本地过滤;深度调研使用自身每轮检索预算。

  • 移除其他搜索引擎实现、聚合搜索路由及人工验证窗口。
  • 删除 CLI 的 --engine、--yandex-region,以及 MCP 的 engine、yandex_region 参数。
  • 平台定向统一为 --scope PLATFORM,替代 --github、--wechat、--zhihu 等布尔开关。
  • 将平台限制转换为 site: 查询,并按实际 URL 主机名和路径过滤,先过滤再截取数量。
  • 返回项保留 engine: "bing",不以其他域名的链接补齐数量。
tkless search "DeepSeek"
tkless search "Tokio" --scope github -l 10 -f json
tkless search "Rust runtime" --fetch-content --dedup -l 3 --max-tokens-per-page 1500 -f json
tkless research "Rust 异步运行时" -f json

--limit 范围为 1–100;--dedup 和 --max-tokens-per-page 要求 --fetch-content。搜索输出支持 markdown、json、jsonl;调研输出支持 markdown、json。

后台 HTTPS 连接预检

搜索前检查 Bing 的 HTTPS 连接。HTTP 沿用搜索客户端和代理;CDP 在实际浏览器上下文中检测。

  • 使用无关键词、无 Cookie/Authorization 的根路径 HEAD 请求,不执行系统 ping。
  • 分开记录连接建立与响应头耗时;复用连接时不伪造新的握手耗时。
  • 成功缓存 60 秒,失败或未知状态缓存 5 秒;缓存限于当前进程,并按客户端或浏览器上下文隔离。
  • HTTP 连接预算默认 3 秒、预检总预算 5 秒;CDP 使用整体 5 秒预算。
  • 慢连接只告警,未知状态仍尝试搜索;429 按 Retry-After 冷却。
  • 使用 -vv 查看诊断,标准输出继续保留结果格式。
tkless -vv search "Rust programming language" -f json
tkless --auto-cdp search "DeepSeek" -f json
tkless search "DeepSeek" --cdp http://127.0.0.1:9222 --cdp-wait 1500 -f json

浏览器预检无法创建隐藏 target 时,降级为任务专属的普通后台标签页,并只清理任务创建的标签页。普通后台标签页不保证完全隐藏。浏览器渲染不提供自动解验证码或人工验证窗口流程。

MCP 参数迁移

更新二进制后重启 MCP 服务,刷新宿主缓存的工具声明。调用 web_search 时省略引擎选择参数:

{"query":"Tokio","scope":"github","limit":10,"format":"json"}

MCP 搜索 limit 范围为 1–20,默认 10;auto_cdp 默认 false。搜索与调研拒绝未声明参数。dedup=true、max_tokens_per_page、schema 要求 fetch_content=true。

完整模式提供 31 个业务工具;动态模式初始提供 2 个核心工具和 4 个发现元工具。完整 Schema 以 tools/list 或动态工具 get_tool_schema 返回为准。

其他当前能力与边界

  • 原生 Rust PDF 文本提取、元数据和启发式 Markdown 重排,不包含扫描件 OCR。
  • 22 个内置平台适配器,以及网页、表格、Schema、字幕等提取能力。
  • 本地启发式多跳调研与来源摘录,不调用外部 LLM 自动生成结论。
  • 批量与站点抓取保留逐项错误,默认部分失败也非零退出;可用 --allow-partial 接受部分失败。
  • 自升级使用语义化版本比较,替换前验证 SHA-256;发布工作流生成配套 .sha256 文件。

最近代码验证记录

2026-10-30:307 项离线测试通过,覆盖分页与同步、任务恢复、预算、锁竞争、取消期间写入、参数边界和 MCP 协议。严格 Clippy、无默认特性编译、格式检查、Release 构建及文档契约检查通过。1 项真实 Chrome 无头浏览器集成测试单独通过;远程 CI 状态需提交后确认。

此前 HTTP 在线实测:DeepSeek 返回 10 条 Bing 结果;Tokio runtime --scope github 返回 1 条符合条件的链接,诊断记录 10 个候选中有 9 个域名不符而被过滤。此结果不是本次版本更新的新测试,在线数量不作为离线 CI 的成功断言。

详细说明见 README、Bing 搜索 和 MCP 接入。

v0.6.0

Choose a tag to compare

@github-actions github-actions released this 31 Oct 07:47

TkLess 更新说明

v0.6.0 - 2026-10-31

本次发布聚焦代码审计修复、CLI 规范与文档一致性。完整条目见 CHANGELOG。

安全

  • 自定义请求头改为白名单,非凭据头只在显式授权的初始 origin 发送;Cookie 不再按 apex 域放行,凭据平台映射收窄,显式 Cookie 存在时不再回退凭据库。
  • cookies.txt 改为临时文件 + rename,Unix 下 0600;MCP HTTP 增加 Host/Origin/Content-Type 校验、定长 Bearer 比较,并限制已完成任务数量。
  • SSRF 判定补齐 NAT64、6to4、IPv4-translated、site-local 等特殊段;下载器拒绝非 HTTP(S) 与私网字面量,限制 16 GiB 并对 Range 使用饱和运算。
  • Retry-After 单次上限降为 60 秒;Cookie Jar 拒绝值内分隔符;缓存维护限制单条大小;PDF 解析移入阻塞线程并限制 60 秒,frontmatter 使用 YAML 转义;CDP 临时配置目录随机化并设置 0700。

逻辑与可靠性

  • 搜索年份前缀按字符边界处理,不再 panic;RSS/Atom 接入统一的预算、分块、摘要与指标管线。
  • --selector 零匹配返回错误,嵌套选择器不重复输出;数学公式按 id 顺序恢复;同步状态自动回收旧事件与未引用快照。
  • research 严格执行 3–20 页预算并复用 Hop 2 去重;表格表头补齐;GitHub 适配器不再误判登录/组织页;采集模板拒绝空格占位符。
  • 分块不再静默放大,代码围栏类型感知,分节使用调用方 tokenizer;无特征短文本使用原始文本哈希;爬虫预算触发前先提交已抓取页面。
  • MCP 任务 TTL 改为 >= 到期判定,修复粗粒度时钟下零 TTL 任务未回收的问题。

CLI 与 MCP

  • 根 --format/-o 由结构化子命令继承,不再静默忽略;子命令格式限制为实际支持的 markdown/json/jsonl(research 仅前两种)。
  • 数量、大小、超时、TTL、日期与 B 站参数在 clap 层校验;新增互斥与依赖声明;--screenshot/--pdf、--out-dir/-o 等冲突在解析期报错。
  • 缺少 TARGET、URL 解析失败与参数错误返回退出码 2;--stats 改写到 stderr;--log-format json 覆盖致命错误;doctor 实际探测缓存并在失败时返回非零。
  • MCP fetch_webpage 增加 jsonl 与 max_size_mb,batch_fetch_webpages 增加链接/表格/去图去链参数,deep_research 增加 proxy;缓存默认改为 opt-in。
  • 破坏性变更:--config 短选项改为 -C,--concurrency 改为 -j,research --max-pages 改为 -P;移除 cache --clear、upgrade --force 的短选项。

文档与发布

  • 移除 README 中不存在的 platforms/update 别名与 watch --once;MCP 业务工具数量统一为 31;修正 REPL 命令、--chunk 输出、退出码与安全边界描述。
  • CI/Release 的 checkout、cache、artifact actions 升级到 Node 24 运行时版本;x86_64 macOS DMG 改在 macos-latest 上交叉编译,避免 Intel runner 退役导致发布排队。
  • 本次发布未配置 Minisign Secrets,因此上传未签名的 SHA256SUMS;tkless upgrade 继续 fail closed。配置真实公钥与 MINISIGN_SECRET_KEY/MINISIGN_PASSWORD 后,后续发布会自动附加 SHA256SUMS.minisig。

v0.5.0 - 2026-10-30(历史)

新增工作流

  • collect 支持下一页链接、页码、JSON 游标分页和列表详情关联。
  • sync 保存快照并输出新增、更新、删除事件;不完整采集不会误删旧记录。
  • crawl 增加持久检查点、恢复与失败重试、时间和输出预算、队列限制及可选 robots.txt 检查。
  • browse 执行等待、填写、点击和滚动步骤,提取实际导航后的页面;不提供任意脚本或验证码自动处理。
  • MCP 增加 collect_pages、sync_collection、browse_page。配置与边界见 采集工作流。

安全与工程改进

  • 加固凭据作用域、DNS 校验、HTML 净化、响应大小限制、资源下载和缓存;具体边界见 安全加固记录。
  • CLI 命令与 MCP 处理器按职责拆分,分页和浏览器限制集中管理;状态损坏、锁冲突、存储预算超限使用独立错误码。
  • 快照和检查点的磁盘操作移入阻塞任务,取消调用时运行中的写入仍保持锁直至完成。
  • 最低支持 Rust 版本为 1.98.1;增加无默认特性、文档契约、支持基线和独立浏览器 CI 检查。

Rust 调用方将 McpServer::run_stdio 改为 run_transport 并传入输入输出流。停止原因与同步事件改为枚举,JSON 名称保持不变。缓存键升级为 v4;批量任务身份包含软件版本,跨版本恢复可能被拒绝,应新建任务。CLI/MCP 同步存储预算统一为 1–65536 MiB。

Skills.sh 平台适配

  • 新增第 22 个内置适配器,支持 skills.sh / www.skills.sh 的技能详情、仓库技能列表、站内搜索及首页、Trending、Hot 榜单自动翻页。
  • 从公开 HTML 和 Next Flight 数据恢复折叠技能正文,无需 API Key、浏览器或新增运行时依赖;正文只作为数据提取,不执行安装命令。
  • CLI --skills-pages / --skills-limit 和 MCP 同名下划线参数控制榜单页数及去重结果上限。默认最多 3 页、1000 条,保留停止原因与后续页失败时的部分结果;公共搜索最多 200 条且没有翻页游标。
  • JSON entity 提供来源、技能标识、安装命令、正文完整性或技能列表。折叠内容缺失时明确返回预览警告;API 目录失败直接返回错误,不降级为无搜索结果的页面外壳。
  • 当前不接入需要认证的 /api/v1,不提供完整仓库文件下载。详见 Skills.sh 适配说明。

第一批可靠性改进

  • 保留搜索查询的连字符、引号、排除词和年份,取消隐式查询放宽;inurl: 等操作符不再误作域名过滤。
  • 搜索 JSON/JSONL 统一使用含查询、过滤数量和警告的报告对象;--diagnostics 控制 Markdown 诊断,未知页面结构明确报错。
  • 增加 --schema-strict / MCP schema_strict,Schema 失败直接报错;默认回退会写入 warnings[]。文档 extraction 记录实际路径。
  • 四个主要 MCP 工具提供结构化输出与输出 Schema。参数和结果集中校验,核心错误及逐项失败包含稳定错误码与重试信息。

第二阶段:批量任务与兼容清理

  • CLI batch -f jsonl 逐项输出并刷新,默认输入顺序,--order completion 按完成顺序;有界缓冲支持背压。
  • --checkpoint 保存完整结果,--resume 继续未完成项,--retry-failed 仅重跑失败项;支持尾部半行恢复、任务身份校验和独占文件锁。
  • 单主机并发默认 2,支持单主机/全局任务启动间隔。完整 JSON 报告新增 resumed / fetched,每项新增从 0 开始的 index。
  • MCP 增加相同恢复参数及 stream_results,通过带 tkless/batch_item 元数据的进度通知流式交付,最终只返回统计。
  • MCP 仅实现 2025-11-25,移除旧协议输出降级、旧工具别名和前缀;CLI 长参数与子命令仅保留规范名称。
  • 删除弃用的无作用域 Cookie 接口及旧搜索入口;原生搜索统一为 SearchOptions / SearchReport。缓存键升级为 v3,文档必须包含当前来源字段,不迁移旧结构。

示例及限制见 批量任务。当前恢复覆盖固定 URL 列表,站点爬虫队列恢复另行实现。

搜索统一使用 Bing

CLI、Shell、MCP web_search 和深度调研均直接使用 Bing。默认搜索上限为 10 条,实际返回数量取决于上游响应与本地过滤;深度调研使用自身每轮检索预算。

  • 移除其他搜索引擎实现、聚合搜索路由及人工验证窗口。
  • 删除 CLI 的 --engine、--yandex-region,以及 MCP 的 engine、yandex_region 参数。
  • 平台定向统一为 --scope PLATFORM,替代 --github、--wechat、--zhihu 等布尔开关。
  • 将平台限制转换为 site: 查询,并按实际 URL 主机名和路径过滤,先过滤再截取数量。
  • 返回项保留 engine: "bing",不以其他域名的链接补齐数量。
tkless search "DeepSeek"
tkless search "Tokio" --scope github -l 10 -f json
tkless search "Rust runtime" --fetch-content --dedup -l 3 --max-tokens-per-page 1500 -f json
tkless research "Rust 异步运行时" -f json

--limit 范围为 1–100;--dedup 和 --max-tokens-per-page 要求 --fetch-content。搜索输出支持 markdown、json、jsonl;调研输出支持 markdown、json。

后台 HTTPS 连接预检

搜索前检查 Bing 的 HTTPS 连接。HTTP 沿用搜索客户端和代理;CDP 在实际浏览器上下文中检测。

  • 使用无关键词、无 Cookie/Authorization 的根路径 HEAD 请求,不执行系统 ping。
  • 分开记录连接建立与响应头耗时;复用连接时不伪造新的握手耗时。
  • 成功缓存 60 秒,失败或未知状态缓存 5 秒;缓存限于当前进程,并按客户端或浏览器上下文隔离。
  • HTTP 连接预算默认 3 秒、预检总预算 5 秒;CDP 使用整体 5 秒预算。
  • 慢连接只告警,未知状态仍尝试搜索;429 按 Retry-After 冷却。
  • 使用 -vv 查看诊断,标准输出继续保留结果格式。
tkless -vv search "Rust programming language" -f json
tkless --auto-cdp search "DeepSeek" -f json
tkless search "DeepSeek" --cdp http://127.0.0.1:9222 --cdp-wait 1500 -f json

浏览器预检无法创建隐藏 target 时,降级为任务专属的普通后台标签页,并只清理任务创建的标签页。普通后台标签页不保证完全隐藏。浏览器渲染不提供自动解验证码或人工验证窗口流程。

MCP 参数迁移

更新二进制后重启 MCP 服务,刷新宿主缓存的工具声明。调用 web_search 时省略引擎选择参数:

{"query":"Tokio","scope":"github","limit":10,"format":"json"}

MCP 搜索 limit 范围为 1–20,默认 10;auto_cdp 默认 false。搜索与调研拒绝未声明参数。dedup=true、max_tokens_per_page、schema 要求 fetch_content=true。

完整模式提供 31 个业务工具;动态模式初始提供 2 个核心工具和 4 个发现元工具。完整 Schema 以 tools/list 或动态工具 get_tool_schema 返回为准。

其他当前能力与边界

  • 原生 Rust PDF 文本提取、元数据和启发式 Markdown 重排,不包含扫描件 OCR。
  • 22 个内置平台适配器,以及网页、表格、Schema、字幕等提取能力。
  • 本地启发式多跳调研与来源摘录,不调用外部 LLM 自动生成结论。
  • 批量与站点抓取保留逐项错误,默认部分失败也非零退出;可用 --allow-partial 接受部分失败。
  • 自升级使用语义化版本比较,替换前验证 SHA-256;发布工作流生成配套 .sha256 文件。

最近代码验证记录

2026-10-30:307 项离线测试通过,覆盖分页与同步、任务恢复、预算、锁竞争、取消期间写入、参数边界和 MCP 协议。严格 Clippy、无默认特性编译、格式检查、Release 构建及文档契约检查通过。1 项真实 Chrome 无头浏览器集成测试单独通过;远程 CI 状态需提交后确认。

此前 HTTP 在线实测:DeepSeek 返回 10 条 Bing 结果;Tokio runtime --scope github 返回 1 条符合条件的链接,诊断记录 10 个候选中有 9 个域名不符而被过滤。此结果不是本次版本更新的新测试,在线数量不作为离线 CI 的成功断言。

详细说明见 README、Bing 搜索 和 MCP 接入。

v0.5.0

Choose a tag to compare

@github-actions github-actions released this 30 Oct 07:06

TkLess 0.5.0 更新说明

更新日期:2026-10-30。本说明对应 0.5.0 源码,不代表已经发布到 GitHub Release。已发布版本以 Release 标签和附件为准。

0.5.0 新增工作流

  • collect 支持下一页链接、页码、JSON 游标分页和列表详情关联。
  • sync 保存快照并输出新增、更新、删除事件;不完整采集不会误删旧记录。
  • crawl 增加持久检查点、恢复与失败重试、时间和输出预算、队列限制及可选 robots.txt 检查。
  • browse 执行等待、填写、点击和滚动步骤,提取实际导航后的页面;不提供任意脚本或验证码自动处理。
  • MCP 增加 collect_pages、sync_collection、browse_page。配置与边界见 采集工作流。

安全与工程改进

  • 加固凭据作用域、DNS 校验、HTML 净化、响应大小限制、资源下载和缓存;具体边界见 安全加固记录。
  • CLI 命令与 MCP 处理器按职责拆分,分页和浏览器限制集中管理;状态损坏、锁冲突、存储预算超限使用独立错误码。
  • 快照和检查点的磁盘操作移入阻塞任务,取消调用时运行中的写入仍保持锁直至完成。
  • 最低支持 Rust 版本为 1.98.1;增加无默认特性、文档契约、支持基线和独立浏览器 CI 检查。

Rust 调用方将 McpServer::run_stdio 改为 run_transport 并传入输入输出流。停止原因与同步事件改为枚举,JSON 名称保持不变。缓存键升级为 v4;批量任务身份包含软件版本,跨版本恢复可能被拒绝,应新建任务。CLI/MCP 同步存储预算统一为 1–65536 MiB。

Skills.sh 平台适配

  • 新增第 22 个内置适配器,支持 skills.sh / www.skills.sh 的技能详情、仓库技能列表、站内搜索及首页、Trending、Hot 榜单自动翻页。
  • 从公开 HTML 和 Next Flight 数据恢复折叠技能正文,无需 API Key、浏览器或新增运行时依赖;正文只作为数据提取,不执行安装命令。
  • CLI --skills-pages / --skills-limit 和 MCP 同名下划线参数控制榜单页数及去重结果上限。默认最多 3 页、1000 条,保留停止原因与后续页失败时的部分结果;公共搜索最多 200 条且没有翻页游标。
  • JSON entity 提供来源、技能标识、安装命令、正文完整性或技能列表。折叠内容缺失时明确返回预览警告;API 目录失败直接返回错误,不降级为无搜索结果的页面外壳。
  • 当前不接入需要认证的 /api/v1,不提供完整仓库文件下载。详见 Skills.sh 适配说明。

第一批可靠性改进

  • 保留搜索查询的连字符、引号、排除词和年份,取消隐式查询放宽;inurl: 等操作符不再误作域名过滤。
  • 搜索 JSON/JSONL 统一使用含查询、过滤数量和警告的报告对象;--diagnostics 控制 Markdown 诊断,未知页面结构明确报错。
  • 增加 --schema-strict / MCP schema_strict,Schema 失败直接报错;默认回退会写入 warnings[]。文档 extraction 记录实际路径。
  • 四个主要 MCP 工具提供结构化输出与输出 Schema。参数和结果集中校验,核心错误及逐项失败包含稳定错误码与重试信息。

第二阶段:批量任务与兼容清理

  • CLI batch -f jsonl 逐项输出并刷新,默认输入顺序,--order completion 按完成顺序;有界缓冲支持背压。
  • --checkpoint 保存完整结果,--resume 继续未完成项,--retry-failed 仅重跑失败项;支持尾部半行恢复、任务身份校验和独占文件锁。
  • 单主机并发默认 2,支持单主机/全局任务启动间隔。完整 JSON 报告新增 resumed / fetched,每项新增从 0 开始的 index。
  • MCP 增加相同恢复参数及 stream_results,通过带 tkless/batch_item 元数据的进度通知流式交付,最终只返回统计。
  • MCP 仅实现 2025-11-25,移除旧协议输出降级、旧工具别名和前缀;CLI 长参数与子命令仅保留规范名称。
  • 删除弃用的无作用域 Cookie 接口及旧搜索入口;原生搜索统一为 SearchOptions / SearchReport。缓存键升级为 v3,文档必须包含当前来源字段,不迁移旧结构。

示例及限制见 批量任务。当前恢复覆盖固定 URL 列表,站点爬虫队列恢复另行实现。

搜索统一使用 Bing

CLI、Shell、MCP web_search 和深度调研均直接使用 Bing。默认搜索上限为 10 条,实际返回数量取决于上游响应与本地过滤;深度调研使用自身每轮检索预算。

  • 移除其他搜索引擎实现、聚合搜索路由及人工验证窗口。
  • 删除 CLI 的 --engine、--yandex-region,以及 MCP 的 engine、yandex_region 参数。
  • 平台定向统一为 --scope PLATFORM,替代 --github、--wechat、--zhihu 等布尔开关。
  • 将平台限制转换为 site: 查询,并按实际 URL 主机名和路径过滤,先过滤再截取数量。
  • 返回项保留 engine: "bing",不以其他域名的链接补齐数量。
tkless search "DeepSeek"
tkless search "Tokio" --scope github -l 10 -f json
tkless search "Rust runtime" --fetch-content --dedup -l 3 --max-tokens-per-page 1500 -f json
tkless research "Rust 异步运行时" -f json

--limit 必须为正整数;--dedup 和 --max-tokens-per-page 要求 --fetch-content。搜索输出支持 markdown、json、jsonl;调研输出支持 markdown、json。

后台 HTTPS 连接预检

搜索前检查 Bing 的 HTTPS 连接。HTTP 沿用搜索客户端和代理;CDP 在实际浏览器上下文中检测。

  • 使用无关键词、无 Cookie/Authorization 的根路径 HEAD 请求,不执行系统 ping。
  • 分开记录连接建立与响应头耗时;复用连接时不伪造新的握手耗时。
  • 成功缓存 60 秒,失败或未知状态缓存 5 秒;缓存限于当前进程,并按客户端或浏览器上下文隔离。
  • HTTP 连接预算默认 3 秒、预检总预算 5 秒;CDP 使用整体 5 秒预算。
  • 慢连接只告警,未知状态仍尝试搜索;429 按 Retry-After 冷却。
  • 使用 -vv 查看诊断,标准输出继续保留结果格式。
tkless -vv search "Rust programming language" -f json
tkless --auto-cdp search "DeepSeek" -f json
tkless search "DeepSeek" --cdp http://127.0.0.1:9222 --cdp-wait 1500 -f json

浏览器预检无法创建隐藏 target 时,降级为任务专属的普通后台标签页,并只清理任务创建的标签页。普通后台标签页不保证完全隐藏。浏览器渲染不提供自动解验证码或人工验证窗口流程。

MCP 参数迁移

更新二进制后重启 MCP 服务,刷新宿主缓存的工具声明。调用 web_search 时省略引擎选择参数:

{"query":"Tokio","scope":"github","limit":10,"format":"json"}

MCP 搜索 limit 范围为 1–20,默认 10;auto_cdp 默认 false。搜索与调研拒绝未声明参数。dedup=true、max_tokens_per_page、schema 要求 fetch_content=true。

完整模式提供 26 个业务工具;动态模式初始提供 2 个核心工具和 4 个发现元工具。完整 Schema 以 tools/list 或动态工具 get_tool_schema 返回为准。

其他当前能力与边界

  • 原生 Rust PDF 文本提取、元数据和启发式 Markdown 重排,不包含扫描件 OCR。
  • 22 个内置平台适配器,以及网页、表格、Schema、字幕等提取能力。
  • 本地启发式多跳调研与来源摘录,不调用外部 LLM 自动生成结论。
  • 批量与站点抓取保留逐项错误,默认部分失败也非零退出;可用 --allow-partial 接受部分失败。
  • 自升级使用语义化版本比较,替换前验证 SHA-256;发布工作流生成配套 .sha256 文件。

最近代码验证记录

2026-10-30:307 项离线测试通过,覆盖分页与同步、任务恢复、预算、锁竞争、取消期间写入、参数边界和 MCP 协议。严格 Clippy、无默认特性编译、格式检查、Release 构建及文档契约检查通过。1 项真实 Chrome 无头浏览器集成测试单独通过;远程 CI 状态需提交后确认。

此前 HTTP 在线实测:DeepSeek 返回 10 条 Bing 结果;Tokio runtime --scope github 返回 1 条符合条件的链接,诊断记录 10 个候选中有 9 个域名不符而被过滤。此结果不是本次版本更新的新测试,在线数量不作为离线 CI 的成功断言。

详细说明见 README、Bing 搜索 和 MCP 接入。

v0.4.0

Choose a tag to compare

@github-actions github-actions released this 18 Oct 14:41

TkLess v0.4.0 — Spend less tokens, perceive more web.

TkLess v0.4.0 带来重大功能演进:原生 PDF 智能解析与重排、Autonomous Deep Research 多跳自主深度调研体系、CDP 协议级资源拦截加速、DuckDuckGo 双引擎聚合、全方言 Schema 抽取与容错回退、维基内联 CSS 噪声根除、全链路 Doctor 环境自检以及 CLI 与 Windows PowerShell 体验深度净化。


🚀 核心更新亮点 (Key Highlights)

1. 📄 原生 PDF 智能解析与 Markdown 重排 (tkless-core::pdf)

  • 纯 Rust 零外部依赖:基于 pdf-extract 与 lopdf 构建纯 Rust PDF 解析引擎,完全脱离 Poppler、PDFium 及系统 C/C++ 动态链接库与 OpenSSL 编译绑定,全平台(Windows / macOS / Linux)免环境配置开箱即用;
  • 全通道输入无缝支持:自动感知输入形态,无缝支持远程 .pdf URL、本地 .pdf 文件路径以及管道 stdin 输入流(如 curl -s ... | tkless -);
  • 页眉/页脚/页码智能去噪:内置高频页眉、页脚及纯数字/罗马数字页码模式识别器,剔除跨页重复出现的版权声明与页码杂讯;
  • Markdown 结构化重排:智能重组 PDF 断行碎片,恢复自然段落缩进与多级标题层级(H1/H2/H3),生成高密度、低 Token 消耗的纯净结构化文档。
# 抓取远程学术/技术 PDF 并直接输出纯净 Markdown
tkless fetch https://arxiv.org/pdf/1706.03762.pdf -o attention.md

# 解析本地 PDF 文件
tkless fetch ./annual_report.pdf --stats

2. 🔬 Autonomous Deep Research 多跳自主深度调研体系

  • 多轮多跳递归探索 (tkless research & MCP deep_research):支持设置调研主题、最大探索跳数(hops)与分支发散度。基于前置抓取结果自动生成后续追问子查询,形成发散与收敛闭环;
  • 多源并发抓取与交叉比对:自动化并行检索多个引擎并抓取高权重网页,通过交叉比对不同信源消除幻觉;
  • 结构化研报生成与思维链留痕:最终自动沉淀包含“核心摘要”、“关键发现矩阵”、“详细论证”与“参考信源列表”的 Markdown 深度研究报告,并完整记录研究跳数与决策过程。
# 执行 2 跳深度调研,发散探索前沿进展
tkless research "Rust 异步运行时性能优化最新实践" --max-hops 2 -o research_report.md

3. ⚡ CDP 资源拦截加速 (3~5x) 与自动懒加载滚动

  • DevTools 协议级静态资源拦截:新增 --cdp-block-images、--cdp-block-media、--cdp-block-fonts 核心拦截策略,在 CDP 层拦截图片、音频、视频与字体静态资源,网络吞吐量降低 70% 以上,首屏渲染提速 3~5 倍;
  • 平滑渐进式页面滚动 (--cdp-auto-scroll):支持自适应步长平滑滚动到底部,彻底触发现代 SPA 与瀑布流站点的无限懒加载与动态水合,确保动态长文本完整捕获。
# 开启图片与媒体拦截,极速渲染重度动态页面
tkless fetch https://example.com --cdp --cdp-block-images --cdp-block-media --cdp-auto-scroll

4. 🌐 DuckDuckGo 引擎集成与双引擎并发去重检索

  • 全球化与海外开发者生态支持:在原有 Bing 基础之上,全新引入 DuckDuckGo 搜索源,支持 -e all(并发聚合)、-e bing、-e duckduckgo 灵活指定;
  • 双引擎并发与 SimHash 语义去重:all 模式下双引擎并行发起查询,基于规范化 URL 签名与 SimHash 汉明距离进行双重去重,消除冗余并提供更均衡的搜索覆盖率;
  • 弹性容灾降级与显式告警:引擎遇到反爬验证或网络超时时保持优雅降级,并在结果中明确标识可能受阻的信源,杜绝空结果假象。
# 聚合 Bing 与 DuckDuckGo 双引擎结果
tkless search "Rust web framework benchmark" -e all -l 10

5. 🎯 声明式 Schema 抽取全方言统一与容错回退

  • 全方言模式通用支持:统一兼容平铺键值对({"title": "h1", "price": ".amount"})、嵌套 properties 规范以及标准 JSON Schema 格式;
  • 智能注解剥离与选择器派生:自动剥离类型提示(如 | number、| string),并根据字段语义启发式推导最优 CSS 选择器;
  • 容错降级与明确诊断:当选择器未匹配到任何字段时,不再抛出异常崩溃,而是输出清晰的字段诊断提示(matched: 0)并平滑回退至正文全文抽取。
# 使用任意 JSON Schema 方言抽取结构化数据
tkless fetch https://news.ycombinator.com --schema '{"title": ".titleline > a", "rank": ".rank"}' -f json

6. 🧹 维基百科与信息框内联 CSS 噪声彻底根除

  • 精准限定内容边界:维基百科适配器正文抽取根严格锁定 #mw-content-text,彻底剔除 Vector 2022 皮肤的目录侧栏(.vector-toc)与 50+ 门语言切换长列表;
  • 内联样式穿透剥离:彻底清除正文和 Infobox 表格中内嵌的 <style>、@media 以及 .mw-parser-output CSS 类声明,使提取出的正文及导出的 CSV/SQL 数据恢复极致纯净。

7. 🩺 全链路环境自检诊断 (tkless doctor)

  • 一键诊断子命令:新增 tkless doctor 命令,全面探测系统运行环境:
    • 系统架构与操作系统版本;
    • 本地 Chrome / Microsoft Edge / Chromium 无头浏览器就绪状态与路径探测;
    • 本地响应缓存(Response Cache)读写权限、容量及磁盘配额统计;
    • 核心搜索引擎与外部代理服务器的网络连通性及延时探测。
# 运行环境自检
tkless doctor

8. 🛠️ CLI 体验净化、参数体系标准化与架构高内聚解耦

  • PowerShell 与非 TTY 体验净化:仅在终端为 TTY 时展示动态进度;管道/重定向模式下自动抑制实时刷新并支持 NO_COLOR,彻底根除 Windows PowerShell 下 exit 0 误报红色 NativeCommandError 的视觉痛点;
  • 全局选项覆盖与子命令统一:全局统一支持 -o/--output、-q/--quiet、-v/--verbose、--stats,并在 tables 等子命令中统一支持 --table-format;
  • 架构模块解耦与极速轻量化:拆分 tkless-cli 为 doctor.rs、progress.rs、shell.rs、upgrade.rs 单一职责模块;剔除 readability 默认附带的重复旧版依赖,减少 46 个上游依赖包,大幅提升编译速度并压缩编译后二进制体积。

📦 跨平台独立二进制下载 (Direct Standalone Downloads)

操作系统 / 架构 发布产物名称 说明
Windows x86_64 tkless-windows-amd64.exe 独立免安装程序,直接放入口径 PATH 或供 Cursor / IDE 直连
macOS Apple Silicon (M1~M4) tkless-macos-arm64.dmg 原生 Apple Silicon DMG 镜像包,拖入 Applications 即可使用
macOS Intel (x86_64) tkless-macos-amd64.dmg Intel 架构 Mac DMG 镜像包
Linux x86_64 tkless-linux-amd64 静态编译独立 ELF 二进制 (内置 OpenSSL vendored, 零 glibc 依赖冲突)
Linux aarch64 (ARM64) tkless-linux-arm64 ARM64 Linux 云服务器与树莓派独立二进制

🛠️ 一键自升级命令

已安装用户可直接在终端中执行自更新至 v0.4.0:

tkless upgrade

v0.3.0

Choose a tag to compare

@github-actions github-actions released this 17 Oct 19:50

TkLess v0.3.0 — Spend less tokens, perceive more web.

本次版本带来了针对垂直生态搜索管道、CDP无头浏览器自动托管、反爬无缝容灾回退、中间重定向解密的重大系统升级:


🚀 核心更新亮点 (Key Highlights)

1. 🌐 垂直生态专属搜索管道与多引擎解耦

  • 百度百科原生词条直连 (search_baike):使用 --baike 时,直接路由至百度百科原生 OpenAPI 词条接口,彻底解决通用搜索引擎将词条降级为官网导航或首词百科的问题,响应时间 < 100ms,命中率 100%;
  • 微信公众号文章专属检索 (search_wechat_sogou):使用 --wechat 时,自动路由至微信文章专用检索管道,配合会话级 Cookie 保持与动态 JS 解密,直接返回真实可读的公众号文章列表。

2. 🤖 内置无头浏览器守护进程与 CDP 自动托管 (Auto-Managed CDP)

  • 本地系统浏览器自探测 (locate_system_browser):自动定位 Windows、macOS 与 Linux 系统中已安装的 Chrome、Edge 或 Chromium;
  • 全自动开箱即用:指定 --cdp 或触发动态渲染时,无需用户手动在外部命令行启动浏览器。若端口未监听,TkLess 会自动以 --headless=new 静默拉起独立守护进程并接管,彻底告别“无法连接到 Chrome CDP 端点”崩溃。

3. 🛡️ 反爬与 CDP 容灾回退(Fallback)无缝化

  • 深度防爬指纹识别:精准识别 HTTP 403/429/503,以及百度 Paris/Heicha WAF、搜狗反爬、Cloudflare 5秒盾等验证码拦截页;
  • 自适应无缝降级:轻量 HTTP 遇到阻断时不再直接中断报错,而是自动将目标页面无缝交由 CDP 真实浏览器执行 JS 水合加载,对上层 Agent 保持完全透明。

4. 🔑 平台适配器前置防盗链中间跳转解密

  • 搜狗微信跳转页逆向解密 (decrypt_sogou_wechat_redirect):针对微信搜索结果中的动态 JS 拼接跳转页(/link?url=...),内置会话预热与 JS 切片还原引擎,直接提取真实的 https://mp.weixin.qq.com/s?... 直达文章链接,避免二次验证码阻断。

5. 🔍 工业级搜索门禁与反爬自愈体系

  • 商业广告与推广位彻底过滤:拦截淘宝、抖音、TapTap、阿里云盘、Poki 等垃圾推广,误放行率降低至 0%;
  • 首词降级(Term Drop)严格拦截:检测 query 核心语义词覆盖率,坚决拦截仅命中首词的粗粒度百科结果;
  • 多阶段智能查询松弛:自动剥离超前年份时效约束重试,自动执行中文紧凑短语重组,实测中文长尾时效(Group C)命中率达 100%。

6. ⚡ 4 线程 HTTP Range 分片并发下载加速

  • 突破单连接 QoS 限速:基于 HTTP 206 Range 实现 4 线程分片并发拉取,B站视频下载速度提升 3~5 倍;
  • 1MB 大块写缓冲 (BufWriter):底层磁盘写缓冲由 8KB 扩容至 1024KB,减少 99% 的系统调用中断;
  • 三级智能 CDN 路由优选:优先调度阿里云、腾讯云、百度云和 Akamai 骨干 CDN,彻底排查并降权低速 PCDN / P2P 节点。

7. 🗄️ 操作系统标准缓存路径重定向与自动 Prune

  • 消除工程目录污染:默认缓存目录由当前工程下的 .tkless_cache 重定向至跨平台标准用户目录(Windows: %LOCALAPPDATA%\tkless\cache,macOS: ~/Library/Caches/tkless,Linux: ~/.cache/tkless);
  • 启动时自动过期清理:每次启动时静默清理超过 TTL(默认 15 分钟)的过期文件,防止磁盘无限膨胀。

📦 跨平台独立二进制下载 (Direct Standalone Downloads)

操作系统 / 架构 发布产物名称 说明
Windows x86_64 tkless-windows-amd64.exe 独立免安装程序,直接放入口径 PATH 或供 Cursor / IDE 直连
macOS Apple Silicon (M1~M4) tkless-macos-arm64.dmg 原生 Apple Silicon DMG 镜像包,拖入 Applications 即可使用
macOS Intel (x86_64) tkless-macos-amd64.dmg Intel 架构 Mac DMG 镜像包
Linux x86_64 tkless-linux-amd64 静态编译独立 ELF 二进制 (内置 OpenSSL vendored, 零 glibc 依赖冲突)
Linux aarch64 (ARM64) tkless-linux-arm64 ARM64 Linux 云服务器与树莓派独立二进制

🛠️ 一键自升级命令

已安装用户可直接在终端中执行自更新至 v0.3.0:

tkless upgrade

v0.2.0

Choose a tag to compare

@github-actions github-actions released this 17 Oct 15:23
升级工作区版本至v0.2.0

v0.1.0

Choose a tag to compare

@github-actions github-actions released this 17 Oct 11:16
Release v0.1.0: TkLess - Spend less tokens, perceive more web