标签 Docker部署 下的文章

花费了半年时间开发的 AI 量化平台正式开源了,采用了 Apache2.0 协议,可商用。
全平台支持、美股、A 股、港股、加密、外汇、期货
TV 的平替,能够 AI 写策略、运行指标到 K 线。同时支持多用户版本,本地 Docker 一键部署
Dome 演示地址:https://ai.quantdinger.com
github 地址:GitHub - brokermr810/QuantDinger: AI-driven, local-first quantitative trading platform for research, backtesting and live execution. Python-native, privacy-first, open source.
如果觉得好用,请大佬赏赐一个 star, 您的支持是我们进步的动力。同时招募志同道合的项目管理员,管理仓库,共建开源社区!


📌 转载信息
转载时间:
2026/1/24 06:46:07

Go-WXPush - 微信消息推送服务 (基于 golang)

这是一个基于 golang 开发的微信测试公众号模板消息推送服务。它提供了一个简单的 API 接口,让您可以轻松地通过 HTTP 请求将消息推送到指定的微信用户。 github 地址 https://github.com/hezhizheng/go-wxpush

✨ 特性

✅ 完全免费,下载即使用
✅ 支持 Docker 一键部署(镜像容器大小仅 2MB)
✅ 每天 10 万次额度,个人用不完
✅ 真正的微信原生弹窗 + 声音提醒
✅ 支持多用户
✅ 提供免费服务 https://push.hzz.cool (请勿滥用)
✅ 跳转稳定,自带消息详情页面 (默认使用 https://push.hzz.cool/detail , 可自己部署后使用参数替换)

⚠️ 部署条件 (具体可查看 github )

🚀 部署指南

下载编译好的文件启动

  • 启动参数
    • 命令行启动参数(可不加,启动之后直接在 url 上拼接参数也可) ./go-wxpush_windows_amd64.exe -port "5566" -title "测试标题" -content "测试内容" -appid "xxx" -secret "xxx" -userid "xxx-k08" -template_id "xxx-Ks_PwGm--GSzllU" -base_url "https://push.hzz.cool"
    • url 请求参数(get) 与命令行参数名称一致 /wxsend?appid=xxx&secret=xxx&userid=xxx-k08&template_id=xxx-Ks_PwGm--GSzllU&base_url=https://push.hzz.cool&content=保持微笑,代码无 bug!

自行编译可执行文件(跨平台)

复制
# 用法参考 https://github.com/mitchellh/gox
# 生成文件可直接执行 
gox -osarch="windows/amd64" -ldflags "-s -w" -gcflags="all=-trimpath=${PWD}" -asmflags="all=-trimpath=${PWD}"
gox -osarch="darwin/amd64" -ldflags "-s -w" -gcflags="all=-trimpath=${PWD}" -asmflags="all=-trimpath=${PWD}"
gox -osarch="linux/amd64" -ldflags "-s -w" -gcflags="all=-trimpath=${PWD}" -asmflags="all=-trimpath=${PWD}"
gox -osarch="linux/arm64" -ldflags "-s -w" -gcflags="all=-trimpath=${PWD}" -asmflags="all=-trimpath=${PWD}"

🐳 Docker 启动

  • 将编译好的文件放在与 Dockerfile 同目录
  • 构建镜像
复制
docker build -t go-wxpush:v2 .
  • 启动镜像,参数与命令行保持一致
复制
docker run -d -p 5566:5566 --name go-wxpush0 go-wxpush:v2 \
-port "5566" \
-title "测试标题" \
-content "测试内容" \
-appid "xxx" \
-secret "xxx" \
-userid "xxx-k08" \
-template_id "xxx-Ks_PwGm--GSzllU"

🐳 Docker 一键部署

复制
# 重新部署请先拉一遍最新的镜像
docker pull hezhizheng/go-wxpush:v4
# 参数格式与终端启动保持一致, 替换成实际值即可
docker run -it -d -p 5566:5566 --init --name go-wxpush4 hezhizheng/go-wxpush:v4 \
-port "5566" \
-title "测试标题 5566" \
-content "测试内容 5566" \
-appid "xxx" \
-secret "xxx" \
-userid "xxx-k08" \
-template_id "xxx-Ks_PwGm--GSzllU" \
-tz "Asia/Shanghai"

⚙️ API 使用方法

服务部署成功后,您可以通过构造 URL 发起 GET 请求来推送消息。

请求地址

复制
http://127.0.0.1:5566/wxsend

请求参数

参数名类型是否必填描述
portString指定启动端口(仅针对命令行)
titleString消息的标题。
contentString消息的具体内容。
appidString临时覆盖默认的微信 AppID。
secretString临时覆盖默认的微信 AppSecret。
useridString临时覆盖默认的接收用户 OpenID。
template_idString临时覆盖默认的模板消息 ID。
base_urlString临时覆盖默认的跳转 URL。
tzString时区(默认东八区)

使用示例

基础推送

向默认配置的所有用户推送一条消息:

复制
http://127.0.0.1:5566/wxsend?title=服务器通知&content=服务已于北京时间%2022:00%20 重启

临时覆盖用户

向一个临时指定的用户推送消息:

复制
http://127.0.0.1:5566/wxsend?title=私人提醒&content=记得带钥匙&userid=temporary_openid_here

Webhook / POST 请求

除了 GET 请求,服务也支持 POST 方法,更适合用于自动化的 Webhook 集成。

请求地址

复制
http://127.0.0.1:5566/wxsend

请求方法

复制
POST

请求头 (Headers)

复制
{
  "Content-Type": "application/json"
}

请求体 (Body)

请求体需要是一个 JSON 对象,包含与 GET 请求相同的参数。

复制
{
  "title": "Webhook 通知",
  "content": "这是一个通过 POST 请求发送的 Webhook 消息。"
}

使用示例 (cURL)

复制
curl --location --request POST 'http://127.0.0.1:5566/wxsend' \
--data-raw '{
    "title": "来自 cURL 的消息",
    "content": "自动化任务已完成。"
  }'

