feat:搭建本地存储会话历史的框架

- 将会话历史存储在C:\Users\admin\.iccoder文件下
- 在里面又会创建多个文件夹进行存储
This commit is contained in:
Roe-xin
2025-12-15 15:19:36 +08:00
parent ab6d257df2
commit a1a526bb98
6 changed files with 1004 additions and 4 deletions

115
src/types/chatHistory.ts Normal file
View File

@ -0,0 +1,115 @@
/**
* 消息类型枚举(对应 LangChain4j 格式)
*/
export enum MessageType {
SYSTEM = "SYSTEM",
USER = "USER",
AI = "AI",
TOOL_EXECUTION_RESULT = "TOOL_EXECUTION_RESULT"
}
/**
* 工具执行请求
*/
export interface ToolExecutionRequest {
id: string;
name: string;
arguments: string; // JSON字符串
}
/**
* 消息内容用于USER消息
*/
export interface MessageContent {
type: "TEXT";
text: string;
}
/**
* 基础消息接口
*/
export interface BaseMessage {
type: MessageType;
}
/**
* 系统消息
*/
export interface SystemMessage extends BaseMessage {
type: MessageType.SYSTEM;
text: string;
}
/**
* 用户消息
*/
export interface UserMessage extends BaseMessage {
type: MessageType.USER;
contents: MessageContent[];
}
/**
* AI消息
*/
export interface AiMessage extends BaseMessage {
type: MessageType.AI;
text?: string;
toolExecutionRequests?: ToolExecutionRequest[];
thinking?: string;
}
/**
* 工具执行结果消息
*/
export interface ToolExecutionResultMessage extends BaseMessage {
type: MessageType.TOOL_EXECUTION_RESULT;
id: string;
toolName: string;
text: string; // JSON字符串
}
/**
* 联合消息类型
*/
export type ChatMessage = SystemMessage | UserMessage | AiMessage | ToolExecutionResultMessage;
/**
* 对话轮次元数据
*/
export interface ConversationMeta {
turnId: number;
timestamp: string; // ISO 8601格式
usage?: {
inputTokens?: number;
outputTokens?: number;
totalTokens?: number;
};
model?: string;
duration?: number; // 响应耗时(秒)
}
/**
* 任务元数据meta.json
*/
export interface TaskMeta {
taskId: string;
taskName: string;
projectPath: string;
createdAt: string; // ISO 8601格式
updatedAt: string; // ISO 8601格式
stats: {
credits: number;
totalTokens: number;
inputTokens: number;
outputTokens: number;
};
}
/**
* 任务会话(包含所有相关数据)
*/
export interface TaskSession {
meta: TaskMeta;
messages: ChatMessage[]; // conversation.json的内容
conversationMeta: ConversationMeta[]; // conversation_meta.jsonl的内容
}