Getting started

August 31, 2026 · View on GitHub

For anyone installing Tacit for the first time. About five minutes.

Prerequisites

You needDetails
DeepSeek Harness (dsh)version >= 0.1.1-rc.1 — check with npx @deepseek-ai/dsh --version
Node.js>= 22
A DeepSeek API keyalready configured in the harness (Settings → Models). Tacit never reads it: every model call goes through the harness's own model service.

Install

npx @deepseek-ai/dsh plugin --profile web add dsh-tacit

If the CLI is already installed globally, you can use the shorter dsh plugin --profile web add dsh-tacit form instead.

Then start (or restart) npx @deepseek-ai/dsh web and refresh the browser page. Tacit has two halves: one runs inside the dsh process (needs the restart), one runs in the browser (needs the refresh).

Check that it is on

  • In any conversation there is a Tacit tab next to Chat / Trajectory / Context.
  • Settings → Tacit shows Learned from 0 prompt(s) and Auto-learning on · 0/30 today.

If the tab is missing, restart npx @deepseek-ai/dsh web once more and check the version above.

Optional: learn from what you already did (bootstrap)

Tacit learns as you go, but you can give it a head start from your recent history. There are two buttons with the same label and different scope:

ButtonWhereLooks at
Learn from my last 20 turnsTacit tabthis conversation only
Learn from my last 20 turnsSettings → Tacitevery conversation currently loaded

What it does: takes the 20 most recent finished turns, skips prompts shorter than 8 characters, bare continuations ("continue", "ok") and turns already analyzed, analyzes the rest one after the other, then runs one distillation to produce the first directives. It runs outside the daily cap. Cost: roughly $0.02–0.05 at list price, once (see Privacy & cost).

Then just work

Nothing else to do. Tacit reacts to two things, in the background:

SignalExampleWhat happens
A turn ends messy — a retry, a tool error, a compaction, a cancel/reject, or 15+ model stepsthe agent thrashed through many tool calls before answeringthe prompt of that turn is analyzed
Your next message reads as a correction (short, starts with "no", "wrong", "I meant", "不对"…)"no, I meant the Next.js app under apps/web"the previous prompt is analyzed, with your correction as evidence

After every 3 analyses Tacit distills what it learned into 1–4 directives. A new directive is a candidate for 10 finished turns (one per scope at a time; the others wait as queued); if you do not correct the agent more often it becomes active, otherwise it is retired. Directives are injected into the system prompt of every new conversation (not the running one). The exact text is visible under Settings → Tacit → Exact text injected.

The details, with the real numbers, are in How it works.

Where things are in the UI

SurfaceWhat you seeWhat it does
Tacit tab (conversation view)one row per turn: tool calls, steps, tokens, retries; an auto / correction / manual / bootstrap badge on analyzed turns; the prompt; Context added before the send (only with enrichPrompts); the reportAnalyze / Re-analyze one turn; Select prompts…Analyze selected; Learn from my last 20 turns (this conversation); inline settings toggle
Composer✨ Improve prompt button left of the inputrewrites your current draft using what Tacit has learned; before/after preview → Apply; then a Was this better? 👍/👎 strip (👎 asks for a one-line reason)

Settings → Tacit is eight collapsible cards — click a card's header to expand or collapse it:

CardHolds
Overviewlearned-from count, auto-learning status (today / cap), Learn from my last 20 turns (all conversations) with a live cost estimate, the measured trend (how often you correct the agent, messy-turn rate and tokens per turn, first 20 turns vs. latest 20 — appears after 40 finished turns)
Usagethe cost dashboard: today / this month / last 30 days / lifetime spend tiles, a daily spend bar chart (7 d or 30 d), spend by operation, budget warning bars, filters (range, operation, status, model, workspace, session), and a paginated run list — expand a run to see its individual attempts
Pricingthe list price per 1M tokens for both models at each tier, which tier is in force right now, the price source (bundled table or dsh-cost-meter) and a Refresh prices button
Learninganalysis model (deepseek-v4-flash / deepseek-v4-pro); Auto-analyze messy turns; Also learn from a clean prompt right after a messy turn; Daily cap on automatic analyses
Agent guidanceevery directive with its state chip (waiting for trial, trial 3/10, active, retired · reason), its source chip (yours / distilled) and its receipt, where the directive came from, with a Copy receipt button; toggle / remove / add directives; Start trial on a queued directive while Review new directives before their trial is on; Inject learned directives into the system prompt and Add learned context before each send; Exact text injected
Improve & feedbackEnable the composer Improve button; Learned style rules
Analysis historythe latest analyzed prompts, across every conversation
Data & privacywhat one usage record holds; Keep detailed usage history (days) (7 / 14 / 30 / 90 / 180 / 365); Warn above this daily/monthly spend (USD) — Tacit warns at 80 % of the amount and marks it exceeded above it; Clear all analysis reports and Clear usage history — both open a confirmation dialog (Escape cancels) before deleting anything

Troubleshooting

Nothing is being analyzed. Auto-analysis only looks at turns that finish after the plugin started (a restart resets that), only when the turn was messy or your next message was a correction, and never for bare continuations. Check Settings → Tacit: is auto-learning on, and is today's count below the cap (30 by default)? You can always analyze a turn by hand from the Tacit tab.

I edited a directive and the agent still ignores it. The steering text is frozen when a conversation starts (it keeps the model's prompt cache warm). Open a new conversation. Removing a directive or switching one off is the exception, and reaches the conversations you already have open.

The trend chips are missing. They need at least 40 finished turns across the conversations currently loaded.

There is no ✨ button. It is switched off: Settings → Tacit → Enable the composer Improve button (liveSuggestions).

Manual Analyze says "continuation". Short continuation prompts ("continue", "go ahead", "yes") are never analyzed — their context lives in the previous turn. No model call was made.

Where is my data? ~/.dsh/storages/tacit/ (or $DSH_HOME/storages/tacit/ if you set DSH_HOME). See Privacy & cost.

I used dsh-prompt-coach before. Tacit is its successor. On first start it renames storages/prompt-coach to storages/tacit if the new directory does not exist yet. Nothing is deleted.


Docs index · Next: How it works