A CLI client for PKU's anonymous discussion platform (PKU Helper Treehole).
crates/treehole/app_id="PKU Helper") → JWT callback at /chapi/cas_iaaa_login → optional SMS verify/chapi/api/v3/ (modern) and /chapi/api/ (legacy)docs/treehole-api.mdsrc/main.rs — Clap CLI definition with all subcommandssrc/commands.rs — Command implementations (login, post, search, etc.)src/api.rs — HTTP API client, request builders, response typessrc/display.rs — Terminal output formatting with colored cratesrc/client.rs — reqwest client builders (build for auth, build_simple for IAAA)| Command | Alias | Function |
|---|---|---|
| --------- | ------- | ---------- |
login | IAAA password/QR login → JWT | |
logout / status | Session management | |
list | ls | Browse posts/feed |
show | View single post with replies | |
search | Full-text search | |
post | Create post (text, tags, images, rewards/树叶) | |
reply | Reply to a post | |
like / tread | Vote on posts | |
star / unstar / stars | Bookmark management | |
follow / unfollow | Follow posts | |
msg / read | Notifications | |
me | Profile + own posts | |
score | Grade query (with color rendering) | |
course | Weekly course schedule (canonical source — includes 主修 + 辅修 + 双学位) | |
schedule | This week's day-by-day schedule | |
academic-cal / activity-cal | Academic / activity calendar | |
otp | TOTP 2FA management (bind/set/show/clear) |
# Check session status
info-auth check
# Auto-login (reads credentials from OS keyring, no password needed)
treehole login -p
# If SMS verification is needed (first login or periodic):
PKU_SMS_CODE=123456 treehole login -p
Treehole may require SMS verification on first login or periodically (~30 days). When PKU_SMS_CODE env var is set, it auto-confirms sending and submits the code without interactive prompts.
anyhow::Result with .context("中文描述")redirect(Policy::none()) for manual redirect handling~/.config/info/treehole/ via info_common::session::Storeinfo_common::credential (keyring → env → interactive)info-common crate (see info-common skill for details)共 1 个版本