成功响应

如果消息成功发送给至少一个用户,服务会返回 "errcode": 0 状态码。

失败响应

如果发生错误(如 token 错误、缺少参数、微信接口调用失败等),服务会返回相应的状态码和错误信息。

Go-WXPush - 微信消息推送服务 (基于 golang)

这是一个基于 golang 开发的微信测试公众号模板消息推送服务。它提供了一个简单的 API 接口,让您可以轻松地通过 HTTP 请求将消息推送到指定的微信用户。 github 地址 https://github.com/hezhizheng/go-wxpush

✨ 特性

✅ 完全免费,下载即使用
✅ 支持 Docker 一键部署(镜像容器大小仅 2MB)
✅ 每天 10 万次额度,个人用不完
✅ 真正的微信原生弹窗 + 声音提醒
✅ 支持多用户
✅ 提供免费服务 https://push.hzz.cool (请勿滥用)
✅ 跳转稳定,自带消息详情页面 (默认使用 https://push.hzz.cool/detail , 可自己部署后使用参数替换)

⚠️ 部署条件 (具体可查看 github )

🚀 部署指南

下载编译好的文件启动

  • 启动参数
    • 命令行启动参数(可不加,启动之后直接在 url 上拼接参数也可) ./go-wxpush_windows_amd64.exe -port "5566" -title "测试标题" -content "测试内容" -appid "xxx" -secret "xxx" -userid "xxx-k08" -template_id "xxx-Ks_PwGm--GSzllU" -base_url "https://push.hzz.cool"
    • url 请求参数(get) 与命令行参数名称一致 /wxsend?appid=xxx&secret=xxx&userid=xxx-k08&template_id=xxx-Ks_PwGm--GSzllU&base_url=https://push.hzz.cool&content=保持微笑,代码无 bug!

自行编译可执行文件(跨平台)

复制
# 用法参考 https://github.com/mitchellh/gox
# 生成文件可直接执行 
gox -osarch="windows/amd64" -ldflags "-s -w" -gcflags="all=-trimpath=${PWD}" -asmflags="all=-trimpath=${PWD}"
gox -osarch="darwin/amd64" -ldflags "-s -w" -gcflags="all=-trimpath=${PWD}" -asmflags="all=-trimpath=${PWD}"
gox -osarch="linux/amd64" -ldflags "-s -w" -gcflags="all=-trimpath=${PWD}" -asmflags="all=-trimpath=${PWD}"
gox -osarch="linux/arm64" -ldflags "-s -w" -gcflags="all=-trimpath=${PWD}" -asmflags="all=-trimpath=${PWD}"

🐳 Docker 启动

  • 将编译好的文件放在与 Dockerfile 同目录
  • 构建镜像
复制
docker build -t go-wxpush:v2 .
  • 启动镜像,参数与命令行保持一致
复制
docker run -d -p 5566:5566 --name go-wxpush0 go-wxpush:v2 \
-port "5566" \
-title "测试标题" \
-content "测试内容" \
-appid "xxx" \
-secret "xxx" \
-userid "xxx-k08" \
-template_id "xxx-Ks_PwGm--GSzllU"

🐳 Docker 一键部署

复制
# 重新部署请先拉一遍最新的镜像
docker pull hezhizheng/go-wxpush:v4
# 参数格式与终端启动保持一致, 替换成实际值即可
docker run -it -d -p 5566:5566 --init --name go-wxpush4 hezhizheng/go-wxpush:v4 \
-port "5566" \
-title "测试标题 5566" \
-content "测试内容 5566" \
-appid "xxx" \
-secret "xxx" \
-userid "xxx-k08" \
-template_id "xxx-Ks_PwGm--GSzllU" \
-tz "Asia/Shanghai"

⚙️ API 使用方法

服务部署成功后,您可以通过构造 URL 发起 GET 请求来推送消息。

请求地址

复制
http://127.0.0.1:5566/wxsend

请求参数

参数名类型是否必填描述
portString指定启动端口(仅针对命令行)
titleString消息的标题。
contentString消息的具体内容。
appidString临时覆盖默认的微信 AppID。
secretString临时覆盖默认的微信 AppSecret。
useridString临时覆盖默认的接收用户 OpenID。
template_idString临时覆盖默认的模板消息 ID。
base_urlString临时覆盖默认的跳转 URL。
tzString时区(默认东八区)

使用示例

基础推送

向默认配置的所有用户推送一条消息:

复制
http://127.0.0.1:5566/wxsend?title=服务器通知&content=服务已于北京时间%2022:00%20 重启

临时覆盖用户

向一个临时指定的用户推送消息:

复制
http://127.0.0.1:5566/wxsend?title=私人提醒&content=记得带钥匙&userid=temporary_openid_here

Webhook / POST 请求

除了 GET 请求,服务也支持 POST 方法,更适合用于自动化的 Webhook 集成。

请求地址

复制
http://127.0.0.1:5566/wxsend

请求方法

复制
POST

请求头 (Headers)

复制
{
  "Content-Type": "application/json"
}

请求体 (Body)

请求体需要是一个 JSON 对象,包含与 GET 请求相同的参数。

复制
{
  "title": "Webhook 通知",
  "content": "这是一个通过 POST 请求发送的 Webhook 消息。"
}

使用示例 (cURL)

复制
curl --location --request POST 'http://127.0.0.1:5566/wxsend' \
--data-raw '{
    "title": "来自 cURL 的消息",
    "content": "自动化任务已完成。"
  }'

