返回更新列表
新发布Jul 25, 2026

dredge-cargo v0.11.1

加密的CLI保管库,用于笔记、配置、密钥和文件。搜索,不要整理。

分享

这不是密码管理器。不是笔记应用。更不是深海海底异常标本分类来源登记册。但前两件事它做得比它们都好。开玩笑的(也不完全是)。

搜索,别整理。笔记、配置、密钥、秘密 — 从你的终端开始,只需五秒。


“别拿那些琐碎杂事来烦我。” —— 渔夫

dredge 演示
go install github.com/DeprecatedLuar/dredge-cargo/cmd/dredge@latest

你从未见过的炫酷功能

  • 加密存储 —— 克隆仓库,你只会看到一堆绝对的加密乱码。没有密码你根本不知道仓库里有什么。(我用了 AES-256-GCM + Argon2id)
  • 即时搜索 —— 我自己写了个自定义模糊搜索算法,因为我懒得想,希望能毫秒级地在300多个条目中找到想要的那个。
  • 存储任何东西 —— 笔记、脚本、dotfiles、图片、zip压缩包。只要是一个存在的文件,都可以存入 dredge。
  • 实时文件链接 —— 很酷的功能:把任意条目符号链接到系统路径,这样你可以直接读取和编辑,或者通过 dredge 来操作。任何改动都会与仓库双向同步。
  • Git 支持 —— 你拥有的私有仓库。只需 git clone,数据就到手了。
  • 会话密码 —— 每个终端会话只需输入一次密码。之后就可以免密使用,直到你关闭终端。(请阅读安全部分以更好理解)
  • 回收站 + 撤销 —— 删除的条目进入回收站。误删只需 dredge undo。

在 dredge 里存什么?

我不会评判你。那些只出现一次就让你头疼的 API 密钥、SSH 配置、AI 提示词、密码、可以直接执行的 shell 脚本、邮件模板?、dotfiles(虽然有点怪但能用)、zip 存档、电影清单、快捷访问的 URL 列表……

甚至《电锯人》第2章日文版的 合法 拷贝。(我可能恰好就存了那一份)


安装

macOS Linux

Go

go install github.com/DeprecatedLuar/dredge-cargo/cmd/dredge@latest

确保 $GOPATH/bin(通常是 ~/go/bin)在你的 PATH 中。

通用

curl -sSL https://raw.githubusercontent.com/DeprecatedLuar/the-satellite/main/satellite.sh | bash -s -- install DeprecatedLuar/dredge-cargo:dredge
其他安装方法

手动安装

  1. 从 releases 下载适用于你系统的二进制文件
  2. 赋予执行权限:chmod +x dredge-*
  3. 移动到 PATH:mv dredge-* ~/.local/bin/dredge

从源码构建

git clone https://github.com/DeprecatedLuar/dredge-cargo
cd dredge-cargo
go build -o dredge ./cmd/dredge
mv dredge ~/.local/bin/

快速开始

# 用已有的 git 远程初始化
dredge init yourusername/vault   # GitHub 简写
# 或:dredge init [email protected]:you/vault.git

# 添加第一个条目
dredge add "OpenAI Key" -c "sk-..." -t keys api # 不加 -c 会打开编辑器

# 搜索它
dredge search openai

# 推送到 git
dredge push
用法
# 添加任何东西
dredge add My SSH Config -t ssh dotfiles --import ~/.ssh/config
dredge add "Master Architect Prompt" --import prompt.md -t ai prompts
dredge add "Watchlist" -c "Dune 2, Oppenheimer..." -t lists
dredge add "project-backup" --import project.tar.gz   # 二进制文件也行 :D

# 搜索 —— 随便输点什么你记得的
dredge search prompt
dredge search aws key
dredge search ssh

# 查看、编辑、删除
dredge view <id>
dredge edit <id>
dredge rm <id>
dredge undo          # 找回来

# 搜索结果带有编号 —— 直接输入编号即可查看
dredge search ssh    # 显示:1. [xKP] SSH Config  2. [mNq] SSH Key
dredge 1             # 直接查看

# Git 同步
dredge push
dredge pull
dredge sync          # pull + push

工作原理

