[{"data":1,"prerenderedAt":375},["ShallowReactive",2],{"docs-\u002Fdocs\u002Ffeatures\u002Fsessions":3},{"id":4,"title":5,"body":6,"description":367,"extension":368,"meta":369,"navigation":370,"path":371,"seo":372,"stem":373,"__hash__":374},"docs\u002Fdocs\u002Ffeatures\u002Fsessions.md","Sessions & context",{"type":7,"value":8,"toc":357},"minimark",[9,13,17,22,25,36,39,45,48,72,75,79,167,182,186,192,203,218,222,225,270,273,286,290,293,308,311,315,318,324,327,333,346,350,353],[10,11,5],"h1",{"id":12},"sessions-context",[14,15,16],"p",{},"Every conversation with Slo is a session. The TUI saves each one as it goes, so you can close the terminal, come back tomorrow and pick up where you left off.",[18,19,21],"h2",{"id":20},"resume-where-you-left-off","Resume where you left off",[14,23,24],{},"When you quit, Slo prints the command to get back:",[26,27,33],"pre",{"className":28,"code":30,"language":31,"meta":32},[29],"language-text","Resume this session: slo --resume 6d01a684-b83c-4434-b7b7-2a8192ddff63\n","text","",[34,35,30],"code",{"__ignoreMap":32},[14,37,38],{},"Session ids are long, so give the ones you care about a name:",[26,40,43],{"className":41,"code":42,"language":31,"meta":32},[29],"\u002Frename refunds\n",[34,44,42],{"__ignoreMap":32},[14,46,47],{},"Then resume it by name:",[26,49,53],{"className":50,"code":51,"language":52,"meta":32,"style":32},"language-bash shiki shiki-themes github-dark-high-contrast","slo --resume refunds\n","bash",[34,54,55],{"__ignoreMap":32},[56,57,60,64,68],"span",{"class":58,"line":59},"line",1,[56,61,63],{"class":62},"s_sBn","slo",[56,65,67],{"class":66},"sCcAr"," --resume",[56,69,71],{"class":70},"sTRMh"," refunds\n",[14,73,74],{},"Names are unique and ignore case. A resumed session shows the most recent 30 messages. Scroll up to load older ones.",[18,76,78],{"id":77},"session-commands","Session commands",[80,81,82,95],"table",{},[83,84,85],"thead",{},[86,87,88,92],"tr",{},[89,90,91],"th",{},"Command",[89,93,94],{},"What it does",[96,97,98,109,119,129,147,157],"tbody",{},[86,99,100,106],{},[101,102,103],"td",{},[34,104,105],{},"\u002Frename \u003Cname>",[101,107,108],{},"Name the current session.",[86,110,111,116],{},[101,112,113],{},[34,114,115],{},"\u002Fnew [name]",[101,117,118],{},"Start a fresh session with the same folder, model and settings.",[86,120,121,126],{},[101,122,123],{},[34,124,125],{},"\u002Fclear",[101,127,128],{},"Clear the screen. The conversation and its history are untouched.",[86,130,131,136],{},[101,132,133],{},[34,134,135],{},"\u002Ftree",[101,137,138,139,142,143,146],{},"Browse the session as a tree of turns and tool calls. ",[34,140,141],{},"\u002Ftree markdown"," prints it, ",[34,144,145],{},"\u002Ftree html"," exports a file.",[86,148,149,154],{},[101,150,151],{},[34,152,153],{},"\u002Fcontext-window",[101,155,156],{},"See how much of the model's context this session is using.",[86,158,159,164],{},[101,160,161],{},[34,162,163],{},"\u002Fcompact",[101,165,166],{},"Summarise older history now to free up context.",[14,168,169,171,172,175,176,178,179,181],{},[34,170,125],{}," and ",[34,173,174],{},"\u002Fnew"," are easy to mix up. ",[34,177,125],{}," is cosmetic. ",[34,180,174],{}," is a clean slate.",[18,183,185],{"id":184},"where-sessions-live","Where sessions live",[26,187,190],{"className":188,"code":189,"language":31,"meta":32},[29],"~\u002F.slo\u002Fsessions\u002Fhistory\u002F\u003Csession-id>\u002F\n├── session.json     id, name, model, folder, timestamps\n├── events.jsonl     every message and tool call, append-only\n└── transcript.md    a readable copy\n",[34,191,189],{"__ignoreMap":32},[14,193,194,195,198,199,202],{},"Set ",[34,196,197],{},"SLO_HOME"," to move everything under ",[34,200,201],{},"~\u002F.slo"," somewhere else.",[14,204,205,206,209,210,213,214,217],{},"Headless runs (",[34,207,208],{},"slo run",") don't save history unless you ask. Add ",[34,211,212],{},"--enable-history",", or ",[34,215,216],{},"--resume"," a session (which turns it on).",[18,219,221],{"id":220},"what-slo-reads-at-the-start-of-a-session","What Slo reads at the start of a session",[14,223,224],{},"Before your first message, Slo loads your instructions from these files:",[226,227,228,255],"ol",{},[229,230,231,235,236,239,240,239,243,246,247,250,251,254],"li",{},[232,233,234],"strong",{},"Global:"," the first of ",[34,237,238],{},"SLO.md",", ",[34,241,242],{},"AGENTS.md",[34,244,245],{},"CLAUDE.md"," or ",[34,248,249],{},"docs\u002FRESEARCH.md"," it finds in ",[34,252,253],{},"~\u002F.slo\u002F",". Use this for preferences that apply everywhere.",[229,256,257,260,261,239,263,239,265,171,267,269],{},[232,258,259],{},"Project:"," ",[34,262,238],{},[34,264,242],{},[34,266,245],{},[34,268,249],{}," from the folder you launched in, then each parent folder up to the root. If the same file name appears at two levels, the one closest to you wins.",[14,271,272],{},"That means a monorepo can have team-wide rules at the root and package-specific rules deeper down, and both apply.",[14,274,275,276,279,280,285],{},"It also reads the list of skills, and tells the model where your knowledge base is if ",[34,277,278],{},"SLO_KB_DIR"," is set. See ",[281,282,284],"a",{"href":283},"\u002Fdocs\u002Fguides\u002Fproject-memory","Give Slo a memory"," for how to use all of this well.",[18,287,289],{"id":288},"working-across-several-repositories","Working across several repositories",[14,291,292],{},"If a task spans more than one repository, give Slo a VS Code workspace file:",[26,294,296],{"className":50,"code":295,"language":52,"meta":32,"style":32},"slo --workspace ~\u002Fcode\u002Fplatform.code-workspace\n",[34,297,298],{"__ignoreMap":32},[56,299,300,302,305],{"class":58,"line":59},[56,301,63],{"class":62},[56,303,304],{"class":66}," --workspace",[56,306,307],{"class":70}," ~\u002Fcode\u002Fplatform.code-workspace\n",[14,309,310],{},"Slo reads the instruction files from every folder listed in the workspace, and tells the model which folders are part of it. Tools still run in the folder you launched from, so start Slo in the repository you expect to change most.",[18,312,314],{"id":313},"keeping-long-sessions-sharp","Keeping long sessions sharp",[14,316,317],{},"Every model has a context window. As a session grows, Slo summarises older history automatically once it reaches about 70% of the window, keeping roughly the most recent 20,000 tokens word for word. The footer shows how full it is.",[14,319,320,321,323],{},"You can also compact by hand with ",[34,322,163],{}," when you're about to switch topics. It won't run while a prompt is in progress, and if anything goes wrong your history is left as it was.",[14,325,326],{},"Recent compaction updates improve reliability with ChatGPT subscription sign-in and when switching providers through a model pool. Manual compaction now shows \"Compacting session history…\" while it works, so you're not left guessing.",[14,328,329,330,332],{},"Slo also suggests ",[34,331,163],{}," when the estimated history reaches 256,000 tokens, before very large histories become slow. This is a reminder, not an automatic compaction trigger. Automatic compaction still starts at about 70% of the model's context window.",[334,335,337],"note",{"kind":336},"tip",[14,338,339,340,342,343,345],{},"For a genuinely new task, ",[34,341,174],{}," beats ",[34,344,163],{},". A summary of the old task is still context the new one doesn't need.",[18,347,349],{"id":348},"images-and-pdfs","Images and PDFs",[14,351,352],{},"Slo can read images (JPEG, PNG, GIF, WEBP) and PDFs from your project. Point at a screenshot of a bug or a design mock and ask about it. Large images are resized to 1568 pixels on the longest side. The session history keeps a short reference to the file, not the image itself, so screenshots don't bloat your context.",[354,355,356],"style",{},"html pre.shiki code .s_sBn, html code.shiki .s_sBn{--shiki-default:#FFB757}html pre.shiki code .sCcAr, html code.shiki .sCcAr{--shiki-default:#91CBFF}html pre.shiki code .sTRMh, html code.shiki .sTRMh{--shiki-default:#ADDCFF}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}",{"title":32,"searchDepth":358,"depth":358,"links":359},2,[360,361,362,363,364,365,366],{"id":20,"depth":358,"text":21},{"id":77,"depth":358,"text":78},{"id":184,"depth":358,"text":185},{"id":220,"depth":358,"text":221},{"id":288,"depth":358,"text":289},{"id":313,"depth":358,"text":314},{"id":348,"depth":358,"text":349},"How Slo saves conversations, what it reads at the start of every session, and how to keep long sessions sharp.","md",{},true,"\u002Fdocs\u002Ffeatures\u002Fsessions",{"title":5,"description":367},"docs\u002Ffeatures\u002Fsessions","BPd35G1CoPQwuiW8J-DjNs_47lnr7Hmf_feqBSahn1Y",1791641282713]