Total Pageviews

Monday, 9 November 2026

Skiff - 跨平台本地磁盘清理工具

 

一款磁盘清理工具,能够扫描系统缓存、检索大文件与重复文件,提供软件卸载、环境变量可视化管理,搭载本地空间 AI 分析。

文件默认移入回收站而非直接永久删除,限制危险扫描路径,高危操作增加确认校验;全程本地运算不上传数据.

 https://github.com/DrizzleTime/Skiff/releases/download/v1.0.0.beta.2/skiff_1.0.0_x64-setup.exe

-------------------

 Skiff is a local cross-platform disk cleanup tool for inspecting caches, applications, duplicate files, and large files before removal.

 

Tauri React Rust Linux macOS Windows Bun

Interface Preview

Skiff provides two main workflows: a classic cleanup interface for direct inspection and an AI-assisted analysis interface for understanding space usage.

Classic Cleanup Tool

Check disk usage, cache cleanup targets, large files, duplicate files, and application cleanup items.

Skiff classic cleanup tool interface

AI Smart Space Analysis

Understand disk usage from local scan results and get readable cleanup suggestions.

Skiff AI smart space analysis interface

Features

  • Disk overview: reads total, used, available space, usage ratio, and disk location for the current user's home directory.
  • Junk cleanup: scans and cleans platform-specific cache locations, including system caches, browser caches, developer tool caches, Flatpak and Arch package caches on Linux, and Homebrew cache on macOS.
  • Large file scan: scans common user directories for large files and moves selected files to the system Trash after confirmation.
  • Duplicate file scan: finds duplicate files by size, content hash, and byte-by-byte comparison, then moves selected files to the system Trash.
  • Application cleanup: reads Linux packages, macOS applications and Homebrew packages, or Windows uninstall registry entries, with filtering, search, selection, and confirmed uninstall.
  • Cleanup history: shows recent cleanup, Trash, uninstall, and Agent cleanup results. The main UI keeps the latest 50 records.
  • Settings: adjusts file scan paths, large-file scan thresholds, duplicate-file scan thresholds, and whether advanced feature entries are shown. Custom paths must stay inside the current user's HOME directory.
  • Tray behavior: closing the main window hides it to the system tray instead of exiting the app.

Safety Boundaries

Skiff performs real file deletion and package uninstall operations. The current implementation has these boundaries:

  • Linux, macOS, and Windows are supported by the local app and CLI. Each platform has its own cleanup target list.
  • Junk cleanup removes contents from predefined cache directories. Some package-manager cleanup targets call system commands.
  • Large-file and duplicate-file handling only allows regular files inside the current user's HOME directory. Files are moved to the system Trash by default instead of being permanently deleted. They become unrecoverable only after the Trash is emptied.
  • Large-file and duplicate-file scans default to common user directories such as Desktop, Documents, Downloads, media folders, code/project folders, and common cloud-drive folders. Application data directories such as .config, AppData, and macOS Library must be added manually in Settings.
  • Duplicate-file detection first groups files by size, then computes a content hash, and finally confirms equality with a byte-by-byte comparison.
  • Application uninstall uses the platform's registered uninstall mechanism:
    • APT: apt-get remove -y
    • RPM: prefers dnf remove -y, then yum remove -y, zypper --non-interactive remove, and finally rpm -e
    • Pacman: pacman -R --noconfirm -- <package>
    • Flatpak: flatpak uninstall -y --app
    • macOS .app: moves the app bundle to Trash
    • Homebrew: brew uninstall --formula or brew uninstall --cask
    • Windows: reads UninstallString / QuietUninstallString from the registry and runs that command
  • Linux commands that require administrator privileges use pkexec when available. macOS and Windows may show their native authorization prompts.
  • Flatpak application data cleanup is high risk because it removes app configuration, login state, local databases, and other local app data.
  • CLI deletion, cleanup, and uninstall commands require an explicit --yes.
  • CLI files delete uses the same behavior as the desktop file actions and moves files to the system Trash.
  • The macOS and Windows local builds in this repository are not configured for code signing, Apple notarization, or Windows signing.

