51 lines
2.2 KiB
JavaScript
51 lines
2.2 KiB
JavaScript
// 连到已开着的酒馆页面:清空当前角色的历史,并打印当前生效的预设/连接状态。
|
|
// 用法: node attach-clear.mjs [--browser-port 8223] [--st-url 127.0.0.1:8123] [--preset 名字]
|
|
import { CdpSession, evaluate } from "./cdp.mjs";
|
|
|
|
const argv = process.argv.slice(2);
|
|
const arg = (name, dflt) => {
|
|
const i = argv.indexOf("--" + name);
|
|
return i >= 0 ? String(argv[i + 1]) : dflt;
|
|
};
|
|
const browserPort = Number(arg("browser-port", "8223"));
|
|
const stHint = arg("st-url", "127.0.0.1:8123");
|
|
const presetName = arg("preset", "");
|
|
|
|
const version = await (await fetch("http://127.0.0.1:" + browserPort + "/json/version")).json();
|
|
const cdp = await CdpSession.connect(version.webSocketDebuggerUrl, "browser");
|
|
const { targetInfos } = await cdp.send("Target.getTargets");
|
|
const target = targetInfos.find((t) => t.type === "page" && String(t.url).includes(stHint));
|
|
if (!target) throw new Error("没找到酒馆页面");
|
|
const { sessionId } = await cdp.send("Target.attachToTarget", { targetId: target.targetId, flatten: true });
|
|
await cdp.send("Runtime.enable", {}, sessionId);
|
|
const page = { cdp, sessionId };
|
|
|
|
const out = await evaluate(page, `(async () => {
|
|
const ctx = window.SillyTavern.getContext();
|
|
const jq = window.jQuery;
|
|
const names = ctx.getPresetManager("openai").getPresetList().preset_names || {};
|
|
const want = ${JSON.stringify(presetName)};
|
|
if (want && names[want] !== undefined) {
|
|
ctx.chatCompletionSettings.bind_preset_to_connection = false;
|
|
jq("#settings_preset_openai").val(String(names[want])).trigger("change");
|
|
await new Promise((r) => setTimeout(r, 800));
|
|
}
|
|
await window.SillyTavern.getContext().clearChat({ clearData: true });
|
|
const f = window.SillyTavern.getContext();
|
|
const s = f.chatCompletionSettings;
|
|
return {
|
|
availablePresets: Object.keys(names),
|
|
preset: s.preset_settings_openai,
|
|
temp: s.temp_openai,
|
|
maxTokens: s.openai_max_tokens,
|
|
functionCalling: s.function_calling,
|
|
squash: s.squash_system_messages,
|
|
stream: s.stream_openai,
|
|
customUrl: s.custom_url,
|
|
charName: f.name2,
|
|
chatLen: f.chat.length,
|
|
};
|
|
})()`);
|
|
console.log("[attach] " + JSON.stringify(out, null, 1));
|
|
cdp.close();
|