成功响应

如果消息成功发送给至少一个用户,服务会返回 "errcode": 0 状态码。

失败响应

如果发生错误(如 token 错误、缺少参数、微信接口调用失败等),服务会返回相应的状态码和错误信息。

今天在看一个 pdf 文档,但是原文档没有目录,导致跳转比较麻烦。搜了下,好像没有比较方便快捷的工具可以加目录的,就动手写了个。

核心特性

  • 智能目录提取:内置高精度算法,一键扫描文档前 50 页并自动识别潜在层级结构。
  • 自由拖拽排序:支持通过手柄直接拖拽调整目录顺序,所见即所得。
  • 多层级支持:支持三级目录结构(章、节、点),轻松应对复杂文档。
  • 页码偏置修正:自适应纸质页码与电子页码的偏差,确保跳转精准无误。
  • 本地化存储:尊重隐私,文件处理完成后自动清理服务器残留。

Docker 部署

  1. 拉取镜像

docker pull ghcr.io/jiangnan1224/pdf-toc-editor:latest

  1. 运行容器

docker run -d -p 5000:5000 --name pdf-toc-editor ghcr.io/jiangnan1224/pdf-toc-editor:latest

应用截图


体验地址

开源地址


📌 转载信息
转载时间:
2026/1/19 18:35:52

使用 Cliproxy,Donehub, Antigravity Tools 反代出来的 api 生图是不能联网的。
使用 gemini-business2api 的生图,Nano banana 可以联网检索。不过默认没有 4k,看哪位大佬搞下。

设置如下,使用的是 url,cherry studio 里边给出的链接,就可以打开图片。联网是可以选择的。

2api 的设置如下

gemini-business2api 项目见链接

使用的 linux docker 安装,opus 给的一个一键教程代码。


📌 转载信息
原作者:
synbio
转载时间:
2026/1/19 18:30:11

前言

最近在优化网站访问链路的过程中,部署了一套 WAF 防火墙,它大部分功能都做的挺好,美中不足的地方就是针对于网站访客的相关功能需要付费( 3600 元/年)才能用。

付费是不可能付费的,找了一圈 nginx 日志分析的开源项目,大部分都做的挺简陋的,要么就是做的很重,需要部署其他服务。

既然找不到合适的,那就自己动手写一个吧!

如果看不到图片的话,直接访问我个人网站上发布的。https://www.kaisir.cn/post/186

实现效果

做了 4 个模块对日志数据进行分析。

  • 访问概况
  • 数据日报
  • 实时访问
  • 访问明细

image-20260108124900609

访问概况

概况模块中,做了 8 个维度的数据分析。

核心指标

在这个维度中,针对 http 状态码、浏览量、访客数、会话数做了更细致的划分。

image-20260108125517344

每一个划分中,在详情面板里,都可以看到这个访客在什么时间做了什么事情。

image-20260108125954027

image-20260108130323366

image-20260108130405011

image-20260108130452437

趋势分析 & 新老访客

这一部分可以看到每天的访问趋势以及当天与前一天的新老访客占比。

image-20260108130725966

来路、受访页、入口页

这部分可以看到访客的来源,以及每个路径的访问次数。

image-20260108131048943

地域 & 终端设备

这部分可以看到每个省份的访问情况以及访问设备的分布情况。

image-20260108131213706

数据日报

在这个模块中,可以看到每天的浏览量、访客数、平均访问时长等信息。

image-20260108134815067

image-20260108140538356

实时访问

在这个模块里,可以查看最近 5/15/30 分钟内的访问情况

image-20260108141207205

访问明细

这个模块就以表格的形式展示每一条日志。

