当队列为空时,需要检查state.tasks中的任务是否都已完成

This commit is contained in:
zbc 2026-05-28 20:43:39 +08:00
parent ae22ffd36e
commit a96006ae15
4 changed files with 15 additions and 19 deletions

View File

@ -119,7 +119,7 @@ reportTurn(sessionId, assistantMessage.uuid, cwd)
| 字段 | 来源 | 说明 | | 字段 | 来源 | 说明 |
|-----|------|------| |-----|------|------|
| `task_id` | `sessionID` | 会话唯一标识 | | `task_id` | `sessionID` | 会话唯一标识 |
| `request_id` | `message.id` 或 `message.uuid` | assistant message ID | | `request_id` | `message.uuid` | assistant message ID |
| `prompt_mode` | `user.variant` | 用户消息变体(如 `normal` / `plan` | | `prompt_mode` | `user.variant` | 用户消息变体(如 `normal` / `plan` |
| `mode` | `assistant.mode` / `assistant.agent` | 默认 `"code"` | | `mode` | `assistant.mode` / `assistant.agent` | 默认 `"code"` |
| `model` | `assistant.message.model` | 使用的模型 | | `model` | `assistant.message.model` | 使用的模型 |

View File

@ -63,8 +63,15 @@ async function runBatch() {
const newTasks = getQueue() const newTasks = getQueue()
if (newTasks.length === 0) { if (newTasks.length === 0) {
log.debug('queue empty') // 队列为空时,检查 state.tasks 是否有未完成的任务
return const hasIncomplete = Object.values(state.tasks).some(
r => !r.lastUploadAt,
)
if (!hasIncomplete) {
log.debug('queue empty, no incomplete tasks')
return
}
log.debug('queue empty, but has incomplete tasks in state')
} }
log.info(`processing ${newTasks.length} new tasks`) log.info(`processing ${newTasks.length} new tasks`)

View File

@ -107,14 +107,12 @@ export async function loadSessionMessages(
const hasSession = lines.some( const hasSession = lines.some(
m => m =>
m.sessionId === sessionId || m.sessionId === sessionId ||
m.session_id === sessionId || m.session_id === sessionId
m.uuid === sessionId,
) )
const hasMessage = messageId const hasMessage = messageId
? lines.some( ? lines.some(
m => m =>
m.uuid === messageId || m.uuid === messageId,
(m.message as Record<string, unknown>)?.id === messageId,
) )
: false : false
if (hasSession || hasMessage) { if (hasSession || hasMessage) {

View File

@ -689,13 +689,10 @@ export async function uploadConversation(
return true return true
} }
const SUMMARY_DEDUP_WINDOW_MS = 5 * 60 * 1000 // 同一 session 5 分钟内 summary 只上报一次
/** /**
* session /raw-store/task-summary * session /raw-store/task-summary
* session 5 session state.summary * SummaryPayload session state.summary
* session
* 使 conversation summary
*/ */
export async function uploadSummary( export async function uploadSummary(
payload: { payload: {
@ -711,15 +708,9 @@ export async function uploadSummary(
messageCount: payload.messages.length, messageCount: payload.messages.length,
}) })
const lastReported = state.summary[payload.sessionID] if (state.summary[payload.sessionID]) {
if ( log.info('summary skipped: already uploaded', {
lastReported &&
Date.now() - new Date(lastReported).getTime() < SUMMARY_DEDUP_WINDOW_MS
) {
log.info('summary skipped: reported recently', {
task_id: payload.sessionID, task_id: payload.sessionID,
lastReported,
windowMs: SUMMARY_DEDUP_WINDOW_MS,
}) })
return return
} }