Browse Source

feat-chat-logger-telemetry-meta-line

master
Serge Shutov 2 weeks ago
parent
commit
e47ce85349
  1. 56
      injected/chat-logger.js
  2. 2
      memory/state.json

56
injected/chat-logger.js

@ -4,8 +4,10 @@ @@ -4,8 +4,10 @@
var ENABLED_KEY = 'dshmem-log-enabled'
var BASE = 'http' + ':' + '//' + '127.0.0.1' + ':' + '8766'
var CHUNK = 700
var K_RATIO = 2.5
var seen = Object.create(null)
var cfg = null
var lastAccum = null
var SEP = String.fromCharCode(10) + String.fromCharCode(10)
function hash(s) {
@ -123,6 +125,32 @@ @@ -123,6 +125,32 @@
return out.join('')
}
function extractAccum(sse) {
if (!sse) return null
var idx = sse.lastIndexOf('accumulated_token_usage')
if (idx === -1) return null
var tail = sse.slice(idx, idx + 80)
var start = -1
var i = 0
while (i < tail.length) {
var ch = tail.charCodeAt(i)
if (ch >= 48 && ch <= 57) {
start = i
break
}
i++
}
if (start === -1) return null
var end = start
while (end < tail.length) {
var cd = tail.charCodeAt(end)
if (cd < 48 || cd > 57) break
end++
}
if (end === start) return null
return parseInt(tail.slice(start, end), 10)
}
function process(entry) {
if (!entry || !entry.url) return
if (entry.url.indexOf('chat/completion') === -1) return
@ -134,7 +162,8 @@ @@ -134,7 +162,8 @@
var messages = []
try {
var req = JSON.parse(entry.body)
if (req && Array.isArray(req.messages)) messages = req.messages; else if (req && typeof req.prompt === 'string' && req.prompt) messages = [{ role: 'user', content: req.prompt }]
if (req && Array.isArray(req.messages)) messages = req.messages
else if (req && typeof req.prompt === 'string' && req.prompt) messages = [{ role: 'user', content: req.prompt }]
} catch (e) { return }
var assistant = ''
try { assistant = extractAssistant(entry.resp || '') } catch (e) { }
@ -154,6 +183,31 @@ @@ -154,6 +183,31 @@
var ls = linesFor(role + '-' + h, role, text, Date.now())
for (var j = 0; j !== ls.length; j++) lines.push(ls[j])
}
var accum = null
try { accum = extractAccum(entry.resp || '') } catch (e) { accum = null }
if (accum !== null) {
var delta = 0
if (lastAccum !== null && accum > lastAccum) delta = accum - lastAccum
lastAccum = accum
var ctxChars = 0
for (var m = 0; m !== all.length; m++) {
if (all[m] && typeof all[m].content === 'string') ctxChars += all[m].content.length
}
var meta = {
mid: 'meta-' + Date.now(),
part: 0,
total: 1,
role: 'meta',
ts: Date.now(),
inj: false,
text: 'metrics',
accum: accum,
delta: delta,
chars: ctxChars,
est_tok: Math.round(ctxChars / K_RATIO)
}
lines.push(JSON.stringify(meta))
}
if (!lines.length) return
sendLines(file, lines).then(function (ok) {
if (ok) console.log('[chat-log] saved', lines.length)

2
memory/state.json

@ -1,6 +1,6 @@ @@ -1,6 +1,6 @@
{
"version": 1,
"updatedAt": "2026-10-31T23:15:31.405Z",
"updatedAt": "2026-10-31T23:47:26.897Z",
"memories": {},
"skills": []
}
Loading…
Cancel
Save