Gemini CLI 里玩“套娃” ?在终端里手搓一个“终端”,简直以假乱真!

我蹦出一个想法,能不能在 Gemini CLI 的终端里 “造” 一个终端出来?

文章集更新 · 2025-11-224 min read
大家好!我是瓜哥,前互联网技术总监,现在AI编程这条路上持续探索和分享。

Gemini 3 来了,现有多个入口可以使用和感受它强大的能力!

这几天高强度用 Gemini 3 的过程里,我蹦出一个想法,能不能在 Gemini CLI 的终端里 “造” 一个终端出来。

于是,说干就干...

01 调研可行性

我先找 Gemini 网页版 讨论了下可行性。这实际上是一个非常适合展示Gemini 前端技术能力的经典项目—— Web Terminal(网页终端模拟器)。

浏览器(Chrome/Safari)出于安全考虑,禁止网页直接访问用户的本地系统底层。

所以,我们并不能真的通过 HTML/JS 直接运行系统的ifconfig 来看网卡信息,或者用真正的 ping 去发 ICMP 数据包。

我们能做的是: 全真模拟一个操作系统的终端出来!

02 打磨提示词

可行性已确定,紧接着跟Gemini几轮的提示词沟通优化,很愉快的输出了结果。

Gemini 建议使用英文提示词,对大模型来说理解需求会更准确些。

Role: Senior Frontend Developer Task: Create a single-file HTML/CSS/JS application that simulates a MacOS Terminal (CLI). Tech Stack: Vanilla HTML, CSS, JavaScript (No external libraries). 1. Visual Design (CSS): Theme: MacOS Dark Mode (Black background #1e1e1e, Text #f0f0f0). Font: Monospace font (Menlo, Monaco, or Courier New). Layout: Full-screen or centered window with standard MacOS traffic light buttons (Red/Yellow/Green) at the top left. Cursor: A blinking block cursor at the end of the input line. 2. Core Functionality (JavaScript): Virtual File System (VFS): Use a JSON object to simulate a directory structure (e.g., ~, ~/projects, ~/documents). Command Parser: Parse user input on Enter key. Auto-scroll: Always scroll to the bottom when new output is added. 3. Supported Commands (Simulation): help: List all available commands. clear: Clear the terminal screen. ls: List contents of the current directory from the VFS. cd [dir]: Change current directory (support .. to go back). pwd: Show current working directory. whoami: Return "guest" or a custom user name. cat [file]: Display content of a simulated text file. Network Simulation: ping [host]: Simulate network latency with setTimeout loop (3-4 lines of output). ifconfig: Display a fake static network configuration (en0, inet 192.168.1.x). nslookup [domain]: Return a fake IP address resolution. 4. Constraints: Code must be contained in a single index.html file. Handle basic error messages (e.g., "command not found", "no such directory").

code

03 进入开发

把英文提示词丢到Gemini CLI里去执行

执行速度很快,耗时 3 分钟。开发完成后并自动启动了服务

04 测试体验

回到浏览器,输入 http://localhost:3000/

哇,效果很惊艳啊!既有虚化的桌面背景,同时终端窗口已经打开,还有待输入的闪烁光标。

常用的pwdlscdcat 等命令都可以正常执行,效果最好的是ping的数据包返回效果,简直以假乱真啊。

05 实现细节

  1. 实现全真模拟

通过前端模拟一个 MacOS 下终端应用,用一个轻量的网页直接来展示和体验。

模拟文件系统: 在 JS 里定义一个 JSON 对象当作“硬盘”,ls 就读取这个 JSONcd 就在 JSON 节点间穿梭。

模拟网络命令: ping google.com 不是真去 ping,而是用 JS 定时器输出模拟的延迟数据。

最终的效果太像一个真正的终端了,非常的惊艳。

  1. 开发与架构设计

为了让这个 “Mac 终端” 逼真,设计上有以下考量:

A. 视觉还原 (UI/UX)

配色: 经典的黑底白字(或黑客绿),半透明背景。

字体: 必须是等宽字体,如 MenloMonaco, 或 Fira Code

光标: 闪烁的块状光标 (| 或 ■)。

提示符: 模拟 Mac 的提示符,如 user@MacBook-Pro ~ %

B. 构建核心功能逻

解析器 : 把用户输入的字符串拆分成 命令 + 参数。

虚拟文件系统 : 用 JSON 树结构模拟目录。

JavaScript const vfs = {   "home": {     "user": {       "projects": { "readme.txt": "Hello World" },       "photos": {}     }   } };

C. 命令处理器 :

ls: 遍历当前 VFS 节点的 key

cd: 修改当前路径变量。

clear: 清空屏幕 DOM

echo: 输出文本。

D. 命令执行模拟:

ping / nslookup,使用 setTimeout 模拟网络延迟,随机生成看起来很真的 IP 地址和毫秒数。

06 小结

虽然大家都在说 Gemini 3 的前端开发能力爆表,我自己上手做了这个小应用后,我的结论四个字:名不虚传!

如何发挥更大的价值?还得结合到自身日常的工作和生活里,借助Gemini 3强大的前端开发能力,把很多以前很难解释的事,都可以快速通过可视化的方式去优化。

每挖到 AI 新的落地价值,又是美好的一天!

评论区

暂无公开评论

还没有公开评论。

提交反馈

图文Gemini CLI 里玩“套娃” ?在终端里手搓一个“终端”,简直以假乱真!

反馈类型

请等待管理员审核,通过后将显示在评论区。

0 / 500