feat:搭建本地存储会话历史的框架
- 将会话历史存储在C:\Users\admin\.iccoder文件下 - 在里面又会创建多个文件夹进行存储
This commit is contained in:
115
src/types/chatHistory.ts
Normal file
115
src/types/chatHistory.ts
Normal 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的内容
|
||||
}
|
||||
Reference in New Issue
Block a user