Giter Club home page Giter Club logo

gomoon's Introduction

Gomoon

Gomoon 是一款桌面端的大模型效率工具。

招募招募!

Gomoon 是一个开源项目,目前处于初始阶段,还有很多功能有待完善。如果你想一起把 Gomoon 做得更好,欢迎加入我们!

未来,Gomoon 还将实现炫酷的主题功能,更加自定义的 Prompt 模板功能,在线获取好用的助手和知识库功能,以及第三方接入和万能的插件...

如果你也想要参与进来,欢迎加入 Gomoon 开发群:758015092。

介绍

要使用 Gomoon,你只需要在 Gomoon 上配置好你的模型引擎,就可以快速让你的助手帮你回答问题,提高工作和学习效率。又或者...只是给你讲个笑话😋。

它同时支持:

  • 创建属于自己的助手,选择多种大模型引擎(支持实时切换)
  • 快速问答和连续的对话以及存取对话历史
  • 对话可以复制,暂停 ⏸,以及重新生成,方便你的使用。更厉害的是你还可以直接编辑答案,让后续的对话更加的智能
  • 快速唤起,快捷键,置顶等功能,例如你可以使用 Ctrl + G 快速唤起 Gomoon,双击复制(Command + C +C)快速问答
  • 发送文件,图片和URL解析,联网查询,朗读等快捷功能
  • 使用记忆胶囊储存你的本地知识库,更加安全可靠,最重要的是完全免费
  • 下载对话记录,助手一键导入导出, 把你觉得实用的助手分享给你的朋友
  • 划选一段文本,可以快速的在对话中进行查找和朗读

更多实用的功能可以询问 Gomoon 中自带的『Gomoon使用指南』 记忆胶囊来探索!

已支持的模型

模型类型 模型名称
ChatGPT 最新的 GPT3,GPT4,支持 GPT API 的自定义模型
文心 文心3.5,文心4.0,文心128k
千问 千问Turbo,千问Plus,千问Max
Gemini Gemini Pro
Kimi Kimi 8k,Kimi 32k,Kimi 128k
Llama node-llama-cpp 支持的所有模型
Ollama ollama 支持的所有模型

安装指南

官网下载地址

Tips:mac 用户由于没有上架 mac 应用市场,需要在『访达→应用』中找到 Gomoon 右键打开并二次确认才可以使用。『Command + C +C 双击复制』和『发送文件』功能需要用户允许 Gomoon 的权限请求,并且重启应用。

灵感来源

lucy

使用过很多大模型应用,但是他们总是局限于一个网页端,我想让他离我近一些,更好用一些。

寻找了很多应用,我还是没有找到适合自己的,于是我选择做一个。Gomoon 就诞生了。

Gomoon 的名字来源于 赛博朋克:边缘行者 的中 Lucy 的愿望:『去月球』。希望 Gomoon 能够帮助你去往那颗属于自己的月球。

交流

如果你有任何问题或者想交流一下使用体验,分享自己的助手,欢迎加入QQ群:758015092(后续 Gomoon 更新通知也会发布在群内)。

鸣谢

感谢以下开发者的支持:

贡献者 贡献内容
e9ab98e991ab 协助完成 mac 端 x86_64 架构的适配
zhengxs2018 支持通义千问模型

开发/贡献指南

项目本身还有很多新功能需要开发,非常欢迎大家加入项目组,一起来贡献代码。

node 版本要求:v20.11.1 及以上 (开启Corepack) yarn 版本要求:v3.2.0

由于仓库大小限制,默认的资源没有上传到 Github,开发者可以在本地安装的 Gomoon 中找到resources文件夹(mac用户可以通过 Finder,右键点击应用,选择“显示包内容”来浏览到Contents目录,resource文件夹存储于Contents/Resource/app.asar.unpacked/resources; windows系统中,这个路径通常是在用户数据资源内,例如 C:\Users\Lenovo\AppData\Local\Programs\gomoon\resources\app.asar.unpacked\resources),将里面的资源文件复制到项目根目录的resources文件夹中。

resources 文件夹结构如下:

