fix(consult): 每一轮回答前都必须调用排盘工具
Independent Staging Quality Gate / validate (push) Successful in 9m22s
Independent Staging Quality Gate / publish (push) Successful in 13m39s

This commit is contained in:
jesse-ux
2026-09-17 14:21:33 +08:00
parent 6d097de95b
commit dc2f2a16bb
10 changed files with 155 additions and 12 deletions
+9 -4
View File
@@ -48,6 +48,7 @@ import {
consultationContinueGenerationSettings,
consultationGenerationSettings,
consultationNatalPrepareStep,
consultationWindowPrepareStep,
consultationSliceGenerationSettings,
createConsultationAgentContext,
createWindowConsultationAgentContext,
@@ -896,14 +897,18 @@ export async function POST(request: Request) {
...streamOptions,
prepareStep: consultationNatalPrepareStep,
};
const windowStreamOptions = {
...streamOptions,
prepareStep: consultationWindowPrepareStep,
};
async function streamWithOverflowRetry(
agent: {
stream: (
messages: typeof baseMessages,
options: typeof streamOptions | typeof natalStreamOptions,
options: typeof streamOptions | typeof natalStreamOptions | typeof windowStreamOptions,
) => Promise<{ fullStream: AsyncIterable<unknown> | ReadableStream<unknown>; totalUsage: Promise<Usage> }>;
},
options: typeof streamOptions | typeof natalStreamOptions = streamOptions,
options: typeof streamOptions | typeof natalStreamOptions | typeof windowStreamOptions = streamOptions,
) {
try {
const result = await agent.stream(baseMessages, options);
@@ -1029,7 +1034,7 @@ export async function POST(request: Request) {
state,
});
const agent = getWindowJyotishAgent(selectedModel, agentContext);
const result = await streamWithOverflowRetry(agent);
const result = await streamWithOverflowRetry(agent, windowStreamOptions);
const retry = async () => {
const retried = await agent.stream([
...baseMessages,
@@ -1037,7 +1042,7 @@ export async function POST(request: Request) {
role: "user" as const,
content: "运行合同不完整:本次尚未取得声明窗口计算结果。请调用 run-jyotish-window-consultation 完成计算,再据此回答;不要在工具参数中添加出生分钟。",
},
], streamOptions);
], windowStreamOptions);
usages.push(retried.totalUsage);
return retried.fullStream;
};