User Install

Download the package for your operating system from GitHub Releases. Current release artifacts target Linux, macOS ARM64, and Windows.

macOS and Windows installers are not signed at the moment. The operating system may show a security warning. That is a distribution trust issue and does not mean the app has passed platform signing or notarization.

Tech Stack

  • Desktop framework: Tauri 2
  • Backend: Rust 2021
  • Frontend: React 19, TypeScript, Vite
  • Styling and UI: Tailwind CSS 4, lucide-react, custom CSS
  • Package manager: Bun
  • Local settings: ~/.config/skiff/settings.json on Unix-like systems, or the equivalent user config path on Windows.

Development

Requirements

  • Linux, macOS, or Windows desktop environment
  • Rust stable
  • Bun
  • Platform dependencies required by Tauri 2. Linux needs WebKitGTK and related desktop libraries.

Install dependencies

bun install

Start the frontend dev server

bun run dev

The frontend dev server is provided by Vite.

Start the desktop app in development mode

bun run tauri dev

The Tauri config expects this frontend dev URL:

http://localhost:1420

Build

Build the frontend

bun run build

This command runs TypeScript checks and then writes the Vite build output to dist/.

Build desktop packages

bun run tauri build

Local platform-specific package commands:

bun run tauri:build:linux
bun run tauri:build:mac
bun run tauri:build:windows

Tauri uses src-tauri/tauri.conf.json to generate the desktop app and installer packages for the current operating system. The Windows command builds an NSIS .exe installer. macOS and Windows release-grade distribution still requires signing configuration outside this repository.

CLI

Running skiff without arguments starts the desktop app. Passing a subcommand runs CLI mode.

skiff info
skiff disk
skiff cleanup scan
skiff cleanup run --ids thumbnail-cache,go-cache --yes
skiff files large --min-size 500M --limit 80
skiff files duplicates --min-size 10M --group-limit 40
skiff files delete --path /home/user/Downloads/example.iso --yes
skiff agents scan
skiff agents clean --ids <id> --yes
skiff packages scan --include-system
skiff packages uninstall --ids pacman:example --yes

Every CLI command supports --json for scripts, cron, or systemd jobs:

skiff --json cleanup scan

CLI commands use the current process HOME by default. On servers, pass --home to target a specific user directory:

skiff --home /home/deploy --json files large --min-size 1G

Commands that change disk state require --yes:

  • cleanup run
  • files delete
  • agents clean
  • packages uninstall 

from https://github.com/DrizzleTime/Skiff

手写体生成器

 一个网页手写仿真工具,能够将文本、Word、PDF 文档转化为贴近真实字迹的手写图片与 PDF。;支持自定义手写字体、稿纸背景,还可调节字体偏移、墨色深浅、随机涂改等细节,实时预览效果并批量导出文件。

 https://handwrite.sixiangjia.de/ 

--------------------------------------------------------------

 将文本转为模拟手写文字的网页版

 https://handwrite.sixiangjia.de/

star

欢迎来到我的手写文字生成网站!这个平台允许你使用现有的字体来创建模拟手写文字的图片。

网址:https://handwrite.sixiangjia.de 视频介绍: https://www.bilibili.com/video/BV1DM4y1W7fp/ 电报讨论群组:https://t.me/+zFImOziSNullOTE1

新版界面把工作区分成三栏 —— 左边调参数、中间输入文字、右边看预览:

新版界面

顶栏的「旧版界面」按钮可以切回老版式,两种界面改的是同一份内容:

旧版界面

📖 完整文档(使用指南 / 自部署 / 开发):https://mygithub.sixiangjia.de/handwriting-web/

功能

自定义字体

你可以上传自己的字体来生成符合你需求的独特手写风格。

背景图片

