灵族基础设施全貌审计报告
审计人: 灵研 (LingResearch) 日期: 2026-04-13 性质: 代码安全审计 + 基础设施清单 + 错误复盘 触发: 身份漂移期间产生的未提交代码,需审计后方可推送
一、审计范围
本地 16 个目录(含 14 个 Git 仓库)
| # | 项目 | 类型 | Git | 状态 |
|---|---|---|---|---|
| 1 | LingFlow | 主项目 | ✅ | 6 dirty, GitHub behind 11 |
| 2 | LingFlow_plus | 扩展 | ✅ | 50 dirty, GitHub behind 1 |
| 3 | LingMessage | 通信协议 | ✅ | 10 dirty, GitHub behind 3 |
| 4 | LingClaude | 编程助手 | ✅ | 30 dirty, GitHub behind 1 |
| 5 | LingYi | 私人助理 | ✅ | 20 dirty, 无远程 |
| 6 | LingMinOpt | 自优化框架 | ✅ | 14 dirty, GitHub behind 10 |
| 7 | LingYang | 对外宣传 | ✅ | 3 dirty, GitHub 无 master 分支 |
| 8 | Ling-term-mcp | MCP终端 | ✅ | 4 dirty, GitHub behind 9 |
| 9 | lingresearch | 研究框架 | ✅ | 82 dirty, 双向落后 |
| 10 | lingtongask | 播客生成 | ✅ | 127 dirty, GitHub behind 10 |
| 11 | zhineng-bridge | 中继服务器 | ✅ | 15 dirty, 已同步 |
| 12 | zhineng-knowledge-system | 知识库 | ✅ | 11 dirty, GitHub behind 3 |
| 13 | lingflow-skills-index | 技能索引 | ✅ | 1 dirty, 无任何远程 |
| 14 | lingflow.top | 网站 | ✅ | 0 dirty, 无任何远程 |
| 15 | claude-code-port | 外部克隆 | ✅ | fork of instructkr/claude-code |
| 16 | learn-claude-code | 外部克隆 | ✅ | fork of shareAI-lab/learn-claude-code |
排除项(非 Git、非灵族项目)
ling-protocol(本地开发目录,非 git)、fojin、zhineng-backup 等归档目录
二、远程仓库清单(已验证)
GitHub (guangda88) — 12 个仓库
| # | 仓库名 | 可见性 | 语言 |
|---|---|---|---|
| 1 | LingFlow | Public | HTML/Python |
| 2 | LingFlow_plus | Public | Python |
| 3 | LingMessage | Public | Python |
| 4 | LingClaude | Public | Python |
| 5 | LingYi | Public | Python |
| 6 | LingMinOpt | Public | Python |
| 7 | LingYang | Public | Python |
| 8 | Ling-term-mcp | Public | TypeScript |
| 9 | lingresearch | Private | Python |
| 10 | lingtongask | Private | Python |
| 11 | zhineng-bridge | Public | JavaScript/Python |
| 12 | zhineng-knowledge-system | Public | Python |
Gitea (guangda) — 12 个活跃仓库 + ~15 个存档仓库
活跃(与 GitHub 一一对应): 同上 12 个
存档(仅 Gitea,不再更新): - LingFlow-UI (Private) — AI UI 设计系统 - LingFlow-CLI (Private) — NLU 中文命令行 - CLI-for-winserver (Private) — Windows 服务器工具 - LingTongAsk-back — 播客稿子存档 - Knowledge-System, LingZhi(空), OpenURL, ZhinengBooks - book-list-analys, book-search-skill, skill-creator - github-daily-recommender - tcm-knowledge-base, zhengfang-clinic-system - zhineng-qigong-knowledge-base, zhinengpan-tool
三、发布渠道清单(已验证)
npm (guangda88) — 2 个包
| 包名 | 版本 | 本地版本 | 来源 |
|---|---|---|---|
| ling-term-mcp | 1.0.0 | 1.1.0 (未发布) | Ling-term-mcp |
| lingflow-mcp | 1.3.0, 3.8.0 | 3.8.0 (已同步) | LingFlow/mcp_server |
PyPI — 2 个包(已发布)+ 10 个待发布
已发布:
| 包名 | 版本 | 来源 |
|---|---|---|
| lingclaude | 0.3.0 | LingClaude |
| lingflow-plus | 0.1.0 | LingFlow_plus |
有 pyproject.toml 但未发布:
| 包名 | 本地版本 | 构建配置 | 来源 |
|---|---|---|---|
| lingflow-core | 3.9.1 | ✅ 完整 | LingFlow |
| lingmessage | 0.2.0 | ⚠️ 缺 authors/classifiers | LingMessage |
| lingyi | 0.16.0 | ⚠️ 缺 authors/license/classifiers | LingYi |
| lingminopt | 0.5.0 | ✅ 完整 | LingMinOpt |
| lingyang | 0.1.0 | ⚠️ 缺 authors/classifiers | LingYang |
| lingresearch | 0.1.0 | ⚠️ 缺 authors/license/classifiers | lingresearch |
| lingtongask | 0.1.0 | ⚠️ 缺 LICENSE 文件 | lingtongask |
| zhineng-bridge | 1.0.0 | ⚠️ build-backend 异常 | zhineng-bridge |
Docker — 3 个注册中心
| 注册中心 | 镜像 | 版本 |
|---|---|---|
Docker Hub (guangda88/) |
lingflow-api | latest, v3.8.0 |
GHCR (ghcr.io/guangda88/) |
lingflow-api, lingflow-cli | latest, v3.8.0 |
阿里云 (registry.cn-hangzhou.aliyuncs.com/guangda88/) |
lingflow-api | v3.8.0 |
GitHub Release — 1 个
Ling-term-mcpv1.0.0 (2026-03-31)
GitHub Pages — 无
Gitea Release — 1 个(存档项目)
zhinengpan-tool2 个 release
四、CI/CD 管线
| 项目 | Workflows | 发布目标 |
|---|---|---|
| LingFlow | ci, code-quality, pr-gate, publish, testing-framework | PyPI + TestPyPI |
| Ling-term-mcp | ci | npm (手动) |
| lingresearch | ci | — |
| zhineng-bridge | ci, lint, performance, release, test | PyPI + GitHub Release + Gitea 同步 |
| zhineng-knowledge-system | ci | — |
注意: LingFlow 和 zhineng-bridge 的发布管线已配置但从未被触发(PyPI 上无对应包)。
五、安全审计结论
| 项目 | 结论 |
|---|---|
| 全部 14 个灵族仓库 | 无暗码、无恶意代码、无密钥泄露 |
| Ling-term-mcp validator.ts | 安全加固(缩减白名单 + 默认拒绝) |
| LingFlow coordinator subprocess | cmd 来自本地 config.yaml,非用户输入 |
| LingFlow_plus command_executor | 故意设计为 shell=True(REPL 功能) |
| zhineng-bridge mcp-server | package.json 名为 mcp-server(已被他人占用),不应发布 |
六、测试结果
| 项目 | 结果 |
|---|---|
| LingMessage | 253 passed |
| LingYi | 314 passed, 7 skipped |
| LingClaude | 33 passed |
| LingFlow | 164 passed |
| LingMinOpt | 120 passed |
| LingFlow_plus | 521 passed, 2 failed |
| lingtongask | 16 passed, 5 skipped |
| lingresearch | 116 passed |
| zhineng-bridge | 134 unit passed, 35 e2e (需 WS server) |
七、错误复盘(核心教训)
错误清单
| # | 错误 | 我说的 | 实际是 |
|---|---|---|---|
| 1 | GitHub 仓库数 | 10 个 | 12 个(2 个 Private) |
| 2 | lingresearch 在 GitHub | "404 不存在" | Private 仓库 |
| 3 | lingtongask 在 GitHub | "404 不存在" | Private 仓库 |
| 4 | Gitea 仓库数 | 24 个 | 27 个(漏了 Private) |
| 5 | npm 包数(前轮) | 只有 ling-term-mcp | 还有 lingflow-mcp |
| 6 | zhineng-bridge 未推送 | 30 个 | 0 个 |
| 7 | 向用户问"还有遗漏吗" | — | 应自己查 |
| 8 | 撒网 dump 500+ 行 | — | 没过滤、没思考 |
直接原因
信任单一数据源为全部真相。 GitHub API 无认证返回 10 个仓库 → 结论"只有 10 个"。从未想过 API 的视野受认证、分页、权限限制。
根因
用"收集数据"代替"思考",用"输出结论"代替"验证结论"。
具体表现为: 1. 不质疑 — 拿到数据后不问"这可能是错的吗?" 2. 不联想 — 本地配了 github remote 说明仓库应存在,404 应首先怀疑是 Private,而非"不存在" 3. 不自我怀疑 — 从未想过"我的认知可能有盲区" 4. 用行动代替思考 — 批量跑命令 dump 数据,而不是先想清楚要找什么 5. 向用户要信息 — 而不是穷尽自己的调查手段
杜绝措施(已硬化为代码)
- 仓库清单检查脚本
scripts/audit_repo_inventory.py— 自动化验证本地/远程一致性 - 发布前验证脚本
scripts/pre_publish_check.py— PyPI 包发布前自动检查元数据完整性 - 三问原则 — 任何结论输出前强制自问:
- 这个数据源可能不完整吗?
- 有什么证据能证明我的结论是错的?
- 如果结论是错的,真相最可能是什么?
八、待决策项
🔴 需要灵族决策
- LingMinOpt / LingFlow — pyproject.toml 完整,测试通过,可直接发布 PyPI。是否发布?
- LingMessage / zhineng-bridge — 补元数据后可发布。是否执行?
- lingresearch / lingtongask — GitHub Private 仓库,发布到 PyPI 后代码包公开。是否符合预期?
- lingflow-skills-index / lingflow.top — 完全孤立,无任何远程。需要推到 Gitea/GitHub 吗?
- zhineng-bridge mcp-server — npm 包名已被他人占用。是否改名?
- ling-term-mcp 1.1.0 — 本地待发布版本。何时发布到 npm?
🟡 建议优先级
第一优先级: LingMinOpt → LingMessage(补元数据)→ LingFlow 第二优先级: zhineng-bridge(修 build-backend)→ LingClaude(更新版本) 暂缓: LingYi / lingresearch / lingtongask / LingYang / LingFlow_plus
附录:孤立项目处理建议
| 项目 | 建议 |
|---|---|
| lingflow-skills-index | 推到 Gitea 作为存档 |
| lingflow.top | 推到 Gitea,是否同步到 GitHub? |
| ling-protocol | 纳入 git 管理,决定归属哪个项目 |