image-20260108141436301

如何使用

为了方便使用,我已经将这个项目打包成镜像发布到 dockerhub 上了,镜像名为magiccoders/nginxpulse,可以通过 docker 的形式使用,也可以通过 docker compose 的形式使用。

需要传入的参数:

  • WEBSITES 它的值是个数组,一个对象就是一个网站,需要传入网站名、日志路径、网址(或者内网 ip ,主要用于站内/站外的区分)
  • ports 端口映射,容器内暴露出来的端口是 8088
  • volumes 文件挂载,这里需要挂载:日志文件、容器内产生的数据文件、时区

此处我以 docker compose 的形式举例:

version: "3"
services:
  nginxpulse:
    image: magiccoders/nginxpulse:latest
    container_name: local_nginxpulse
    ports:
      - "9200:8088"
    environment:
      WEBSITES: '[{"name":"神奇的程序员","logPath":"/var/log/nginx/access.log","domains":["kaisir.cn","www.kaisir.cn"]}]' #domains 用于“来源( referer )统计”的站内/站外分类
      PV_EXCLUDE_IPS: '["127.0.0.1", "::1", "10.10.0.1", "192.168.30.21"]' #pv 统计时需要排除的 ip
    volumes:
      - ./nginx_data/logs/all/access.log:/var/log/nginx/access.log
      - ./nginxpulse_data:/app/nginxpulse_data
      - /etc/localtime:/etc/localtime
    restart: unless-stopped

写在最后

至此,文章就分享完毕了。

我是神奇的程序员,一位前端开发工程师。

如果你对我感兴趣,请移步我的个人网站,进一步了解。

新版特性:

  1. 支持预设,可以通过 ccr <preset-name> 命令快速切换 cc 配置,增加预设市场,更方便共享配置

  2. 优化 cc statusline 适配,支持插件,可以自定义插件数据,比如获取供应商套餐余量,token 实时速率,可以将 statusline 插件一起打包成预设进行分发

  3. 支持 docker 部署,镜像只有 200M + 的大小 (纯 Server 不支持 statusline/cli 插件),但是仍然可以通过给 cc 设置 baseurl http://ip:port/preset/<preset-name> 快速切换预设配置

  4. 支持 fallback,当供应商报错时支持回退到备用供应商

完整文档在 Claude Code Router (还在建设中,文档速度跟不上特性开发速度)


📌 转载信息
原作者:
musistudio
转载时间:
2026/1/4 17:13:41

[bsgit user="2erTwo6"]Smooth-Gateway[/bsgit]
上游 API 提供商提供的流式传输可能是粗糙的、一大块一大块出现的,体感上不 “丝滑”

Gemini Balance 的流式传输优化功能就解决了这个痛点,在玩酒馆等需要流式传输的场景下,能够极大的提高体验,但是就如项目名那样,只能给 Gemini 用。

于是就有了这个项目,参考了 Gemini Balance 的思路,可以插入到任何一个 OpenAI 格式的 API 服务中间,对流式传输进行后处理,把粗糙的流切成细腻的流,再推送给最终的 AI 应用。

目前仅支持接入 OpenAI 格式的 API,推荐的使用方法是先接入 New API,再套一层这个

快速开始

前提: 您已安装 Docker。

  1. 克隆本仓库:

    git clone https://github.com/2erTwo6/Smooth-Gateway.git
    cd Smooth-Gateway
  2. 创建并编辑配置文件:
    将模板文件复制为您的本地配置文件。

    cp .env.example .env

    然后使用您喜欢的编辑器(如 nano 或 vim)打开 .env 文件,并至少填入必需的 UPSTREAM_API_URL。

  3. 构建 Docker 镜像:

    docker build -t smooth-gateway .
  4. 运行容器:
    使用 --env-file 参数,Docker 会自动加载您的 .env 文件。

    docker run -d \
      --name my-smooth-gateway \
      -p 3001:3001 \
      --env-file .env \
      --restart unless-stopped \
      smooth-gateway

    现在,您的流式优化网关已根据您的 .env 文件配置,在 http://localhost:3001 上运行!

接下来,只需要在你的 AI 应用的 API URL 那里输入 http://localhost:3001 即可(假设你的 AI 应用和此 API 网关部署在同一机器?)

[bsgit user="fish2018"]YPrompt[/bsgit]

功能

  • 支持OpenAI、Anthropic、Google Gemini和自定义AI服务商
  • 支持内置提供商,将 builtin-providers.example.json 复制为 builtin-providers.json 并修改您需要的配置即可。
  • 自动生成和手动步进两种执行模式
  • 支持Markdown/XML格式切换和中英文互译
  • 支持对话引导挖掘用户需求后自动生成系统提示词
  • 支持系统提示词优化
  • 支持基于系统提示词和对话上下文的用户提示词优化
  • 支持效果对比,同时也是一个调试台,可以自定义模型,系统提示词
  • 支持提示词版本管理
  • 支持sqlite和mysql数据库
  • docker一键部署
  • 支持用户密码/linux.do认证

在线体验