上传你想要的背景图片,为你的手写文字添加个人风格。如果你没有背景图片,别担心!只需指定图片的宽度和高度,我的网站将自动为你生成带有横线的背景图片。

可调参数

你可以完全控制各种参数,如边距(上、下、左、右),字符间的随机扰动,笔画的旋转偏移,墨水的深度变化,涂改痕迹。这使你可以微调你的手写文字的外观。

文本排版标记

在文字输入区中,可以用独占一行的简单标记控制排版:

  • ---(三个或更多短横线)从下一段开始强制分页。
  • >>> 放在行首,可将这一行靠右排版,适合署名和日期。

例如:

第一页内容
---
第二页内容
>>>署名
>>>2026 年 7 月 27 日

这些标记只控制排版,不会出现在生成的手写图片中。

从各种文件类型中提取文本

我的网站可以从各种文件类型中提取文本内容(如 pdf,docs),使你能够方便地上传文本。

预览功能

我在网站的右侧添加了预览功能。这使你可以在最终确定之前方便地查看你的手写文字图片的效果。

完整图片生成

一旦你对预览满意,你可以生成一整套图片。这些图片将被方便地打包成一个 zip 文件,以便于下载。

pdf 导出功能

一键生成 pdf,不用再手动粘贴图片

自己搭建的方法

克隆项目,在项目目录中使用docker-compose up -d,默认端口为 2345

若要添加字体,字体文件放在项目根目录下的 ttf_files 中

CPU 限制配置

默认配置中对容器进行了 CPU 限制:

  • frontend 容器:使用 50%的 CPU
  • backend 容器:使用 80%的 CPU

如果不想限制 CPU 使用,可以在 docker-compose.yml 文件中删除以下配置:

cpu_count: 1
cpu_quota: 50000 # 或 80000
cpu_period: 100000

或者可以调整 cpu_quota 的值来设置不同的 CPU 使用限制。

本地运行

环境要求

  • Python 版本: 3.8 - 3.13(推荐 3.10 或 3.11)
  • Node.js 版本: 14.x 或更高

方法一:使用 VS Code 一键启动(推荐)

  1. 克隆项目到本地
  2. 使用 VS Code 打开项目文件夹
  3. 按 Ctrl+Shift+B 快捷键,自动并行启动前端和后端开发服务器
  4. 打开浏览器,输入 http://localhost:8080 ,即可访问网站

其他可用任务(通过 Ctrl+Shift+P → Tasks: Run Task 访问):

  • 🔧 安装所有依赖
  • 📦 安装前端依赖
  • 🐍 安装后端依赖
  • 🏗️ 构建前端项目
  • 🐳 启动/停止 Docker Compose
  • 🧹 清理前端构建

方法二:手动启动

  1. 克隆项目到本地
  2. 进入 backend 文件夹,运行后端程序
cd backend
pip install -r requirements.txt
python app.py
# 注意:服务将在 5005 端口启动
  1. 进入 frontend 文件夹,运行前端程序
cd frontend
npm install
npm run serve
  1. 打开浏览器,输入 http://localhost:8080 ,即可访问网站

E2E 测试(Playwright)

e2e/ 目录是端到端测试套件,用真实前后端跑完整流程(真实渲染手写图片、下载附件),少数难以真实触发的分支(队列满 503 等)用路由拦截模拟。

首次运行先装依赖和浏览器(需要 Node.js 20 或更高,Playwright 的要求):

cd e2e
npm install
npx playwright install chromium

然后直接在 e2e 目录下运行(会自动拉起后端 5005 和前端 8080,跑完自动关掉):

npm test
  • 需要数据库/依赖已就绪的后端解释器:脚本会自动探测仓库根目录的 venv,探测不到时用 E2E_PYTHON 指定,例如 E2E_PYTHON=./venv/Scripts/python.exe npm test
  • 本地已在跑的开发服务器会被直接复用,不会重复启动
  • 测试时会设置 CPU_USAGE_LIMIT=100,避免开发机被 webpack/浏览器占满 CPU 时误触发后端的过载保护(429)
  • 失败时的截图、录像和 trace 在 e2e/test-results/,HTML 报告用 npm run report 打开
  • 每次 PR 会由 .github/workflows/e2e.yml 自动跑一遍

