dictx 0.1.0

A fast, colorful terminal dictionary with offline indexes and optional AI explanations.
dictx-0.1.0 is not a library.

DictX

DictX 是一个用 Rust 编写的终端词典应用,主路径是离线词库索引查询,辅助路径是显式调用的在线 AI API 解释。

功能

  • 离线索引:基于 Tantivy 构建本地全文索引。
  • 多词典源:支持 ECDICT CSV、Anki/JSONL、金山词霸 SQLite、CC-CEDICT。
  • 查询方式:精确查词、模糊搜索、全文搜索、中文反查、通配符搜索。
  • 输出格式:自适应卡片、彩色 rich、plain、json;rich 模式默认展示 3 条,支持键盘/鼠标加载更多。
  • 高性能存储:构建时生成 Tantivy 检索索引和 entries.dxp 二进制词条 pack。
  • AI 增强:dictx ai 使用 OpenAI-compatible /chat/completions API;rich 模式可在结果页按数字键或点击操作条触发 AI 详解。

安装

发布到 crates.io 后,推荐用 Cargo 安装:

cargo install dictx

本地仓库调试安装:

cargo install --path crates/dictx-cli --locked --force

Cargo 会把可执行文件安装到 Cargo install root 的 bin 目录。使用 rustup 的默认环境时通常是 ~/.cargo/bin,需要确保它在 PATH 中。

快速开始

# 生成配置;新安装默认使用系统标准配置/数据/缓存目录
dictx init

# 查看配置、词库和索引目录
dictx config paths

# 推荐把下载的词库导入 DictX 管理目录
dictx source import ecdict /path/to/ecdict.csv --format ecdict
dictx source import cc_cedict /path/to/cedict_ts.u8 --format cedict

# 构建已启用词典源索引
dictx build

# 查询
dictx lookup apple
dictx search '~appple'
dictx zh 苹果

rich 输出会停留在交互状态:按 n 加载更多,按 1/2/3 查询当前可见卡片的 AI 详解,按 q 退出。鼠标终端支持时,也可以直接点击底部操作条。

常用命令

dictx source list
dictx source recommend
dictx source import ecdict /path/to/ecdict.csv --format ecdict
dictx source add external_db /path/to/kd_data.db --format sqlite
dictx build --source ecdict --force
dictx lookup cancel --format plain
dictx search fruit --pos n --tag cet4 --limit 20
dictx config set output.color false

source import 会复制词库到 DictX 管理目录,适合长期使用;source add 只引用外部文件,适合临时测试或你自己管理大词库目录的场景。

AI API

AI 命令默认使用 DeepSeek OpenAI-compatible API:

  • base_url: https://api.deepseek.com
  • model: deepseek-v4-flash
  • API key 环境变量:DEEPSEEK_API_KEY

也兼容 DICTX_AI_API_KEYOPENAI_API_KEY

export DEEPSEEK_API_KEY=...
dictx ai "take off" --context "The plane will take off at noon."

切换到其他 OpenAI-compatible endpoint:

dictx config set ai.base_url https://api.openai.com/v1
dictx config set ai.model gpt-4o-mini
dictx config set ai.api_key_env OPENAI_API_KEY

词典源状态

格式 状态 说明
ECDICT CSV 已支持 字段按 docs/03-数据层设计.md 映射
Anki JSONL 已支持 已用 old/KaoYan_3.json 验证
SQLite 已支持 已支持 zlib JSON detail 提取
CC-CEDICT 已支持 下载 cedict_ts.u8 后用 --format cedict 添加
MDX 受控拒绝 原生 MDX 解析风险高,当前会提示先转换为 JSONL

推荐开放词库可运行:

dictx source recommend

目录设计

DictX 把运行期文件分成三类:

  • 配置:dictx config path 查看,默认位于系统配置目录下的 dictx/config.toml
  • 词库源文件:dictx config get dict_dir 查看,建议通过 dictx source import 管理。
  • 索引与二进制 pack:dictx config get index_dir 查看,属于可重建缓存;换词库或升级索引格式后运行 dictx build --force

为了兼容早期版本,如果新的标准配置文件不存在,但 ~/.dictx/config.toml 已存在,DictX 会继续读取旧配置。

存储设计

dictx build 是一次完整物化过程。构建结果包含:

  • Tantivy 索引:只保存检索、过滤、排序所需字段。
  • entries.dxp:MessagePack 二进制词条 pack,按 offset/len 随机读取完整词条。

旧索引里的 JSON 存储仍兼容;重新运行 dictx build --force 后会生成新的二进制 pack。

开发验证

cargo fmt --all
cargo check --workspace
cargo test --workspace
cargo publish -p dictx --dry-run

本仓库要求 Rust 1.82+;当前验证工具链为 Rust 1.95.0。

发布 v0.1.0

发布前先完整验证:

cargo fmt --all
cargo test --workspace
cargo publish -p dictx-core --dry-run
cargo publish -p dictx-parser --dry-run
cargo publish -p dictx-index --dry-run
cargo publish -p dictx-search --dry-run
cargo publish -p dictx --dry-run

真实发布需要 crates.io token,并按依赖顺序发布:

cargo login
cargo publish -p dictx-core
cargo publish -p dictx-parser
cargo publish -p dictx-index
cargo publish -p dictx-search
cargo publish -p dictx
git tag v0.1.0