feat(minecraft): reasoning hack

This commit is contained in:
Rin
2026-02-18 11:14:08 +08:00
committed by Neko Ayaka
parent f59a11a5d6
commit 62f16570ca
@@ -85,6 +85,7 @@ export class Brain {
private isProcessing = false
private currentCancellationToken: CancellationToken | undefined
private lastContextView: string | undefined
private lastReasoning: string | undefined // HACK: Store previous reasoning token for continuity
constructor(private readonly deps: BrainDeps) {
this.debugService = DebugService.getInstance()
@@ -198,6 +199,7 @@ export class Brain {
// 3. Call Neuri (Stateful) with retry logic
const maxAttempts = 3
let result: string | null = null
let capturedReasoning: string | undefined // HACK: Capture reasoning but don't save until success
for (let attempt = 1; attempt <= maxAttempts; attempt++) {
try {
@@ -228,6 +230,9 @@ export class Brain {
const content = message?.content
const reasoning = message?.reasoning_content || message?.reasoning
// HACK: Capture reasoning but don't save yet (wait for successful parsing)
capturedReasoning = reasoning
if (!content) throw new Error('No content from LLM')
this.debugService.traceLLM({
@@ -272,6 +277,11 @@ export class Brain {
const parsed = this.parseResponse(result)
const action = parsed.action
// HACK: Only store reasoning after successful LLM call and valid JSON parsing
if (capturedReasoning) {
this.lastReasoning = capturedReasoning
}
if (action.tool === 'skip') {
this.deps.logger.log('INFO', 'Brain: Skipping turn (observing)')
return
@@ -315,6 +325,11 @@ export class Brain {
private buildUserMessage(event: BotEvent, contextView: string): string {
const parts: string[] = []
// HACK: Inject previous reasoning token into user message for continuity
if (this.lastReasoning) {
parts.push(`[PREVIOUS REASONING] ${this.lastReasoning}`)
}
// 1. Event Content
if (event.type === 'perception') {
const signal = event.payload as PerceptionSignal