使用Linux.do登录 或 使用账号:demo/demo

生成提示词
生成提示词
系统提示词优化和对比
系统提示词优化和对比
用户提示词优化和对比
用户提示词优化和对比
提示词版本管理
提示词版本管理

开源了一个基于 Docker 的星露谷物语服务器一键部署解决方案。

项目地址:
[bsgit user="truman-world"]puppy-stardew-server[/bsgit]
Stardew Server - Docker 一键部署星露谷物语开联机服务器

核心特性

这个项目最大的亮点是整合了几个自定义模组,带来了更好的多人游戏体验:

即时睡眠功能:任何一个玩家在床上选择睡觉,游戏会立刻为所有在线玩家存档并结束当天。再也不用互相等待离线或 AFK 的玩家。

24/7 专用服务器:基于 Docker 容器化,服务器可以 7x24 小时独立运行,房主无需在线。适合部署在 VPS 、云服务器或家用 NAS 上。

一键脚本部署:一条命令,3 分钟即可完成所有环境配置和启动。无需手动安装 SMAPI 、配置模组或设置环境。

跨平台联机:支持 PC 、Mac 、Linux ,以及 iOS 和 Android 玩家在同一个服务器中游戏。所有平台互通,无需复杂配置。

房主自动隐藏:主机玩家作为服务器运行,在游戏中自动隐身,不占用玩家名额,也不会干扰正常游戏。

存档自动加载:服务器重启后会自动加载最新的存档,无需手动操作。首次部署通过 VNC 创建存档后,之后完全自动化。

内置 VNC:首次创建世界时,可以通过浏览器或 VNC 客户端远程访问图形界面,操作简单。

自然技能升级( v1.0.58 新增):防止服务器强制房主升到 10 级,保持基于真实经验值的技能等级。玩家可以手动选择技能专精路线,保留游戏原有的成长乐趣。

一键启动

在任何一台安装了 Docker 的服务器上运行:

curl -sSL https://raw.githubusercontent.com/truman-world/puppy-stardew-server/main/quick-start.sh | bash

脚本会自动完成环境检查、配置文件生成、目录创建、权限设置和容器启动。

手动部署

如果你更喜欢手动控制:

1. 创建 docker-compose.yml

version: '3.8'
services:
  stardew-server:
    image: truemanlive/puppy-stardew-server:latest
    container_name: puppy-stardew
    restart: unless-stopped
    stdin_open: true
    tty: true
    environment:
      - STEAM_USERNAME=your_steam_username
      - STEAM_PASSWORD=your_steam_password
      - ENABLE_VNC=true
      - VNC_PASSWORD=stardew123
    ports:
      - "24642:24642/udp"
      - "5900:5900/tcp"
    volumes:
      - ./data/saves:/home/steam/.config/StardewValley:rw
      - ./data/game:/home/steam/stardewvalley:rw
      - ./data/steam:/home/steam/Steam:rw
    deploy:
      resources:
        limits:
          cpus: '2.0'
          memory: 2G

2. 设置权限并启动

mkdir -p data/{saves,game,steam}
chown -R 1000:1000 data/
docker compose up -d

3. 首次设置

使用 VNC 连接到 your-server-ip:5900(密码:stardew123),创建或导入存档。

4. 玩家连接

游戏中:Co-op → Join LAN Game → 输入 your-server-ip:24642

预装模组

  • SMAPI 4.3.2 - 官方模组加载器
  • Always On Server v1.20.3 - 无头服务器运行
  • Skill Level Guard v1.4.0 - 防止强制升级,保持自然技能进度
  • ServerAutoLoad v1.2.1 - 自动加载存档
  • AutoHideHost v1.2.2 - 隐藏房主,即时睡眠

系统要求

服务器端:

  • Docker 和 Docker Compose
  • 2GB 内存( 4+ 玩家推荐 4GB )
  • 2GB 磁盘空间
  • Steam 账号(拥有星露谷物语)

客户端:

  • 星露谷物语(任何平台)
  • 与服务器相同的游戏版本

v1.0.58 更新

修复:

  • Always On Server 自动启用问题(服务器现在可以自动暂停/恢复)
  • 玩家技能专精选择问题(可以手动选择路线)

改进:

  • 自然技能升级(基于真实经验值,不再强制 10 级)
  • 服务器空闲时自动暂停(节省资源)

已解决的问题:

  • 长时间空闲后无法连接
  • 地震等特殊事件冻结游戏
  • 无限等待其他玩家
  • 无需邀请码(直接用 IP 连接)

文档与支持

许可证

  • 项目: MIT License
  • 游戏: 需合法拥有星露谷物语( Steam )
  • SMAPI & Always On Server: GPL-3.0
  • 自定义模组: MIT License

