Show HN:Panel——Agent 可自行构建 Pane 的研究工作区
英文标题:🔶 Show HN: Panel – A research workspace where the agent can build its own panes
Panel 是一款面向研究工作的本地工作区,将聊天、文件、PDF 和 Jupyter notebooks 整合到同一界面中,并允许 Agent 在内置 Pane 无法满足需求时创建自定义查看器和应用。项目目前处于早期测试阶段,完整功能主要支持 Claude Code;配置 OpenAI API Key 后可用于聊天和工具,但尚不能运行文献综述或 hypothesis Modules。Panel 提供可共享编辑的真实 Notebook 内核、后台长任务、工作区布局保存,以及带有输入、输出和中间状态类型定义的 Modules。其设计重点是降低研究人员在不同文件类型和工具之间切换的成本,并让人类与 Agent 更容易构建可视化 Pane 和下游自动化模块。
764.1 KB
86.2 KB
中文
一个让 Agent 与你并肩工作的研究工作区:将聊天、文件、PDF 和 notebooks 集成于同一停靠界面;必要时,Agent 还能创建自定义查看器和应用。
这是面向测试者的早期版本。请预期会有一些不完善之处,欢迎提交问题。
-
Node 22.18 或更高版本(或 24.12 或更高版本)
-
uv,它会自行获取所需的 Python(3.12 或更高版本)
-
Claude Code,完成安装并登录:请至少运行一次
claude并登录。Agent 和文献综述均通过它运行。pnpm install uv sync pnpm start
然后打开 http://localhost:4173。pnpm start 会先构建应用,因此首次启动需要一分钟。使用 Ctrl-C 可停止它启动的全部进程。
~/Panel/panel.db保存你的对话以及 Agent 执行过的所有操作。~/Panel/workspaces是新建 Workspace 的位置,除非你选择了其他文件夹。
两者都位于此文件夹之外,因此删除或重新克隆仓库后,它们仍会被保留。
-
与能够读写文件、且会在运行工具前征求确认的 Agent 聊天。
-
Workspaces:Agent 工作的文件夹,拥有各自的聊天记录和已保存的布局。
-
用于文件、PDF、Markdown 和 Jupyter notebooks 的 Pane。Notebooks 使用真实内核运行,你和 Agent 可以编辑同一个 Notebook。
-
可在后台运行的长时间命令,你可以查看其状态并将其停止。
-
当你要求查看内置 Pane 无法展示的内容时,Agent 会为你编写 Pane。
-
文献综述:在聊天中提出请求,然后从工具卡片中打开结果。
-
目前仅完整支持 Claude Code。
-
Modules 只能通过向聊天发出请求来启动,没有用于启动它们的按钮。
-
hypothesis Modules 没有自己的视图,因此其结果可能难以阅读。
-
Modules 尚不能与 OpenAI API 配合使用。
OpenAI Key(可选)
将 apps/server/.env.example 复制为 apps/server/.env,并设置 OPENAI_API_KEY。这会在 Agent 选择器中加入“OpenAI API”,可用于聊天和工具。
它不能运行文献综述或 hypothesis Modules:这些功能需要能够搜索网络的 Agent,而目前只有 Claude Code 可以做到。若未设置 Key,选择器会显示 OpenAI 尚未配置;这是正常现象。
- “Panel 无法连接其服务器。” 服务器端没有运行。检查运行
pnpm start的终端,然后点击 Retry。 - 某个 Agent 显示为未配置。 原因会写在消息框下方。
- 某个端口已被占用,或应用有响应却始终无法加载:运行
pnpm dev:doctor。它会说明每个端口被什么进程占用,以及如何释放端口。
该 UI 包含多个可配置窗口,称为 Pane,可展示从图像文件、数据文件、代码到聊天会话等各种内容。这对于经常需要在不同类型文件之间切换上下文的研究人员至关重要。
系统为常见使用场景提供了一组默认 Pane。但人类和 Agent 也可以添加自定义 Pane,例如 PDB 查看器或 SQLite 可视化工具。
Modules 与 Skills 类似,但额外提供了支持模块间工作流及与工作区集成的定义。
具体来说,Modules 为输入、输出和中间状态提供了类型化定义。
输入和输出不难理解。中间状态是指提供可观测性的对象,例如 Agentic Module 的 Chain-of-Thought(思维链)或草稿板;它们也可以是多阶段 Module 的中间输出。对于需要透明度的流程,或应展示进度的长时间运行任务而言,这些信息尤为重要。
这些类型化定义能够支持运行时验证,并使人类和 Agent 更容易为下游任务开发自定义 Modules,以及为可视化开发 Pane。
数据抽象层(DAL)负责连接内存对象和文件系统对象。DAL 可将 URI 映射到内存存储或本地文件,因此 Module 只需关注对对象本身的操作。
English / 原文
A research workspace where the agent works beside you: chat, files, PDFs and notebooks in one dock, and the agent can also create custom viewers and apps when necessary
This is an early build for testers. Expect rough edges, and feel free to raise issues.
-
Node 22.18 or newer (or 24.12 and newer)
-
uv, which fetches the Python it needs (3.12 or newer) by itself
-
Claude Code, installed and signed in: run
claudeonce and log in. The agent and the literature review run through it.pnpm install uv sync pnpm start
Then open http://localhost:4173. pnpm start builds the app first, so the first start takes a minute. Ctrl-C stops everything it started.
~/Panel/panel.dbholds your conversations and everything the agents did.~/Panel/workspacesis where new Workspaces are created, unless you pick another folder.
Both are outside this folder, so deleting or re-cloning the repo keeps them.
-
Chatting with an agent that can read and write files, and asks before running a tool.
-
Workspaces: a folder the agent works in, with its own chats and saved layout.
-
Panes for files, PDFs, markdown and Jupyter notebooks. Notebooks run against a real kernel, and you and the agent can edit the same one.
-
Long-running commands in the background, which you can watch and stop.
-
Panes the agent writes for you when you ask to see something a built-in Pane cannot show.
-
A literature review: ask the chat for one, and open its result from the tool card.
-
Currently only has full support for Claude Code.
-
Modules start only by asking the chat. There is no button to launch one.
-
The hypothesis Modules have no view of their own, so their results can be hard to read.
-
Modules don't work with OpenAI API yet.
The OpenAI key (optional)
Copy apps/server/.env.example to apps/server/.env and set OPENAI_API_KEY. This adds "OpenAI API" to the agent picker, for chat and tools.
It does not run literature reviews or the hypothesis Modules: those need an agent that can search the web, and today only Claude Code can. Without a key, the picker shows OpenAI as not set up, which is expected.
- "Panel couldn't reach its server." The server half is not running. Check the terminal
pnpm startis in, then press Retry. - An agent shows as not set up. The reason is written under the message box.
- A port is already in use , or the app answers but never loads: run
pnpm dev:doctor. It says what is holding each port and how to clear it.
The UI has multiple configurable windows, called Panes, that can display things ranging from image files, data files, code, as well as chat sessions. This is critical for researchers who often have to context switch between different types of files.
A default set of Panes are provided for common use cases. But custom Panes can also be added by humans and agents, such as a PDB viewer or SQLite visualizer.
Modules are similar to Skills but with additional definitions to support inter-module workflows and integration with the workspace.
Specifically, Modules have typed definitions for Inputs, Outputs, and Intermediates.
Inputs and Outputs are straightforward. Intermediates refer to objects that provide observability, such as the Chain-of-Thought or scratchpad for an agentic Module, or may be intermediate outputs in a multi-stage Module. These are especially important for processes that need transparency or long-running jobs that should show progress.
Having typed definitions for these enable validation at runtime and make it easier for humans and agents to develop custom Modules for downstream tasks and Panes for visualizations.
A data abstraction layer (DAL) bridges in-memory and filesystem objects. A DAL helps to map a URI to either an in-memory store or a local file, so that the Module just has to concern itself with the manipulation of the object.
