内容
<div align="center">
<h1>
<img src="assets/thoth_icon_256.png" alt="Thoth Icon" width="75" style="vertical-align: middle;"/>
Thoth - JSON & NDJSON
</h1>
</div>
<div align="center">
[](https://github.com/anitnilay20/thoth/actions/workflows/ci.yml)
[](https://codecov.io/gh/anitnilay20/thoth)
[](https://opensource.org/licenses/MIT)
[](https://www.rust-lang.org)
</div>
<div align="center">
<img src="website/public/demo.gif"/>
</div>
是一款高性能、功能丰富的桌面应用程序,用于查看和探索 JSON 和 NDJSON 文件,具有干净、直观的界面。
---
## 功能
- **多种文件格式支持**:支持 JSON 对象、JSON 数组和 NDJSON(换行分隔 JSON)文件
- **惰性加载**:通过仅加载需要的内容,有效处理大文件
- **智能文件类型检测**:自动检测文件是 JSON 还是 NDJSON
- **强大的搜索**:轻松搜索复杂的 JSON 结构
- **交互式探索**:可展开的树形视图,用于导航嵌套结构
- **复制支持**:轻松复制 JSON 路径和值
- **暗/亮模式**:在任何环境下都可舒适查看
- **多窗口支持**:打开多个独立窗口以比较文件
- **键盘快捷键**:全面的键盘快捷键,以实现高效工作流([查看所有快捷键](docs/KEYBOARD_SHORTCUTS.md))
- **可定制**:所有快捷键和设置均可通过 TOML 配置
---
## 安装
### 快速安装(终端)
一条命令即可安装最新版本 — 随时重新运行以更新。
**macOS 和 Linux**
```bash
curl -fsSL https://raw.githubusercontent.com/anitnilay20/thoth/main/install.sh | bash
```
**Windows(PowerShell)**
```powershell
irm https://raw.githubusercontent.com/anitnilay20/thoth/main/install.ps1 | iex
```
安装到 `/Applications`(macOS)、`~/.local/bin`(Linux,覆盖 `THOTH_INSTALL_DIR`)或 `%LOCALAPPDATA%\Programs\Thoth`(Windows)。在 macOS 上,构建版本未签名,因此脚本会为您剥离 Gatekeeper 隔离。
### 下载预编译二进制文件
从 [GitHub Releases](https://github.com/anitnilay20/thoth/releases) 下载最新版本。
#### macOS
**选项 1:DMG 安装程序(推荐)**
1. 下载合适的 DMG:
- **Apple Silicon (M1/M2/M3)**:`Thoth-aarch64-apple-darwin.dmg`
- **Intel**:`Thoth-x86_64-apple-darwin.dmg`
2. 打开 DMG 并将 Thoth.app 拖到 Applications
3. **重要**:打开终端并运行:
```bash
xattr -cr /Applications/Thoth.app
```
4. 从 Applications 启动
**选项 2:手动安装**
1. 下载:`thoth-aarch64-apple-darwin.tar.gz` 或 `thoth-x86_64-apple-darwin.tar.gz`
2. 解压:`tar -xzf thoth-*.tar.gz`
3. 删除隔离:`xattr -cr Thoth.app`
4. 移动到 Applications:`mv Thoth.app /Applications/`
5. 双击打开
> ⚠️ **Gatekeeper 警告**:此应用程序未签名。您必须在首次启动前使用上述命令删除隔离属性。
#### Windows
**选项 1:MSI 安装程序(推荐)**
1. 下载 `Thoth.msi`
2. 双击安装
3. 从开始菜单启动
**选项 2:便携版**
1. 下载 `thoth-x86_64-pc-windows-msvc.zip`
2. 解压并运行 `thoth.exe`
#### Linux
**选项 1:DEB 软件包(推荐用于 Debian/Ubuntu)**
1. 下载 `thoth_*_amd64.deb`
2. 安装:`sudo dpkg -i thoth_*_amd64.deb`
3. 运行:`thoth`
**选项 2:便携版**
1. 下载 `thoth-x86_64-unknown-linux-gnu.tar.gz`
2. 解压:`tar -xzf thoth-x86_64-unknown-linux-gnu.tar.gz`
3. 使可执行:`chmod +x thoth`
4. 运行:`./thoth`
### 从源代码构建
#### 要求
- Rust(推荐最新稳定版本)
- 用于构建安装程序:[cargo-packager](https://github.com/crabnebula-dev/cargo-packager)
```bash
# 克隆仓库
git clone https://github.com/anitnilay20/thoth.git
cd thoth
# 在调试模式下构建和运行
cargo run
# 为生产环境构建
cargo build --release
# 二进制文件将在 target/release/thoth 中可用
```
#### 构建安装程序
要创建特定于平台的安装程序(MSI、DMG、DEB):
```bash
# 安装 cargo-packager
cargo install cargo-packager --locked
# 为您的平台构建安装程序
cargo packager --release
# 安装程序将在 dist/ 目录中:
# - Windows:dist/*.msi
# - macOS:dist/*.dmg 和 dist/*.app
# - Linux:dist/*.deb
```
查看 [RELEASE_PROCESS.md](docs/RELEASE_PROCESS.md) 以获取有关发布和打包工作流的更多详细信息。
---
## 用法
### 打开文件
**从应用程序:**
1. 启动 Thoth
2. 使用顶部栏打开 JSON 或 NDJSON 文件(或按 `Cmd/Ctrl+O`)
**从命令行:**
```bash
thoth document.json
thoth /path/to/data.ndjson
```
**从文件管理器:**
- 双击任何 `.json`、`.ndjson`、`.jsonl` 或 `.geojson` 文件
- 右键单击并选择“打开方式”→“Thoth”
- 将 Thoth 设置为默认 JSON 查看器(参见 [文件关联](docs/FILE_ASSOCIATIONS.md))
### 导航和功能
3. 使用树形视图浏览文件
4. 使用搜索功能查找特定值(`Cmd/Ctrl+F` 聚焦)
5. 根据需要切换暗色和亮色模式(`Cmd/Ctrl+Shift+T`)
6. 打开新窗口以比较多个文件(`Cmd/Ctrl+N`)
有关键盘快捷键的完整列表,请参阅 [键盘快捷键指南](docs/KEYBOARD_SHORTCUTS.md)。
---
## 项目结构
- `src/main.rs`:应用程序入口点和核心逻辑
- `src/components/`:托管 UI 面板(通过组件特征组成 SDK 小部件)
- `src/file/`:文件处理、惰性加载和类型检测
- `src/search/`:搜索功能
- `src/plugin/`:WebAssembly 插件运行时(加载、沙盒、主机导入)
- `src/helpers/`:实用函数和共享代码
- `src/mcp/`:用于 AI 助手集成的 MCP 服务器
- `thoth-plugin-sdk/`:插件创作 SDK — 共享 UI 组件库 + `RenderNode` DSL 和插件帮助程序(也由主机渲染)
- `thoth-plugin-sdk-macros/`:SDK 的派生宏(`PluginMeta`)
- `plugins/`:捆绑示例插件(csv-loader、url-source、seshat)
- `wit/`:插件 ABI 的 WIT 接口定义
- `docs/`:架构和设计模式文档
---
## 文档
- **[组件架构](docs/COMPONENT_ARCHITECTURE.md)**:Thoth 组件系统和单向数据绑定模式的详细指南
- **[插件系统](docs/PLUGIN_SYSTEM.md)**:使用 `thoth-plugin-sdk` 编写 WebAssembly 插件(UI 生成器、状态/设置帮助程序、生命周期)
- **[数据库插件](docs/DATABASE_PLUGINS.md)**:构建与数据库通信的数据源插件
- **[文件关联](docs/FILE_ASSOCIATIONS.md)**:如何直接从文件管理器打开 JSON 文件并将 Thoth 设置为默认查看器
- **[键盘快捷键](docs/KEYBOARD_SHORTCUTS.md)**:所有键盘快捷键的完整参考
- **[设计系统](docs/DESIGN_SYSTEM.md)**:UI 设计指南和模式
- **[性能分析](/docs/PROFILING.md)**:Thoth 中使用的性能分析和优化技术
- **[MCP 服务器](docs/MCP_SERVER.md)**:将 Thoth 用作 AI 助手的 MCP 服务器(Claude、Copilot、Cursor)
---
## 架构
Thoth 采用模块化架构,强调性能和灵活性:
### 核心组件
1. **应用程序核心(`ThothApp`)**:
- 管理应用程序状态的中央控制器
- 在 UI 组件和数据处理之间进行协调
- 管理主题、文件路径和错误状态
2. **UI 组件**:
- **顶部栏**:处理文件打开、类型选择和搜索输入
- **中央面板**:具有 JSON 查看器的主内容区域
- **JSON 查看器**:具有可展开节点的 JSON 结构的树形可视化
- **主题**:管理暗色/亮色模式和样式
3. **文件处理系统**:
- **惰性加载**:仅解析正在查看的文件部分
- **文件类型检测**:自动识别 JSON、JSON 数组和 NDJSON 格式
- **LRU 缓存**:通过缓存最近访问的节点来优化性能
4. **搜索引擎**:
- 并行处理以实现大型文件的快速搜索
- 后台扫描以保持 UI 响应性
- 使用 Rayon 进行并行迭代,使用 memchr 进行优化的子字符串搜索
5. **插件系统**:
- 插件是沙盒 **WebAssembly 组件**(文件加载器、文件查看器、数据源、UI 组件)
- 使用 **`thoth-plugin-sdk`** 编写:用于序列化 `RenderNode` UI 树的类型安全构建器,以及状态/设置/元数据帮助程序
- 主机和插件共享 **相同的** 组件类型,因此 SDK 是双方的单一事实来源
- 参见 [插件系统](docs/PLUGIN_SYSTEM.md) 和 [数据库插件](docs/DATABASE_PLUGINS.md)
### 数据流
```
用户交互 → 顶部栏 → ThothApp → 文件加载/搜索操作 → 中央面板 → JSON 查看器
```
### 性能优化
- **惰性解析**:仅在展开节点时解析 JSON
- **后台处理**:在单独的线程中运行长时间操作
- **内存效率**:存储文件偏移量而不是将整个文件保存在内存中
- **LRU 缓存**:最近访问的节点被缓存以实现更快的重复访问
- **并行搜索**:利用多个 CPU 核心搜索大型文件
### 错误处理
- 使用 `anyhow` crate 进行全面错误处理
- 具有用户友好错误消息的渐进式降级
- 强大的文件类型检测以防止解析错误
---
## 技术
- [Rust](https://www.rust-lang.org/):主要语言
- [egui](https://github.com/emilk/egui):立即模式 GUI 库
- [serde_json](https://github.com/serde-rs/json):JSON 序列化/反序列化
---
## 路线图
未来开发计划的关键功能:
- JSON 路径表达式支持
- 节点和搜索结果的导出功能
- 具有标签式界面的多文件支持
- 针对 JSON Schema 的模式验证
- 用于比较 JSON 文件的差异视图
- 搜索历史和改进的搜索功能
- 数值的数据可视化
- JSON 编辑功能
- 跨平台软件包(macOS、Windows、Linux)
---
## 贡献
欢迎贡献!请随时提交拉取请求。
1. 复刻仓库
2. 创建功能分支(`git checkout -b feature/amazing-feature`)
3. 提交更改(`git commit -m 'Add some amazing feature'`)
4. 推送到分支(`git push origin feature/amazing-feature`)
5. 打开拉取请求
---
## 许可证
该项目根据 MIT 许可证授权 — 有关详细信息,请参阅 [LICENSE](LICENSE) 文件。
---
## 致谢
- 以埃及智慧、文字和知识之神托特命名
- 源于对大型文件快速原生 JSON 查看器的需求
连接信息
猜你喜欢
暂无推荐服务器