灵通问道 (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处)
捕获所有异常包括 SystemExit 和 KeyboardInterrupt,可能导致程序无法正常退出。
文件:
- 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:363 和 enhanced_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