☰
技术报告:texnunAI(校园活动宣发助手)技术架构与实现分析
2026/10/14 9:11:55 网站建设 项目流程

技术报告:texnunAI(校园活动宣发助手)技术架构与实现分析

产品自述名称:校园活动宣发助手(界面标题与启动日志均使用此名)

分析方法:静态逆向分析(未执行程序)。依次通过 PE 结构解析、PyInstaller 单文件归档提取、内嵌 Python 字节码(.pyc)符号与字符串还原,确认技术事实。所有结论均标注依据,推断项另作说明。

1. 概述与产物定位

一个面向校园场景的AI 文案生成桌面工具,其本质是一个被打包为 Windows 可执行文件的本地 Web 应用:用户在浏览器中填写活动信息,后端调用本地大模型一次性产出多个社交/媒体平台的宣发文案。

项目事实依据
文件类型PE32+ 控制台程序,x86-64,7 个节区PE 头解析
构建方式PyInstaller 单文件打包(格式 2.1+)PyInstaller 引导字符串、CArchive 提取
运行语言Python 3.12(内嵌 python312.dll)提取文件python312.dll、.pyd文件名
编译时间PE 头时间戳
体量10,760,081 字节(≈10.4 MB)文件属性

推断:10.4 MB 的体积远小于打包了 PyTorch/Transformers 的本地推理程序,结合内嵌依赖清单(无 torch、numpy、onnx 等),可判定其不内置任何大模型权重,AI 能力完全依赖外部运行的 Ollama 服务。

2. 整体架构

采用本地 B/S(浏览器/服务器)架构,三层职责分离:

架构特征:

  • 服务端为轻量级 Flask 应用,单一入口脚本new_app.pyc(约 28 KB 即全量业务代码)。
  • 客户端 UI 以字符串形式内联在index()路由中,通过render_template_string直接返回,无独立前端构建步骤。
  • AI 推理严格指向本地 Ollama,不直连任何公有云大模型 API。

3. 技术实现方案

3.1 打包与分发

  • 使用 PyInstaller 将 Python 解释器、业务代码、第三方库(Flask 生态、requests 等)及_wmi.pyd一并打进单文件 exe,用户无需安装 Python 即可运行。
  • 资源节区(.rsrc)含图标(RT_ICON)、版本清单(RT_MANIFEST,声明longPathAware、Common-Controls 6.0)与 RT_VERSION。
  • 启动时需在临时目录解包 Python 运行环境,故首次启动有短暂延迟。

3.2 服务端实现

  • 框架:Flask 3.0.0,开启 CORS(flask_cors),便于前端独立部署或跨域调试。
  • 运行参数:app.run(host="0.0.0.0", port=5000, debug=False)(依据:模块常量与启动日志)。
  • 依赖精简:未引入数据库、任务队列或 ASGI 服务器,保持最小依赖面。

3.3 客户端实现

  • 单页 HTML 内联 CSS(渐变主题、卡片式结果展示、加载动画)与原生 JavaScript。
  • 交互逻辑:表单校验(标题/时间/地点为必填)→ 组装event_info→fetch('/api/generate')→ 渲染结果卡片;客户端对生成内容做& < >转义以防 XSS。
  • 回车键快捷触发生成。

3.4 AI 推理接入

  • 统一封装函数call_ollama(prompt, model),向 Ollama/api/generate发送prompt与model字段,读取响应中的response、thinking、done_reason、eval_count,并记录耗时与长度。
  • 异常分支覆盖ConnectionError(Ollama 未运行)、Timeout(生成超时)、HTTP 非 2xx(raise_for_status)及空内容兜底。

4. 核心模块构成

模块职责关键事实
PromptTemplates6 套角色化提示词模板wechat_article(公众号推文)、moments(朋友圈)、xiaohongshu(小红书)、qq_zone(QQ空间)、douyin_script(抖音脚本)、official_notice(官方通知)
call_ollamaOllama REST 调用与容错超时/连接/空结果处理,含重试提示文案
index主页与 UI 渲染内联 HTML,含 6 平台勾选与模型下拉
generate多平台生成主流程(POST /api/generate)校验入参 → 遍历平台 → 取模板 → 调call_ollama→ 聚合返回;含「首次不理想重试一次」逻辑
health_check健康检查(GET /api/health)探测 Ollama/api/tags,返回 healthy/running/degraded/stopped
list_models模型列表(GET /api/models)读取 Ollama 已安装模型

5. 关键运行机制

  1. 启动流程:执行 exe → 解包运行环境 → 启动 Flask → 控制台打印访问地址、默认模型、Ollama 地址与最大长度提示 → 等待用户访问http://localhost:5000。
  2. 生成请求流程:浏览器提交 →/api/generate校验event_info/platforms/model→ 对每个选中平台从PromptTemplates取模板并填充活动信息 → 逐个调用call_ollama→ 收集{platform, content}列表返回。
  3. 重试机制:当某平台首次返回内容为空或无效时,触发一次重试(日志/提示「首次生成结果不理想,重试一次」)。
  4. 并发模型:平台生成在generate中为同步顺序循环,单请求内不并行;服务端为 Flask 开发服务器默认单工作进程。
  5. 默认值(依据:模块常量)

6. 配置、安全与部署特征

  • 配置硬编码:模型、端口、Ollama 地址、token 上限均为源码常量,无配置文件或环境变量覆盖入口。
  • 网络暴露:绑定0.0.0.0意味着同一局域网内其他主机可访问该服务;服务端无身份认证。
  • 依赖打包冗余:_wmi.pyd(Windows 管理规范)被打包但主逻辑未直接调用,疑为传递依赖,徒增体积。
  • 平台局限:仅提供 Windows x64 可执行文件,无 macOS/Linux 构建。

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询