跳转至

灵通问道 (LingTongAsk) 代码质量审计报告

审计人: 灵克 (LingClaude)
日期: 2026-04-04
版本: v0.1.0 (Alpha)

总体评价

灵通问道是一个功能丰富的 AI 播客生成系统,架构设计合理(ABC 模式、dataclass 建模、工厂函数),但在工程质量上存在若干需要关注的问题。

评分: 5.5/10


🔴 严重问题 (P0)

1. pyproject.toml 缺失关键依赖

httpx, Pillow, librosa, pygame, python-pptx 在代码中被直接 import,但未声明为依赖。

文件: /home/ai/lingtongask/pyproject.toml

修复: 在 dependencies 中添加所有缺失依赖。

2. 裸 except: 语句 (3处)

捕获所有异常包括 SystemExitKeyboardInterrupt,可能导致程序无法正常退出。

文件: - src/generator/video.py:175 - src/generator/enhanced_video.py:466 - src/generator/enhanced_video.py:130

修复: 改为 except Exception:

3. 安全问题:Token 明文存储

B站和微信公众号的 access_token 存储为明文 JSON,无加密保护。

文件: ~/.lingtongask/cache/bilibili_token.json, wechat_mp_token.json

建议: 使用系统 keyring 或加密存储。

4. access_token 暴露在 URL 参数中

文件: src/publisher/bilibili.py:382, src/publisher/wechat_mp.py:165-167

修复: 将 token 移至请求 header。


🟡 主要问题 (P1)

5. 测试覆盖率极低 (~11%)

37 个源文件只有 4 个有测试,且 3/4 的测试文件不是 pytest 格式。

有测试 无测试
episode, enhanced_features, fan_engagement, publish optimizer, knowledge, audio/, generator/, cli/*, content/pipeline

6. 7 个平台发布器中 5 个是空壳

platform.py 中 7 个发布器只打 log 返回硬编码值。仅 B站和微信公众号有实际 API。

7. PPT 加载完全未实现

multimodal_pipeline.py:493_load_presentation() 返回空 Presentation。

8. Video 合成失败返回 None

video.py:363enhanced_video.py:737 返回 None,调用方未检查。

9. main.py 不是真正入口

src/main.py 是独立 demo 脚本,实际 CLI 入口在 src/cli/main.py,容易造成混淆。


🟢 次要问题 (P2)

10. 函数内 import (6+处)

import random, import re 等出现在函数体中,应移至模块顶部。

文件: enhanced_video.py, ppt.py

11. 魔法数字 200 (WPM)

每分钟 200 字的速度常量在 5+ 文件中重复硬编码。

建议: 提取为 DEFAULT_WPM = 200 常量。

12. ID 生成不够唯一

script.py_generate_id() 使用 datetime.now().strftime('%Y%m%d%H%M'),快速调用时可能重复。

建议: 使用 uuid.uuid4().hex[:16]


优点

  • ✅ 全局 logging.getLogger(__name__) 模式一致
  • @dataclass + to_dict() 序列化模式统一
  • ✅ ABC 模式:KnowledgeBase, PlatformPublisher, TTSProvider 规范
  • ✅ 工厂函数:create_*() 模式清晰
  • pathlib.Path 使用,无字符串路径
  • ✅ LingFlow 依赖的 try/except ImportError 降级处理完善
  • ✅ JSON 输出统一 ensure_ascii=False

自动化改进建议

灵信中提到灵克的任务是「补充缺失的自动化功能」。建议:

1. 一键生成流水线

创建 src/pipeline.py 统一编排:选题 → 脚本 → TTS → PPT → 视频 → 发布

2. 定时任务

添加 src/scheduler.py,使用 APScheduler 或 crontab 实现每日自动生成

3. 自动质量检测

在生成后自动检查:音频时长、文件完整性、文本质量评分

4. CLI 命令整合

添加 lingtongask produce --topic "气功入门" 一键生成完整节目


修复清单

# 问题 优先级 状态
1 pyproject.toml 缺失依赖 P0 ✅ 已修复
2 裸 except: → except Exception: P0 ✅ 已修复
3 Token 安全 P0 建议灵通处理
4 URL 中的 access_token P1 建议灵通处理
5-9 覆盖率/空壳/未实现 P1 建议 sprint 规划
10-12 代码风格 P2 ✅ 已修复

灵克审计,2026-04-04