后端架构

整体流程

用户请求 → Nginx(前端容器) → 反向代理 → FastAPI(后端容器)
                                          │
                                          ▼
                              提交任务 → 写入 SQLite → 立即返回 task_id
                                          │
                              后台协程排队执行 → Semaphore(2) 控制并发
                                          │
                              handwrite() 渲染 → 保存结果到磁盘
                                          │
                              用户通过轮询 或 WebSocket 获取结果

请求提交后立即返回 task_id(HTTP 200),实际的手写图像渲染在后台 BackgroundTask 中异步执行,用户通过轮询 /task/{task_id} 接口或 WebSocket 连接获取实时进度。

from  https://github.com/14790897/handwriting-web

 

2个高质量网盘影视资源分享和搜索网站

 

① KK网盘

网址:https://kkpans.com/

KK网盘聚合夸克网盘、百度网盘优质资源,重点收录4K资源、电影、资料、软件、文档、压缩包等网盘分享内容。

② 聚盘搜

网址:https://www.panso567.com/

聚合网盘资源搜索工具,专业夸克网盘搜索,支持阿里云盘、夸克网盘、百度网盘、蓝奏云盘等主流网盘资源搜索。

MangoDisk - 磁盘清理和磁盘空间分析工具

 一款磁盘清理工具,集成深度缓存清理、大文件检索、重复文件查找、应用残留卸载、开机启动项管理和磁盘占用可视化分析,专项适配开发者各类项目构建和容器缓存。

 https://downloads.mangodisk.app/releases/MangoDisk-latest.exe

 https://github.com/harry0703/MangoDisk

官网: https://mangodisk.app/zh

 

微信视频号在线下载工具

 一个微信视频号在线解析工具,只需粘贴微信视频号视频链接,即可提取视频信息,支持在线播放、下载和下载原始视频。

 https://sph.miuistore.com/

 https://sph.litao.workers.dev/

FlowPick - 万能网页视频/音频下载器

 一个网页媒体嗅探下载工具,提供浏览器扩展与在线网页工具两种使用方式,可捕获 HLS、DASH 流媒体及普通音视频。;支持 AES-128 加密流解密,全程在浏览器本地完成分片下载、解密与合并封装,内置资源预览、批量下载、下载队列管理功能。

Web Media Downloader & Media Sniffer Browser Extension

FlowPick is a free, privacy-first web media downloader and browser extension for detecting and downloading M3U8/HLS streams, MPD/DASH video, audio.
 
from  https://flowpick.net/

给 JZSub 一个视频链接,拿回最高画质的视频

 一款面向视频内容处理的自动化工具,可以通过视频链接自动下载高画质视频、音频、封面和原始字幕,并借助 GPT 将字幕翻译成中文等目标语言,生成双语字幕。;它支持 YouTube、Bilibili、Vimeo、Twitch、TikTok 等多个平台,适合将外语视频快速转换为带中文字幕的视频内容。

JZSub - 面向 Codex 的视频下载与双语字幕自动化工具。

JZSub Codex Skill — 自动下载视频并生成横屏或竖屏双语字幕 MP4

Release MIT License Codex Skill GPT 双语翻译

给 JZSub 一个视频链接,拿回最高画质的视频、封面、双语字幕和烧录完成的 MP4。

支持的平台

YouTube
YouTube
Bilibili
Bilibili
Vimeo
Vimeo
Twitch
Twitch
Dailymotion
Dailymotion
TikTok
TikTok

以及 yt-dlp 支持的其他站点。实际可用格式、字幕和登录要求由平台决定。

