import * as p from '@clack/prompts'; import {sendMessage} from "./src/llm.ts"; import color from 'picocolors'; async function chat() { console.clear(); p.intro(color.bgCyan(color.black(' AI 助手已就绪 '))); while (true) { // 1. 获取输入 const prompt = await p.text({ message: '你:', placeholder: '说点什么... (输入 exit 退出)', validate: (value) => value ? undefined : '请输入内容' }); // 2. 退出判定 if (p.isCancel(prompt) || prompt.toLowerCase() === 'exit') { p.outro(color.dim('对话结束')); break; } // 3. 模拟回复逻辑 const s = p.spinner(); s.start('助手正在思考...'); // 这里替换成你真实的 AI 请求 const response = await sendMessage(prompt); s.stop('助手回复:'); // 4. 使用 p.note 来承载回复内容,它会自动处理边框和宽度 // p.note( // response.choices[0].message.reasoning_content, // '✨ ' // ); p.log.message(color.white( response.choices[0].message.reasoning_content )) p.log.success(color.white( response.choices[0].message.content )); // 5. 打印一个空行,防止下一轮对话的 "你:" 贴得太近 console.log(''); } } chat();