内容
# OwnPlanner
一款由人工智能驱动的个人计划助手,帮助您管理任务、笔记,并通过智能对话保持组织。
## 演示
网页应用:https://app.controlcode.space
## 架构
该解决方案被组织为一个分层的.NET应用程序,具有多个入口点(Web、控制台、MCP)和一个可以调用MCP工具的AI聊天工作流。
### 系统上下文(C4 L1)
```mermaid
graph LR
user["终端用户"] --> ui["OwnPlanner 网页应用<br/>React 18 + TypeScript + MUI"]
ui --> web["OwnPlanner 网页服务器<br/>ASP.NET Core (.NET 10)<br/>Cookie 认证 + API"]
web --> llm["谷歌 Gemini API<br/>(LLM)"]
web --> mcp["OwnPlanner MCP Stdio 应用<br/>(MCP 工具服务器)"]
dev["开发者 / 自动化"] --> console["OwnPlanner 控制台<br/>CLI 聊天"]
console --> llm
console --> mcp
```
### 容器和数据(C4 L2)
```mermaid
graph TB
subgraph client["客户端"]
browser["浏览器<br/>React 单页应用"]
end
subgraph host["主机 / 容器"]
web["OwnPlanner 网页服务器<br/>ASP.NET Core (.NET 10)"]
authdb["SQLite: ownplanner-auth.db<br/>(用户认证)"]
userdb["SQLite: ownplanner-user-{userId}.db<br/>(任务/笔记 每用户)"]
logs["文件日志<br/>/app/logs"]
end
llm["谷歌 Gemini API"]
browser --> web
web --> authdb
web --> llm
web --> userdb
web --> logs
```
### 分层代码结构
```mermaid
graph BT
presentation["表示层<br/>OwnPlanner.Web.Server<br/>OwnPlanner.Console<br/>OwnPlanner.Mcp.StdioApp"]
infrastructure["基础设施<br/>OwnPlanner.Infrastructure<br/>EF Core, SQLite, 适配器"]
application["应用层<br/>OwnPlanner.Application<br/>用例, 服务, DTOs"]
domain["领域层<br/>OwnPlanner.Domain<br/>实体, 规则"]
external["外部<br/>Gemini API, MCP SDK"]
presentation --> application
presentation --> infrastructure
infrastructure --> application
application --> domain
infrastructure --> external
presentation --> external
```
### 运行时:聊天 + MCP 工具调用流程
```mermaid
sequenceDiagram
participant B as 浏览器 (React)
participant W as 网页服务器 (ASP.NET Core)
participant G as Gemini API
participant D as SQLite (每用户数据库)
B->>W: POST /chat (消息)
W->>G: 发送提示 + 工具定义
G-->>W: 工具调用请求 (例如,tasklist_list_create)
W->>D: 在进程中执行工具调用用户数据库
D-->>W: 工具结果 (文本/json)
W->>G: 提供工具结果继续
G-->>W: 最终助手消息
W-->>B: 响应
```
## 解决方案概述
OwnPlanner 是一个多项目的.NET 10 解决方案,用于个人计划和任务管理。它具有分层架构和多个接口:
- 核心
- **OwnPlanner.Application**:核心业务逻辑,服务和DTOs。
- **OwnPlanner.Domain**:领域模型和业务规则。
- **OwnPlanner.Application.Tests**,**OwnPlanner.Domain.Tests**:各自层的单元测试。
- 基础设施
- **OwnPlanner.Infrastructure**:数据持久性,外部集成和基础设施服务。
- **OwnPlanner.Infrastructure.Tests**:基础设施集成测试。
- 表示层
- **OwnPlanner.Web.Server**:ASP.NET Core 10 网页服务器,带有React前端用于用户交互。
- **OwnPlanner.Mcp.StdioApp**:MCP stdio适配器和开发者工具,用于命令行或基于协议的自动化。
- **OwnPlanner.Console**:用于直接CLI使用的控制台应用程序。
主要功能包括:
- 用于可维护性和可测试性的分层架构
- 用于智能规划的AI集成
- 日志记录,错误处理和开发者工具
- 核心逻辑和基础设施的自动化测试
## 技术栈
- 前端:React 18 + TypeScript + Material-UI
- 后端:.NET 10 + ASP.NET Core
- AI:谷歌 Gemini + Mscc.GenerativeAI SDK
## 版本说明
- 版本构建从`v<major>.<minor>.<patch>`格式的Git标签创建,例如`v1.1.0`。
- 标签构建会将Docker镜像发布到`ghcr.io`,带有`v<version>`、`latest`和提交SHA标签。
- 非标签构建仍然运行恢复、构建、测试和Docker镜像构建,但不推送镜像。
- 相同的版本应用于`.NET`程序集元数据,并嵌入到前端构建的关于对话框中。
## 使用 OwnPlanner.Console 运行
### 先决条件
- .NET SDK 10
- 谷歌 Gemini API 密钥
### 配置
控制台应用程序从`OwnPlanner.Console`目录中的`appsettings.json`和`appsettings.Development.json`加载设置。
必填:
- `Gemini:ApiKey`(字符串)
可选:
- `Gemini:Model`(字符串)
- `Gemini:MaxToolCallRounds`(数字)
### 运行
从仓库根目录:
```sh
dotnet run --project OwnPlanner.Console
```
或从项目目录:
```sh
cd OwnPlanner.Console
dotnet run
```
输入`exit`退出。