{{demo.error}}
} @for(track of demo.media; track $index){@for(segment of track.segments; track segment.file){
progress_activity
正在加载执行历史…
}
@if (!agentService.isSessionContentLoading() && phases().length === 0 && !showPlanningLoader() && !hasModelRequest() && startupWorkItems().length === 0 && awaitingGuidance().length === 0) {
{{ agentService.currentSessionId() ? '暂无步骤记录' : '尚未选择执行记录' }}
{{ agentService.currentSessionId() ? '此任务尚未留下执行步骤。' : '请从右侧任务列表选择会话,查看实时执行记录。' }}
@if (startupWorkItems().length > 0) {
}
@for (phase of phases(); track trackPhase($index, phase); let first = $first) {
@if(phase.demonstration; as demo) {
} @else if(phase.conversation; as message) {
} @else {
}
@if (showPlanningLoader() && (startupWorkItems().length === 0 || startupPreparationIsComplete() || consolidatedBlocks().length > 0)) {
}
}
准备耗时 {{ startupPreparationDuration() }} 秒
@for (item of startupWorkItems(); track item) {
}
{{ item.message }} · {{ item.isActive ? 'Waiting ' : 'Waited ' }}{{ item.elapsed }}
@if (hasVisibleBlocks(phase) && phase.blocks[0]?.data?.phase !== 'outcome') {
}
}
@if (!conversationMessages().length && awaitingGuidance().length) {
{{ isCheckerPhase(phase) ? 'Checked' : 'Worked' }} for {{ phase.durationSeconds }}s
@if (phase.tokens) {
·
{{ formatTokenCount(phase.tokens) }}
}
}
@if (hasVisibleBlocks(phase)) {
@for (block of phase.blocks; track trackBlock($index, block)) {
@if (hasVisibleContent(block)) {
}
}
}
@if (block.data?.extra_metadata?.injected_instruction; as guidance) {
}
@if (isCheckerBlock(block)) {
@if (block.data.phase === 'outcome' && block.data.test_result) {
} @else {
}
}
@if (getSortedStepEvents(block.data).length > 0) {
forum用户指导 · 已进入第 {{block.data.step_number}} 步
{{ guidance }}
{{ hasRecordedDeviceAction(block.data.action_taken) ? '本步设备动作见下方;是否完成目标需以实际屏幕为准。' : '本步没有记录设备动作。' }}
{{ getCheckerPhaseLabel(block) }}
@if (block.data.phase !== 'outcome' && block.data.subgoal_text) {
{{ block.data.subgoal_text }}
}
{{ getCheckerStatusLabel(block) }}
@if (!isCheckerMuted(block) && getCheckerItems(block).length > 0) {
-
@for (item of getCheckerItems(block); track $index) {
- {{ $index + 1 }} {{ item.text }} {{ getCheckMethodLabel(item, block) }} }
@for (item of getSortedStepEvents(block.data); track trackStepEvent(itemIdx, item); let itemIdx = $index) {
@if (isCheckerBlock(block) && item.type === 'thinking') {
}
}
@if (isCheckerBlock(block) && item.type === 'text' && isCheckerTextVisible(item)) {
@if (item.data.isReset) {
}
@if (item.data.text && item.data.text.trim()) {
}
}
@if (!isCheckerBlock(block) && item.type === 'thinking') {
@if (getBlockResets(block, true).length > 0) {
}
}
}
@if (!isCheckerBlock(block) && item.type === 'text') {
@if (getBlockResets(block, false).length > 0) {
}
@if (isActionExpanded('action-' + block.id + '-' + itemIdx)) {
}
}
@if (item.type === 'action' && !isReportStatusAction(item.data) && (isAndroidAction(item.data) || item.data?.type === 'action')) {
}
@if (item.type === 'tool') {
@if (isBackendSwitchNote(item.data)) {
}
@if (isLLMRetry(item.data)) {
}
@if (isTerminalLLMFailure(item.data)) {
}
@if (shouldShowTool(item.data, block.data) && !isEvidenceTool(item.data)) {
}
@if (shouldShowTool(item.data, block.data) && isEvidenceTool(item.data)) {
}
}
}
}
@if (hasCheckerResult(block) && !(block.data.phase === 'outcome' && block.data.test_result)) {
{{ isCheckerSegmentResetNotice(item) ? getCheckerSegmentResetMessage(item) : '思考过程' }}
@if (item.data.text && item.data.text.trim()) {
{{ formatResetMessage(getCheckerSegmentResetMessage(item), isCheckerSegmentRunning(block, itemIdx)) }}
@for (reset of getBlockResets(block, true); track reset.id || $index) {
}
}
@if (getStreamDisplayText(block.id + '-native', item.data.text) || (isBlockRunning(block) && !isStreamRewinding(block.id + '-native') && !hasWaitingReset(block, true))) {
{{ formatResetMessage(reset.message, reset.isWaiting) }}
思考过程
@if (getStreamDisplayText(block.id + '-native', item.data.text)) {
@for (reset of getBlockResets(block, false); track reset.id || $index) {
}
}
@if (getStreamDisplayText(block.id, item.data.text) || (isBlockRunning(block) && !isStreamRewinding(block.id) && !hasWaitingReset(block, false))) {
}
}
@if (isReportStatusAction(item.data)) {
{{ formatResetMessage(reset.message, reset.isWaiting) }}
{{ getReportStatusValue(item.data) === 'failed' ? '任务执行失败' : '任务已完成' }}
{{ getReportStatusValue(item.data) === 'failed' ? '失败' : '已完成' }}
@if (!isActionExpanded('action-' + block.id + '-' + itemIdx) && getReportStatusExplanation(item.data)) {
{{ getActionTitle(item.data) }}
@if (isActionFailed(item.data, block.data)) {
失败
}
@if (!isActionExpanded('action-' + block.id + '-' + itemIdx) && (getActionTargetText(item.data) || getActionInputText(item.data) || getActionCoords(item.data))) {
@if (getActionTargetText(item.data)) {
}
@if (isActionExpanded('action-' + block.id + '-' + itemIdx)) {
}
目标:
"{{ getActionTargetText(item.data) }}"
}
@if (getActionInputText(item.data)) {
{{ getActionInputLabel(item.data) }}:
"{{ getActionInputText(item.data) }}"
}
@if (getActionCoords(item.data)) {
坐标:
{{ getActionCoords(item.data) }}
}
{{ getBackendSwitchMessage(item.data) }}
@for (retry of getLLMRetryEntries(item.data); track retry; let retryIndex = $index) {
}
}
@if (isDisplayableLLMFailure(item.data)) {
@if (isLLMRetryEntryWaiting(retry)) {
模型暂时不可用
@if (getLLMRetryEntryDelay(retry); as retryDelay) {
· Retrying in {{ retryDelay }}…
}
频繁重试可能是接口限流导致,可提高调用额度或降低并发数。
}
@if (!isLLMRetryEntryWaiting(retry)) {
Retrying LLM request · Waited {{ getLLMRetryEntryWaited(retry) }}
}
模型请求失败
@if (isTerminalLLMFailure(item.data)) {
已暂停
} @else {
失败
}
@if (hasLLMFailureRetryEntries(item.data)) {
}
发生了什么:
自动重试后仍无法完成模型请求。
失败原因:
{{ getLLMErrorText(item.data) }}
@if (getLLMFailureWaited(item.data); as waited) {
已等待:
{{ waited }}
}
@if (isActionExpanded('llm-failure-' + block.id + '-' + itemIdx)) {
重试详情
@for (retry of getLLMFailureRetryEntries(item.data); track retry; let retryIndex = $index) {
Retry {{ retryIndex + 1 }}
Planned {{ getLLMRetryEntryDelay(retry) || '0s' }}
· Waited {{ getLLMRetryEntryWaited(retry) }}
}
任务已暂停 · 当前没有执行中的步骤
}
{{ isVideoTool(item.data) ? getVideoAnalysisLabel(item.data) : getToolDisplayLabel(item.data) }}{{ ((isNoteTool(item.data) && getToolKey(item.data)) || isVideoTool(item.data)) ? ':' : '' }}
@if (isNoteTool(item.data) && getToolKey(item.data); as key) {
{{ key }}
}
@if (isVideoTool(item.data)) {
{{ getVideoAnalysisRangeLabel(item.data) }}
@if (getVideoAnalysisDetail(item.data); as detail) {
· {{ detail }}
}
}
{{ getToolTitle(item.data) }}
@if (getPluginToolView(item.data); as plugin) {
{{ plugin.kind }} · {{ plugin.status }}
}
@if (isToolFailed(item.data)) {
失败
}
@if (!getPluginToolView(item.data) && !isActionExpanded('tool-' + block.id + '-' + itemIdx) && (isAdbCommandTool(item.data) ? getAdbCommandLine(item.data) : (getToolTargetText(item.data) || getToolInputText(item.data) || getToolCoords(item.data) || getToolAnalysisText(item.data) || getToolGenericDetails(item.data)))) {
@if (isAdbCommandTool(item.data)) {
@if (getAdbCommandLine(item.data)) {
}
@if (isActionExpanded('tool-' + block.id + '-' + itemIdx)) {
}
命令:
}
@if (getAdbCwd(item.data)) {
{{ getAdbCommandLine(item.data) }}
工作目录:
"{{ getAdbCwd(item.data) }}"
}
@if (getAdbTerminalId(item.data)) {
终端 ID:
"{{ getAdbTerminalId(item.data) }}"
}
}
@if (!isAdbCommandTool(item.data)) {
@if (getToolTargetText(item.data)) {
目标:
"{{ getToolTargetText(item.data) }}"
}
@if (getToolInputText(item.data)) {
{{ getToolInputLabel(item.data) }}:
"{{ getToolInputText(item.data) }}"
}
@if (getToolCoords(item.data)) {
坐标:
{{ getToolCoords(item.data) }}
}
@if (getToolAnalysisText(item.data)) {
分析:
"{{ getToolAnalysisText(item.data) }}"
}
@if (getToolGenericDetails(item.data)) {
详情:
"{{ getToolGenericDetails(item.data) }}"
}
}
@for (verdict of getCheckerVerdicts(block); track $index) {
}
{{ getVerdictItemNumber(block, verdict, $index) }}
{{ verdict.evidence || getVerdictStatusText(verdict.status) }}
@if (verdict.suggestion) {
{{ verdict.suggestion }}
}
}
@for (note of getCheckerNotes(block); track note) {
{{ note }}
}
@for (item of awaitingGuidance(); track item.id) {
}
@if (terminalFailureReason(); as reason) {
用户指导 · {{ guidanceStatusLabel(item) }}
接收 {{ (item.accepted_at || item.timestamp) * 1000 | date:'HH:mm:ss' }}@if (item.consumed_at) { · 执行器读取 {{ item.consumed_at * 1000 | date:'HH:mm:ss' }} }
}
{{ item.instruction }}
任务执行失败 · 原因
}
@if (outputterReport(); as outReport) {
{{ reason }}
assignment_turned_in
任务报告
progress_activity
{{ currentPlanningText() }}