resources/
├── assistants.json # 默认助手配置文件
├── eventTracker # 事件追踪文件,根据系统不同也可能为 `eventTracker.exe` 或者 `eventTracker-x86`
├── icon.png # 应用图标
├── [email protected] # 应用图标
├── lines.json # 默认标题栏配置文件
├── memories.json # 默认记忆文件
└── models # 模型配置文件
    └── Xenova
        └── jina-embeddings-v2-base-zh
            └── ....

同时也可以使用云盘下载

后续就可以正常启动项目进行开发了。

LLAMA 模型支持 CUDA(NVIDIA 显卡调用)

  1. 确保你的显卡支持 CUDA,并且已经安装了 CUDA 驱动和 CUDA Toolkit(版本12以上)
  2. 克隆该项目,获取 resource 文件,并放在项目根目录
  3. 在根目录执行 yarn(确保电脑已经安装 node 和 全局依赖 yarn),安装项目所需依赖
  4. 在根目录执行 npx --no node-llama-cpp download --cuda 安装 node-llama-cpp CUDA 支持依赖
  5. 如需修改显卡使用大小,可以修改src/lib/utils.tsChatLlamaCppgpuLayers参数
  6. 执行 yarn dev 测试效果没有问题后,执行 yarn build 打包项目,在 dist 目录可以看到 setup.exe 软件安装文件

gomoon's People

Contributors

wizardaei avatar zhengxs2018 avatar yuxuan avatar

Stargazers

 avatar WANG AOHAN avatar Pama1234 avatar zhengyong avatar  avatar rookie avatar  avatar winston avatar  avatar KarlGzz avatar Kai avatar  avatar Stong avatar ALLAPE avatar  avatar Tianyi Tao avatar Acring avatar  avatar  avatar  avatar Woodenman avatar  avatar JonathanFan_时运 avatar 空格不在 avatar CGDeer avatar  avatar Yanhua Zheng avatar Jeff.Zhao avatar  avatar onewin avatar Xiang Shi avatar  avatar  avatar  avatar  avatar lifenghua avatar  avatar  avatar RANDY_MOVIT avatar Memelin avatar glhxanthus avatar WisdomCore avatar EndZ avatar orgaworl avatar  avatar hello mars avatar xuecheng avatar  avatar  avatar  avatar  avatar Yihao Wang avatar  avatar  avatar liuandy avatar Neko avatar  avatar  avatar  avatar Aaron avatar Tomas Brunken avatar huang ruixi avatar  avatar unmy avatar  avatar Thelwall avatar Fireworks avatar xisoul avatar  avatar  avatar 丶暴君 avatar  TangXiao avatar Mirrorofsky avatar Khashz avatar  avatar  avatar  avatar  avatar smulet avatar Sea avatar  avatar  avatar  avatar  avatar kanjunzhe avatar  avatar  avatar Binary Shadow avatar  avatar Zein avatar Lines avatar Jason Li avatar  avatar  avatar Peng Ding avatar  avatar  avatar Felix JIA avatar onKotlin avatar xlb avatar

Watchers

 avatar  avatar kfeng1014 avatar

gomoon's Issues

默认安装位置

目前好像是默认安装C盘,可以在安装时修改安装位置吗?

提个建议

请问是否可以在手动复制内容时让对话界面跟着鼠标滚动呢?
目前的情况是复制时如果还想复制下面的内容的话就会直接给我全部选中了

bug和建议

v1.0.6bug:目前版本无法发送文件让ai进行解析
建议:建议可以在发送文件的同时输入文字说明,还有加一个文件拖拽窗口并弹窗是否要编写文字说明并发送此文件?或者是拖拽后直接放在输入框里,然后编辑文字发送

Prompt 模板最好能支持变量

比如百度的prompt如下:
现在你是一位精通{code}的资深IT研发工程师,你需要解答{problem}这个问题。注意你需要介绍问题所涉及的计算机原理并给出示例帮助我更清晰的理解这个问题。
模板ID:
pt-d1bfe25ca48d0511
场景类型:文生文
参数格式:大括号{}

一些功能建议!!!!!

  1. 希望可以加入 gemini 模型(因为免费),并且带自定义地址(可以通过反代突破地域限制)
  2. Mac 端希望可以把应用窗口添加到屏幕上方状态栏,使用更加快捷方便
    示例:
CleanShot.2024-03-10.at.12.53.55.mp4

[Bugs] ArchLinux下编译的一些问题

