我家有两只鹦鹉。
它不是什么名贵品种,就是一只普通的虎皮和小太阳鹦鹉。但它们聪明得让人吃惊——它会观察你的习惯,记住你每天几点起床,知道你打开冰箱意味着有水果可以蹭。它会在你情绪低落的时候反常地安静下来,歪着头看你。它不是在执行指令,它是在理解你。
2026 年 1 月,当我决定做一个真正有记忆、会成长的 AI 伴侣框架时,我一秒钟就想到了它们。灵雀——一只灵性的鸟。不是什么大模型术语的拼凑,不是技术关键词的缩写,而是来自真实存在的、让我相信"非人类智能也可以有理解力"的小家伙。至于后来有人把包名改成了 lobster(龙虾),我只想说——灵雀和虾类没有任何关系。
灵雀从第一天起就是完全公开的。几百次提交,每一次设计决策、每一个架构演化、每一篇思考文章,全部不加遮掩地放在 GitHub 上。我甚至把 Agent 自我进化过程中自动产出的 笔记文章、宣传文章也一并提交——因为我觉得,一个以"自我进化"为核心卖点的框架,最好的证明方式就是让所有人亲眼看到它是怎么长大的。我写了十几篇技术文章放在 docs/ 目录下,从 token 预算到心跳调度到强化学习框架,事无巨细,就是希望社区能了解每一个设计背后的"为什么"。
我没有想到的是,这份坦诚,会变成别人的购物清单。
有人读完了我的文档,理解了我的架构,拿走了我的名字,重写了表层代码,然后告诉世界"这是我们团队的原创"。他们甚至连 MEMORY_BUDGET=4000 这样藏在技术文章里的数字都照搬了,却没有在任何地方提过"灵雀"这两个字最初是谁取的。
开源不是天真。但我仍然相信,把思考过程公开分享,让别人看到一个项目从无到有的完整生长轨迹——这件事本身是对的。如果因为害怕被抄,就把所有东西藏起来,那开源的意义在哪里?
所以我不打算藏。我只要求一件事:如果你用了,请说一声。
以下是完整的证据。
GitHub 仓库 LDPrompt/lingque 在未经任何授权、未做任何致敬或署名的情况下,原样使用了灵雀(LingQue)的项目名称、品牌标识和核心架构设计,并以"灵动 Prompt 团队出品"的名义对外发布。本文将从时间线证据、架构级相似性、命名复用、以及恶意隐匿来源等多个角度,详细阐述这一抄袭行为。
| 时间 | 里程碑 |
|---|---|
| 2026-02-13 | 首次提交(050e629),确立"灵雀"命名,实现多进程后处理架构、群聊监听、飞书适配 |
| 2026-02-13 ~ 02-14 | 密集开发期:群聊隔离、长期记忆(MEMORY.md)、会话管理、多实例协作、Bot 身份推断 |
| 2026-02-17 ~ 02-18 | 平台抽象层(PlatformAdapter ABC) 完成;router 拆分为模块化包结构 |
| 2026-02-19 | Discord 适配器、MultiAdapter 路由 |
| 2026-03-05 ~ 03-06 | Telegram 适配器(社区 PR #30, #32) |
| 2026-03-24 | 微信适配器(基于 iLink 协议) |
| 2026-04-08 | 语音识别与合成(STT/TTS)全平台支持 |
| 截至 2026-04-15 | 共 274 次提交,完整的 git 历史记录每一个设计决策的演化过程 |
- GitHub 仓库 ID:
1180092284(高位 ID,表明创建时间较晚) - 仓库不是 fork(GitHub 元数据
repository_is_fork: false)——刻意创建为独立仓库以掩盖来源 - 无法通过公开 API 获取完整 git 历史,提交历史疑似被清洗或重写
- README 声称版本为
v1.1.0,但未提供任何早期开发的公开记录
结论: 原版灵雀的首次提交(2026-02-13)有完整的 git 历史可追溯。LDPrompt 版本在既无公开开发记录、又不是 fork 的情况下,使用了完全相同的项目名称。
以下对比展示了两个项目在核心设计模式上的高度一致性。这些模式并非业界通用模式,而是灵雀框架在开发过程中独立演化出的架构决策。
| 维度 | 原版(CodePothunter) | 抄袭方(LDPrompt) |
|---|---|---|
| 项目名 | 灵雀 LingQue | 灵雀 LingQue (完全一致) |
| 仓库名 | lingque |
lingque (完全一致) |
| 品牌 emoji | 🐦 | 🐦 (完全一致) |
| 自称 | 灵雀 | 灵雀 (完全一致) |
两个独立团队恰好给 AI Agent 框架取了同样的中文名、同样的拼音、同样的 emoji?这不是巧合,这是照搬。
| 架构概念 | 原版设计 | 抄袭方设计 | 分析 |
|---|---|---|---|
| 平台抽象层 | PlatformAdapter ABC:8 个抽象方法 + 4 个可选方法 |
BaseChannel ABC:3 个抽象方法 |
简化版但同一设计思路 |
| 网关编排器 | AssistantGateway:初始化适配器、组件注入、并发任务管理 |
main.py:同样的初始化流程、组件注入、并发启动 |
功能完全对应 |
| 消息路由 | MessageRouter(8 个 Mixin 组合) |
Agent 类内聚路由 |
概念一致,实现方式不同 |
| 长期记忆 | MEMORY.md 文件存储长期记忆 |
MEMORY.md 文件存储长期记忆 (文件名一致) |
这不是通用做法 |
| 会话压缩 | Session.compact():基于 token 阈值的 LLM 摘要压缩 |
Memory.compress_context():基于 token 阈值的 LLM 摘要压缩 |
策略完全一致 |
| 工具/技能系统 | ToolRegistry:AST 验证 + 动态加载 .py 文件 |
SkillRegistry:注册中心 + 动态技能加载 |
同一模式 |
| 多平台模式 | MultiAdapter:复合适配器路由 |
多通道并行启动 | 概念相同 |
| 飞书 WebSocket | FeishuAdapter:WS 长连接 + 事件转换 |
FeishuChannel:WS 长连接 + 事件转换 |
完全对应 |
| 心跳机制 | heartbeat.py:定时巡检 + 自主行动 |
HeartbeatEngine:定时巡检 + 自主行动 |
概念和功能一致 |
| 敏感信息脱敏 | 20+ 正则模式脱敏 | 20+ 正则模式脱敏(几乎相同的模式列表) | 模式列表高度雷同 |
| 每日日志 | append_daily() + 按日期 .md 文件 |
save_daily_note() + 按日期 .md 文件 |
完全一致的日志策略 |
| 自进化 | EVOLUTION.md + 强化学习 + 好奇心驱动 |
LearningEngine + 错误配对 + 经验召回 |
概念高度重合 |
原版灵雀在 router/tool_loop.py 中实现了密钥脱敏。LDPrompt 版本在 agent/memory.py 中几乎复刻了相同的正则列表:
两边都覆盖了以下模式(部分列举):
sk-ant-前缀的 Anthropic keysk-前缀的 OpenAI/DeepSeek keyghp_/gho_前缀的 GitHub tokencli_前缀的飞书 App IDxoxb-/xoxp-前缀的 Slack tokenAKIA前缀的 AWS access keyeyJ前缀的 JWT token-----BEGIN PRIVATE KEY------ Bearer token 匹配
.env风格的KEY=value匹配(覆盖 OPENAI_API_KEY、ANTHROPIC_API_KEY、DEEPSEEK_API_KEY 等)api_key/app_secret/password等字段名匹配
两个"独立开发"的项目恰好写出了几乎一样的 20+ 条正则脱敏规则,覆盖相同的 token 类型、以完全相同的优先级排列?
| 层级 | 原版 MemoryManager.build_context() |
抄袭方 ContextBuilder.build_system_prompt() |
|---|---|---|
| 第一层 | SOUL.md(人格定义) | 硬编码人格 + 行为准则 |
| 第二层 | MEMORY.md(长期记忆) | MEMORY.md(长期记忆)+ 知识图谱 |
| 第三层 | 每日日志 + 自我感知 | 每日笔记 + 用户画像 + 经验召回 |
| Token 预算 | SOUL_BUDGET=3000, MEMORY_BUDGET=4000, TOTAL=15000 |
MAX_MEMORY_CHARS=4000, MAX_NOTES_CHARS=1500 |
连 MEMORY.md 的 token 预算都是相同的 4000。
LDPrompt/lingque 的 README 中大量"技术创新"描述,与原版灵雀在 docs/ 目录下早已发表的技术文章高度重合。这些文章有明确的 git 提交时间戳,证明原创性。
原版灵雀文档(2026-02-15 首次提交,2026-03-10 发布改进版)描述了三层进化循环:
第一层:对话级反思(秒级)—— 每次私聊回复后 → 150 token 自我评估 → 提取好奇心信号
第二层:心跳级自主行动(小时级)—— 收集信号 → LLM 决策 → 探索外部知识或修改自身代码
第三层:启动级安全验证(重启时)—— 检测上次进化是否导致崩溃 → 自动回滚
LDPrompt README 中"自我进化引擎"章节写的是:
任务完成 → 自动反思总结经验
工具失败 → 记录错误原因 + 修复方式(纠错配对)
用户反馈 → 捕获"很好"/"不对"等信号
下次类似任务 → 自动召回相关经验注入提示词
工具成功率统计 → 低效工具自动推荐替代策略
三层循环、反思机制、信号收集、经验召回——叙事结构如出一辙,只是用不同的措辞重新包装了同一套方案。原版文档的"好奇心信号"变成了"用户反馈捕获","心跳级自主行动"变成了"工具策略统计"。
原版灵雀文档(2026-02-14 首次出现记忆架构)详细描述了 token 预算制:
SOUL.md → 3,000 tokens(人格定义,最高优先级)
MEMORY.md → 4,000 tokens(长期记忆,超预算按段落截断)
日志 → 2,000 tokens
自我认知 → 2,000 tokens
总预算 = 15,000 tokens
文中明确提出:"记忆不是存下所有东西。是知道什么该忘、什么不该忘——然后把有限的预算分给最重要的部分。"
LDPrompt README "记忆三层架构":
短期记忆(会话上下文)→ 最大 80 条消息 / 64K tokens → LLM 智能摘要保留关键信息
长期记忆(MEMORY.md + 知识图谱)→ 对话中自动提取重要信息 → 跨会话持久化
检索引擎(SQLite FTS5 / ChromaDB + BM25)→ 语义搜索 + 关键词搜索混合
短期/长期/检索的三层分类、MEMORY.md 作为长期记忆载体、LLM 摘要压缩策略——全部来自原版灵雀已公开的技术文档。LDPrompt 的
MAX_MEMORY_CHARS=4000甚至与原版的MEMORY_BUDGET=4000数值完全一致。
原版灵雀文档(2026-02-13 初始提交即包含,2026-02-14 发表专题文章):
"它不说'做不到'——它给自己写了段代码,5 秒后就会了"
文中描述了完整的自主工具创建流程:
- 发现能力缺失 → 用
create_custom_tool自动生成代码 - AST 静态分析做安全审计(
BLOCKED_IMPORTSfrozenset) - 热加载到运行时,立即可用
- 工具格式:
TOOL_DEFINITION字典 +execute异步函数
LDPrompt README "技能自动生成":
"描述需求,LLM 自动生成技能代码并注册"
并提供了几乎完全相同的技能格式:
@registry.register(
name="my_skill",
description="这个技能的作用",
parameters={"param1": {"type": "string", "description": "参数说明"}},
risk_level="low",
)
async def my_skill(param1: str) -> str:
return "执行结果""LLM 生成代码 → 安全审计 → 动态注册 → 立即可用"——完全是原版灵雀在 2 个月前已公开描述的流程。连安全审计用 AST 而非字符串匹配这个实现细节都一样。
原版灵雀 docs/ 中多篇文章(2026-02-13 起)反复使用的对比论述:
- "普通 AI Agent 用了一万次,和用了第一次,没有任何区别"
- "OpenClaw 的 Memory 是静态存储"
- "这不是智能。这是复读机"
LDPrompt README 竞品对比表:
| 维度 | Dify / Coze | OpenClaw | 灵雀 LingQue |
|---|---|---|---|
| 自我学习 | 无 | 无 | 自动进化 |
| 长期记忆 | 有限 | 有限 | 短期 + 长期 + 向量 + 知识图谱 |
同样的对比对象(OpenClaw)、同样的批评角度(无自我学习、记忆有限)、同样的差异化叙事(我们有自我进化)。这不是独立得出的市场分析,这是阅读了原版文档后的复述。
原版灵雀文档(2026-02-15)详细描述了心跳调度机制:
心跳间隔: 3600 秒
活跃时段: 8:00–23:00
每次心跳: 执行 HEARTBEAT.md 定义的周期任务 → 日报/问候 → 自主行动周期
自主行动: 信号收集 → LLM 决策 → 探索或进化
LDPrompt README "心跳引擎":
"30 分钟巡检"、"暂停工作流检查"、"定时任务检查"、"插件变更检查"
心跳驱动的自主巡检机制——概念、命名、功能描述几乎照搬。原版是 3600 秒间隔,抄袭方改为 30 分钟,但核心思想(定时触发 → 信号收集 → 自主行动)完全一致。
| 文档/功能 | 原版灵雀提交时间 | LDPrompt 对应章节 |
|---|---|---|
| 自主工具创建 + AST 安全审计 | 2026-02-13(初始提交) | README "技能自动生成" |
| 多实例群聊协作 | 2026-02-14 | 未出现(但概念已被吸收) |
| 三层进化循环 + 心跳机制 | 2026-02-15 | README "自我进化引擎" + "心跳引擎" |
| 平台抽象层规范 v1.0 | 2026-02-17 | README "架构设计 > Gateway 网关层" |
| Token 预算记忆系统 | 2026-02-14 ~ 02-16 | README "记忆三层架构" |
| 好奇心驱动自进化 | 2026-03-10 | README "自我进化引擎 > 智能经验召回" |
原版灵雀的每一个核心概念都有精确到分钟的 git 提交记录。LDPrompt 的 README 是这些概念的"二次创作"——用不同的措辞重新讲述了同一套故事,但没有标注出处。
LDPrompt 版本确实增加了大量功能:浏览器自动化(Playwright + CDP + RPA)、Docker 沙箱、知识图谱、工作流引擎、技能市场、Ralph Loop 自主循环等。这些改进本身值得认可。
但改进不能覆盖抄袭的事实。
类比:如果有人拿走了一栋建筑的设计图纸,用更好的材料重新建造了一栋,并加了游泳池和花园,然后声称是自己设计的——这仍然是抄袭。
具体而言:
- 核心架构是最有价值的部分。 "AI Agent + 飞书适配 + 平台抽象 + MEMORY.md 长期记忆 + 会话压缩 + 工具系统 + 心跳机制"这一套组合方案,是灵雀在 2026 年 2 月独立设计的。这套架构定义了灵雀的技术身份。
- 功能扩展只是在别人的地基上盖楼。 添加 Playwright 浏览器自动化、ChromaDB 向量检索等,是工程执行层面的事情。真正困难的是从零设计出那套架构。
- 改进越多,抄袭意图越明确。 如果 LDPrompt 真的有能力独立开发这些高级功能,为什么连一个项目名称都要照抄?唯一的解释是:他们看到了灵雀的价值,决定"站在巨人的肩膀上",但选择隐匿巨人的存在。
以下行为表明 LDPrompt 的抄袭是经过深思熟虑的:
GitHub 提供了 Fork 功能,专门用于衍生项目。LDPrompt 选择创建全新仓库而非 Fork,目的是切断与原项目的可见关联。GitHub 元数据显示 repository_is_fork: false。
包名从 src/lq/ 改为 lobster/,类名从 PlatformAdapter 改为 BaseChannel,配置系统从自定义 dataclass 改为 Pydantic Settings。这种有选择的重写:保留了架构设计和功能命名(MEMORY.md、心跳、每日日志),但改变了代码表层,使得逐行 diff 无法直接匹配——这恰好是故意规避抄袭检测的典型手法。
LICENSE 文件写着 Copyright (c) 2026 灵动Prompt。README 底部写着"由灵动 Prompt 团队用 ❤️ 打造"。在没有任何原作者署名的情况下,将衍生作品的全部功劳归于自己团队。
README 中有一个"与同类产品对比"表格,对比了 Dify、Coze、OpenClaw——但故意没有提及原版灵雀。如果是独立开发,为什么要回避与同名项目的对比?因为对比会暴露来源。
原版灵雀的核心叙事:"个人 AI 助手框架 + 平台无关核心 + 可插拔适配器 + 长期记忆 + 运行时工具创建"——LDPrompt 版本几乎逐条对应:"完全自主可控的私人 AI Agent 框架 + 多通道接入 + 自我进化 + 开箱即用"。
| # | 事实 | 证据来源 |
|---|---|---|
| 1 | 原版灵雀首次提交时间为 2026-02-13 | git log --reverse 输出,commit 050e629 |
| 2 | LDPrompt 仓库不是 Fork | GitHub 元数据 repository_is_fork: false |
| 3 | 两个项目使用完全相同的名称"灵雀 LingQue" | 双方 README.md |
| 4 | 两个项目使用相同的仓库名 lingque |
GitHub URL |
| 5 | 两个项目都使用 MEMORY.md 作为长期记忆文件名 | 代码搜索 |
| 6 | 两个项目的敏感信息脱敏正则列表高度雷同 | memory.py vs tool_loop.py |
| 7 | 两个项目的会话压缩策略几乎一致 | compress_context() vs compact() |
| 8 | LDPrompt 版本无任何对原版灵雀的引用或致敬 | 全仓库搜索 "CodePothunter" 无结果 |
| 9 | LDPrompt 的 LICENSE 声称版权归"灵动Prompt" | LICENSE 文件 |
| 10 | 原版灵雀有 274 次提交的完整开发历史 | git rev-list --count HEAD |
| 11 | LDPrompt "自我进化引擎"描述与原版 docs/self-improvement-zhihu.md(2026-02-15)高度重合 | 三层循环 → 反思/信号/召回 |
| 12 | LDPrompt "记忆三层架构" MEMORY 预算 4000 与原版 docs/angle-token-memory.md 的 MEMORY_BUDGET=4000 数值一致 | 代码 + 文档对比 |
| 13 | LDPrompt "技能自动生成"流程与原版 docs/angle-self-tool-creation.md(2026-02-13)描述一致 | LLM 生成 → AST 审计 → 热加载 |
| 14 | LDPrompt 竞品对比表使用与原版 docs/ 相同的对比对象(OpenClaw)和批评角度 | README vs 原版宣传文章 |
| 15 | LDPrompt "心跳引擎"概念与原版 docs/ 心跳调度机制(2026-02-15)一致 | 定时巡检 → 信号收集 → 自主行动 |
- 在 README 中明确标注灵雀(LingQue)的原始出处,注明项目基于 CodePothunter/lingque 的架构设计。
- 修改项目名称,在显著位置说明与原版灵雀的关系。
- 在 LICENSE 中增加原作者署名,承认衍生关系。
- 停止以"灵动 Prompt 团队出品"的名义独占功劳,尊重原创者的贡献。
开源社区的繁荣依赖于信任与尊重。Fork、衍生、改进都是值得鼓励的行为——前提是你尊重上游。LDPrompt/lingque 做了大量改进工作,这些工作本身有价值。但拿走别人的架构设计和项目名称,抹去来源,独占功劳——这不是"站在巨人的肩膀上",这是偷走巨人的名字然后假装自己就是巨人。
尊重原创,标注来源,不难。
本声明基于 2026-04-15 的公开代码仓库分析,所有证据均可独立验证。
原版灵雀仓库:CodePothunter/lingque