终端摸鱼盯盘工具 — 按一下 b 键,行情秒变 Docker 编译日志
Project description
BossKey-Stock — 终端摸鱼盯盘工具
A股 · 在终端里偷看行情 · 按一下 b 秒变 Docker 编译日志
pip install bosskey-stock | bosskey
BossKey-Stock 是一个纯终端 A 股实时行情监控工具。不需要打开浏览器、不需要切窗口、不需要 API Key。bosskey 回车,你的终端就变成了红绿相间的行情看板;听到脚步声,按 b 键,它又变成了一个正经的 Docker 构建日志。
🐟 这个项目为什么存在?
作为一名程序员,我一天 8+ 小时在终端里。行情软件切来切去不仅麻烦,而且屏幕上一片红绿实在过于醒目。
我需要一个东西——安安静静地待在终端里,别人路过时看起来像是在认真看 build log,但实际上……它在盯盘。
这个就是 BossKey — 老板键,专门为摸鱼而生。
截图
按 t 逐级展开持仓/成本、持仓收益、今日收益列与底部汇总;按 l 切换中文界面;按 b 一键切换老板模式
正常模式 — 行情 + 持仓/成本 + 持仓收益(率)+ 今日收益,底部汇总总市值 / 总成本 / 总收益 / 今日收益
老板模式 — 按 b 后秒变 Docker build 日志
截图可用
python scripts/make_screenshots.py重新生成(macOS,需 qlmanage)。
功能
| 功能 | 说明 |
|---|---|
| 📊 实时行情 | Rich 表格渲染,红涨绿跌,整行着色 |
| ⏱ 智能刷新 | 交易时段(工作日 9:30-11:30 / 13:00-15:00)自动刷新,非交易时段停刷 |
| 🕶 老板模式 | 按 b 一键切换 Docker build 伪日志,再按 b 切回 |
| ⌨️ 零依赖终端控制 | 单线程,一次 tcsetattr,无后台线程 |
| ⚡ 键盘操作 | r 手动刷新,t 切换持仓/收益列,q / Ctrl+C 退出 |
| 📝 监控列表管理 | CLI 子命令 add / rm / list |
| 💼 持仓与收益 | pos add 交互式多选录入持仓,TUI 切换显示持仓、成本、持仓收益(率)、今日收益,底部同步汇总总市值/总收益 |
| 🌐 中英界面 | 默认英文伪装,l 键 / --lang {en,zh} / 配置 display.lang 随时切中文 |
| 🕶️ 英文伪装 | 界面与 CLI 交互默认全英文,英文非母语一眼难读,继续强化「在工作」的伪装 |
| 🌐 离线检测 | 网络断开时黄色 [Offline] 提示,续网自动恢复 |
安装
从 PyPI(推荐)
pip install bosskey-stock
从源码
git clone https://github.com/shark/bosskey-stock.git
cd bosskey-stock
pip install -e .
安装后使用 bosskey 命令。
快速开始
# 启动盯盘
bosskey
# 添加股票到监控列表
bosskey add 601318 000858
# 移除股票
bosskey rm 000001
# 查看当前监控列表
bosskey list
# 交互式记录持仓:列出监控列表多选,逐个录入股数与成本价
bosskey pos add
# 移除持仓
bosskey pos rm 000001
# 查看全部持仓
bosskey pos list
# 指定语言运行(可选:默认取配置 display.lang,未设置时英文)
bosskey --lang zh run
bosskey --lang zh list
终端内操作
| 按键 | 功能 |
|---|---|
b |
老板模式切换(行情 ↔ Docker 日志) |
r |
手动刷新行情 |
t |
循环切换显示模式:行情 → +持仓/成本 → +持仓收益(率) → +今日收益;底部同步切换总市值/总成本、总收益(率)、今日收益(率)汇总 |
l |
中英界面切换(会话内,默认英文) |
h |
底部快捷键提示开关 |
q / Ctrl+C |
退出(终端完全恢复,无 traceback) |
配置
配置文件 ~/.bosskey.toml 在首次运行时自动创建:
[display]
refresh_interval = 3
lang = "en" # 界面语言:en / zh(TUI 内按 l 切换)
[watchlist]
codes = ["000001", "600519", "300750"]
[holdings]
# code = { shares = 持仓股数, cost = 成本价 }
600519 = { shares = 100, cost = 1500.50 }
持仓可用
bosskey pos add/rm/list管理;pos add交互式多选监控列表中的股票并逐个录入股数与成本价。
数据来源
本项目使用 Sina Finance 实时行情 API,这是一个免费、无需 API Key 的公开接口。
⚠️ 免责声明
Sina Finance API 是非官方的公开接口,无正式服务等级承诺。数据仅作个人参考,不构成投资建议。
如新浪调整接口策略导致工具不可用,请提交 Issue,我们会跟进适配。
与同类工具对比
| BossKey-Stock | 同花顺/东方财富 | tushare | |
|---|---|---|---|
| 终端运行 | ✅ | ❌ | ✅ |
| 老板模式 | ✅ | ❌ | ❌ |
| 需 API Key | ❌ | ❌ | ✅ |
| 需注册 | ❌ | ✅ | ✅ |
| 安装大小 | 3 个依赖 | 几百 MB | 中等 |
项目结构
bosskey-stock/
├── bosskey_stock/
│ ├── __init__.py # 包标记
│ ├── __main__.py # CLI 入口,子命令路由
│ ├── app.py # 主循环:Rich Live + 非阻塞键盘输入
│ ├── data.py # Sina 数据层,GBK 编码解析
│ ├── boss.py # 老板模式(Docker build 伪日志)
│ ├── config.py # 配置读写
│ └── i18n.py # 中英文案表与语言解析
├── tests/
│ ├── test_data.py # 数据解析测试
│ ├── test_config.py # 配置管理测试
│ └── test_boss.py # 老板模式测试
├── docs/
│ └── design.md # 架构设计文档
├── pyproject.toml # 打包与项目配置
├── LICENSE
├── README.md
└── CHANGELOG.md
为什么是 Python?
这是有意为之的。典型办公环境预装 Python,pip install bosskey-stock 就能用——不需要申请安装权限、不需要 IT 审批、不需要管理员权限。
一个纯文本的工具,在任何 SSH 会话、tmux 窗口、甚至远程服务器上都能跑。
贡献
License
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file bosskey_stock-0.2.1.tar.gz.
File metadata
- Download URL: bosskey_stock-0.2.1.tar.gz
- Upload date:
- Size: 24.1 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/7.0.0 CPython/3.13.14
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
8baf22d0c611d0a8764f8d1379c73e7396fac59eb44e7b756ef85fd16d87f1f9
|
|
| MD5 |
840c4057c8b45ffc7b154ca8161920f7
|
|
| BLAKE2b-256 |
cefaf8c9c4a81f2a6665836f5d34bbc244c39dfd5f18edbe6a177339d3a71214
|
Provenance
The following attestation bundles were made for bosskey_stock-0.2.1.tar.gz:
Publisher:
publish.yml on Angryshark128/bosskey-stock
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
bosskey_stock-0.2.1.tar.gz -
Subject digest:
8baf22d0c611d0a8764f8d1379c73e7396fac59eb44e7b756ef85fd16d87f1f9 - Sigstore transparency entry: 2346700485
- Sigstore integration time:
-
Permalink:
Angryshark128/bosskey-stock@b2eaac8dc6f2eccf81ff16e0fd1f03396f828cd5 -
Branch / Tag:
refs/tags/v0.2.1 - Owner: https://github.com/Angryshark128
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@b2eaac8dc6f2eccf81ff16e0fd1f03396f828cd5 -
Trigger Event:
release
-
Statement type:
File details
Details for the file bosskey_stock-0.2.1-py3-none-any.whl.
File metadata
- Download URL: bosskey_stock-0.2.1-py3-none-any.whl
- Upload date:
- Size: 18.6 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/7.0.0 CPython/3.13.14
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
83999bcff7a71bc270c7e899e094be0418a83f76cd533f4370b9c1bc9623d81d
|
|
| MD5 |
b377759d6ec9b6b28115d0a913aeb4fe
|
|
| BLAKE2b-256 |
274df2de6490021c901e35697bd92bf2f16825fbfbba24f6de27715d1cb9cb84
|
Provenance
The following attestation bundles were made for bosskey_stock-0.2.1-py3-none-any.whl:
Publisher:
publish.yml on Angryshark128/bosskey-stock
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
bosskey_stock-0.2.1-py3-none-any.whl -
Subject digest:
83999bcff7a71bc270c7e899e094be0418a83f76cd533f4370b9c1bc9623d81d - Sigstore transparency entry: 2346700552
- Sigstore integration time:
-
Permalink:
Angryshark128/bosskey-stock@b2eaac8dc6f2eccf81ff16e0fd1f03396f828cd5 -
Branch / Tag:
refs/tags/v0.2.1 - Owner: https://github.com/Angryshark128
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@b2eaac8dc6f2eccf81ff16e0fd1f03396f828cd5 -
Trigger Event:
release
-
Statement type: