const API_BASE = "/api/cloud"; const STARTERS = [ "今晚沿岸有雾,怎么判断能不能开航?", "用一段话解释什么是上下文窗口。", "帮我把这段需求收成三条验收标准:做一个能记住对话的助手。" ]; const thread = document.getElementById("thread"); const form = document.getElementById("composer"); const prompt = document.getElementById("prompt"); const send = document.getElementById("send"); const linkStatus = document.getElementById("link-status"); const starters = document.getElementById("starters"); const KEY = "beacon-watch.thread"; function esc(value) { return String(value ?? "") .replaceAll("&", "&") .replaceAll("<", "<") .replaceAll(">", ">") .replaceAll('"', """); } function loadHistory() { try { const raw = localStorage.getItem(KEY); const parsed = raw ? JSON.parse(raw) : []; return Array.isArray(parsed) ? parsed : []; } catch { return []; } } function saveHistory(items) { localStorage.setItem(KEY, JSON.stringify(items.slice(-24))); } function render(items) { if (!items.length) { thread.innerHTML = '
本班还是空白。从左侧笔记开始,或直接在下面写下第一句。
' + esc(item.content) + "