An OpenCode plugin that remembers project context and preferences across sessions
翻譯準備中
AI 摘要 · README
外掛TypeScript · JavaScriptGitHub @plastic-labs自行安裝營運者未確認
試用過了嗎? 點一下就好,不需要登入。
尚未偵測到更新。GitHub 發布版本後會顯示在這裡。
個人 GitHub 帳號下公開儲存庫的擁有者可以登入並驗證所有權,自行管理介紹,無需管理員核准。
登入並產生驗證檔案,在 30 分鐘內將其提交至此儲存庫的預設分支。其他分支或分叉儲存庫中的檔案無效。然後在下方檢查檔案,即可無需管理員核准直接管理專案。請保留檔案以維持管理權限。
如需登入,將前往登入頁面。登入後請回到此處,再次點擊所選的驗證按鈕。
安裝型專案無需部署網域也可驗證。個人儲存庫可透過 GitHub 登入驗證,組織儲存庫可使用上方的儲存庫驗證檔案。
正在載入完整 README。 以下為已儲存的摘錄。
Give OpenCode long-term memory that survives context wipes, session restarts, and fresh chats. Honcho remembers what you're working on, durable preferences, and prior context across your projects.
Step 1: Get Your Honcho API Key
1. Go to app.honcho.dev
2. Sign up or log in
3. Copy your API key
The plugin supports OpenCode 2.x and 1.x from one package. OpenCode installs it and adds it to your global OpenCode config.
To update an existing install, run opencode plugin update (2.x) or opencode plugin "@honcho-ai/opencode-honcho" --force (1.x).檢視完整 README ↗Add AI-native memory to OpenCode
Give OpenCode long-term memory that survives context wipes, session restarts, and fresh chats. Honcho remembers what you're working on, durable preferences, and prior context across your projects.
The plugin supports OpenCode 2.x and 1.x from one package. OpenCode installs it and adds it to your global OpenCode config.
OpenCode 2.x (@opencode/cli):
opencode plugin add "@honcho-ai/opencode-honcho"
OpenCode 1.x:
opencode plugin "@honcho-ai/opencode-honcho" --global
To update an existing install, run opencode plugin update (2.x) or opencode plugin "@honcho-ai/opencode-honcho" --force (1.x).
If you edit the config by hand instead, the key is plugins on 2.x and plugin on 1.x, both taking "@honcho-ai/opencode-honcho" as an entry.
Existing installs keep directional observation until you choose. After updating, OpenCode prompts you to keep directional or switch to unified (also via /honcho:setup or /honcho:config). If you switch to unified, you can optionally run /honcho:import to reingest local OpenCode transcripts into the new collection.
This command expects the opencode CLI to already be installed and available on your PATH.
If your shell cannot find opencode, restart your shell or source your shell config and run the command again.
/honcho:setupHoncho Cloud option unless you explicitly want a self-hosted or local endpointpeerName/honcho:status to verify the runtime/honcho:import to backfill local historyhoncho-memory skill is installed into OpenCode's skills directory so the agent knows when to pull and save memory on its ownobservationMode, agentObserveMe)OpenCode:
@honcho-ai/opencode-honcho with OpenCodeOpenCode Honcho configuration lives in:
~/.honcho/config.jsonOpenCode reads and writes this shared config file directly. OpenCode-specific defaults live under hosts.opencode in that file.
{
"apiKey": "hch-...",
"peerName": "user",
"baseUrl": "https://api.honcho.dev",
"hosts": {
"opencode": {
"workspace": "opencode",
"aiPeer": "opencode",
"recallMode": "hybrid",
"observationMode": "unified", // new installs; existing configs without this field stay directional
"agentObserveMe": false, // true opts into self-observation on the root agent peer
"sessionStrategy": "per-directory",
"removeUserPrefix": true, // true uses the bare peerName; false (default on upgrade) keeps the legacy user-<peerName> peer
"apiKey": "hch-..." // optional; overrides the root apiKey for this host
}
}
}
For Honcho Cloud:
apiKey is requiredbaseUrl should remain https://api.honcho.devFor self-hosted or local Honcho:
baseUrl should point to your deployment, for example http://127.0.0.1:8000apiKey is required only if that deployment requires authenticationIf OpenCode is running in Docker or another remote environment, localhost may not refer to your machine. The configured baseUrl must be reachable from the OpenCode host runtime.
| Strategy | Behavior | Best for |
|---|---|---|
per-directory | One session per working directory | Default project memory |
per-repo | One session per repository | Repos with multiple entry directories |
git-branch | Session changes with the current branch | Branch-specific workflows |
per-session | New session for each OpenCode session id | Short-lived isolated work |
chat-instance | Session follows the current chat instance | Highly ephemeral usage |
global | One session for everything | Shared memory across all work |
Controls which Honcho collection honcho_chat, honcho_create_conclusion, and targeted prompt recall use for the user. This is independent of agentObserveMe (whether the agent peer is modeled). Changing modes does not migrate existing conclusions — use /honcho:import to backfill local OpenCode transcripts so Honcho can derive into the new collection.
| Mode | Collection | Best for |
|---|---|---|
unified (default on new installs) | The user's self-collection (observer=user, observed=user) | Shared workspaces where multiple agents should recall each other's conclusions about the user |
directional (existing installs until set) | This AI peer's view of the user (observer=aiPeer, observed=user) | Isolated per-agent memory; previous OpenCode behavior |
New ~/.honcho/config.json files stamp observationMode: "unified". Configs that predate the field keep directional so an upgrade does not orphan already-derived memory. After updating, OpenCode prompts you to keep directional or switch to unified (/honcho:setup, /honcho:config, or the TUI launch dialog). If you switch, optionally run /honcho:import to reingest local OpenCode transcripts:
{
"hosts": {
"opencode": {
"observationMode": "unified"
}
}
}
The root agent peer is created with observeMe: false by default: Honcho models the user, not the assistant. Set agentObserveMe to true if you want a peer card / representation of the agent itself.
{
"hosts": {
"opencode": {
"agentObserveMe": true
}
}
}
| Command | Description |
|---|---|
/honcho:setup | First-time setup for cloud or local Honcho |
/honcho:status | Show effective Honcho status for the current OpenCode project, including live workspace and session names when available |
/honcho:settings | Show effective config values and config paths |
/honcho:config | Edit shared Honcho fields in ~/.honcho/config.json |
/honcho:import | Preview or import your local OpenCode session history into Honcho |
/honcho:import reads session history through the OpenCode SDK client that the plugin receives, maps sessions with the same sessionStrategy as live capture, and uploads user/assistant text with original timestamps.
~/.honcho/opencode-import-state.json).observationMode: "unified", import so past transcripts can be derived into the user self-collection instead of remaining only on the old directional pair.The plugin exposes these tools inside OpenCode:
| Tool | Description |
|---|---|
honcho_setup | Validate setup and persist shared credentials or endpoint settings |
honcho_status | Show effective runtime status |
honcho_get_config | Read effective and persisted settings |
honcho_set_config | Update a persisted shared setting |
honcho_search | Search Honcho session messages in the current session |
honcho_chat | Query Honcho for reasoning-backed context (observer follows observationMode) |
honcho_create_conclusion | Save a durable memory conclusion (same observer as honcho_chat) |
One ./server entry serves both OpenCode generations: 1.x calls its server() hook map, 2.x reads its id and setup().
| Purpose | OpenCode 1.x | OpenCode 2.x |
|---|---|---|
| Capture the user turn, fetch prompt-specific recall | chat.message | session.hook("prompt") |
| Memory instruction + stable snapshot (+ recall on 2.x) | experimental.chat.system.transform | session.hook("context") |
| Continuity block during compaction | experimental.session.compacting | session.hook("compaction") |
| Record significant tool activity | tool.execute.after | tool.hook("execute.after") |
HONCHO_* variables for shell tools | shell.env | shell.hook("create.before") |
honcho_* tools | tool | tool.transform |
| Session start, assistant capture, cleanup | event | event.subscribe() (session.created, session.text.ended, session.step.ended, session.execution.*, session.deleted) |
On 2.x, prompt-specific recall rides in the request context instead of a synthetic message part, because 2.x persists prompt-hook edits as the user's message.
experimental.chat.system.transform always appends the Honcho memory instruction. With recallMode hybrid or context it also adds a stable memory snapshot (user profile, agent context, session summary), captured once on the first turn of a session.chat.message retrieves prompt-specific recall on user turns in hybrid and context mode, appending a synthetic memory part when it yields a new block. Unchanged blocks are deduplicated within the session. In tools mode nothing beyond the instruction is injected; the model reaches memory only through the honcho_* tools.tool.execute.after records shell commands, file edits, and delegated tasks to the session. Read-only and trivial calls are skipped. Shell arguments that may carry credentials are redacted, keeping only the executable name.honcho_setup, the packaged honcho-memory skill is copied to ~/.config/opencode/skills/honcho-memory, or $OPENCODE_CONFIG_DIR/skills/honcho-memory when set. An unchanged file is left untouched.For macOS/Linux local branch testing:
bun install
bun run build
On OpenCode 1.x, register the checkout with the CLI:
opencode plugin "$PWD" --global --force
On OpenCode 2.x, opencode plugin add only accepts npm or Git package specifiers, so point the plugins key in ~/.config/opencode/opencode.json at the checkout instead:
{
"plugins": ["/absolute/path/to/opencode-honcho"]
}
OpenCode 2.x resolves a local plugin directory by its root server and tui modules rather than the exports map, so the checkout ships server.js and tui.js shims that re-export dist/. Run bun run build before starting OpenCode. To test the packed tarball on 2.x, unpack it and point plugins at the unpacked directory; plugin add does not take tarballs. Plugin logs go to stderr on 2.x (opencode run --standalone --print-logs) and to OpenCode's log under service=opencode-honcho on 1.x.