icoder/index.ts
2026-04-30 17:19:36 +08:00

49 lines
1.4 KiB
TypeScript

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();