You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
- Recap: appends a "※ where we left off" card after agent turns longer
than recap.thresholdSeconds (300s) or recap.thresholdToolCalls (15).
Modeled on cc-2.18's awaySummary, but triggered by turn duration/tool
count rather than terminal blur. Generated by `generateRecap`
(packages/core/src/recap/) using the configured model with a 1-3
sentence prompt; returns null on abort/error so it can never crash a
turn. Wired into AppContainer via useRecap.
- Settings: new top-level `recap` (enabled, thresholdSeconds,
thresholdToolCalls) and `insight` (enabled) keys on the user-scope
schema. Both default to enabled — no experimental gate.
- Slash commands: new /recap with status|enable|disable subactions.
/insight gains the same subactions; bare /insight still runs the
report but errors with a hint when disabled.
- Rendering: new MessageType.RECAP + HistoryItemRecap, rendered dim
with the U+203B (※) marker via RecapMessage.
- README: replace hand-written settings.json in the Quick Start with
`proto setup` (the existing interactive wizard); keep the JSON
example below as advanced/manual setup.
Co-authored-by: Automaker <automaker@localhost>
Co-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com>
Copy file name to clipboardExpand all lines: README.md
+33-21Lines changed: 33 additions & 21 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -51,9 +51,40 @@ cargo install beads_rust
51
51
52
52
## Quick Start
53
53
54
-
### 1. Configure your endpoint
54
+
### 1. Run the setup wizard
55
55
56
-
proto connects to any OpenAI-compatible API. Create `~/.proto/settings.json`:
56
+
```bash
57
+
proto setup
58
+
```
59
+
60
+
`proto setup` is an interactive wizard that picks a provider (OpenAI, Anthropic, Gemini, or any OpenAI-compatible endpoint), discovers the available models, optionally configures voice/STT, and writes everything to `~/.proto/settings.json` for you. Re-run it any time to switch providers or pick a different default model.
61
+
62
+
### 2. Set your API key
63
+
64
+
The wizard tells you which env var it expects (e.g. `OPENAI_API_KEY`). Set it once:
65
+
66
+
```bash
67
+
export OPENAI_API_KEY=sk-your-key-here
68
+
```
69
+
70
+
Or persist it in `~/.proto/.env`:
71
+
72
+
```
73
+
OPENAI_API_KEY=sk-your-key-here
74
+
```
75
+
76
+
### 3. Run proto
77
+
78
+
```bash
79
+
proto # interactive mode
80
+
proto -p "explain this codebase"# one-shot mode
81
+
```
82
+
83
+
No auth screen — proto connects directly to your endpoint.
84
+
85
+
### Manual setup (advanced)
86
+
87
+
If you'd rather skip the wizard, drop a `~/.proto/settings.json` of your own:
57
88
58
89
```json
59
90
{
@@ -74,25 +105,6 @@ proto connects to any OpenAI-compatible API. Create `~/.proto/settings.json`:
74
105
}
75
106
```
76
107
77
-
### 2. Set your API key
78
-
79
-
Create `~/.proto/.env`:
80
-
81
-
```
82
-
MY_API_KEY=sk-your-key-here
83
-
```
84
-
85
-
Or export it in your shell: `export MY_API_KEY=sk-your-key-here`
86
-
87
-
### 3. Run proto
88
-
89
-
```bash
90
-
proto # interactive mode
91
-
proto -p "explain this codebase"# one-shot mode
92
-
```
93
-
94
-
No auth screen — proto connects directly to your endpoint.
95
-
96
108
### Example: Multiple models via a gateway
97
109
98
110
If you run a gateway like [LiteLLM](https://github.com/BerriAI/litellm) in front of multiple providers, register them all under `modelProviders.openai` and switch between them with `/model`:
Copy file name to clipboardExpand all lines: packages/cli/src/config/settingsSchema.ts
+66Lines changed: 66 additions & 0 deletions
Original file line number
Diff line number
Diff line change
@@ -1724,6 +1724,72 @@ const SETTINGS_SCHEMA = {
1724
1724
},
1725
1725
},
1726
1726
1727
+
recap: {
1728
+
type: 'object',
1729
+
label: 'Recap',
1730
+
category: 'Recap',
1731
+
requiresRestart: false,
1732
+
default: {},
1733
+
description:
1734
+
'After a long agent turn, append a short "where we left off" card to the transcript.',
1735
+
showInDialog: false,
1736
+
properties: {
1737
+
enabled: {
1738
+
type: 'boolean',
1739
+
label: 'Recap Enabled',
1740
+
category: 'Recap',
1741
+
requiresRestart: false,
1742
+
default: true,
1743
+
description:
1744
+
'When enabled, a 1-3 sentence recap is appended after agent turns that exceed thresholdSeconds or thresholdToolCalls. Toggle with /recap enable|disable.',
1745
+
showInDialog: true,
1746
+
},
1747
+
thresholdSeconds: {
1748
+
type: 'number',
1749
+
label: 'Recap Duration Threshold (seconds)',
1750
+
category: 'Recap',
1751
+
requiresRestart: false,
1752
+
default: 300,
1753
+
description:
1754
+
'Minimum agent-turn wall-clock duration (seconds) before a recap fires.',
1755
+
showInDialog: true,
1756
+
},
1757
+
thresholdToolCalls: {
1758
+
type: 'number',
1759
+
label: 'Recap Tool-Call Threshold',
1760
+
category: 'Recap',
1761
+
requiresRestart: false,
1762
+
default: 15,
1763
+
description:
1764
+
'Minimum tool-call count in a single turn before a recap fires.',
1765
+
showInDialog: true,
1766
+
},
1767
+
},
1768
+
},
1769
+
1770
+
insight: {
1771
+
type: 'object',
1772
+
label: 'Insight',
1773
+
category: 'Insight',
1774
+
requiresRestart: false,
1775
+
default: {},
1776
+
description:
1777
+
'Personalized programming-insight reports generated from your chat history.',
1778
+
showInDialog: false,
1779
+
properties: {
1780
+
enabled: {
1781
+
type: 'boolean',
1782
+
label: 'Insight Enabled',
1783
+
category: 'Insight',
1784
+
requiresRestart: false,
1785
+
default: true,
1786
+
description:
1787
+
'When enabled, /insight will generate a personalized HTML report from your session history. Toggle with /insight enable|disable.',
0 commit comments