✨ 特性

  • ? 多 AI 模型支持 - 支持 OpenAI、Google Gemini、Anthropic Claude 等主流 AI 模型
  • ? 智能向导 - 通过向导式引导快速创建小说项目,AI 自动生成大纲、角色和世界观
  • ? 角色管理 - 创建和管理小说角色,包括人物关系、组织架构等
  • ? 章节编辑 - 支持章节的创建、编辑、重新生成和润色功能
  • ? 世界观设定 - 构建完整的故事世界观和背景设定
  • ? 多种登录方式 - 支持 LinuxDO OAuth 登录和本地账户登录
  • ? Docker 部署 - 一键部署,开箱即用
  • ? 数据持久化 - 基于 SQLite 的本地数据存储,支持多用户隔离
  • ? 现代化 UI - 基于 Ant Design 的美观界面,响应式设计

 一款基于 AI 的智能小说创作助手,帮助你轻松创作精彩故事

更新记录

25.11.3更新:
1.优化AI请求替换OpenAI SDK调用,使用httpx和自定义头请求,避免触发部分公益站的cloudflare
2.修复deepseek模型调用问题,舍弃思考过程AI响应内容,只获取结果内容
3.新增会话过期机制,更新后添加到.env中
4.支持用户在生成章节内容时设置字数

25.11.4更新:
注意 本次更新已合并到main主分支
1.支持用户项目数据导入导出
2.支持向量数据库,实现RAG的记忆提取存储功能,并引用到生成上下文中,提高生成文章内容质量

25.11.5更新:
1.新增AI生成组织功能,扩展优化组织字段(所在地 代表颜色 格言/口号)
2.适配移动端项目管理-剧情分析UI页面

25.11.6更新:
1.优化大纲续写和章节内容生成上下文构建方式 实现智能构建提示词(支持超长章节内容)
2.实现章节概要提取,并保存到向量数据库,为后续大纲生成和内容提供骨架
3.新增章节内容批量生成功能

25.11.7更新:
1.更新mcp插件功能,目前只支持remote调用

? 快速开始

前置要求

  • Docker 部署:Docker 和 Docker Compose
  • 本地开发:Python 3.11+ 和 Node.js 18+
  • 必需:至少一个 AI 服务的 API Key(OpenAI/Gemini/Anthropic)
    方式一:从源码构建 Docker 镜像

    # 1. 克隆项目
    git clone https://github.com/xiamuceer-j/MuMuAINovel.git
    cd MuMuAINovel
    
    # 2. 配置环境变量
    cp backend/.env.example .env
    # 编辑 .env 文件,填入你的 API Keys
    
    # 3. 启动服务(会自动构建镜像)
    docker-compose up -d
    
    # 4. 访问应用
    # 打开浏览器访问 http://localhost:8000

方式二:本地开发
后端设置

# 进入后端目录
cd backend

# 创建虚拟环境
python -m venv .venv

# 激活虚拟环境
# Windows:
.venv\Scripts\activate
# Linux/Mac:
source .venv/bin/activate

# 安装依赖
pip install -r requirements.txt

# 配置环境变量
cp .env.example .env
# 编辑 .env 文件,填入你的配置

# 启动后端服务
python -m uvicorn app.main:app --host 0.0.0.0 --port 8000 --reload

前端设置

# 进入前端目录
cd frontend

# 安装依赖
npm install

# 开发模式(需要后端已启动)
npm run dev

# 或构建生产版本
npm run build

? 部署方式

Docker Compose 部署
使用 Docker Hub 镜像(推荐)
项目已发布到 Docker Hub,可直接拉取使用:

# 查看可用版本
docker pull mumujie/mumuainovel:latest

# 启动服务
docker-compose up -d

# 查看日志
docker-compose logs -f

# 停止服务
docker-compose down

# 重启服务
docker-compose restart

# 更新到最新版本
docker-compose pull
docker-compose up -d

Docker Compose 配置文件示例
使用 Docker Hub 镜像的完整配置:

services:
  ai-story:
    image: mumujie/mumuainovel:latest
    container_name: mumuainovel
    ports:
      - "8800:8000"  # 宿主机端口:容器端口
    volumes:
      # 持久化数据库和日志
      - ./data:/app/data
      - ./logs:/app/logs
      # 挂载环境变量文件
      - ./.env:/app/.env:ro
    environment:
      - APP_NAME=mumuainovel
      - APP_VERSION=1.0.0
      - APP_HOST=0.0.0.0
      - APP_PORT=8000
      - DEBUG=false
      # 其他环境变量会从 .env 文件自动加载
    restart: unless-stopped
    healthcheck:
      test: ["CMD", "python", "-c", "import urllib.request; urllib.request.urlopen('http://localhost:8000/health')"]
      interval: 30s
      timeout: 10s
      retries: 3
      start_period: 10s
    networks:
      - ai-story-network

networks:
  ai-story-network:
    driver: bridge

生产环境部署建议

1. 环境变量配置
必需配置:

  • OPENAI_API_KEY 或 GEMINI_API_KEY:至少配置一个 AI 服务
  • LOCAL_AUTH_PASSWORD:修改为强密码