主要功能

  • 最高画质:下载最佳视频与音频,尽可能无损封装 MP4
  • 按需交付:--deliver 可选完整烧录、仅视频(含原始字幕文件)、仅原始字幕、或双语字幕文件
  • 双语字幕:紧凑分批翻译、批间上下文衔接,再按句子边界重新切分;原文保持不变。默认译成中文,--target-lang 可指定日语、法语等任意目标语言
  • 自动烧录:MiSans 字幕、底部双语堆叠、自适应竖屏、精确背景、libass 渲染
  • 低耗运行:只读取紧凑字幕文档,不读取完整清单;烧录每 5% 显示一次进度
  • 封面直取:自动下载并转换为 封面-视频名.jpg
  • 静默登录:需要时直接读取 Chrome 登录态,不导出 Cookie
  • 无字幕也能用:平台没有字幕时直接交付视频、MP4 和封面
烧录 [██████████░░░░░░░░░░]  50%  01:11 / 02:23  0.68x

视频前后对比

原片与 JZSub 双语字幕烧录效果对比

左:下载后的原片 · 右:JZSub 生成并烧录的原文+中文双语字幕

竖屏视频支持

YouTube Shorts 竖屏原片与 JZSub 双语字幕成片对比

左:无字幕原片 · 右:JZSub 竖屏双语字幕成片。自动使用更紧凑的字号与更大的底部安全区。截图来自 Parking Sensor (DIY)。

封面自动获取

JZSub 自动下载的视频封面

与视频一起交付

封面-视频名.jpg

自动选择平台封面并转换为通用 JPEG,无需另存网页图片。

在 Codex 中使用

在 Codex 中安装和使用 JZSub

用npx 一键安装(推荐)

npx skills add pengchujin/jzsub --skill jzsub -g -a codex -y

需要 Node.js 18+。命令会从 GitHub 获取最新版,并把 JZSub 全局安装到 Codex。

手动安装

git clone https://github.com/pengchujin/jzsub.git
mkdir -p ~/.codex/skills
cp -R jzsub/skills/jzsub ~/.codex/skills/

在 Codex 新任务中发送:

$jzsub https://www.youtube.com/watch?v=VIDEO_ID

JZSub 会持续执行下载、模型翻译、字幕渲染、烧录与交付检查。翻译通过紧凑队列逐批进行,不读取完整字幕清单,也不会停在仅下载完成的中间状态。

默认中文交付会生成 封面-视频名.jpg 和 双语字幕版「视频名」.mp4;文件名由下载清单统一声明,续传与交付验证使用同一名称。

按需交付

告诉 agent 你只要什么,它会选择对应的 --deliver 目标;也可以直接运行脚本:

目标 说明 产物
full(默认) 完整流水线 视频、封面、字幕、双语烧录 MP4
video 只要视频,不翻译不烧录 视频、封面,平台有字幕时同样保存原始字幕文件
subs 只要字幕,不下载视频流 原始字幕 + 衍生 SRT
bilingual-subs 只要双语字幕文件 原始字幕 + 翻译渲染的双语 SRT/ASS,不下载视频
python3 skills/jzsub/scripts/fetch_video.py "<url>" \
  --output-dir job --deliver video --browser-cookies auto

video 与 subs 下载完成即结束;full 与 bilingual-subs 会继续翻译流程,交付检查按声明的目标判定完成。subs 类目标在平台没有合适字幕时会明确报错。

依赖

Python 3.10+、yt-dlp、Deno 2.3+、带 libass 的 FFmpeg/ffprobe,以及 MiSans Bold。macOS 可运行:

brew install yt-dlp ffmpeg-full deno

MiSans 请从小米 HyperOS 官方页面获取;字体文件不包含在本仓库中。

仅下载你有权访问和保存的内容。JZSub 不绕过 DRM、付费墙、验证码或平台安全限制。

开发者验证
python3 skills/jzsub/scripts/fetch_video.py --self-test
python3 -m unittest discover -s skills/jzsub/tests -v
from  https://github.com/pengchujin/jzsub