Skip to content

v1.3.0

Choose a tag to compare

@github-actions github-actions released this 12 Nov 12:09
· 12 commits to main since this release
v1.3.0
cd7d9d3

Per-prompt recall that says what it leaves out, and a Projects page with every project. Linux amd64 is tested; Windows amd64 is tested in CI. The Linux arm64 and macOS binaries are built but not tested.

Update from v1.2.0 or any earlier release with backsight update apply: it takes a verified backup first and rolls back if a step fails. Then restart Claude Code (and Codex), so they read the new recall header, and a running dashboard (Ctrl+C, then backsight dashboard). New install: see below.

  • The server is unchanged (Hindsight 1.2.0): no server upgrade. The memory bank's template is unchanged.
  • The instruction set is v20 (v19 before): the recall header says a line ending in … is shortened and memory_read has the rest.
  • The plugins and the metrics index are unchanged.
  • Before installing an older backsight by hand: an older version refuses a config.toml with a key it does not know. Remove recall.prompt_hits_max and recall.prompt_confident_score if you set them. A failed update apply puts back your config.toml itself.

What changed

  • More memory on a prompt when it is clearly relevant. A prompt still gets up to 3 memories (recall.prompt_hits), and now up to 5 (recall.prompt_hits_max) when each one past the third scores at least 0.8 (recall.prompt_confident_score). The room for them goes from 800 to 1,500 characters (recall.prompt_chars). A value you set in config.toml is kept. The memories shown after a failed tool call keep their own limits, 2 memories and 800 characters. A prompt's memories stay within what the session's budget has left (#328, #330).
  • Shortened, not clipped. A memory that does not fit whole is shown as a headline of up to 160 characters ending with …, and the recall header tells Claude that memory_read has the rest. When not even the headline fits, the next memory is tried instead of stopping there.
  • What the limits left out, counted. Each prompt records how many memories above the floor were left out by the count, how many by the size, and how many were shortened. backsight stats prints them on a new Per recall line, with the recalls by number of memories added. feedback replay compares every memory a prompt may now add, not only the first 3.
  • The Projects page lists every project holding memories. The dashboard's Projects page and backsight stats projects listed only the projects with a session on this PC in the window. A project you worked on from another folder (its memories came from subagent reports or notes stored for it), or one quiet lately, had no row: on one install, 4 rows against the 12 projects the Bank page counts. The rows are now every project the server holds memories for, plus any project active in the window that holds none yet. A quiet project shows no activity. A new Last memory column (last_memory in --json) says when each project's latest memory happened, read from the server. The pooled row's lowest and highest values count the active projects only. In stats projects, a date not known reads — rather than never (#326, #329).
  • New settings, recall.prompt_hits_max = 5 and recall.prompt_confident_score = 0.8, and a new default, recall.prompt_chars = 1500. backsight writes none of them in config.toml (configuration).

Install

On Linux:

curl -fsSL https://raw.githubusercontent.com/Barben360/backsight/main/scripts/install.sh | sh
backsight setup

On Windows x86_64, in PowerShell:

powershell -ExecutionPolicy ByPass -c "irm https://raw.githubusercontent.com/Barben360/backsight/main/scripts/install.ps1 | iex"
backsight setup

Requirements as for v0.1.22-m7. On Windows, Claude Code must find Git Bash: if Git for Windows is portable or installed in a place of your own, set CLAUDE_CODE_GIT_BASH_PATH to its bin\bash.exe (doctor's git-bash check gives the command).

For Codex, install Codex 0.167.0 or newer first (npm install -g @openai/codex@latest): setup then asks which tools to wire. Claude Code is not needed for Codex alone (Codex).

Known limits

  • Codex:
    • No test with a real model yet: the automated checks run a real Codex 0.167.0 against a fake model. How a real model follows the guide with Codex's tool names (when it searches and credits), the skills' texts and the sandbox line, and its tokens per session are not measured yet.
    • On Windows, the hooks' cmd /C form (paths with spaces in particular) and the skills' backsight commands in PowerShell, Codex's shell there, have not been run on a real PC. Check that backsight's first line appears at your first prompt once you trust the hooks.
    • The memory tools' new declarations are served to Claude Code too; that they change nothing in its permission prompts is not checked with a real session yet.
    • A coding-tool filter (--client, the dashboard's Coding tool) counts this PC's data only: the other PCs send no tool, the PC switch is not offered under it, and the server's figures stay whole (not_filtered).
    • A setup rerun that picks only codex, on a PC where Claude Code is wired, does not offer Claude Code's past sessions: its backfill covers the tools picked (backsight retain backfill --tools claude-code sends them).
    • A headless Codex session is queued only for the facts stored explicitly in it (memory_store), as a Claude Code Agent SDK session is.
    • A Codex with no record of the Claude Code shell it was started from (its hooks not trusted yet, or started before this update): pause, store, why and feedback log inside it fall back to that Claude Code session. Pause by id there: backsight pause --session <id>, with the value of $CODEX_SESSION_ID.
    • Codex reports no failed tool call to its hooks, so recall.failure_pitfalls does nothing there. backsight does not manage how long Codex keeps its history. After /clear, Codex sends no end: the old session is sent by the background job, 30 minutes after its last turn.
    • A forked Codex session may be sent with some turns twice, never fewer (not checked yet). A turn that works in several folders is filed under the project of the first one, sorted.
    • Codex runs each hook through your login shell ($SHELL -lc): a slow profile slows every prompt.
  • The new extraction rules apply to what is extracted from now on: a memory already wrong stays until Claude reports it or you retire it (backsight memory stale, backsight forget <id>). Whether the server's model follows them is checked on live extractions, not in tests.
  • Whether 5 memories and 1,500 characters on a prompt help more than they cost in context is measured on live use (the Per recall line), not in tests.
  • A fact Claude stores as a correction, then reports outdated with memory_credit, is stored as two correction notes.
  • Dashboard:
    • Version switches and settings changes are marked on a day's page and on Releases only, not on every chart.
    • The custom window goes back 13 months, as far as this PC keeps its history.
    • Time to recall needs a few days of history, and 20 sessions before it shows times; it is judged (ok or watch) only from 100 sessions, and reads "too few" until then.
    • A window, custom or typed in a URL, can span at most 400 days, between 2000 and 2099.
    • Bank growth still counts a UTC day that straddles the window's start as a whole day.
    • Memory yield needs four weeks: a week counts 28 days after it ends.
    • On a window over 200 days, charts show no per-day values on hover, and "Show as a table" lists the latest 120 days.
    • A week that is not complete shows no count of new memories.
    • The project filter takes a typed name, not a pick from a list (the Projects page lists the names). The Projects list cannot be sorted. The context card names the session budget rather than showing its value.
    • The Projects page reads the date of each project's latest memory from the server, one small read per project, four at a time (cached by the dashboard): with many projects, the page's first load takes longer.
  • GPU reranker:
    • It needs the Docker runtime, on the server's PC.
    • Tested on one NVIDIA RTX A2000 (Linux) and one AMD Radeon 890M (Linux). Intel GPUs, macOS and Windows are not tested.
  • Owner checks:
    • The short-lived native units created during install, start and restore are not checked.
    • On Windows, when neither schtasks nor the task's file can be read, the task is driven as before.
  • retain resend-failed: it does not cover notes and sub-agent reports sent while extraction failed (the queue drops them once sent). A transcript rewritten or moved after its worktree was deleted loses the project recorded for those turns, so the session is then filed by today's rules.
  • The metrics index: an index already in write-ahead mode whose folder no longer allows it fails its writes until the state directory is back on a local disk. stats days reads a year of prompts with no index for it (about 0.1 s locally).
  • Import: a file the server keeps rejecting holds that folder's next files until it passes. The last tick before a cap can overshoot it by what was already in flight. A file deleted from the folder stays in the memory until import purge.
  • Windows:
    • WSL is not tested, and Windows on Arm has no binary.
    • The native runtime is the only runtime there (server runtime switch is refused). It serves this PC only, has no web UI, and starts with your logon, not at boot.
    • backsight server status keeps showing the server's last refusal while it is stopped, until a start passes the check.
    • backsight's .exe files are not code-signed: SmartScreen or Smart App Control may warn about them. The install script checks the release signature before it runs anything.
  • The terminal's look:
    • On Windows, the splash draws the ASCII logo unless the console's code page is UTF-8 (65001; chcp 65001): many consoles default to another one.
    • The views' tables (stats <view>) and section headings are not colored yet, nor setup --undo's list.
    • The braille logo needs a font with braille characters (most coding fonts have them); with one that lacks them, set terminal.logo = "blocks". The logo's dot can take two columns in an East Asian terminal.
  • A new install reads "learning" for its first week, and some numbers read "too few" until enough prompts and turns accumulate.
  • Extraction cost needs a price: the built-in table's, or one set under [llm] in the config file for another model (doctor's price check says when none is known). The server reports token counts for all PCs together.
  • On native, PostgreSQL is 18.1 with pgvector 0.8.5, where the Docker image runs 18.6 with 0.8.7; backup verify runs in the runtime that will restore.
  • On Windows, the commands the dashboard and stats --json offer to copy are quoted for PowerShell; run through Git Bash, a name holding an apostrophe comes out without it.
  • Claude cannot run /reload-plugins: after an update from the session, you type it.
  • A LAN address carries the API key in clear; a tailnet address encrypts it.
  • The shared part of a session continued on two PCs may be stored twice.
  • Several PCs: a PC sends its figures once a UTC day, up to the day before, so another PC's today is not in all PCs until the next day; the others' figures are fetched every 6 hours. A PC counts in a window by the noon (UTC) of each of its days. The other PCs send no project, session, memory or coding tool: Projects, Sessions and Memories stay this PC's, and a project filter does not narrow the others (other PCs: not filtered). The verdict stays this PC's. Speed across PCs is a range from time buckets, never an exact time, and the PCs' figures are trusted as sent: nothing signs them.
  • The feedback database:
    • After a rollback to an older version and an update again, the counts that version added catch up at the first tick.
    • In a rare race during an update or a rollback, an older version can leave one tick's shows out of its ledger.json; this version's next tick counts them.

Report problems at https://github.com/Barben360/backsight/issues, after reading the diagnostic backsight report prints, or ask Claude /backsight:doctor (in Codex, $backsight:doctor). Report vulnerabilities privately, as https://github.com/Barben360/backsight/blob/main/SECURITY.md describes.