Files
writing-agent/tools/st-request-diff/inspect-prompt-order.mjs
T

23 lines
1.3 KiB
JavaScript

// 打印预设 prompt_order 里每条的关键字段,便于解释抓包差异。
// 用法: node inspect-prompt-order.mjs "C:/Users/zed/Downloads/linux_1.3.json"
import { readFileSync } from "node:fs";
const file = process.argv[2];
const raw = JSON.parse(readFileSync(file, "utf8"));
const prompts = raw.prompts || [];
const blocks = raw.prompt_order || [];
const block = blocks.find((b) => b.character_id === 100001) || blocks[0] || { order: [] };
const byId = new Map();
prompts.forEach((p, i) => byId.set(p.identifier || String(i), p));
console.log("prompt_order 套数: " + blocks.length + ", 选用 character_id=" + block.character_id);
console.log("idx | enabled | identifier | role | marker | system_prompt | forbid_overrides | inj(pos/depth/order) | 字数 | name");
(block.order || []).forEach((item, i) => {
const p = byId.get(item.identifier) || {};
const inj = [p.injection_position, p.injection_depth, p.injection_order].join("/");
console.log([i, item.enabled, item.identifier, p.role, p.marker, p.system_prompt, p.forbid_overrides, inj, (p.content || "").length, p.name].join(" | "));
});
const inOrder = new Set((block.order || []).map((x) => x.identifier));
const orphans = prompts.filter((p) => !inOrder.has(p.identifier));
if (orphans.length) console.log("不在 order 里的: " + orphans.map((p) => p.identifier).join(", "));