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代理运行时 → 分层记忆
  1. 用户界面——CLI、React Web UI、Electron桌面、Feishu/WeChat适配器。
  2. 应用层——渠道适配器、支持Server-Sent Events的HTTP API、WebSocket终端、cron调度器、实践实验室编排。
  3. 代理运行时——未修改的@earendil-works/pi-coding-agent内核;Inno添加工具和before_agent_start钩子以注入L1/L3上下文。
  4. 分层记忆——
    • L1: src/memory/learner/
    • L2: src/memory/l2/(维基、图谱、摄入、摘要)
    • L3: src/memory/l3/(会话JSONL文件的SQLite FTS5索引)

仓库结构与此分离一致(后端在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 3000
    
    打开 http://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
  • 项目