推荐配置:

  • OPENAI_BASE_URL:如果使用中转 API,修改为中转服务地址
  • DEFAULT_AI_PROVIDER:根据你的 API Key 选择 openai、gemini 或 anthropic
  • DEFAULT_MODEL:选择合适的模型(如 gpt-4o-mini、gemini-2.0-flash-exp)
  • 数据持久化
    数据目录已通过 volume 挂载,数据不会丢失:
  • ./data:SQLite 数据库文件
  • ./logs:应用日志文件
  • 端口配置
    默认端口映射:8800:8000
  • 宿主机端口:8800(可自定义修改)
  • 容器内端口:8000(固定,不要修改)
    访问地址:http://your-server-ip:8800

配置后记得更新 .env 中的 LINUXDO_REDIRECT_URI 和 FRONTEND_URL。

5. 资源限制(可选)
在 docker-compose.yml 中添加资源限制:

services:
  ai-story:
    # ... 其他配置
    deploy:
      resources:
        limits:
          cpus: '2.0'
          memory: 2G
        reservations:
          cpus: '0.5'
          memory: 512M

端口说明

  • 默认端口:8800(宿主机)→ 8000(容器)
  • 可自定义:修改 docker-compose.yml 中的 ports 配置
  • 健康检查:容器内部使用 8000 端口进行健康检查

⚙️ 配置说明

环境变量
创建 .env 文件并配置以下变量:

# ===== AI 服务配置(必填)=====
# OpenAI 配置(支持官方API和中转API)
OPENAI_API_KEY=your_openai_key_here
OPENAI_BASE_URL=https://api.openai.com/v1

# Anthropic 配置
# ANTHROPIC_API_KEY=your_anthropic_key_here
# ANTHROPIC_BASE_URL=https://api.anthropic.com

# 中转API配置示例(使用OpenAI格式)
# New API 中转服务
# OPENAI_API_KEY=your_newapi_key_here
# OPENAI_BASE_URL=https://api.new-api.com/v1

# 默认 AI 提供商和模型
DEFAULT_AI_PROVIDER=openai
DEFAULT_MODEL=gpt-4o-mini
DEFAULT_TEMPERATURE=0.8
DEFAULT_MAX_TOKENS=32000

# ===== 应用配置 =====
APP_NAME=MuMuAINovel
APP_VERSION=1.0.0
APP_HOST=0.0.0.0
APP_PORT=8000
DEBUG=false

# ===== LinuxDO OAuth 配置(可选)=====
LINUXDO_CLIENT_ID=your_client_id_here
LINUXDO_CLIENT_SECRET=your_client_secret_here
LINUXDO_REDIRECT_URI=http://localhost:8000/api/auth/callback
FRONTEND_URL=http://localhost:8000

# ===== 本地账户登录配置 =====
LOCAL_AUTH_ENABLED=true
LOCAL_AUTH_USERNAME=admin
LOCAL_AUTH_PASSWORD=your_secure_password_here
LOCAL_AUTH_DISPLAY_NAME=管理员

# 会话配置
# 会话过期时间(分钟),默认120分钟(2小时)
SESSION_EXPIRE_MINUTES=120
# 会话刷新阈值(分钟),剩余时间少于此值时可刷新,默认30分钟
SESSION_REFRESH_THRESHOLD_MINUTES=30

# ===== CORS 配置(生产环境)=====
# CORS_ORIGINS=https://your-domain.com,https://www.your-domain.com

AI 模型配置
项目支持多个 AI 提供商,你可以根据需要配置:

提供商推荐模型用途
OpenAIgpt-4, gpt-3.5-turbo高质量文本生成
Anthropicclaude-3-opus, claude-3-sonnet长文本创作

使用中转API服务
如果你无法直接访问 OpenAI 官方 API,或者想使用更经济实惠的中转服务,本项目完全支持各种 OpenAI 兼容格式的中转 API:

配置方法
只需修改 .env 文件中的两个参数:

# 1. 填入中转服务提供的 API Key
OPENAI_API_KEY=your_api_key_from_proxy_service

# 2. 修改 Base URL 为中转服务的地址
OPENAI_BASE_URL=https://your-proxy-service.com/v1

常见中转服务配置示例
New API

OPENAI_API_KEY=sk-xxxxxxxxxxxxxxxx
OPENAI_BASE_URL=https://api.new-api.com/v1

API2D

OPENAI_API_KEY=fk-xxxxxxxxxxxxxxxx
OPENAI_BASE_URL=https://api.api2d.com/v1

OpenAI-SB

OPENAI_API_KEY=sb-xxxxxxxxxxxxxxxx
OPENAI_BASE_URL=https://api.openai-sb.com/v1

自建 One API / New API

OPENAI_API_KEY=sk-xxxxxxxxxxxxxxxx
OPENAI_BASE_URL=https://your-domain.com/v1

注意事项

  • ✅ 所有支持 OpenAI 接口格式的服务都可以使用
  • ✅ 确保中转服务的 Base URL 以 /v1 结尾
  • ✅ 根据中转服务支持的模型,修改 DEFAULT_MODEL 参数
  • ⚠️ 不同中转服务的模型名称可能不同,请参考服务商文档
  • ⚠️ 部分中转服务可能对请求频率或并发有限制