首先非常感谢开发了这个软件包!
从微信公众号上看到了这个项目,然后我搜索了一下ArchLinux的AUR,发现没有人移植,同时在官网也没有找到Linux版本的下载地址,于是我就准备自己编译一下,结果遇到了一堆问题,现将问题反馈如下:
1、 src/main/index.tsimport icon from '../../resources/icon.png?asset'src/min/windows.tsimport trayIcon from '../../resources/[email protected]?asset' 都指向了不存在的resources 目录,这个我通过如下命令解决了:

icotool -i 3 -x icons/icon.ico -o icons/icon.png
icotool -i 9 -x icons/icon.ico -o icons/[email protected]
cp -r icons resources

2、.npmrc建议修改为以下内容,这样在国内可以正常编译:

registry="https://registry.npmmirror.com/"
electron_mirror="https://registry.npmmirror.com/-/binary/electron/"
electron_builder_binaries_mirror="https://registry.npmmirror.com/-/binary/electron-builder-binaries/"

3、Linux下缺少很多node_modules,建议添加:

pnpm add node-fetch apache-arrow tslib flatbuffers "@neon-rs/load" "@lancedb/vectordb-linux-x64-gnu" axios form-data \
        proxy-from-env follow-redirects builder-util-runtime debug ms sax fs-extra universalify graceful-fs jsonfile \
        lazy-val semver lru-cache combined-stream delayed-stream js-yaml mime-types mime-db asynckit

都是我编译完成后运行软件,在终端报错缺少XXX模块,然后我逐一添加的。
4、建议将package.json"electron": "28.0.0", 改为 "electron": "^28.0.0", ,以使用最新版的Electron28,大版本中的小版本应该是可以向下兼容的,至少我目前移植的所有使用Electron开发的包都是这样的。
5、最终编译成功,但是运行时依然报错:

$ ../gomoon 
A JavaScript error occurred in the main process
Uncaught Exception:
TypeError: LRU is not a constructor
    at Object.<anonymous> (/home/zxp-endeavouros/.cache/paru/clone/gomoon-git/src/gomoon.git/dist/linux-unpacked/resources/app.asar/node_modules/semver/classes/range.js:202:15)
    at Module._compile (node:internal/modules/cjs/loader:1271:14)
    at Module._extensions..js (node:internal/modules/cjs/loader:1326:10)
    at Module.load (node:internal/modules/cjs/loader:1126:32)
    at Module._load (node:internal/modules/cjs/loader:967:12)
    at l._load (node:electron/js2c/asar_bundle:2:13642)
    at Module.require (node:internal/modules/cjs/loader:1150:19)
    at require (node:internal/modules/cjs/helpers:119:18)
    at Object.<anonymous> (/home/zxp-endeavouros/.cache/paru/clone/gomoon-git/src/gomoon.git/dist/linux-unpacked/resources/app.asar/node_modules/semver/classes/comparator.js:141:15)
    at Module._compile (node:internal/modules/cjs/loader:1271:14)

我本人不是程序员,也不知道该如何解决~
附上AUR代码(剥离了编译后的Electron28,直接使用系统自带的,减小软件体积):
PKGBUILD

# Maintainer: zxp19821005 <zxp19821005 at 163 dot com>
pkgname=gomoon-git
_pkgname=Gomoon
pkgver=1.0.5.r124.gcc53874
_electronversion=28
_nodeversion=18
pkgrel=1
pkgdesc="An ai tools for everyone.一款桌面端的大模型效率工具."
arch=('x86_64')
url="https://gomoon.top/"
_ghurl="https://github.com/wizardAEI/Gomoon"
license=('Apache-2.0')
conflicts=("${pkgname%-git}")
provides=("${pkgname%-git}=${pkgver%.r*}")
depends=(
    "electron${_electronversion}"
)
makedepends=(
    'gendesk'
    'nvm'
    'npm'
    'pnpm'
    'git'
    'icoutils'
    'curl'
)
source=(
    "${pkgname//-/.}::git+${_ghurl}.git"
    "${pkgname%-git}.sh"
)
sha256sums=('SKIP'
            'dc0c5ca385ad81a08315a91655c7c064b5bf110eada55e61265633ae198b39f8')
