跳到主要内容
    ↑↓ 选择↵ 打开esc 关闭
    JeffreyJYZ

    Session Dir

    @jeffreyjyz/opencode-session-dir·v0.1.0·其他

    Bind extra working directories to a single opencode session, durably across restarts. Other sessions never see them.

    GitHub 星标

    0

    月装机量

    0

    综合评分

    20.0

    生态多维模型

    最近提交

    23 小时前

    2026-10-04

    快速安装与配置

    opencode.json

    写入当前项目的 opencode.json,只对这个仓库生效。

    opencode.json

    {
      "$schema": "https://opencode.ai/config.json",
      "plugin": ["@jeffreyjyz/opencode-session-dir@0.1.0"]
    }

    OpenCode 启动时会通过内嵌运行时自动加载 npm 依赖并缓存至本地目录,无需手动在全局环境执行安装。

    Bind extra working directories to one opencode session — durably, across restarts. Other sessions never see them.

    The agent already works in the session's own directory; anything outside it needs external_directory approval. This plugin lets a session declare the other directories it may work in, and remembers that binding for that session alone. Open a different session and the same path is still gated by the normal permission flow.

    Install

    Add it to the plugins array in ~/.config/opencode/opencode.json and restart (or /reload) opencode:

    {
      "plugins": ["@jeffreyjyz/opencode-session-dir"]
    }
    

    For local development point at the checkout instead (an absolute path is treated as a local plugin):

    {
      "plugins": ["/Users/you/dev/cmdcode-tools/opencode-session-dir"]
    }
    

    After bun run build the root index.js / tui.js shims load dist/.

    Commands

    Command Behavior
    /session-dir Browse (or type) a directory and bind it to the current session.
    /session-dir-list Show the directories bound to the current session.
    /session-dir-remove Pick a bound directory and unbind it.

    All three require an open session; they act on the active session only.

    How it works

    Two halves of one package, because they run in different processes:

    half file job
    server src/index.ts permission.evaluate grants external_directory for the requesting session's bound dirs; session.context advertises them to the model
    TUI src/tui.tsx the three slash commands and their dialogs

    Both halves meet on the filesystem. Bindings live in $XDG_DATA_HOME/opencode/session-dir/bindings.json (default ~/.local/share/opencode/session-dir/bindings.json) as a map from session id to absolute paths:

    {
      "ses_abc123": ["/Users/you/other-project"]
    }
    

    The server reads it through a short mtime cache, so a binding added in the TUI takes effect on the next permission check. A configured deny in your permissions always wins — the hook only turns ask into allow.

    Set OPENCODE_SESSION_DIR_INJECT_CONTEXT=1 to also fold each bound directory's AGENTS.md / CLAUDE.md / .agents/AGENTS.md into the system prompt.

    Difference from opencode-add-dir

    opencode-add-dir offers "this session only" (a flat list, cleared when the server restarts and shared by every session in that process) and "remember across sessions" (persisted, but global to all sessions). This plugin is the combination it does not offer: one session, durable.

    Development

    bun install
    bun test
    bun run typecheck
    bun run build
    

    同类生态推荐