推荐的中转服务
如果你需要中转服务,以下是一些常见选择:

  1. New API - 开源的 API 分发系统,支持多种模型
  2. API2D - 国内稳定的 API 中转服务
  3. OpenAI-SB - 提供多种 AI 模型的中转
  4. 自建服务 - 使用 One API 或 New API 自行搭建
? 提示:使用中转服务时,请确保服务提供商的可靠性和数据安全性

? 项目结构

MuMuAINovel/
├── backend/ # 后端服务
│ ├── app/
│ │ ├── api/ # API 路由
│ │ │ ├── auth.py # 认证接口
│ │ │ ├── projects.py # 项目管理
│ │ │ ├── chapters.py # 章节管理
│ │ │ ├── characters.py # 角色管理
│ │ │ ├── wizard_stream.py # 向导流式生成
│ │ │ └── ...
│ │ ├── models/ # 数据模型
│ │ ├── schemas/ # Pydantic 模型
│ │ ├── services/ # 业务逻辑
│ │ │ ├── ai_service.py # AI 服务封装
│ │ │ └── oauth_service.py # OAuth 服务
│ │ ├── middleware/ # 中间件
│ │ ├── utils/ # 工具函数
│ │ ├── config.py # 配置管理
│ │ ├── database.py # 数据库连接
│ │ └── main.py # 应用入口
│ ├── data/ # 数据存储目录
│ ├── static/ # 前端静态文件(构建后)
│ ├── requirements.txt # Python 依赖
│ └── .env.example # 环境变量示例
├── frontend/ # 前端应用
│ ├── src/
│ │ ├── pages/ # 页面组件
│ │ │ ├── ProjectList.tsx # 项目列表
│ │ │ ├── ProjectWizardNew.tsx # 创建向导
│ │ │ ├── Chapters.tsx # 章节管理
│ │ │ ├── Characters.tsx # 角色管理
│ │ │ └── ...
│ │ ├── components/ # 通用组件
│ │ ├── services/ # API 服务
│ │ ├── store/ # 状态管理(Zustand)
│ │ ├── types/ # TypeScript 类型
│ │ └── utils/ # 工具函数
│ ├── package.json
│ └── vite.config.ts
├── docker-compose.yml # Docker Compose 配置
├── Dockerfile # Docker 镜像构建
└── README.md # 项目说明文档

一个小白也能用的AI code代码审计工具,docker一键部署,正式发布一周现已400star
项目地址:
人人可用的AI代码审计工具,支持Github\GitLab\本地仓库集成,支持即时代码分析,一键审计并生成专业 report(报告)!
[bsgit user="lintsinghua"]XCodeReviewer[/bsgit]

一句话介绍

XCodeReviewer帮助开发者告别低效的代码审查,使用主流的大模型(现在已经实现本地大模型支持了~)进行深度理解代码逻辑,发现安全漏洞与性能瓶颈。系统支持 本地/Github/GitLab仓库集成 ,只需 粘贴代码、上传代码 或 连接仓库 ,系统就可以开始全自动分析代码质量和纠错。人人可用,一键部署。

大家可以查看一下,下面系统以"即时代码分析"为例,生成的审计报告部分截图:

即时代码分析

导出的PDF格式的审计报告示例:

导出的PDF格式的审计报告示例

项目亮点

亮点的话不仅仅体现在报告质量上,相比同类产品,我们拥有:rocket:five(五大)优势:

  1. AI驱动的深度代码理解:基于国际上主流平台的大语言模型,超越传统静态分析工具的规则匹配。不仅捕获语法错误,更能理解代码意图,发现深层逻辑漏洞、安全隐患和性能 bottleneck(瓶颈)。
  2. 五维度全方位质量评估:项目不仅依赖单一检测维度,更融合了Bug检测、安全扫描、性能分析、代码风格、可维护性等5类评估。通过多维度协同分析,确保了审计结果的深度、准度与全面性。
  3. 独创What-Why-How可解释性:突破传统工具的冰冷提示,每个问题都提供三段式解释:清晰指出"是什么"问题,深入解释"为什么"存在风险,并提供"如何修复"的具体示例。
  4. 多场景灵活分析机制:为不同使用场景提供独特的分析模式。即时分析支持代码片段快速检测,项目审计模式一键连接GitHub/GitLab仓库。这不仅避免了单一工具的使用局限,更催生出更高效的 code(代码)质量管理。
  5. 各种开发场景轻松适配:支持将项目代码库与AI审计能力无缝集成。打通开发壁垒,为个人开发者、团队协作、企业CI/CD提供"即时反馈+持续监控"的 analysis(分析) 能力。

运行截图

实时展示项目统计、质量趋势和系统性能,提供全面的 code audit(代码审计) 概览
全面的 code audit(代码审计) 概览

Support code snippet quick analysis, providing detailed What-Why-How explanation and repair suggestions

全面的 code audit(代码审计) 概览

Integrate GitHub/GitLab repositories, support multi-language project audits and batch code analysis(分析)

code analysis
XCodeReviewer系统架构图