mcp server
prompt-spider-ui
原生 JavaScript + Canvas 2D 的机械蜘蛛可视化 UI。普通演示零依赖;可选 MCP 接入自己的 Agent,实时展示任务,支持三套布局、主题定制、JSON 回放与独立项目导出。 | Canvas spider UI with live Agent visualization via MCP.
Set up
Runs on your computer. Pick your agent and operating system.
This project does not publish an install method we can turn into a config. Follow the README instead.
README
synced Oct 21, 2026Prompt Spider UI~
一个用 原生 JavaScript + Canvas 2D 实现的动态提示词可视化界面:机械蜘蛛沿文字游走、伸出触手抓取词语,词条沿弧线飞入蛛网,再分流到 code、model 和 you 三条分支。
黑底、粉色扫描、高密度蛛丝、跳动核心,配合可拖动的时间轴和侧边控制抽屉。普通演示无需安装依赖、无需 API Key;连接自己的 Agent 后,也能用同一套效果实时展示任务,定制主题并导出个人项目。
快速开始
准备 Node.js 20 或更高版本和 Git,然后执行:
git clone https://github.com/Kirito14IT/prompt-spider-ui.git
cd prompt-spider-ui
npm start
浏览器打开 http://127.0.0.1:4317
终端出现本地地址后即可访问,按 Ctrl+C 停止服务。Windows 用户也可以双击 start.cmd。
普通 UI 没有第三方运行依赖,跳过 npm install 即可。MCP 接入需要单独安装子包依赖,见下文。推荐使用较新的 Chrome、Edge 或 Firefox;手机尺寸也有适配。服务默认只监听本机 127.0.0.1。
可以怎么玩
- 看完整动画:逐词扫描、弧形抓取、接触驻留、收臂、词条飞行、蛛网分流和双拍心跳。
- 控制播放:暂停、重播、0.5× / 1× / 2× / 4× 速度、循环播放,以及拖动时间轴跳到任意时刻。
- 查看词条:点击画布中的词条或决策流,自动展开右侧控制栏,查看问题、示意分数和分支。
- 试自己的提示词:展开右侧「控制」,选择「自己的提示词」,输入中文或英文,点击「扫描提示词」。
- 调整分流:拖动阈值,观察本地规则如何改变分支;点击
code、model、you筛选。 - 导出结果:点击「导出本次分流 JSON」,保存当前时间点的演示状态。
- 专注画面:放大画布或切换沉浸模式;控制抽屉覆盖在画布上,默认收起。
| 快捷键 | 功能 |
|---|---|
Space | 播放 / 暂停 |
R | 从头重播 |
F | 切换沉浸模式 |
Esc | 退出沉浸模式或收起控制栏 |
← / → | 后退 / 前进 0.5 秒 |
输入框聚焦时不会触发播放快捷键。系统开启「减少动态效果」时,页面默认暂停,并减少部分动态效果。
两种演示模式
参考演示保留预设的布局、轨迹和统计时间线,时长约 20.92 秒。拖动时间轴能够重复得到同一时刻的状态。末段显示 175 次分流:137 code / 27 model / 11 you。
自己的提示词使用本地关键词和规则生成示意分数。达到阈值的词进入 code,低于阈值进入 model;命中发布、购买、删除等批准相关规则的词优先进入 you。拖动分流阈值会切换为该模式。
以上两种本地模式是 UI 与动画演示:分数未经概率校准,model 和 you 是可视化分支,不会调用模型或执行批准。code 分支也不会执行生成的代码。这些演示的 JSON 导出保留 modelCalls: 0 和 executedActions: 0 等字段。画面中的模型名称是视觉标签。
连接自己的 Agent:MCP
MCP 让支持本地 stdio 的 Agent 调用这个 UI:创建会话 → 打开预览 → 上报任务步骤 → 调整外观 → 保存回放或导出项目。例如展示代码检查、资料整理或需要人工确认的工作流。Agent 自己负责实际任务,UI 展示它主动上报的信息,不会自动读取聊天、捕获隐藏推理或执行三条分支里的操作。
Agent 会话使用单独的实时界面和记录,不套用原参考演示的固定计数。当前上报接口支持步骤、分支、状态和可选分数,没有模型调用次数上报字段,因此调用次数显示为未提供。
1. 安装 MCP 依赖
在项目根目录执行一次:
npm --prefix mcp ci
MCP 使用官方 SDK 和 Zod,锁文件固定依赖版本。它本身不需要 API Key;你的 Agent 使用何种模型及凭据,由 Agent 自己配置。
2. 添加到你的 Agent
支持 mcpServers 配置的客户端可使用下面的 JSON。把示例路径换成你克隆项目的绝对路径:
{
"mcpServers": {
"prompt-spider": {
"command": "node",
"args": ["C:/projects/prompt-spider-ui/mcp/server.mjs"]
}
}
}
macOS / Linux 可改成 /home/yourname/projects/prompt-spider-ui/mcp/server.mjs。如果客户端找不到 node,将 command 改成 Node.js 可执行文件的绝对路径。不同客户端的配置文件位置不同,选择 stdio / 本地进程,不要把浏览器预览地址当作 MCP 服务地址。
Codex CLI 可直接注册:
codex mcp add prompt-spider -- node "C:/projects/prompt-spider-ui/mcp/server.mjs"
codex mcp list
或在 ~/.codex/config.toml 中添加:
[mcp_servers.prompt_spider]
command = "node"
args = ["C:/projects/prompt-spider-ui/mcp/server.mjs"]
两种方式选一种,保存后重新连接客户端。配置依据 Codex 官方 MCP 文档。启动命令直接调用 node,避免 npm run 的额外输出进入 stdio 协议。
3. 让 Agent 展示一次任务
配置成功后,把这段话发给自己的 Agent:
使用 Prompt Spider MCP 为这次任务创建会话,返回预览链接。按实际进度上报任务步骤,使用稳定 ID 更新状态,不编造分数。把规则处理归入 code,模型处理归入 model,需要人工确认的步骤归入 you。完成后保存 JSON 回放,并导出一份包含回放的独立 UI 项目。
也可以直接调用工具。下面是合成示例,只用于说明参数;把 SESSION_ID 换成创建结果的 id,打开返回的 previewUrl:
spider_create_session({"config":{"title":"我的 Agent 工作流","layout":"landscape","unit":"task"}})
spider_update_events({"sessionId":"SESSION_ID","events":[{"id":"check-1","label":"检查输入格式","route":"code","status":"completed"},{"id":"draft-1","label":"生成草稿","route":"model","status":"running"}]})
spider_update_events({"sessionId":"SESSION_ID","events":[{"id":"draft-1","status":"completed"},{"id":"review-1","label":"等待人工确认","route":"you","status":"pending"}]})
spider_complete_session({"sessionId":"SESSION_ID","status":"completed"})
spider_export_session({"sessionId":"SESSION_ID","filename":"my-session.json"})
spider_export_project({"sessionId":"SESSION_ID","name":"my-spider-ui","includeReplay":true,"includeMcp":true})
completed 表示结束本次展示,不等于人工已批准。需要等待批准的真实任务应在批准完成后再标记完成。工具返回的 path 是实际导出位置。
实时展示与定制
| 布局 | 画布尺寸 | 适合 |
|---|---|---|
portrait(默认) | 1080 × 1350 | 原版竖屏、展示录制 |
landscape | 1600 × 900 | 桌面演示、工作流面板 |
square | 1080 × 1080 | 方形展示、紧凑预览 |
在浏览器「布局与外观」中编辑,或使用 spider_configure_session 修改标题、模型标签、布局、三分支名称和配色,无需编辑绘制代码。提示词与数据单位在收到事件后锁定,需要更换时新建会话。内部分类仍为 code / model / you:
{
"sessionId": "SESSION_ID",
"config": {
"title": "我的资料助手",
"modelName": "My Agent",
"layout": "square",
"routes": {"you": {"label": "人工复核", "color": "#F0CA57"}},
"theme": {"accent": "#F34A87", "spider": "#42D6A4"}
}
}
实时模式默认跟随新事件;暂停或拖动时间轴只改变观看位置,后台仍接收数据。点击「返回实时」,或向 spider_control_playback 传入 command: {"action":"follow_live"} 追上进度。完成后可以循环回放;关闭会话才释放记录。缺失分数和预计总量保持“未提供”,不会补成虚构指标。同一事件 ID 更新状态,不重复累计;长会话按页查看。
外观变更随回放时间保存;回看更早时间会恢复当时样式,回到最新时间可查看新设置。
会话默认只保存在内存中,请在退出 Agent / MCP 之前主动导出。 每个进程最多 20 个会话,单会话最多 10,000 个事件、16 MiB 更新日志;超过限制会报错并保留已有记录。
导出的独立项目包含可编辑源码、主题配置、许可证及双语说明;进入返回的项目目录执行 npm start 即可运行。选择包含 MCP 后,再执行 npm --prefix mcp ci 就能接自己的 Agent。导出只创建新文件或目录,不覆盖已有项目;默认位置为 exports/,也可在 MCP 启动参数中设置 --export-root。源视频、原仓库 .git、已安装依赖、预览令牌和其他会话不包含在导出中。
随附回放会遵循 replay.json 中记录的历史外观。project-config.json 作为无回放界面及后续 MCP 新会话的默认配置;要让个人主题始终作为默认外观,可不附带回放导出、移除配置中的 replayFile,或创建新的 MCP 会话。只想调整当前回放,可用浏览器外观编辑;变更记在回放末尾,回看早期仍恢复原样式。
完整的 11 个工具、配置字段、逐词模式、回放导入、导出目录及故障排查见 MCP 接入指南。MCP 同时提供 spider://guide、spider://config、spider://replay-format 三个 resources,以及 spider_report_task prompt,供 Agent 自行读取接入约定。
项目结构
prompt-spider-ui/
├── app/
│ ├── index.html # 页面结构与控制面板
│ ├── style.css # 深色主题、抽屉和移动端布局
│ ├── main.js # 播放、输入、筛选、快捷键和导出
│ ├── renderer.js # Canvas 画面与命中检测
│ ├── spider.js # 蜘蛛身体、步态和心跳
│ ├── probes.js # 抓词触手:伸出、驻留、收回
│ ├── motion.js # 统计时间线、移动、曲线飞行和分流位置
│ ├── reference-track.js # 预设蜘蛛移动与文本滚动轨迹
│ ├── model.js # 分词、本地规则和确定性状态
│ ├── prompt.txt # 默认演示文本
│ └── favicon.svg
├── docs/
│ ├── preview.gif # 完整 UI 循环动画
│ ├── mcp.md # MCP 接入、事件、定制与导出指南
│ └── brand/ # Logo、SVG、PNG 和 favicon
├── lib/ # 主题配置、会话状态与确定性回放
├── mcp/ # 独立 MCP 子包、官方 SDK 与本地预览服务
├── exports/ # 主动导出的项目 / 会话(已忽略)
├── tests/*.test.mjs # Node.js 内置测试
├── server.mjs # Node.js 本地静态服务
├── start.cmd # Windows 启动入口
├── README.md # 默认中文文档
├── README.en.md # 英文文档
├── package.json
└── LICENSE
仓库包含 UI 代码、测试、说明、品牌资产和 GIF 预览。源 MP4、原片抽帧、研究记录和视频导出工具均未包含;
修改与复用
修改文件后刷新浏览器即可,无需打包:
- 换默认文字:编辑
app/prompt.txt。若希望文字与分流规则对应,使用「自己的提示词」模式;参考演示的统计锚点固定,不会随文本重新统计。 - 换配色:MCP 会话通过
spider_configure_session统一配置页面与 Canvas 主题;参考演示仍可编辑app/style.css的 CSS 变量及绘制模块中的画布颜色。 - 调整抓取动作:查看
app/probes.js中的PROBE_TIMING。 - 调整步态和心跳:编辑
app/spider.js。 - 修改分词或分流规则:编辑
app/model.js。
前端使用浏览器 ES modules,没有框架和构建步骤。请通过 HTTP 服务打开页面,直接双击 app/index.html 会因资源路径和模块加载限制而无法正常运行。
修改端口
Windows PowerShell:
$env:PORT = '4318'
npm start
macOS / Linux:
PORT=4318 npm start
随后访问 http://127.0.0.1:4318 。若提示端口被占用,关闭已有服务或改用其他端口。
Logo 与图标
标志把粉色代码核心与八条青绿色机械蛛腿组合起来,沿用界面配色。横版字标使用原生 SVG 路径,不依赖外部字体;独立图标及其 PNG 保留透明背景。
| 文件 | 用途 |
|---|---|
| logo.svg | 深色横版 Logo,README 顶部使用 |
| logo-light.svg | 浅色横版 Logo |
| icon.svg | 可编辑、可缩放的透明图标 |
| logo.png | 1440 × 320 的 PNG 字标 |
| icon-512.png | 512 × 512 的透明 PNG 图标 |
| favicon.ico | ICO 图标,用于浏览器或桌面快捷方式 |
| app/favicon.svg | 页面正在使用的浏览器标签图标 |
设计与复用说明见 品牌资产说明。这些项目品牌资产同样采用 MIT License,复用时保留许可证声明即可。
验证
npm test
使用 Node.js 内置测试运行器,不需额外测试库。测试覆盖预设统计时间线、阈值分流、中文与空白输入、任意跳转确定性、词条飞行、触手动作、步态和心跳。测试只验证演示逻辑与动画几何,不代表真实模型推理评测。
MCP 的协议与导出测试需要先安装 MCP 依赖:
npm --prefix mcp ci
npm --prefix mcp test
来源与许可证
本项目依据参考画面独立重建视觉和交互,使用原生 Canvas 2D 实现。预设轨迹和部分统计依据画面观察,逐词配对、分数和传播关系使用确定性重建。显示的 195 个总词与默认文本的实际分词数量可能不同,属于参考演示的固定口径。
相关逆向调查工具:REA。
本仓库代码以 MIT License 开源,可以学习、修改与复用,请保留许可证声明。许可证适用于本仓库发布的代码,不授予原参考作品的权利。