lkong 是一个使用 Rust 编写的龙的天空(龙空,lkong.com)终端客户端。它基于 Ratatui 和 Crossterm 提供中文 TUI 界面,可在终端中浏览版块、帖子和信息流,并支持登录、搜索、回复及签到等操作。
本项目是非官方第三方客户端,与龙的天空官方无关。站点接口或页面结构变化可能导致部分功能失效。
- 浏览全站版块和标签
- 查看主题列表、帖子正文及分页
- 搜索当前版块或主题列表
- 查看动态信息流和“@我的”
- 登录、退出登录并持久化会话
- 查看通知数量
- 撰写和发送回复
- 每日签到
- 后台执行网络请求,界面不会因请求而停止刷新
- 支持取消正在进行的网络请求
- 支持中文和其他 UTF-8 文本编辑
- Rust 1.85 或更高版本(项目使用 Rust 2024 Edition)
- 支持 UTF-8 和 ANSI 控制序列的终端
- 可访问
www.lkong.com和api.lkong.com的网络环境
项目使用 rustls,不依赖系统 OpenSSL。
克隆项目后,在项目目录执行:
cargo run --release也可以先构建,再直接运行二进制文件:
cargo build --release
./target/release/lkong安装到 Cargo 的二进制目录:
cargo install --path .
lkong界面底部会根据当前页面显示可用快捷键。
| 按键 | 操作 |
|---|---|
↑ / k |
选择上一项或向上滚动 |
↓ / j |
选择下一项或向下滚动 |
Enter |
打开选中的版块或帖子 |
← / h |
上一页 |
→ |
下一页 |
PageUp / PageDown |
在帖子正文中快速滚动 |
Esc |
返回上一页 |
q |
退出程序 |
| 按键 | 操作 |
|---|---|
/ |
搜索版块或主题标题 |
g |
打开动态信息流 |
@ |
打开“@我的” |
L |
登录或退出登录 |
p |
签到 |
p 会直接发起签到请求,不会再显示确认对话框。
| 按键 | 操作 |
|---|---|
| 输入字符 | 更新搜索结果 |
Backspace |
删除搜索字符 |
↑ / ↓ |
在匹配结果中移动 |
Enter |
应用当前搜索结果 |
Esc |
取消搜索并恢复完整列表 |
搜索结果仅作用于发起搜索的版块、标签和页码。没有匹配结果时列表保持为空,不会显示未过滤的数据。
在帖子详情页按 r 或 R 打开回复编辑器。
| 按键 | 操作 |
|---|---|
↑ / ↓ / ← / → |
移动编辑光标 |
Home / End |
移动到当前行开头或结尾 |
Backspace / Delete |
删除光标前或后的字符 |
Enter |
插入换行 |
Ctrl+S / Ctrl+Enter |
立即发送回复 |
Esc |
取消回复并丢弃草稿 |
发送回复前没有额外确认步骤。
| 按键 | 操作 |
|---|---|
Tab |
在账号和密码字段间切换 |
Enter |
登录 |
Esc |
退出程序 |
网络请求进行期间:
Esc:取消当前请求q:取消当前请求并退出程序- 其他按键不会启动新的操作
HTTP 连接超时为 10 秒,单次请求总超时为 30 秒。
登录成功后,Cookie 会保存到系统配置目录下的 lkong-tui/cookies.json。
常见位置:
- Linux:
~/.config/lkong-tui/cookies.json - macOS:
~/Library/Application Support/lkong-tui/cookies.json - Windows:
%APPDATA%\lkong-tui\cookies.json
具体路径由操作系统的配置目录规则决定。退出登录时,程序会删除该文件并清除当前进程中的 Cookie。
cookies.json 包含登录会话信息,请勿分享或提交到版本控制系统。在多用户 Unix 系统上,建议限制其访问权限:
chmod 700 ~/.config/lkong-tui
chmod 600 ~/.config/lkong-tui/cookies.jsonsrc/
├── main.rs # 终端初始化、事件循环、快捷键和后台任务
├── app.rs # 页面状态、业务流程和搜索状态
├── api.rs # HTTP、GraphQL、Cookie 和页面解析
└── ui.rs # Ratatui 界面渲染
主要依赖:
格式化代码:
cargo fmt运行静态检查:
cargo check --all-targets
cargo clippy --all-targets -- -D warnings运行测试:
cargo test --all-targets发布构建针对较小体积启用了 LTO、单代码生成单元、符号剥离和 panic = "abort"。
- 登录、回复、签到依赖龙空当前接口行为。
- 主题和帖子页面依赖站点返回的页面数据结构;站点改版后可能需要更新解析逻辑。
- 终端宽度过小时,部分长标题或状态信息可能被截断。
- 请遵守龙的天空的服务条款和社区规则,避免频繁请求或自动化滥用。