ClaudeModsClaude Code 模組目錄
☰
● 0 人在線上 · 瀏覽 0 次
+ 提交作品
← 返回作品集
GitHub 儲存庫 · Git 與程式碼審查

terminal-browser — Claude Code 插件/外掛 · ClaudeMods

回報這個作品這是你的作品?認領

在 ClaudeMods 了解這款 Claude Code 插件/外掛,查看原始來源與所需權限。 terminal-browser:直接在 Claude Code 內執行的瀏覽器。預覽網站、檢視 HTML 文件。

zzenbu-labs@zenbu-labs
已翻譯

關於這個 mod

terminal-browser:直接在 Claude Code 內執行的瀏覽器。預覽網站、檢視 HTML 文件。

安裝

安裝 terminal-browser

curl -fsSL https://terminal-browser.sh/install | bash # 或 brew install terminal-browser

確保你使用的是最新版本的 Claude Code

claude update

透過將以下內容新增至 ~/.claude/settings.json 來啟用 Claude Code UI 外掛:

{
  "env": { "CLAUDE_CODE_ENABLE_FUNCTION_HOOKS": "1" }
}

安裝 terminal-browser 外掛

# 設定市場
claude plugin marketplace add zenbu-labs/terminal-browser

# 安裝外掛
claude plugin install terminal-browser@terminal-browser

現在你可以在 Claude Code 內執行 "/browser" 來開啟瀏覽器

更新

更新 Claude Code 外掛

claude plugin update terminal-browser@terminal-browser

更新 terminal-browser

terminal-browser upgrade

設定

你可以設定 terminal-browser 外掛以包含一個工具,讓 Claude 可以用來開啟瀏覽器。預設為關閉,因為 Claude 已經可以使用 terminal-browser CLI 透過分割窗格在終端機內開啟瀏覽器。你可以透過將以下內容新增至你的 ~/.claude/settings.json 來啟用該工具:

{
  "pluginConfigs": {
    "terminal-browser@terminal-browser": {
      "options": {
        "agentTool": true
      }
    }
  }
}

terminal-browser 外掛 API

terminal-browser 外掛附帶一個 API,你可以在另一個 Claude Code 外掛中使用它以程式設計方式開啟瀏覽器並載入 URL。你可以用此建構的一些有用外掛範例包括:

  • /tldraw 斜線命令,在 Claude Code 分割窗格中開啟 tldraw
  • /open-pr 斜線命令,開啟與你正在處理的分支關聯的 PR
export type BrowserOpenInput = { url?: string }

export type BrowserOpenResult =
  | { ok: true; url: string }
  | { ok: false; error: string }

export type Browser = {
  open: (input: BrowserOpenInput) => Promise<BrowserOpenResult>
  close: (input?: Record<string, never>) => Promise<boolean>
}

// 用法:在你的外掛的 hooks 模組中
on('command.run', { command: 'tldraw' }, async ($) => {
  const result = await $.browser.open({ url: 'https://www.tldraw.com/' })
  return { text: result.ok ? '已開啟 tldraw' : result.error }
})

它是如何運作的?

terminal-browser 使用 t

安裝

請先查看作者 README,確認 marketplace 與外掛名稱;指令可能隨儲存庫結構而變動。

claude plugin marketplace add zenbu-labs/terminal-browser
claude plugin install terminal-browser
原文 / README

terminal-browser claude code plugin

This plugin is experimental and does have some known limitations

https://github.com/user-attachments/assets/a79e7667-6fcb-49a4-9967-44d0f942102c

Installation

Install terminal-browser

curl -fsSL https://terminal-browser.sh/install | bash # or brew install terminal-browser

Ensure you are on the latest version of claude code

claude update

Enable claude code UI plugins by adding this to ~/.claude/settings.json:

{
  "env": { "CLAUDE_CODE_ENABLE_FUNCTION_HOOKS": "1" }
}

Install the terminal-browser plugin

# set the marketplace
claude plugin marketplace add zenbu-labs/terminal-browser

# install the plugin
claude plugin install terminal-browser@terminal-browser

Now you can run "/browser" inside claude code to open the browser

Updating

Update the claude code plugin

claude plugin update terminal-browser@terminal-browser

Update terminal-browser

terminal-browser upgrade

Configuration

You can configure the terminal-browser plugin to include a tool that claude can use to open the browser. This is by default off, since claude can already use the terminal-browser CLI to open the browser inside the terminal through a split pane. You can enable the tool by adding the following to your ~/.claude/settings.json:

{
  "pluginConfigs": {
    "terminal-browser@terminal-browser": {
      "options": {
        "agentTool": true
      }
    }
  }
}

terminal-browser plugin API

The terminal-browser plugin comes with an API you can use within another claude code plugin to programatically open the browser and load a URL. Some examples of useful plugins you can build with this are:

  • /tldraw slash command that opens tldraw in the claude code split pane
  • /open-pr slash command that opens the PR associated with the branch you are working on
export type BrowserOpenInput = { url?: string }

export type BrowserOpenResult =
  | { ok: true; url: string }
  | { ok: false; error: string }

export type Browser = {
  open: (input: BrowserOpenInput) => Promise<BrowserOpenResult>
  close: (input?: Record<string, never>) => Promise<boolean>
}

// usage: in your plugin's hooks module
on('command.run', { command: 'tldraw' }, async ($) => {
  const result = await $.browser.open({ url: 'https://www.tldraw.com/' })
  return { text: result.ok ? 'Opened tldraw' : result.error }
})

How does it work?

terminal-browser uses the kitty graphics protocol to display pixels generated by a real browser inside the terminal. To display the browser inside claude code, we use claude codes new function hooks API.

terminal-browser's internals have been extracted to a javascript library - https://github.com/zenbu-labs/terminal-browser/tree/main/pixel - if you would like to build your own graphical application inside claude code/the terminal

Supported terminals

The terminal-browser claude code plugin will only work in terminals that support the kitty graphics protocol, and implement kitty unicode placeholders. The most popular terminals that support this feature are:

If your terminal does not support the required features, trying to open the browser inside claude code may garble the TUI

In addition any terminals that are built on libghostty will support this feature, some examples are:

You can find more libghostty based terminals here: awesome-libghostty

Even if your terminal supports the required graphics feature, if you are running a multiplexer, the plugin may not work. This is because multiplexers rewrite the output of terminal programs and breaks terminal graphics commands. tmux support will be arriving soon (terminal-browser currently works in tmux, just not through the claude code plugin yet), and within herdr performance is very bad when running through the claude code plugin, but will likely improve soon. Other multiplexers I have not tested, so if it does not work please file an issue and I will see if we can support this.

Caveats:

  • depends on your terminal supporting the kitty graphics protocol
  • the mouse position will sometimes be slightly off, since claude code does not enable pixel coordinate mouse reporting
  • the plugin needs to make fetch requests to a local http server to communicate with the terminal-browser CLI, which may cause a prompt to show in your OS that your terminal wants to access the local network
  • claude code sets a very high min width for the chat area, so its sometimes not possible to resize the browser to the size you want
  • the plugin depends on the experimental function hooks claude code API, which is unstable, so the plugin may break between releases
查看原始來源 ↗

更多類似作品