AI日志记录工具

JournalMe是一款AI驱动的日志记录应用,通过对话方式帮助用户记录生活事件、生成每日/每周摘要,并提供活动提醒功能。

  • by a-fleury
  • Scala
  • 本地部署
  • 更新于
在 GitHub 查看 a-fleury/journal-me

使用说明

杂志 Me📔

一款有趣的人工智能日志应用程序,让追踪你的生活事件变得像聊天一样简单。与人工智能对话,记录事件,总结你的一天或一周,并获得你上次做某事的提醒。

注意:这是一个学校项目,在身份验证方面有一个有趣的转折——你可以直接告诉法学硕士你的证书,它就会让你登录! 🎉 (显然不建议用于生产!)

特性

  • 🗣️ 对话式日记 -只需与AI对话即可记录您的日常事件
  • 📊 智能摘要 -获取人工智能生成的您的一天、一周或自定义时间段的摘要
  • 🔔 活动提醒 -询问你上一次做某事是什么时候,并立即得到答案
  • 🎭 有趣的身份验证 -只需告诉AI你的电子邮件和密码,它就会处理登录!没有标题,您只需将标记添加到提示中即可!

可用工具

认证:

  • 注册
  • 登录
  • 退出登录

日志记录:

  • 添加日志事件
  • 总结所选期间的事件
  • 知道你上一次做某事是什么时候

技术栈

  • Scala 3.3.7 --现代强类型函数式编程语言

  • 猫的效果3.6.3 --用于异步、并发和资源安全的纯功能效果系统

  • 烟囱(MCP) v0.1.6 --LLM工具集成的模型上下文协议服务器框架

  • 貘 v1.13.3 --类型安全端点定义和请求/响应建模

  • Tapir Netty猫服务器 --Netty和Cats效应驱动的高效HTTP服务器

  • 奈蒂 --高性能异步网络框架

  • 杜比 v1.0.0-RC11 --用于数据库访问的JDBC功能层

    • PostgreSQL集成
    • HikariCP连接池
  • PostgreSQL --用于持久化的关系数据库

  • 迁飞路线 --数据库模式迁移(通过Docker)

  • Logback --结构化应用程序日志记录

  • jBCrypt --安全密码散列

测试和工具

  • 标量测试 --单元和集成测试
  • 猫效应测试 --效果感知测试工具
  • 测试容器(PostgreSQL) --短暂、可重复的数据库测试
  • Docker&Docker编写 --当地基础设施(Postgres+Flyway)
  • sbt --构建和依赖关系管理

建筑

项目结构

JournalMe/
├── src/              # Source code
├── project/          # sbt build configuration
├── target/           # Compiled artifacts (ignored)
├── build.sbt         # Project dependencies and settings
└── .env              # Environment variables (ignored)

日记我遵循一个 干净、分层的架构 重点强调 功能效应(IO)从边缘到持久.

高级层

┌─────────────────────┐
│        MCP          │  ← Chimp tools exposed to the LLM
│  (tools / adapters) │
└─────────▲───────────┘
          │
┌─────────┴───────────┐
│      Services       │  ← Business logic, validation, orchestration
│   (pure + IO)       │
└─────────▲───────────┘
          │
┌─────────┴───────────┐
│    Persistence      │  ← Doobie repositories (PostgreSQL)
│   (IO, SQL)         │
└─────────▲───────────┘
          │
┌─────────┴───────────┐
│     Database        │  ← PostgreSQL
└─────────────────────┘

包装责任

  • 领域 核心业务模型和错误类型。无需担心基础设施问题。

  • 持久性 Doobie存储库、SQL映射和数据库访问。所有存储库返回 IO.

  • 服务 应用程序逻辑和编排。该层协调存储库,应用验证规则,并返回包装在 IO.

  • 主控程序 暴露在LLM中的烟囱工具。该层将结构化域结果调整为 LLM友好字符串.

  • mcp.adapter/格式化器 纯格式化逻辑,将域对象和错误转换为LLM的自然语言响应。

设计原则

  • IO无处不在 --所有副作用都是明确和可控的
  • 关注点分离 --格式、业务逻辑和持久性显然是孤立的
  • 类型安全第一 --错误是使用密封特征显式建模的
  • LLM友好边界 --只有MCP层处理字符串和提示

安装说明

先决条件

  • Java软件开发工具包21
  • sbt(Scala构建工具)
  • 光标IDE -使用JournalMe的MCP集成所需

安装

  1. 克隆存储库
git clone <your-repo-url>
cd JournalMe
  1. 设置环境变量

创建 .env 从 .env.example 项目根目录中的文件。

该项目通过系统注入环境变量。 将IDE配置为使用 .env 手动归档或导出变量。

cp .env.example .env
# Then edit the .env file with your preferred settings

或者,

export SESSION_LENGTH=<length_in_seconds>
export POSTGRES_PORT=<port>
export POSTGRES_USER=<user>
export POSTGRES_PASSWORD=<pwd>
  1. 构建项目
sbt compile
  1. 启动数据库

确保端口配置适合您的本地环境

如果想查看数据源的结构,可以将其连接到所选的IDE

#This will also trigger a flyway migration
docker compose up

或者,

make db-up
make db-migrate
  1. 运行应用程序
sbt run

与Cursor IDE一起使用

由于JournalMe使用Chimp for MCP(模型上下文协议),您需要在AI聊天会话中使用Cursor IDE与JournalMe MCP服务器进行交互。

  • 在Cursor中打开项目
  • 在Cursor的设置中配置MCP连接
  • 开始与AI聊天,并使用JournalMe的功能!
  • 在您的第一个提示中,不要犹豫,具体要求LLM使用JournalMe MCP服务器

开发说明

  • 这 .bloop, .bsp,以及 .metals 目录由Metals(Scala语言服务器)生成
  • 通过以下方式自动忽略构建工件 .gitignore
  • 确保你的 .env 文件从未提交到版本控制

贡献

这是一个学校项目,但请随意尝试并享受其中的乐趣!请记住:身份验证方法是故意愚蠢的——请不要在实际应用程序中使用这种模式! 😄

快乐的日记! ✨