disk-pulse 是一个本机优先的磁盘扫描与文件检索工具。当前版本已实现单机 MVP:零配置启动、WebUI、SQLite 存储、本机主机/磁盘发现、目录扫描、搜索、详情和手动标签。
- 单机
standalone模式,默认监听0.0.0.0:8080,允许使用本机 IP 访问。 - 首次启动自动在
~/.config/disk-pulse/app.yaml写入带英文注释的配置模板。 - 启动时轻量发现本机主机和磁盘/盘符,写入
hosts、disks表。 - SQLite 使用纯 Go 驱动
modernc.org/sqlite,不依赖 CGO。 - React + TypeScript + Vite WebUI,源码位于
web/,构建产物输出到internal/server/static/并由 Go embed 打包。 - WebUI 左侧展示主机树,展开后显示磁盘;点击磁盘可过滤搜索并查看容量/可用/使用率信息。
- 搜索语法 MVP:普通关键词、
tag:标签、host:主机、disk:磁盘。
go run ./cmd/disk-pulse打开:
http://127.0.0.1:8080
局域网内访问时使用运行机器的实际 IP,例如:
http://<server-ip>:8080
如果无法访问,请确认系统防火墙或云服务器安全组已放行 8080 端口。
默认配置和数据库位置:
~/.config/disk-pulse/app.yaml
~/.config/disk-pulse/disk-pulse.db
使用仓库内开发配置:
go run ./cmd/disk-pulse --config-dir ./configs --mode standalone常用启动参数:
go run ./cmd/disk-pulse --help
go run ./cmd/disk-pulse --version
go run ./cmd/disk-pulse --mode standalone
go run ./cmd/disk-pulse --mode master
go run ./cmd/disk-pulse --mode agent安装依赖:
npm --prefix web install启动 Vite 开发服务器:
npm --prefix web run devVite 会把 /api 代理到 http://127.0.0.1:8080,所以开发 WebUI 时通常同时启动 Go 后端:
go run ./cmd/disk-pulse --config-dir ./configs构建前端产物到 Go embed 目录:
npm --prefix web run buildMakefile 目标:
make web-install
make web-dev
make web-build
make build用户通常不需要先理解完整配置文件。程序会在首次启动时将带英文注释的配置模板写入用户家目录下的 .config/disk-pulse/app.yaml;后续只在需要改端口、Master 地址或数据库路径时编辑它。扫描跳过规则等运行期配置保存在数据库配置表中,可在 WebUI 系统设置里调整。
主要配置项:
app.mode:启动模式,支持standalone、master、agent;启动参数--mode优先级高于配置文件,未指定时默认使用standalone。app.master_addr:agent 模式连接 master 的地址,例如10.121.1.116:8080。server.addr:HTTP API 和 WebUI 监听地址,默认0.0.0.0:8080。database.dsn:SQLite 数据库路径。
注意:agent 模式不允许配置 server 段,启动时也不会启动 WebUI/API server。当前 agent 只作为扫描上报进程设计,启动时不会初始化本地 SQLite 数据库。
GET /api/healthGET /api/hostsGET /api/statsGET /api/disksGET /api/files?q=tag:代码&limit=100GET /api/files/{id}POST /api/files/{id}/tagsGET /api/scansPOST /api/scansGET /api/scans/{id}POST /api/scans/{id}/cancel
当前使用 modernc.org/sqlite,不需要 CGO。相比 github.com/mattn/go-sqlite3,它更适合跨平台单二进制发布,因为交叉编译时不需要额外准备目标平台的 C 编译器和 SQLite C 依赖。
$env:GOCACHE = Join-Path (Get-Location) '.gocache'
go test ./...也建议验证无 CGO 路径:
$env:CGO_ENABLED = '0'
go test ./...