chore: establish YCode replication baseline and TODO

This commit is contained in:
xiaohan.yuan committed 2026-10-17 02:43:49 +08:00
commit 6dc59f89ba
1118 files changed
+196002

No files matched your search

+51
View File
@@ -0,0 +1,51 @@
/** 读取当前会话消息的真实状态。用法:node scripts/probe-messages.mjs <port> */
const port = Number(process.argv[2] ?? 9335)
async function main() {
const list = await (await fetch(`http://127.0.0.1:${port}/json/list`)).json()
const page = list.filter((t) => t.type === 'page')[0]
const ws = new WebSocket(page.webSocketDebuggerUrl)
await new Promise((r) => ws.addEventListener('open', r))
const send = (method, params = {}) =>
new Promise((res) => {
const id = 1
const h = (e) => {
const d = JSON.parse(e.data)
if (d.id === id) {
ws.removeEventListener('message', h)
res(d.result)
}
}
ws.addEventListener('message', h)
ws.send(JSON.stringify({ id, method, params }))
})
const r = await send('Runtime.evaluate', {
expression: `(async () => {
const sessions = await window.ycode.session.list();
const current = sessions[0];
if (!current) return JSON.stringify({ err: 'no session' });
const msgs = await window.ycode.session.messages(current.id);
return JSON.stringify({
sessionId: current.id,
messages: msgs.slice(-3).map((m) => ({
role: m.role,
status: m.status ?? null,
error: m.error ?? null,
len: (m.content || '').length,
tools: (m.tools || []).length
}))
});
})()`,
returnByValue: true,
awaitPromise: true
})
console.log(JSON.parse(r.result.value))
ws.close()
}
main().catch((e) => {
console.error('失败:', e.message)
process.exit(1)
})