2nd1st/dsh-plugin-open-app0

dsh-plugin-open-app

Brings open-mcp-apps into DeepSeek Harness (dsh): an Apps section in the sidebar, one container per app with its own workspace and conversation, an agent-presence strip under the app, and inline app rendering for MCP tool calls.

AI Analysis

适合需要集成和运行 MCP 应用的用户。为每个应用提供隔离的工作区和会话,并支持在对话中直接渲染 MCP 工具的调用结果。

Package
dsh-plugin-open-app
Version
0.1.0
License
MIT
Last updated
Aug 15, 2026

Install

This plugin has no verified bundle, or compatibility checks failed. Read the repository notes first. Read the full README ↗

Configuration

Every setting is optional; the defaults match a stock local engine and the MCP client entry above.

- insert:
    - id: open-app
      name: 'dsh-plugin-open-app'
      config:
        # Where the engine's HTTP face listens.
        engineBase: 'http://127.0.0.1:8787'
        # The `serverName` of the engine's mcp-client entry. It decides the
        # `mcp____` prefix the inline tool views are keyed on.
        serverName: 'oma'
        # Where the per-app workspace directories are made. One directory per app,
        # named after it. Defaults to $DSH_HOME/storages/open-app/apps.
        appsRoot: '~/.dsh/storages/open-app/apps'
        # The container's rules, carried as a system-prompt section on every
        # request a container's agent makes. Replaces the shipped app-only
        # prompt entirely (see below for what it has to keep doing). `{app}` is
        # the app's name and `{card}` the declaration card the host half builds
        # from the engine's registry. An empty string retires the rules: the
        # containers then run as ordinary dsh sessions that happen to have an
        # app in a tab.
        containerPrompt: |
          You live in the {app} app — this conversation is its container.

          {card}

          Never call open_app, app_html or any open_* tool here; the panel beside
          this chat is already showing the app. Answer in one sentence — that line
          is what the user reads on the status bar under it.
        # The one line a brand-new container opens with, which is only there to
        # end the blank state and to draw the first receipt onto the strip. It
        # carries no rules. `{app}` is substituted. Set it to an empty string to
        # open containers silently — they then stay blank until you speak, and
        # the app waits in a row above the composer instead of in its own tab.
        installMessage: 'What is in the app right now?'

Pinned apps and what each app's place is made of are kept per-browser in localStorage, under dsh-plugin-open-app:pins and dsh-plugin-open-app:containers. Only the pins are irreplaceable: the workspace registration is the durable binding, so clearing the container map costs nothing — the next visit re-adopts the same directory, the same workspace and the conversation already accounted under it.