186 lines
5.4 KiB
Markdown
186 lines
5.4 KiB
Markdown
# Obsidian 智能日记整理 Agent v2.0 - 对话式
|
|||
|
|
|
||
|
|
**版本**: 2.0.0
|
||
|
|
|
||
|
|
这是一个基于 **对话式 Agent 架构** 的智能日记整理系统,专为 Obsidian 用户设计。它能够通过自然语言对话,理解您的需求,自动分析每日日记,提取关键信息,并将其智能地整理到您的知识库中。
|
||
|
|
|
||
|
|
## v2.0 新特性:对话式交互
|
||
|
|
|
||
|
|
- **自然语言理解**:您可以直接用自然语言与 Agent 对话,例如“帮我整理一下昨天的日记”。
|
||
|
|
- **多轮对话**:支持上下文感知,可以进行多轮对话来澄清和确认您的需求。
|
||
|
|
- **智能建议**:根据您的使用习惯,主动推荐可能的操作。
|
||
|
|
- **交互式界面**:提供一个命令行聊天界面,支持实时交互和反馈。
|
||
|
|
|
||
|
|
## 系统架构
|
||
|
|
|
||
|
|
系统采用分层架构,将对话逻辑与业务执行分离:
|
||
|
|
|
||
|
|
1. **对话层** (`conversation/`)
|
||
|
|
- **意图理解** (`intent_understanding.py`):使用 Claude API 理解用户意图。
|
||
|
|
- **对话状态管理** (`conversation_state.py`):管理对话历史和上下文。
|
||
|
|
- **响应生成** (`response_generator.py`):生成自然语言响应。
|
||
|
|
- **对话式 Agent** (`conversational_agent.py`):协调对话层的所有模块。
|
||
|
|
|
||
|
|
2. **执行层** (Command + Skill)
|
||
|
|
- 沿用 v1.0 的 Command + Skill 架构,负责执行具体的业务逻辑。
|
||
|
|
|
||
|
|
```mermaid
|
||
|
|
graph TD
|
||
|
|
subgraph User Interface
|
||
|
|
ChatCLI[命令行聊天界面]
|
||
|
|
ObsidianPlugin[Obsidian 插件]
|
||
|
|
end
|
||
|
|
|
||
|
|
subgraph Conversational Layer
|
||
|
|
ConvAgent[对话式 Agent]
|
||
|
|
ChatCLI --> ConvAgent
|
||
|
|
ObsidianPlugin --> ConvAgent
|
||
|
|
|
||
|
|
ConvAgent -- uses --> IntentUnderstanding[意图理解]
|
||
|
|
ConvAgent -- uses --> ConversationState[对话状态管理]
|
||
|
|
ConvAgent -- uses --> ResponseGenerator[响应生成]
|
||
|
|
end
|
||
|
|
|
||
|
|
subgraph Execution Layer
|
||
|
|
CommandAgent[Command Agent]
|
||
|
|
ConvAgent -- dispatches to --> CommandAgent
|
||
|
|
|
||
|
|
CommandAgent -- orchestrates --> Skills[Skills]
|
||
|
|
end
|
||
|
|
|
||
|
|
subgraph External Services
|
||
|
|
ClaudeAPI[Claude API]
|
||
|
|
ObsidianAPI[Obsidian Local REST API]
|
||
|
|
end
|
||
|
|
|
||
|
|
IntentUnderstanding -- HTTP --> ClaudeAPI
|
||
|
|
ResponseGenerator -- HTTP --> ClaudeAPI
|
||
|
|
Skills -- HTTP --> ObsidianAPI
|
||
|
|
```
|
||
|
|
|
||
|
|
## 安装与配置
|
||
|
|
|
||
|
|
安装和配置过程与 v1.0 相同。请参考 [README.md](README.md)。
|
||
|
|
|
||
|
|
## 使用方法
|
||
|
|
|
||
|
|
### 启动交互式对话
|
||
|
|
|
||
|
|
```bash
|
||
|
|
python -m journal_organizer.chat_main
|
||
|
|
```
|
||
|
|
|
||
|
|
启动后,您将进入一个交互式的命令行聊天界面:
|
||
|
|
|
||
|
|
```
|
||
|
|
============================================================
|
||
|
|
Obsidian 智能日记整理 Agent - 对话模式
|
||
|
|
============================================================
|
||
|
|
|
||
|
|
🤖 助手: 👋 欢迎使用 Obsidian 日记整理助手!我可以帮您整理日记、分析内容、导出总结等。请告诉我您想要做什么?
|
||
|
|
|
||
|
|
👤 您:
|
||
|
|
```
|
||
|
|
|
||
|
|
### 示例对话
|
||
|
|
|
||
|
|
```
|
||
|
|
👤 您: 帮我整理一下昨天的日记
|
||
|
|
|
||
|
|
⏳ 处理中...
|
||
|
|
|
||
|
|
🤖 助手: ✓ 已成功整理您昨天的日记。提取了 5 条经验、3 条待办事项和 2 个问题。
|
||
|
|
|
||
|
|
💡 您可以尝试:
|
||
|
|
1. 分析本周的主题
|
||
|
|
2. 导出月度总结
|
||
|
|
|
||
|
|
👤 您: 分析一下这周的主题
|
||
|
|
|
||
|
|
⏳ 处理中...
|
||
|
|
|
||
|
|
🤖 助手: ✓ 分析完成!本周的主题主要集中在项目管理和技术学习两个方面。
|
||
|
|
```
|
||
|
|
|
||
|
|
### 系统命令
|
||
|
|
|
||
|
|
在对话界面中,您可以使用以下系统命令:
|
||
|
|
|
||
|
|
- `help` / `帮助`:显示帮助信息
|
||
|
|
- `history` / `历史`:显示对话历史
|
||
|
|
- `status` / `状态`:显示当前状态
|
||
|
|
- `clear` / `清除`:清除对话历史
|
||
|
|
- `exit` / `quit` / `退出`:退出程序
|
||
|
|
|
||
|
|
### 处理单个查询
|
||
|
|
|
||
|
|
```bash
|
||
|
|
python -m journal_organizer.chat_main --query "整理今天的日记"
|
||
|
|
```
|
||
|
|
|
||
|
|
此命令将直接输出 JSON 格式的结果,方便脚本调用。
|
||
|
|
|
||
|
|
## 项目结构
|
||
|
|
|
||
|
|
```
|
||
|
|
journal_organizer/
|
||
|
|
├── conversation/ # 对话层模块
|
||
|
|
│ ├── __init__.py
|
||
|
|
│ ├── conversational_agent.py
|
||
|
|
│ ├── conversation_state.py
|
||
|
|
│ ├── intent_understanding.py
|
||
|
|
│ └── response_generator.py
|
||
|
|
├── commands/
|
||
|
|
├── skills/
|
||
|
|
├── agent_core.py
|
||
|
|
├── main.py
|
||
|
|
├── chat_main.py # 对话式 Agent 入口
|
||
|
|
├── ... (其他文件)
|
||
|
|
```
|
||
|
|
|
||
|
|
## 开发者指南
|
||
|
|
|
||
|
|
### 扩展对话能力
|
||
|
|
|
||
|
|
1. **添加新的意图**:在 `intent_understanding.py` 的 `command_keywords` 中添加新的命令和关键词。
|
||
|
|
2. **添加新的参数提取**:在 `parameter_patterns` 中添加新的正则表达式。
|
||
|
|
3. **自定义响应**:修改 `response_generator.py` 中的提示来改变响应风格。
|
||
|
|
|
||
|
|
### 集成到 Obsidian 插件
|
||
|
|
|
||
|
|
您可以使用 Obsidian 插件的 `Modal` 来创建一个对话窗口,并通过 `child_process` 调用 `chat_main.py` 来与 Agent 交互。
|
||
|
|
|
||
|
|
```typescript
|
||
|
|
// Obsidian 插件示例
|
||
|
|
import { App, Modal, Plugin } from 'obsidian';
|
||
|
|
import { spawn } from 'child_process';
|
||
|
|
|
||
|
|
class ChatModal extends Modal {
|
||
|
|
constructor(app: App) {
|
||
|
|
super(app);
|
||
|
|
}
|
||
|
|
|
||
|
|
onOpen() {
|
||
|
|
// 创建对话界面
|
||
|
|
// ...
|
||
|
|
}
|
||
|
|
|
||
|
|
async sendMessage(message: string) {
|
||
|
|
const agentProcess = spawn('python', ['-m', 'journal_organizer.chat_main', '--query', message]);
|
||
|
|
|
||
|
|
agentProcess.stdout.on('data', (data) => {
|
||
|
|
const response = JSON.parse(data.toString());
|
||
|
|
// 显示响应
|
||
|
|
});
|
||
|
|
|
||
|
|
agentProcess.stderr.on('data', (data) => {
|
||
|
|
// 处理错误
|
||
|
|
});
|
||
|
|
}
|
||
|
|
}
|
||
|
|
```
|
||
|
|
|
||
|
|
## 许可证
|
||
|
|
|
||
|
|
本项目采用 MIT 许可证。
|