mirror of
https://github.com/vectorize-io/hindsight.git
synced 2026-09-14 19:31:49 +08:00
6f2799569f
* docs: link every integration changelog from its doc page The release script has written a changelog page per integration since 0.4.20 (src/pages/changelog/integrations/<slug>.md), but nothing reliably linked them: 16 of 61 doc pages carried a "View Changelog" link, and the only index was a hand-written table at the bottom of /changelog listing 6 of the 48 pages, stale since the release that introduced them. coding-agents was one of the 31 pages with a changelog nobody could reach except by guessing the URL. Adds the link to the 30 pages missing one, plus a third invariant in check-integrations.mjs so the next one can't ship unlinked: every changelog page whose integration has a gallery entry must be linked from its doc page. coding-agents.md is generated, so its link goes in the README as an absolute hindsight.vectorize.io URL — the sync script rewrites our own absolute URLs to site-relative, so it resolves on npm, GitHub and the docs site. It sits outside the skill:begin regions, so SKILL.md is unchanged. Claude-Session: https://claude.ai/code/session_01DNWFQn8AUN6SApcswHG3aN * docs(integrations): compact grouped gallery with Docs/Changelog buttons The Integrations Hub listed 60 three-line cards with a repeated "Hindsight Team" byline and an OFFICIAL badge on 52 of them, running 6092px tall — scanning it meant scrolling past what you came for. Cards are now a compact row (icon, name, two-line description) grouped by category, with the featured three using the same row tinted rather than a second card design: 4352px, and the shape of the catalogue is visible at a glance. Each card carries Docs and Changelog buttons. Which integrations have a changelog comes from a new build-time plugin that indexes src/pages/changelog/integrations/*.md and joins integrations.json on the link slug (vercel-ai-sdk -> /sdks/integrations/ai-sdk -> ai-sdk.md), so an integration grows the button on its first release with nothing to update by hand. The card is a <div> now — nested anchors are invalid — so the name and the pills are the links, not the whole card. /changelog's first line points here instead of carrying its own listing. Also drops the 14 CSS classes the old card owned, and shares CATEGORY_LABELS / groupByCategory from src/lib/integrations.ts so the taxonomy has one definition. Claude-Session: https://claude.ai/code/session_01DNWFQn8AUN6SApcswHG3aN
195 lines
7.0 KiB
Markdown
195 lines
7.0 KiB
Markdown
---
|
|
sidebar_position: 20
|
|
title: "OpenCode Persistent Memory with Hindsight | Integration"
|
|
description: "Add long-term memory to OpenCode with Hindsight. Automatically captures conversations and recalls relevant context across coding sessions."
|
|
---
|
|
|
|
# OpenCode
|
|
|
|
:::warning Superseded by the Coding Agents plugin
|
|
**The opencode plugin** is superseded by the [Coding Agents plugin](/sdks/integrations/coding-agents) — one
|
|
package covering Claude Code, Codex, opencode, Kilo, Cursor, Copilot, Grok, Antigravity, Devin and Cline and other CLI agents, with a per-repo memory bank they all share instead
|
|
of one bank per agent.
|
|
|
|
This page and the published package still work; they are no longer developed. To switch:
|
|
|
|
```bash
|
|
cd /path/to/your/repo
|
|
npx @vectorize-io/hindsight-coding-agents install opencode
|
|
```
|
|
|
|
Memory does not move automatically — the banks are scoped differently and this agent's history cannot be imported (it is kept in an internal database). See
|
|
[Migrating from the per-agent plugins](/sdks/integrations/coding-agents#migrating-from-the-per-agent-plugins).
|
|
:::
|
|
|
|
|
|
Persistent long-term memory plugin for [OpenCode](https://opencode.ai) using [Hindsight](https://vectorize.io/hindsight). Automatically captures conversations, recalls relevant context on session start, and provides retain/recall/reflect tools the agent can call directly.
|
|
|
|
[View Changelog →](/changelog/integrations/opencode)
|
|
|
|
## Quick Start
|
|
|
|
Add to your `opencode.json` (project) or `~/.config/opencode/opencode.json` (global):
|
|
|
|
```json
|
|
{
|
|
"$schema": "https://opencode.ai/config.json",
|
|
"plugin": ["@vectorize-io/opencode-hindsight"]
|
|
}
|
|
```
|
|
|
|
OpenCode auto-installs plugins in the `"plugin"` array on startup — no `npm install` required.
|
|
|
|
Point the plugin at your Hindsight server and start OpenCode:
|
|
|
|
```bash
|
|
export HINDSIGHT_API_URL="http://localhost:8888"
|
|
opencode
|
|
```
|
|
|
|
### Using Hindsight Cloud
|
|
|
|
Get an API key at [ui.hindsight.vectorize.io/connect](https://ui.hindsight.vectorize.io/connect):
|
|
|
|
```bash
|
|
export HINDSIGHT_API_URL="https://api.hindsight.vectorize.io"
|
|
export HINDSIGHT_API_TOKEN="your-api-key"
|
|
opencode
|
|
```
|
|
|
|
Or configure inline via plugin options in `opencode.json`:
|
|
|
|
```json
|
|
{
|
|
"$schema": "https://opencode.ai/config.json",
|
|
"plugin": [
|
|
["@vectorize-io/opencode-hindsight", {
|
|
"hindsightApiUrl": "https://api.hindsight.vectorize.io",
|
|
"hindsightApiToken": "your-api-key"
|
|
}]
|
|
]
|
|
}
|
|
```
|
|
|
|
## Features
|
|
|
|
### Custom Tools
|
|
|
|
The plugin registers three tools the agent can call explicitly:
|
|
|
|
| Tool | Description |
|
|
|---|---|
|
|
| `hindsight_retain` | Store information in long-term memory |
|
|
| `hindsight_recall` | Search long-term memory for relevant information |
|
|
| `hindsight_reflect` | Generate a synthesized answer from long-term memory |
|
|
|
|
### Auto-Retain
|
|
|
|
When the session goes idle (`session.idle` event), the plugin automatically retains the conversation transcript to Hindsight. Configurable via `retainEveryNTurns` to control frequency.
|
|
|
|
### Session Recall
|
|
|
|
When a new session starts, the plugin recalls relevant project context and injects it into the system prompt, giving the agent access to memories from prior sessions.
|
|
|
|
### Compaction Hook
|
|
|
|
When OpenCode compacts the context window, the plugin:
|
|
1. Retains the current conversation before compaction
|
|
2. Recalls relevant memories and injects them into the compaction context
|
|
|
|
This ensures memories survive context window trimming.
|
|
|
|
## Configuration
|
|
|
|
### Plugin Options
|
|
|
|
```json
|
|
{
|
|
"plugin": [
|
|
["@vectorize-io/opencode-hindsight", {
|
|
"hindsightApiUrl": "http://localhost:8888",
|
|
"hindsightApiToken": "your-api-key",
|
|
"bankId": "my-project",
|
|
"autoRecall": true,
|
|
"autoRetain": true,
|
|
"recallBudget": "mid",
|
|
"recallTags": [],
|
|
"recallTagsMatch": "any",
|
|
"retainTags": [],
|
|
"retainEveryNTurns": 3,
|
|
"debug": false
|
|
}]
|
|
]
|
|
}
|
|
```
|
|
|
|
### Config File
|
|
|
|
Create `~/.hindsight/opencode.json` for persistent configuration that applies across all projects:
|
|
|
|
```json
|
|
{
|
|
"hindsightApiUrl": "http://localhost:8888",
|
|
"hindsightApiToken": "your-api-key",
|
|
"recallBudget": "mid"
|
|
}
|
|
```
|
|
|
|
### Environment Variables
|
|
|
|
| Variable | Description | Default |
|
|
|---|---|---|
|
|
| `HINDSIGHT_API_URL` | Hindsight API base URL | *(required)* |
|
|
| `HINDSIGHT_API_TOKEN` | API key for authentication | |
|
|
| `HINDSIGHT_BANK_ID` | Static memory bank ID | `opencode` |
|
|
| `HINDSIGHT_AGENT_NAME` | Agent name for dynamic bank IDs | `opencode` |
|
|
| `HINDSIGHT_AUTO_RECALL` | Auto-recall on session start | `true` |
|
|
| `HINDSIGHT_AUTO_RETAIN` | Auto-retain on session idle | `true` |
|
|
| `HINDSIGHT_RETAIN_MODE` | `full-session` or `last-turn` | `full-session` |
|
|
| `HINDSIGHT_RECALL_BUDGET` | Recall budget: `low`, `mid`, `high` | `mid` |
|
|
| `HINDSIGHT_RECALL_MAX_TOKENS` | Max tokens for recall results | `1024` |
|
|
| `HINDSIGHT_RECALL_TAGS` | Comma-separated tags to filter recall results | |
|
|
| `HINDSIGHT_RECALL_TAGS_MATCH` | Tag match mode: `any`, `all`, `any_strict`, `all_strict` | `any` |
|
|
| `HINDSIGHT_DYNAMIC_BANK_ID` | Enable dynamic bank ID derivation | `false` |
|
|
| `HINDSIGHT_BANK_MISSION` | Bank mission/context for reflect | |
|
|
|
|
Configuration priority (later wins): defaults < `~/.hindsight/opencode.json` < plugin options < env vars.
|
|
|
|
### Logging & debugging
|
|
|
|
The plugin logs through OpenCode's own log stream (`service=hindsight`), visible with `opencode --print-logs` or in the OpenCode log files. Errors (failed retain/recall, unreachable API, auth problems) and the resolved API URL + bank are logged **by default** — so if memories aren't saving, the reason is visible without any opt-in.
|
|
|
|
Verbose tracing is controlled by the `debug` option, which is **config-only** (set `"debug": true` in `opencode.json` plugin options or `~/.hindsight/opencode.json`). There is intentionally no `HINDSIGHT_DEBUG` environment variable: env vars are unreliable to set for OpenCode's plugin runtime (notably on Windows, where a persistent OpenCode server may never see them).
|
|
|
|
```json
|
|
{
|
|
"plugin": [["@vectorize-io/opencode-hindsight", { "debug": true }]]
|
|
}
|
|
```
|
|
|
|
## Dynamic Bank IDs
|
|
|
|
For multi-project isolation, enable dynamic bank ID derivation:
|
|
|
|
```bash
|
|
export HINDSIGHT_DYNAMIC_BANK_ID=true
|
|
```
|
|
|
|
The bank ID is composed from granularity fields (default: `agent::project`). Supported fields: `agent`, `project`, `channel`, `user`.
|
|
|
|
For multi-user scenarios (e.g., shared agent serving multiple users):
|
|
|
|
```bash
|
|
export HINDSIGHT_CHANNEL_ID="slack-general"
|
|
export HINDSIGHT_USER_ID="user123"
|
|
```
|
|
|
|
## How It Works
|
|
|
|
1. **Plugin loads** when OpenCode starts — creates a `HindsightClient`, derives the bank ID, and registers tools + hooks
|
|
2. **Session starts** — `session.created` event triggers, plugin marks session for recall injection
|
|
3. **System transform** — on the first LLM call, recalled memories are injected into the system prompt
|
|
4. **Agent works** — can call `hindsight_recall` and `hindsight_retain` explicitly during the session
|
|
5. **Session idles** — `session.idle` event triggers auto-retain of the conversation
|
|
6. **Compaction** — if the context window fills up, memories are preserved through the compaction
|