first commit
This commit is contained in:
28
async-agent-lab/live/scenarios/blocking.ts
Normal file
28
async-agent-lab/live/scenarios/blocking.ts
Normal file
@@ -0,0 +1,28 @@
|
||||
import type { Runtime } from '../runtime.ts';
|
||||
import { baseTools } from '../tools.ts';
|
||||
import type { ScenarioInfo } from '../types.ts';
|
||||
import { collect, evidenceRules, invoke, questionSpec, summarize } from './shared.ts';
|
||||
|
||||
export const blocking: ScenarioInfo = {
|
||||
id: 'blocking',
|
||||
task: '整理本周研发周报。先问我下周优先推进什么,再开始查本周工作。',
|
||||
system: `${evidenceRules}
|
||||
先调用 question 询问下周优先推进什么。原工具返回用户的答复后,再收集证据并给出两段简短摘要。`,
|
||||
tools: [...baseTools(), questionSpec(false)],
|
||||
};
|
||||
|
||||
// stage:start
|
||||
export async function runBlocking(loop: Runtime) {
|
||||
await invoke(loop, 'question', '现在询问下周优先推进什么。',
|
||||
(call) => loop.runTool(call, async (args) => {
|
||||
const { question, answer } = loop.openQuestion(
|
||||
call.id, 'blocking', 'priority', args);
|
||||
// 工具在这里等浏览器答复。
|
||||
const value = await answer;
|
||||
return { ref: question.id, result: JSON.stringify(value) };
|
||||
}));
|
||||
|
||||
await collect(loop);
|
||||
return summarize(loop, '给出本周工作摘要,按原 question 的答复写下周计划。');
|
||||
}
|
||||
// stage:end
|
||||
Reference in New Issue
Block a user