2WeirDo / weirdo_terminal

一个 web 终端项目
https://weirdo-terminal.com
MIT License
11 stars 0 forks source link

Weirdo-terminal


简介

Weirdo-terminal 是一个富有趣味性的 web 终端。

在线体验地址 : https://www.weirdo-terminal.com/ (仅支持 PC 端)

比如请求知乎热榜信息

输入 hot zhihu

image-20231210182401750

比如更换主题色

输入 theme

image-20231210182518520

比如请求 gpt 服务 (访问不了gpt, 目前建议使用文心一言服务)

输入 gpt 

image-20231210182842178

请求文心一言模型

输入 bot 

image-20231214211826843

如果想查看更多命令的话, 可以输入 help 查看全局的指令 ~~


功能和特性

已支持命令

具体的使用就请小伙伴们自行摸索啦❤~~~


技术栈

前端

主要技术:

依赖库:

后端

主要技术:

依赖库:

依赖服务:


目录结构

接下来让我们快速开启项目吧~~


快速开始

  1. 将项目克隆到本地

     git clone https://github.com/2WeirDo/weirdo_terminal.git
  2. 进入项目目录,并分别安装前端与后端依赖

     cd weirdo_terminal && pnpm install
     cd scr/service && pnpm install
  3. server/src/config 中,新建config.js文件夹进行项目的配置

      export const redisConfig = {
        host: 'localhost',
        port: '6379',
        password: '123456',
        db: 2
      };
      export const dbConfig = {
        database: 'weirdo_terminal',
        username: 'root',
        password: '123456',
        host: 'localhost',
        port: 3306
      };
      export const baiduFanYiConfig = {
        appid: '',
        key: ''
      };
      export const gptConfig = {
        key: '',
        // baseUrl: ''
      };
  4. scr/plugins/myAxios 中, 修改 baseURL

     let baseURL = 'http://localhost:7345/api'; // 开发环境
  5. 运行前端

     pnpm run dev
  6. 运行后端

     cd server && pnpm start:dev
  7. 快速解锁命令用法 - 命令行中使用help命令查询使用方法

    # 查询全部命令帮助
    help
    
    # 查询具体命令帮助
    help baidu || help hot

AI 服务网络与配置问题检测

chatGPT

通过 testgpt,检测你能否顺利请求到 ChatGPTAPI, 确保你网络通畅 且 API Key可用

  1. 执行如下命令,进入 testgpt 文件夹,并安装依赖

    cd testgpt && pnpm install
  2. index.js 文件中配置你的 API Key

    注意 : 需要一个有额度的 API key 哦~~

    const api = new ChatGPTAPI({
       apiKey: ''
    })
  3. 运行 index.js 文件

    node index.js

若顺利输出内容,则说明 API Key 有效且网络可访问。


文心一言

通过 testBot , 检测是否能正确请求到文心一言的服务。

  1. 进入到testBot文件夹, 填写自己在官网获取到的 API_KEY 和 SECRET_KEY
const API_KEY = ''
const SECRET_KEY = ''
const ACCESS_TOKEN_URL = 'https://aip.baidubce.com/oauth/2.0/token'
  1. 在终端输入命令执行
node index.js

正确输出以下结果即证明你已经成功访问。

image-20231214212607670

项目细节

核心

系统分为 3 个核心模块,各模块职责分明:

前端架构图

image-20231210190541147


微终端

从 0 开始实现的 web 终端控制台,包含以下模块:


命令系统

一套独立于终端的命令解析执行引擎,包含以下模块:


命令集

一组可用命令的集合(类似插件),通过 TS 明确命令的定义,支持配置别名、选项、子命令等,便于开发者扩展和定制。

核心命令包括:


开发新命令

  1. 在 commands 下新建目录,目录名称为命令英文名称,所有该命令相关的代码都必须放在该目录中
  2. 编写命令定义文件 xxxCommand.ts(xxx 为命令英文名称),可以参考其他命令,如 music、goto 等
  3. 若命令包含子命令,需要将子命令相关文件放到 subCommands 目录中,可以参考 user 命令
  4. 在 commandRegister 的 commandList 中补充新命令

欢迎大家 star 呀 ~~ ⭐⭐