Kaynağa Gözat

fix:修正代码风格问题

Jerry Liang 1 ay önce
ebeveyn
işleme
98e329aacd
1 değiştirilmiş dosya ile 6 ekleme ve 2 silme
  1. 6 2
      src/layout/header/Actions/AiChat/useAiChat.ts

+ 6 - 2
src/layout/header/Actions/AiChat/useAiChat.ts

@@ -25,6 +25,10 @@ export interface SessionLoadDoneInfo {
 // 文件下载标记:$$FILE_DOWNLOAD:{...}$$(模块作用域,避免每次调用重新编译)
 const FILE_MARKER_RE = /\$\$FILE_DOWNLOAD:([\s\S]*?)\$\$/g
 
+// 用户消息中的上下文前缀:[context] userId=xxx, sessionId=xxx\n\n(模块作用域,避免每次调用重新编译)
+// 用 [^\n]* 精确限定 userId/sessionId 值(不含换行),避免贪婪 .* 越过分隔的 \n\n。
+const CONTEXT_PREFIX_RE = /^\[context\] userId=[^\n]*, sessionId=[^\n]*\n\n/
+
 // 全局消息提示(模块作用域,避免每次调用重建 discrete api 实例)
 const { message } = useDiscreteApi()
 
@@ -781,7 +785,7 @@ export function useAiChat() {
   function stripContextPrefix(content: string, role: string): string {
     if (role !== 'user') return content
     // 匹配 "[context] userId=xxx, sessionId=xxx\n\n" 前缀
-    return content.replace(/^\[context\] userId=.*?, sessionId=.*?\n\n/, '')
+    return content.replace(CONTEXT_PREFIX_RE, '')
   }
 
   // 最终扫描:处理跨 chunk 拆分导致实时匹配遗漏的标记。
@@ -847,7 +851,7 @@ export function useAiChat() {
   async function resolvePermission(optionId: string) {
     try {
       // 记住当前要 resolve 的 requestId,防止 await 期间被新 permission 覆盖后误标记
-      const lastMsg = messages.value[messages.value.length - 1]
+      const lastMsg = messages.value.at(-1)
       const targetRequestId = lastMsg?.permission?.requestId
       await resolveAiPermission(optionId)
       // await 回来后检查 permission 是否仍是同一个(未被新事件覆盖)