pkgver() {
    cd "${srcdir}/${pkgname//-/.}"
    git describe --long --tags --exclude='*[a-z][a-z]*' | sed -E 's/^v//;s/([^-]*-g)/r\1/;s/-/./g'
}
_ensure_local_nvm() {
    export NVM_DIR="${srcdir}/.nvm"
    source /usr/share/nvm/init-nvm.sh || [[ $? != 1 ]]
    nvm install "${_nodeversion}"
    nvm use "${_nodeversion}"
}
build() {
    sed -e "s|@electronversion@|${_electronversion}|" \
        -e "s|@appname@|${pkgname%-git}|g" \
        -e "s|@runname@|app.asar|g" \
        -e "s|@options@||g" \
        -i "${srcdir}/${pkgname%-git}.sh"
    _ensure_local_nvm
    gendesk -f -n -q --categories="Development" --name="${_pkgname}" --exec="${pkgname%-git} %U"
    cd "${srcdir}/${pkgname//-/.}"
    export npm_config_build_from_source=true
    export ELECTRON_SKIP_BINARY_DOWNLOAD=1
    export SYSTEM_ELECTRON_VERSION="$(electron${_electronversion} -v | sed 's/v//g')"
    export npm_config_target="${SYSTEM_ELECTRON_VERSION}"
    export ELECTRONVERSION="${_electronversion}"
    export npm_config_disturl=https://electronjs.org/headers
    HOME="${srcdir}/.electron-gyp"
    pnpm config set store-dir "${srcdir}/.pnpm_store"
    pnpm config set cache-dir "${srcdir}/.pnpm_cache"
    pnpm config set link-workspace-packages true
    if [ `curl -s ipinfo.io/country | grep CN | wc -l ` -ge 1 ];then
        echo > .npmrc
        echo 'registry="https://registry.npmmirror.com/"' >> .npmrc
        echo 'electron_mirror="https://registry.npmmirror.com/-/binary/electron/"' >> .npmrc
        echo 'electron_builder_binaries_mirror="https://registry.npmmirror.com/-/binary/electron-builder-binaries/"' >> .npmrc
    else
        echo "Your network is OK."
    fi
    sed "s|--linux|--dir|g" -i package.json
    icotool -i 3 -x icons/icon.ico -o icons/icon.png
    icotool -i 9 -x icons/icon.ico -o icons/[email protected]
    cp -r icons resources
    pnpm install
    pnpm add node-fetch apache-arrow tslib flatbuffers "@neon-rs/load" "@lancedb/vectordb-linux-x64-gnu" axios form-data \
        proxy-from-env follow-redirects builder-util-runtime debug ms sax fs-extra universalify graceful-fs jsonfile \
        lazy-val semver lru-cache combined-stream delayed-stream js-yaml mime-types mime-db asynckit
    pnpm run build:linux
}
package() {
    install -Dm755 "${srcdir}/${pkgname%-git}.sh" "${pkgdir}/usr/bin/${pkgname%-git}"
    install -Dm644 "${srcdir}/${pkgname//-/.}/dist/linux-"*/resources/app.asar -t "${pkgdir}/usr/lib/${pkgname%-git}"
    install -Dm644 "${srcdir}/${pkgname%-git}.desktop" -t "${pkgdir}/usr/share/applications"
    install -Dm644 "${srcdir}/${pkgname//-/.}/icons/icon.png" "${pkgdir}/usr/share/pixmaps/${pkgname%-git}.png"
}

gomoon.sh

#!/bin/bash
set -e
_APPDIR="/usr/lib/@appname@"
_RUNNAME="${_APPDIR}/@runname@"
_OPTIONS="@options@"
export PATH="${_APPDIR}:${PATH}"
export LD_LIBRARY_PATH="${_APPDIR}/swiftshader:${_APPDIR}/lib:${LD_LIBRARY_PATH}"
export ELECTRON_IS_DEV=0
export ELECTRON_FORCE_IS_PACKAGED=true
export NODE_ENV=production
cd "${_APPDIR}"
if [[ $EUID -ne 0 ]] || [[ $ELECTRON_RUN_AS_NODE ]]; then
    exec electron@electronversion@ "${_RUNNAME}" "${_OPTIONS}" "$@" || exit $?
else
    exec electron@electronversion@ "${_RUNNAME}" "${_OPTIONS}" --no-sandbox "$@" || exit $?
fi

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.