Skip to content

humanity687/eReader-agent

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

13 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

📖 Eink Reader Agent

为墨水屏电子阅读器设计的轻量级远程 AI 对话终端

利用墨水屏的护眼特性,打造沉浸式、无干扰的长文阅读与 AI 对话体验。
专为索尼等低性能浏览器优化,≤1FPS 刷新,翻页式交互,内存占用极低。


✨ 特性

  • 🖥️ 适配墨水屏:纯黑白样式,≤1FPS 刷新,只做整页跳转,无复杂 JS
  • 📟 翻页式阅读:AI 回复自动分页,跨页带 (下页续) / (续) 标记,像读 PDF 一样翻阅
  • 🔋 电量监控:首页展示部署笔记本的实时电量
  • 💬 多对话管理:支持新建对话、历史对话切换,对话内容持久化
  • ⚙️ 可插拔后端
    • OpenAI API 模式(推荐):支持任何兼容 OpenAI API 的服务(如 Ollama、vLLM 等)
    • 浏览器自动化模式(实验性):通过 Playwright 操控网页版 AI(如 DeepSeek),代替墨水屏访问网页版 AI
  • 📝 极低内存占用:服务端渲染,无前端框架,仅依赖 Flask + Playwright(可选)
  • 🗣️ 语音输入预留:前端只采音,识别与处理交给笔记本端大模型(计划中)

🚀 快速开始

环境要求

  • Python 3.10+
  • 依赖见 requirements.txt

1. 克隆仓库

git clone https://github.com/yourusername/eink-reader-agent.git
cd eink-reader-agent

2. 安装依赖

pip install -r requirements.txt

3. 配置后端

模式一:OpenAI API(推荐)

设置环境变量:

export OPENAI_API_KEY="ollama"             # 或你的真实 API key
export OPENAI_BASE_URL="http://127.0.0.1:11434/v1"  # 本地 Ollama 地址
export OPENAI_MODEL="deepseek-r1:1.5b"     # 模型名称

然后在设置页面(/settings)选择 openai 后端。

模式二:浏览器自动化(实验性)

  1. 安装 Playwright 浏览器:
    playwright install chromium
  2. 在设置页面选择 deepseek 后端。
  3. 首次运行时会弹出浏览器窗口,请手动登录 DeepSeek。
  4. 登录状态会自动保存,下次无需重复登录。

4. 启动服务

python app.py

服务运行在 http://0.0.0.0:8500

5. 在电子阅读器上访问

确保阅读器与笔记本在同一局域网,浏览器访问 http://笔记本IP:8500
(索尼 DPT 系列等设备可将地址添加为书签,一键直达。)


📂 项目结构

eink_reader_agent/
├── app.py                    # Flask 主程序,路由、状态管理
├── requirements.txt          # Python 依赖
├── backends/                 # 可插拔 AI 后端
│   ├── __init__.py
│   ├── openai_backend.py     # OpenAI API 后端
│   └── (其他后端自动发现)    # 浏览器后端需自己实现并放入此目录
├── templates/                # Jinja2 模板(极简墨水屏界面)
│   ├── index.html            # 主页:电量 + 对话列表
│   ├── view.html             # 对话分页浏览
│   ├── waiting.html          # 输入 / 等待页
│   └── settings.html         # 后端切换设置页
├── data/                     # 运行时数据(持久化)
│   ├── conversations.json    # 对话历史
│   ├── settings.json         # 用户设置
│   └── openai_backend/       # OpenAI 后端的对话存档
└── browsers/                 # (实验性)网页版 AI 操控类
    └── deepseek.py           # DeepSeek 网页版自动化封装

🧪 自定义后端

本项目采用可插拔后端架构,你可以轻松添加新的 AI 服务。
只需在 backends/ 下创建一个 .py 文件,实现以下接口:

class MyBackend:
    def __init__(self, browser=None):   # browser 参数由框架传入,可忽略
        ...

    def new_conv(self, (first_msg, on_token)) -> (conv_id, full_reply):
        """创建新对话,发送首条消息,返回 (对话ID, 回复文本)"""

    def goto_conv(self, conv_id):
        """切换到指定对话"""

    def generate_response(self, msg, on_token=None) -> str:
        """在当前对话中发送消息,返回完整回复"""

    def close(self):
        """清理资源"""

REGISTRY = {
    "name": "mybackend",
    "class": MyBackend
}

后端会自动被 /settings 页面发现,无需修改 app.py


⚠️ 重要免责声明

本项目仅供个人学习、研究用途,严禁用于任何商业目的。

  • 浏览器自动化模式仅用于个人远程使用AI网站。
  • 使用浏览器自动化模式可能违反对应网站的服务条款(ToS)。请务必使用您自己的合法账号,并自行承担所有法律风险。
  • 开发者不鼓励、不推荐将其用于任何违规或侵权行为。
  • 因使用本项目导致的账号封禁、法律纠纷或其他后果,开发者不承担任何责任
  • 请优先使用服务方提供的官方 API 进行合法访问。

如果您是服务提供方并认为本项目侵犯了您的权益,请通过 GitHub Issues 联系,我会立即处理。


🛣️ 路线图

  • 墨水屏翻页阅读
  • 多对话持久化
  • 可插拔后端架构
  • OpenAI API 后端(流式)
  • DeepSeek 浏览器自动化后端(实验性)
  • 语音输入(笔记本端录音,阅读器触发)
  • 更多浏览器后端(Kimi、通义千问等)
  • 远程部署(内网穿透 / VPS)
  • PDF / 长文本总结对话模式

📜 开源协议

本项目采用 MIT License 开源,但不包含对第三方服务合规性的担保


Enjoy your slow, thoughtful reading.

About

专为在电子阅读器(墨水屏)上与AI交互而设计的程序

Resources

License

Stars

1 star

Watchers

0 watching

Forks

Releases

No releases published

Packages

 
 
 

Contributors