hhyqhh/inno-agent
An open-source personal learning agent with three-layer memory (learner profile / wiki knowledge base / cross-conversation recall), a proactive scheduler, personal IM channels, and a workspace-scoped Practice Lab — built on the Pi SDK.
Inno Agent – 个人学习助手
Inno Agent 是一个开源的本地运行AI助手,旨在帮助个人学习。它基于 Pi 编码代理 SDK(一个通用的LLM代理框架),并增加了教育导向的功能,如分层记忆、主动调度器、IM渠道集成和浏览器内实践实验室。该项目提供三种共享相同状态的运行形式:
- 桌面应用(Electron)——支持macOS/Windows的一键安装。
- Web UI(React 19 + Tailwind 4)——Node服务器,支持SSE流式传输、终端、Wiki视图、任务列表和设置。
- CLI/TUI(
inno)——纯终端界面,无需HTTP服务器。
核心概念
| 层级 | 存储内容 | 使用方式 |
|---|---|---|
| L1 – 学习者档案 | 目标、知识状态、误解、偏好。汇总为一个上下文包,在每轮对话中注入。 | 驱动个性化解释和诊断反馈。 |
| L2 – 原生维基 | 人类可读的页面(文本、PDF、图像),使用BM25 + 知识图谱索引。在摄入时由LLM辅助摘要。 | 代理可查询维基以检索事实或生成新笔记。 |
| L3 – 会话记录 | 存储在SQLite FTS5中的完整对话日志。检索受相关性阈值限制。 | 支持跨会话回忆和会话回放。 |
一个cron风格调度器允许代理创建自然语言任务(例如:“明天复习第2章”)。个人IM渠道(Feishu、WeChat)可发送提醒,并允许用户在Web UI之外与代理聊天。实践实验室提供一个工作区范围的终端(xterm.js),代理可读取并响应其命令输出。
主要功能(README中列出)
- 三层记忆(L1/L2/L3),具有独立生命周期。
- 主动调度器——可通过任意界面运行自然语言cron任务。
- 个人IM渠道——Feishu原生集成,WeChat(iLink QR登录或桥接模式)。
- 实践实验室——支持记录运行历史的浏览器内终端。
- 简易模式 + 预设——为非技术用户提供一键式工作区模板(课程计划、PPT创建、场景解释)。
- 技能系统与内容中心——可从公共GitHub中心或自托管捆绑服务导入可重用的技能/预设。
- 对话分支编辑——可编辑之前发送的消息,并从该点重新生成,不会污染当前模型上下文。
- 可插拔LLM提供者——支持任何OpenAI风格或Anthropic风格的端点(OpenAI、Anthropic、DeepSeek、Ollama、本地模型)。可在UI中实时切换模型。
- 国际化与主题——支持英文/中文UI,四种视觉主题。
- 会话回放——可导出任意会话,并在独立站点中回放精确的UI交互。
- 可选操作系统级沙箱——
pi-sandbox可限制文件系统/网络访问;权限系统(允许/询问/拒绝)添加UI审批步骤。 - 计算机使用(仅限桌面)——通过
@injaneity/pi-computer-use,代理可在用户批准后观察屏幕并执行UI操作。
架构概览
用户界面 → 应用层 → Pi代理运行时 → 分层记忆
- 用户界面——CLI、React Web UI、Electron桌面、Feishu/WeChat适配器。
- 应用层——渠道适配器、支持Server-Sent Events的HTTP API、WebSocket终端、cron调度器、实践实验室编排。
- 代理运行时——未修改的
@earendil-works/pi-coding-agent内核;Inno添加工具和before_agent_start钩子以注入L1/L3上下文。 - 分层记忆——
- L1:
src/memory/learner/ - L2:
src/memory/l2/(维基、图谱、摄入、摘要) - L3:
src/memory/l3/(会话JSONL文件的SQLite FTS5索引)
- L1:
仓库结构与此分离一致(后端在apps/inno-agent/,前端在apps/inno-agent/web/,Electron包装器、内容中心服务器等)。
快速开始
快速选项
- 桌面应用——从GitHub发布页面下载最新DMG/EXE并运行。首次启动会创建
~/.inno-agent/config/config.json,在此添加LLM提供者API密钥。 - 从源码构建——克隆仓库,
npm install,npm run build,然后启动服务器:
打开npm run server -- --home ./runtime --workspace ./workspace --port 3000http://localhost:3000。 - Docker——
docker compose up -d(挂载runtime/和workspace/)。
配置
JSON文件(config.example.json)定义:
- 默认提供者和模型。
- 提供者列表(基础URL、API类型、API密钥、模型ID)。
- 启用的渠道(Feishu、WeChat)。
- 激活的记忆层。
- UI偏好(主题、关闭行为)。
运行时目录可通过CLI标志或环境变量(INNO_HOME、INNO_DATA_DIR等)覆盖。
使用场景(说明中描述)
- 个性化辅导——代理从对话中诊断误解,将证据存入L1,并可按需生成练习或解释。
- 自主学习计划——创建自然语言复习任务,由调度器自动运行。
- 工作区范围的编码练习——使用实践实验室终端;代理可读取输出,建议修复或生成新文件。
- 知识库构建——将PDF、Office文档、图像导入L2维基;后期可通过聊天查询维基。
- 会话回顾与分享——导出会话并在静态站点中回放,用于个人反思或教学演示。
许可与引用
- 采用 MIT许可证。
- 项目依赖Pi SDK(
@earendil-works/pi-*),同样为MIT许可证。 - README中提供BibTeX格式的推荐引用。
社区与贡献
- 欢迎提交问题和拉取请求;构建步骤(
npm run build)作为健全性检查。 - 提供WeChat用户群用于非正式支持。
- 文档包含技术报告(arXiv 2026年6月)、详细系统文档和会话回放展示站点。
总结:Inno Agent是一个功能完整的本地托管AI学习伴侣,结合通用LLM代理核心与教育专用的记忆管理、调度和工具,可打包为桌面、Web或终端使用。
相关
- 项目
- 项目
- 项目
- Dispatch
- 项目