Skip to main content

logtap read

日志风格终端小说阅读器 —— 摸鱼神器,视觉模仿服务器运行日志,低辨识度,支持书签、进度记忆、多主题、伪装模式。

基于 Textual 框架构建,纯终端 UI,无 GUI,兼容 Windows Terminal、iTerm2、Linux 终端。

核心特色

日志伪装设计:外观模拟 Linux 服务日志 / AI 助手输出,章节标题带日志级别标签,正文为标准日志文本样式,外人一眼看上去像在排查服务器问题或使用编程助手,而非阅读小说。

多种伪装模式:支持日志模式、AI 模式和纯净模式三种显示风格,按 d 键快速切换,适应不同摸鱼场景。

轻量级设计:纯键盘操作,所有配置保存本地,无网络功能,专注阅读体验。

安装

pip install logtap

(本地开发调试可直接 pip install -e .)

快速开始

# 直接打开指定文件
logtap read ./novel.txt

# 不指定文件会在当前目录选择 .txt 文件
logtap read

快捷键说明

按键 功能
↑ / ↓ 向上/向下滚动
w / s 上一页 / 下一页
g 跳转到指定行号
m 在当前行添加/移除书签
d 切换伪装模式(日志/AI/关闭)
t 循环切换三套主题
q 退出阅读器,自动保存当前阅读位置

动态伪装模式

按 d 键可在三种模式间切换,适应不同摸鱼场景:

模式1:日志模式(默认)

  • 正文随机插入日志级别:[INFO]、[DEBUG]、[WARN]、[ERROR]
  • 部分行添加时间戳前缀:2026-07-28 14:32:15
  • 随机插入模拟系统日志噪音(不打断阅读):
    • [INFO] Database connection pool: 8/20 active
    • [DEBUG] Cache hit ratio: 87.3%
    • [WARN] Memory usage: 1461MB / 2048MB
  • 章节标题显示为关键错误:[ERROR] Critical: 第一章 标题

适用场景:假装在查看服务器日志、排查线上问题

模式2:AI助手模式

  • 正文标记为 [assistant] AI回答格式
  • 随机将部分内容渲染成代码 diff 格式:
    • + 新增内容(绿色)
    • - 删除内容(红色)
  • 随机插入 AI 思考链路噪音:
    • <thinking>分析需求中...</thinking>
    • <thinking>检查代码结构...</thinking>
  • 章节标题伪装成任务:## Task: 实现用户认证模块

适用场景:假装在用 Claude Code / Cursor AI 写代码、调试程序

模式3:关闭伪装

  • 纯净的日志风格(每行只加 [TEXT] 前缀)
  • 适合不需要伪装的私密环境

三套主题

  1. 日志仿真模式(默认):黑底 + 彩色日志标签([WARN] 黄色、[INFO] 蓝色),模拟服务器日志输出
  2. 护眼暗色模式:深灰底 + 暖色调文字,适合长时间阅读
  3. 极简黑白模式:纯黑底白字,移除所有颜色,最高隐蔽度

按 t 键循环切换,选择会被记住。

功能特性

  • 纯本地文本:只读取本地 .txt 文件,不含任何网络爬虫或在线下载功能
  • 编码自动识别:自动识别 UTF-8 / GBK / GB2312 / BIG5 / UTF-16 等编码
  • 大文件优化:仅扫描一次建立"行偏移索引",正文按需 seek 读取,不会把整本书载入内存,GB 级文本同样流畅
  • 东亚宽字符换行:按终端可视宽度自动换行,中日韩字符按 2 列宽计算,不会出现超长行溢出
  • 章节粗识别:通过"第 N 章/回/节"标题模式与常见分割线(----、====等)自动标记章节
  • 独立进度与书签:每本书按绝对路径独立记录阅读进度和书签列表,下次打开自动恢复到上次阅读位置

配置文件

阅读进度、书签、主题设置保存在跨平台配置目录下的 JSON 文件中:

  • Windows: %USERPROFILE%\.logtap\read_config.json
  • macOS / Linux: ~/.logtap/read_config.json

写入采用"临时文件 + 原子替换"策略,避免程序异常退出导致配置损坏;若配置文件本身已损坏,会自动备份为 read_config.json.corrupted-<timestamp>.bak 并回退到默认设置,不影响正常启动。

项目结构

logtap/
├── cli.py                  # logtap 主命令行入口,分发子命令
└── read/
    ├── __init__.py         # 对外暴露 run(path)
    ├── app.py              # Textual 主应用:快捷键、主题切换
    ├── log_style_render.py # 日志风格文本渲染组件
    ├── reader_core.py      # 编码识别、行索引、宽字符换行、章节识别
    ├── storage.py          # 进度/书签/设置持久化
    ├── themes.py           # 主题样式定义
    └── disguise.py         # 伪装模式渲染逻辑

依赖

  • textual:现代化终端 UI 框架
  • rich:富文本渲染(Textual 底层依赖)
  • chardet:编码检测辅助

开发与测试

pip install -e .
pip install pytest
pytest tests/ -v

设计理念

区别于传统终端阅读器(侧边目录 + 正文区域的常规布局),本项目主打动态伪装系统:

  • 两套伪装模式随时切换(d 键):日志模式模拟服务器运行日志,AI模式模拟编程助手输出
  • 智能噪音注入:随机在正文间插入伪装噪音行,不干扰阅读连续性
  • 视觉真实性:章节标题根据模式动态调整,噪音行使用弱化样式退居背景

与市面上所有终端小说阅读器的根本区别:不是"做了个阅读器顺便能伪装",而是"做了个伪装系统顺便能看小说"。

许可证

MIT License,详见 LICENSE。

Metadata

Release files for logtap 0.1.6

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for logtap 0.1.6
File Size Uploaded Provenance Actions
logtap-0.1.6.tar.gz 31.9 kB Without provenance Details for logtap-0.1.6.tar.gz

Built distribution (wheel)

Table of built distributions (wheels) for logtap 0.1.6
File Interpreter ABI Platform Actions
logtap-0.1.6-py3-none-any.whl Python 3 none any Details for logtap-0.1.6-py3-none-any.whl

Total release size: 61.4 kB

Release files / logtap-0.1.6.tar.gz

Download URL logtap-0.1.6.tar.gz
Size 31.9 kB
Tags Source
SHA-256 checksum
How to use checksums
d1283e9d406d5b55a05f23fe30d1ba63fb2e3bef0d68df996580d5882525d96f
BLAKE2b-256 checksum
How to use checksums
a5e27a624038608a4018527fa22e60dde7c1cb63e5acf2dae32697daa62f0d6d
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.12.9

Release files / logtap-0.1.6-py3-none-any.whl

Download URL logtap-0.1.6-py3-none-any.whl
Size 29.4 kB
Tags Python 3
SHA-256 checksum
How to use checksums
193018bcabc968cc28149d6581e9cf50231a6ef65e6f0a86727763b438701ee3
BLAKE2b-256 checksum
How to use checksums
583e2801e7d58b88cb2a08d4d31a9deada89accc0c8ddda41fa9952ea38e5fbf
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.12.9

Security for logtap 0.1.6

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

No provenance found

None of the files in this release were uploaded with provenance metadata.

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

To learn more about protecting yourself from malicious actors, visit our package security documentation.

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page