“我无法想象深处藏着什么。” —— 灯塔看守人

好吧,简单总结一下:

我决定使用两种主要的加密技术:Argon2id 和 AES-256(具体是 GCM 模式)。

选择 Argon2id,因为它是 RFC 9106 的推荐方案,也是 2015 年 PHC 的获胜者。就这么简单。 选择 AES 的 GCM 模式,因为它能让所有加密数据由于指纹的存在而无法被篡改。这个理由也够了。

目前,所有内容都以加密文件形式存储在 ~/.local/share/dredge/ 中。该目录也是一个 git 仓库(至少目前是这样)。所以 dredge push 会提交并推送所有内容以作备份。每个条目都是一个独立的加密 blob,带有一个随机的 3 字符 ID。我决定不暴露任何文件名,这样即使有人能看到你的文件,也不知道它们是什么。

加密流程

你的密码
  + 16 字节随机盐  ← 盐存储在 .dredge-key 中
  → Argon2id(64 MB 内存 · 4 线程 · 1 次迭代)
  → 32 字节主密钥(盐 + 密码 = 真正的密钥)

主密钥 + 条目内容(TOML 格式:标题、标签、内容)
  → AES-256-GCM,每次操作使用新的随机 12 字节 nonce
  → [12B nonce][密文 + 16B 认证标签]
  → 写入磁盘为 items/xKP  (随机 ID,无扩展名)

因此,你的整个保险库共享同一个派生密钥(这意味着如果你丢失了密钥,你就会丢失数据,请务必保管好密钥)。每个条目使用相同的密钥,但各自拥有独立的随机 nonce。即使对相同内容加密两次,也会产生完全不同的密文。

各文件位置

~/.local/share/dredge/          ← 保险库(git 仓库)
├── .git/
├── .gitignore                  ← 排除 .spawned/ 和 links.json
├── .dredge-key                 ← 盐 + 加密验证字符串
├── items/
│   ├── xKP                     ← 加密的条目
│   ├── mNq                     ← 加密的条目
│   └── ...
├── .spawned/                   ← 链接条目的明文副本
└── links.json                  ← 符号链接清单

所有加密文件和 .dredge-key 都存储在 git 仓库中,所有明文文件(你决定系统可读的那些)永远不会被跟踪。所以你可以随意处理它们。

会话模式

在终端中输入第一个命令后,派生的 32 字节密钥会被缓存在 $XDG_RUNTIME_DIR/dredge/$PPID/.key(仅 root 可访问)。

同一终端中之后的所有 dredge 命令都会使用缓存的密钥。这意味着你不再需要输入密码。每个终端根据父 PID 拥有自己独立的目录。因此,终端关闭后,密钥就会从磁盘上蒸发。

更深的技术细节

密钥派生 —— Argon2id: RFC 9106 推荐参数(64 MB 内存、4 线程、1 次迭代)。.dredge-key 中的盐并非秘密,它只是确保即使拥有这个文件,暴力破解你的密码也代价极高。保密你的密码才是关键,你懂的。

密码 —— AES-256-GCM: 对每次加密进行指纹标记。同时提供机密性和完整性。篡改密文不会解密出垃圾,而是会解密失败并报错。

密码验证: .dredge-key 中包含用你的主密钥加密的字符串 dredge-vault-v1。每次新会话时,dredge 解密此字符串来验证密码是否正确。如果从中没有得到 dredge-vault-v1,则密码错误,它在大约 100 毫秒内就会失败,而不是在执行操作中途才发现密码错误。

缓存的内容: 会话文件存储的是派生出的 32 字节密钥(密码+盐),而不是密码本身(我没那么蠢)。因此,即使有人在活动会话期间读取了 .key,他们也无法从其中恢复你的密码。


安全性

“空手回来总比永远回不来好。” —— 渔夫

威胁模型(这部分我用 AI 写的,但没错)

有人克隆了你的私有 git 仓库: 他们得到的是加密的 blob 和 .dredge-key。盐不是秘密——它的作用是使预计算攻击变得不可行。没有你的密码,条目就是一堆不透明的二进制数据。Argon2id 让离线暴力破解变得代价高昂。请使用强密码。

分类