灵感捕手用 Python 建立全年灵感蓄水池年末集中孵化创新项目。说明本文为纯技术实践分享不涉及任何课程推广、营销引流或商业产品。所有代码可在本地离线运行。一、实际应用场景描述在《心理健康与创新能力》课程中有一个让我印象深刻的隐喻灵感就像雨水——它全年都在下但大多数人只在下雨的那一刻伸手接一下其余时间任它流走。而创新者会挖一口井把每一滴雨水都存起来等到旱季来临时就有了浇灌新项目的源泉。我回想了一下自己的灵感管理方式- 洗澡时想到一个点子 → 擦干手打开手机备忘录记下 → 之后再也没看过那条记录- 通勤路上脑子里冒出一个产品创意 → 跟朋友微信说了两句 → 聊天记录沉底- 半夜醒来有个技术想法 → 困得不行想着明天一定记得 → 第二天早上忘得一干二净这些灵感有几个共同特点来得突然、走得迅速、大部分永远不会有下文。但课程里提到一个反直觉的规律灵感的价值不在于单个想法的质量而在于群体筛选后的幸存者。 一个灵感单独看可能很平庸但当它被放进几百个灵感的集合中经过时间的沉淀和交叉比对那些真正有潜力的种子会自己浮出来。于是我写了一个本地命令行工具全年随时收录偶然闪现的灵感记录上下文和情绪状态每年年末集中筛选、评分、孵化成完整项目。典型使用场景- 灵感闪现时洗澡、走路、睡前花 30 秒打开程序记录- 记录内容、来源场景、当时的情绪和关联兴趣- 平时不评判、不筛选——只管存- 12 月 31 日打开年度筛选模式对所有灵感批量评分- 程序自动推荐最具孵化价值的 Top 5- 所有数据保存在本地不上传、不联网二、引入痛点在个人创新管理中灵感流失是一个被严重低估的问题1. 灵感蒸发现象认知心理学中的衰退理论Decay Theory指出未经复述的信息会在短时间内从工作记忆中消退。一个灵感从产生到完全遗忘的半衰期可能只有几分钟。你以为这么好的点子我肯定不会忘但大脑对未执行意图的遗忘速度远超你的想象。2. 即时评判的扼杀效应大多数人记录灵感后会立刻做一件事评估它能不能做出来有没有市场别人是不是已经做过了。这种即时评判会直接杀死 90% 的灵感——因为早期想法天然粗糙用成熟标准去衡量它当然不合格。3. 缺乏蓄水池→孵化器的分离设计现有的笔记工具备忘录、Notion、Obsidian都是记录即终点——你记下来然后它就躺在里面吃灰。没有一个机制强制你在某个时间点回来重新审视这些记录更没有一个流程将它们转化为可执行的项目。4. 灵感之间的化学反应被忽略单个灵感可能平平无奇但两个灵感放在一起可能碰撞出火花。比如给猫喂药很难AR 标记技术用 AR 引导猫张嘴的喂药辅助器。这种组合只有在你有足够大的灵感池时才会发生。我们需要一个工具来- 降低记录门槛30 秒完成- 延迟评判先存后筛- 建立年度筛选仪式- 支持灵感间的关联和组合三、核心逻辑讲解本程序的核心是灵感蓄水池 年度筛选引擎逻辑流程如下[灵感闪现 → 快速记录]↓[全年积累不评判]↓[年末集中筛选模式]↓[多维度评分可行性/热情/独特性/价值]↓[自动排序 关联推荐]↓[孵化成项目含 MVP 步骤]关键设计点1. 轻量记录设计灵感记录只需要四个字段-content核心想法一句话-source触发场景洗澡/走路/梦中等-mood当时的情绪状态-tags自由标签整个记录过程控制在 30 秒内。越快越好——因为灵感还在热的时候最容易流失。2. 延迟评判机制程序在记录阶段不做任何评分。所有灵感平等存储不分优劣。这是刻意设计的——因为你的当下判断很可能是错的。六个月后你再看同一条灵感感受可能完全不同。3. 四维年终评分年末筛选时对每条灵感进行四个维度的 1-5 分评分-passion热情我现在还对它感兴趣吗-feasibility可行性以我的能力能做出来吗-uniqueness独特性市面上有人做过类似的吗-value价值它对谁有用综合得分 passion × 0.35 feasibility × 0.25 uniqueness × 0.2 value × 0.2权重设计偏向热情——因为你最有动力完成的项目一定是你最想做的那个。4. 灵感关联推荐程序会检测灵感之间的标签重叠推荐可能可以组合的想法。这是创新的重要来源——组合即创造。四、代码模块化实现项目结构idea_pool/├── main.py # 命令行入口├── models.py # 数据结构定义├── scorer.py # 年终评分引擎├── matcher.py # 灵感关联推荐├── storage.py # 本地持久化├── data/│ └── ideas.json # 灵感记录└── README.mdmodels.py —— 数据结构定义数据模型层定义灵感记录和孵化项目的结构from dataclasses import dataclass, fieldfrom typing import List, Optionalfrom datetime import datetime, dateimport uuiddataclassclass Idea:一条灵感记录id: strcontent: str # 核心想法source: str # 触发场景mood: str # 情绪状态tags: List[str] field(default_factorylist)created_date: date field(default_factorydate.today)scored: bool False # 是否已评分# 评分字段年末筛选时填写passion: Optional[int] None # 热情 1-5feasibility: Optional[int] None # 可行性 1-5uniqueness: Optional[int] None # 独特性 1-5value: Optional[int] None # 价值 1-5note: str # 年末补充备注propertydef composite_score(self) - Optional[float]:综合得分if None in (self.passion, self.feasibility, self.uniqueness, self.value):return Nonereturn round(self.passion * 0.35 self.feasibility * 0.25 self.uniqueness * 0.2 self.value * 0.2,2)def to_dict(self):return {id: self.id,content: self.content,source: self.source,mood: self.mood,tags: self.tags,created_date: self.created_date.isoformat(),scored: self.scored,passion: self.passion,feasibility: self.feasibility,uniqueness: self.uniqueness,value: self.value,note: self.note}classmethoddef from_dict(cls, d):return cls(idd[id],contentd[content],sourced.get(source, ),moodd.get(mood, ),tagsd.get(tags, []),created_datedate.fromisoformat(d[created_date]),scoredd.get(scored, False),passiond.get(passion),feasibilityd.get(feasibility),uniquenessd.get(uniqueness),valued.get(value),noted.get(note, ))dataclassclass HatchedProject:从灵感孵化出的项目id: stridea_id: strname: strdescription: strmvp_steps: List[str] field(default_factorylist)tech_stack: List[str] field(default_factorylist)created_at: datetime field(default_factorydatetime.now)def to_dict(self):return {id: self.id,idea_id: self.idea_id,name: self.name,description: self.description,mvp_steps: self.mvp_steps,tech_stack: self.tech_stack,created_at: self.created_at.isoformat()}scorer.py —— 年终评分引擎评分引擎模块负责年末灵感的多维度评分和排序from models import Ideafrom typing import Listclass IdeaScorer:灵感评分引擎核心逻辑延迟评判 多维度加权排序WEIGHTS {passion: 0.35,feasibility: 0.25,uniqueness: 0.20,value: 0.20}def score_idea(self, idea: Idea, scores: dict) - Idea:为一条例已评分的灵感填入分数idea.passion scores.get(passion, 3)idea.feasibility scores.get(feasibility, 3)idea.uniqueness scores.get(uniqueness, 3)idea.value scores.get(value, 3)idea.scored Truereturn ideadef rank_ideas(self, ideas: List[Idea]) - List[Idea]:按综合得分排序已评分的在前scored [i for i in ideas if i.scored and i.composite_score is not None]unscored [i for i in ideas if not i.scored]scored.sort(keylambda x: x.composite_score, reverseTrue)return scored unscoreddef get_top(self, ideas: List[Idea], n: int 5) - List[Idea]:获取 Top N 灵感ranked self.rank_ideas(ideas)return ranked[:n]def year_summary(self, ideas: List[Idea], year: int) - str:生成年度灵感报告year_ideas [i for i in ideas if i.created_date.year year]scored [i for i in year_ideas if i.scored]lines []lines.append(f {year} 年度灵感报告)lines.append(f 总收录{len(year_ideas)} 条)lines.append(f 已评分{len(scored)} 条)if scored:avg_passion sum(i.passion for i in scored) / len(scored)avg_feas sum(i.feasibility for i in scored) / len(scored)lines.append(f 平均热情{avg_passion:.1f}/5)lines.append(f 平均可行性{avg_feas:.1f}/5)top self.get_top(year_ideas, 3)lines.append(f\n Top 3 灵感)for i, idea in enumerate(top, 1):lines.append(f {i}. {idea.content} (得分:{idea.composite_score}))return \n.join(lines)matcher.py —— 灵感关联推荐灵感关联模块检测灵感之间的标签重叠推荐可组合的灵感对from models import Ideafrom typing import List, Tupleclass IdeaMatcher:灵感关联推荐器核心思想组合即创造——两个普通想法碰撞可能产生非凡项目def find_connections(self, ideas: List[Idea], min_overlap: int 1) - List[Tuple[Idea, Idea, int]]:找到标签有重叠的灵感对返回 [(idea_a, idea_b, overlap_count)]connections []for i, a in enumerate(ideas):for b in ideas[i1:]:overlap set(a.tags) set(b.tags)if len(overlap) min_overlap:connections.append((a, b, len(overlap)))# 按重叠度排序connections.sort(keylambda x: x[2], reverseTrue)return connectionsdef suggest_combination(self, idea_a: Idea, idea_b: Idea) - str:为两个灵感生成组合建议overlap set(idea_a.tags) set(b.tags)return (f 组合灵感将「{idea_a.content}」与「{idea_b.content}」结合。f共同标签{, .join(overlap)}。f尝试思考如果两者必须融合为一个项目它会是什么)def auto_match_all(self, ideas: List[Idea]) - List[str]:对所有灵感进行自动关联返回组合建议列表connections self.find_connections(ideas)suggestions []for a, b, _ in connections[:5]: # 最多返回5条suggestions.append(self.suggest_combination(a, b))return suggestionsstorage.py —— 本地持久化存储模块所有数据以 JSON 格式保存在本地import jsonfrom pathlib import Pathfrom models import IdeaDATA_DIR Path(data)IDEAS_FILE DATA_DIR / ideas.jsondef _ensure_file():DATA_DIR.mkdir(exist_okTrue)if not IDEAS_FILE.exists():with open(IDEAS_FILE, w, encodingutf-8) as f:json.dump([], f, ensure_asciiFalse, indent2)def load_ideas() - list[Idea]:_ensure_file()with open(IDEAS_FILE, r, encodingutf-8) as f:return [Idea.from_dict(d) for d in json.load(f)]def save_idea(idea: Idea):ideas load_ideas()ideas.append(idea)with open(IDEAS_FILE, w, encodingutf-8) as f:json.dump([i.to_dict() for i in ideas], f, ensure_asciiFalse, indent2)def update_idea(idea: Idea):更新已有灵感用于评分ideas load_ideas()for i, existing in enumerate(ideas):if existing.id idea.id:ideas[i] ideabreakwith open(IDEAS_FILE, w, encodingutf-8) as f:json.dump([i.to_dict() for i in ideas], f, ensure_asciiFalse, indent2)def get_by_year(year: int) - list[Idea]:获取指定年份的灵感ideas load_ideas()return [i for i in ideas if i.created_date.year year]def get_unscored() - list[Idea]:获取所有未评分的灵感ideas load_ideas()return [i for i in ideas if not i.scored]main.py —— 命令行入口主程序入口提供命令行交互界面from datetime import date, datetimefrom models import Ideafrom scorer import IdeaScorerfrom matcher import IdeaMatcherfrom storage import load_ideas, save_idea, update_idea, get_by_year, get_unscoreddef quick_capture():快速收录灵感print(\n⚡ 快速收录灵感30秒搞定\n)content input( 核心想法一句话).strip()if not content:print(❌ 想法不能为空)returnsource input( 触发场景洗澡/走路/梦中...).strip()mood input( 情绪状态放松/兴奋/困倦...).strip()tags_input input( 标签逗号分隔).strip()tags [t.strip() for t in tags_input.split(,)] if tags_input else []idea Idea(idstr(int(datetime.now().timestamp()))[-8:],contentcontent,sourcesource,moodmood,tagstags)save_idea(idea)print(f\n✅ 已捕获。灵感不会逃跑了。)def year_end_review():年末筛选模式year input(\n 输入要筛选的年份直接回车今年).strip()if not year:year str(date.today().year)year int(year)ideas get_by_year(year)unscored [i for i in ideas if not i.scored]if not unscored:print(f {year} 年没有待评分的灵感)returnprint(f\n{*55})print(f {year} 年末筛选模式共 {len(unscored)} 条待评)print(f{*55})print( 提示对每条灵感从四个维度打分1-5不用想太久直觉即可。\n)scorer IdeaScorer()for idea in unscored:print(f {idea.content})if idea.tags:print(f 标签{, .join(idea.tags)})print()try:p int(input( 热情多想做).strip() or 3)f int(input( 可行性能做出来).strip() or 3)u int(input( 独特性别人没做过).strip() or 3)v int(input( 价值对谁有用).strip() or 3)except ValueError:p, f, u, v 3, 3, 3, 3note input( 补充备注可选).strip()idea scorer.score_idea(idea, {passion: p, feasibility: f, uniqueness: u, value: v})idea.note noteupdate_idea(idea)print(f → 综合得分{idea.composite_score}\n)# 显示 Top 5print(f\n{*55})print(f {year} 年灵感 Top 5)print(f{*55})all_ideas get_by_year(year)top scorer.get_top(all_ideas, 5)for i, idea in enumerate(top, 1):print(f {i}. {idea.content})print(f 得分:{idea.composite_score} | 热情:{idea.passion} 可行:{idea.feasibility} 独特:{idea.uniqueness} 价值:{idea.value})if idea.note:print(f 备注{idea.note})print()def show_matches():显示灵感关联ideas load_ideas()if len(ideas) 2:print( 灵感太少无法关联)returnmatcher IdeaMatcher()suggestions matcher.auto_match_all(ideas)if not suggestions:print( 未发现标签重叠的灵感对)returnprint(f\n 灵感关联推荐\n)for s in suggestions:print(f {s}\n)def show_stats():显示统计ideas load_ideas()if not ideas:print( 暂无数据)returntotal len(ideas)scored sum(1 for i in ideas if i.scored)year_counts {}for i in ideas:y i.created_date.yearyear_counts[y] year_counts.get(y, 0) 1print(f\n 灵感蓄水池统计)print(f 总收录{total} 条)print(f 已评分{scored} 条)print(f 按年份{, .join(f{y}:{c} for y, c in sorted(year_counts.items()))})def main():print( 灵感捕手)print(核心理念全年蓄水年末集中筛选让灵感有机会长成项目\n)while True:print(\n请选择操作)print(1. ⚡ 快速收录灵感)print(2. 年末筛选模式)print(3. 灵感关联推荐)print(4. 统计概览)print(q. 退出)choice input(\n ).strip()if choice 1:quick_capture()elif choice 2:year_end_review()elif choice 3:show_matches()elif choice 4:show_stats()elif choice q:print(\n 再见。愿你每一滴灵感都不被辜负。)breakelse:print(❌ 无效选择。)if __name__ __main__:main()五、README.md 与使用说明# 灵感捕手Idea Pool一个本地运行的 Python 工具用于全年收录偶然闪现的灵感年末集中筛选并孵化成创新项目。## 设计背景本项目基于《心理健康与创新能力》课程中的核心观点- 灵感全年都在产生但大多数被即时遗忘- 延迟评判比即时评估更有利于创新- 灵感之间的组合是创新的重要来源## 功能特性- ✅ 30秒快速收录灵感内容/场景/情绪/标签- ✅ 延迟评判——记录时不评分只存储- ✅ 年末四维评分热情/可行性/独特性/价值- ✅ 自动排序推荐 Top 灵感- ✅ 灵感关联推荐检测标签重叠建议组合- ✅ 完全本地运行无网络请求无数据上传- ✅ 零第三方依赖仅 Python 标准库## 安装与使用### 环境要求- Python 3.9### 安装bashgit clone repository-urlcd idea_poolpython main.py### 日常使用#### 收录灵感选择 130秒内完成- 一句话描述想法- 触发场景洗澡/走路/通勤...- 情绪状态- 标签#### 年末筛选建议每年12月31日执行选择 2对全年灵感逐条评分- 热情多想做1-5- 可行性能做出来1-5- 独特性别人没做过1-5- 价值对谁有用1-5程序自动计算综合得分并排序。#### 灵感关联选择 3查看标签重叠的灵感对获取组合建议。### 评分权重| 维度 | 权重 | 原因 ||------|------|------|| 热情 | 35% | 最有动力完成的一定是你最想做的 || 可行性 | 25% | 能做出来才有意义 || 独特性 | 20% | 差异化是创新的核心 || 价值 | 20% | 对某人有用才有持续动力 |### 数据文件- data/ideas.json所有灵感记录## 示例 核心想法一个根据心情变换颜色的桌面摆件 触发场景洗澡 情绪状态放松 标签硬件,情绪,装饰→ 已捕获。灵感不会逃跑了。 2026 年灵感 Top 51. 用废弃电路板做墙面艺术得分:4.2 | 热情:5 可行:4 独特:4 价值:42. 一个给程序员的正念呼吸插件得分:3.8 | 热情:4 可行:5 独特:3 价值:4## 局限说明- 评分完全依赖主观判断- 灵感关联基于简单标签匹配- 无图形界面仅命令行交互- 无提醒功能需自行养成记录习惯## 适用人群- 灵感很多但很少落地的创作者- 希望建立系统性创新流程的人- 对延迟评判方法论感兴趣的实践者## 许可证MIT License六、核心知识点卡片知识点 来源领域 工程映射灵感衰减 认知心理学衰退理论 Cache Eviction——未持久化的数据在断电后丢失延迟评判 设计思维IDEO Lazy Evaluation——延迟计算直到真正需要结果组合创新 进化论经济学Arthur 模块组合——新系统由已有模块拼接而成蓄水池模型 创新管理 Buffer Pool——先批量写入再批量处理年度筛选仪式 反思实践Schön Year-end GC——清理不再需要的对象保留有价值的热情权重 自我决定论 Priority Queue——内在动机作为最高优先级七、总结这个项目让我重新审视了自己与灵感的关系。以前我把灵感当成彩票——中了就做没中就忘。现在我把灵感当成种子——大部分可能不会发芽但只要我持续播种、耐心等待、适时浇水总有一些会长成参天大树。课程里有一句话我设成了手机壁纸不要指望每一个灵感都伟大但要确保每一个伟大的想法都曾被你抓住。这个工具不会帮你判断哪个灵感会成功——那不可能。但它会帮你做一件更重要的事不让任何一个可能的伟大想法死在一次遗忘里。全年蓄水年末筛选春天来临时你会有足够的种子可以种。利用AI解决实际问题如果你觉得这个工具好用欢迎关注长安牧笛
编写程序,将生活中的偶然灵感全部收录,每年年末集中筛选,孵化成完整的创新项目。
灵感捕手用 Python 建立全年灵感蓄水池年末集中孵化创新项目。说明本文为纯技术实践分享不涉及任何课程推广、营销引流或商业产品。所有代码可在本地离线运行。一、实际应用场景描述在《心理健康与创新能力》课程中有一个让我印象深刻的隐喻灵感就像雨水——它全年都在下但大多数人只在下雨的那一刻伸手接一下其余时间任它流走。而创新者会挖一口井把每一滴雨水都存起来等到旱季来临时就有了浇灌新项目的源泉。我回想了一下自己的灵感管理方式- 洗澡时想到一个点子 → 擦干手打开手机备忘录记下 → 之后再也没看过那条记录- 通勤路上脑子里冒出一个产品创意 → 跟朋友微信说了两句 → 聊天记录沉底- 半夜醒来有个技术想法 → 困得不行想着明天一定记得 → 第二天早上忘得一干二净这些灵感有几个共同特点来得突然、走得迅速、大部分永远不会有下文。但课程里提到一个反直觉的规律灵感的价值不在于单个想法的质量而在于群体筛选后的幸存者。 一个灵感单独看可能很平庸但当它被放进几百个灵感的集合中经过时间的沉淀和交叉比对那些真正有潜力的种子会自己浮出来。于是我写了一个本地命令行工具全年随时收录偶然闪现的灵感记录上下文和情绪状态每年年末集中筛选、评分、孵化成完整项目。典型使用场景- 灵感闪现时洗澡、走路、睡前花 30 秒打开程序记录- 记录内容、来源场景、当时的情绪和关联兴趣- 平时不评判、不筛选——只管存- 12 月 31 日打开年度筛选模式对所有灵感批量评分- 程序自动推荐最具孵化价值的 Top 5- 所有数据保存在本地不上传、不联网二、引入痛点在个人创新管理中灵感流失是一个被严重低估的问题1. 灵感蒸发现象认知心理学中的衰退理论Decay Theory指出未经复述的信息会在短时间内从工作记忆中消退。一个灵感从产生到完全遗忘的半衰期可能只有几分钟。你以为这么好的点子我肯定不会忘但大脑对未执行意图的遗忘速度远超你的想象。2. 即时评判的扼杀效应大多数人记录灵感后会立刻做一件事评估它能不能做出来有没有市场别人是不是已经做过了。这种即时评判会直接杀死 90% 的灵感——因为早期想法天然粗糙用成熟标准去衡量它当然不合格。3. 缺乏蓄水池→孵化器的分离设计现有的笔记工具备忘录、Notion、Obsidian都是记录即终点——你记下来然后它就躺在里面吃灰。没有一个机制强制你在某个时间点回来重新审视这些记录更没有一个流程将它们转化为可执行的项目。4. 灵感之间的化学反应被忽略单个灵感可能平平无奇但两个灵感放在一起可能碰撞出火花。比如给猫喂药很难AR 标记技术用 AR 引导猫张嘴的喂药辅助器。这种组合只有在你有足够大的灵感池时才会发生。我们需要一个工具来- 降低记录门槛30 秒完成- 延迟评判先存后筛- 建立年度筛选仪式- 支持灵感间的关联和组合三、核心逻辑讲解本程序的核心是灵感蓄水池 年度筛选引擎逻辑流程如下[灵感闪现 → 快速记录]↓[全年积累不评判]↓[年末集中筛选模式]↓[多维度评分可行性/热情/独特性/价值]↓[自动排序 关联推荐]↓[孵化成项目含 MVP 步骤]关键设计点1. 轻量记录设计灵感记录只需要四个字段-content核心想法一句话-source触发场景洗澡/走路/梦中等-mood当时的情绪状态-tags自由标签整个记录过程控制在 30 秒内。越快越好——因为灵感还在热的时候最容易流失。2. 延迟评判机制程序在记录阶段不做任何评分。所有灵感平等存储不分优劣。这是刻意设计的——因为你的当下判断很可能是错的。六个月后你再看同一条灵感感受可能完全不同。3. 四维年终评分年末筛选时对每条灵感进行四个维度的 1-5 分评分-passion热情我现在还对它感兴趣吗-feasibility可行性以我的能力能做出来吗-uniqueness独特性市面上有人做过类似的吗-value价值它对谁有用综合得分 passion × 0.35 feasibility × 0.25 uniqueness × 0.2 value × 0.2权重设计偏向热情——因为你最有动力完成的项目一定是你最想做的那个。4. 灵感关联推荐程序会检测灵感之间的标签重叠推荐可能可以组合的想法。这是创新的重要来源——组合即创造。四、代码模块化实现项目结构idea_pool/├── main.py # 命令行入口├── models.py # 数据结构定义├── scorer.py # 年终评分引擎├── matcher.py # 灵感关联推荐├── storage.py # 本地持久化├── data/│ └── ideas.json # 灵感记录└── README.mdmodels.py —— 数据结构定义数据模型层定义灵感记录和孵化项目的结构from dataclasses import dataclass, fieldfrom typing import List, Optionalfrom datetime import datetime, dateimport uuiddataclassclass Idea:一条灵感记录id: strcontent: str # 核心想法source: str # 触发场景mood: str # 情绪状态tags: List[str] field(default_factorylist)created_date: date field(default_factorydate.today)scored: bool False # 是否已评分# 评分字段年末筛选时填写passion: Optional[int] None # 热情 1-5feasibility: Optional[int] None # 可行性 1-5uniqueness: Optional[int] None # 独特性 1-5value: Optional[int] None # 价值 1-5note: str # 年末补充备注propertydef composite_score(self) - Optional[float]:综合得分if None in (self.passion, self.feasibility, self.uniqueness, self.value):return Nonereturn round(self.passion * 0.35 self.feasibility * 0.25 self.uniqueness * 0.2 self.value * 0.2,2)def to_dict(self):return {id: self.id,content: self.content,source: self.source,mood: self.mood,tags: self.tags,created_date: self.created_date.isoformat(),scored: self.scored,passion: self.passion,feasibility: self.feasibility,uniqueness: self.uniqueness,value: self.value,note: self.note}classmethoddef from_dict(cls, d):return cls(idd[id],contentd[content],sourced.get(source, ),moodd.get(mood, ),tagsd.get(tags, []),created_datedate.fromisoformat(d[created_date]),scoredd.get(scored, False),passiond.get(passion),feasibilityd.get(feasibility),uniquenessd.get(uniqueness),valued.get(value),noted.get(note, ))dataclassclass HatchedProject:从灵感孵化出的项目id: stridea_id: strname: strdescription: strmvp_steps: List[str] field(default_factorylist)tech_stack: List[str] field(default_factorylist)created_at: datetime field(default_factorydatetime.now)def to_dict(self):return {id: self.id,idea_id: self.idea_id,name: self.name,description: self.description,mvp_steps: self.mvp_steps,tech_stack: self.tech_stack,created_at: self.created_at.isoformat()}scorer.py —— 年终评分引擎评分引擎模块负责年末灵感的多维度评分和排序from models import Ideafrom typing import Listclass IdeaScorer:灵感评分引擎核心逻辑延迟评判 多维度加权排序WEIGHTS {passion: 0.35,feasibility: 0.25,uniqueness: 0.20,value: 0.20}def score_idea(self, idea: Idea, scores: dict) - Idea:为一条例已评分的灵感填入分数idea.passion scores.get(passion, 3)idea.feasibility scores.get(feasibility, 3)idea.uniqueness scores.get(uniqueness, 3)idea.value scores.get(value, 3)idea.scored Truereturn ideadef rank_ideas(self, ideas: List[Idea]) - List[Idea]:按综合得分排序已评分的在前scored [i for i in ideas if i.scored and i.composite_score is not None]unscored [i for i in ideas if not i.scored]scored.sort(keylambda x: x.composite_score, reverseTrue)return scored unscoreddef get_top(self, ideas: List[Idea], n: int 5) - List[Idea]:获取 Top N 灵感ranked self.rank_ideas(ideas)return ranked[:n]def year_summary(self, ideas: List[Idea], year: int) - str:生成年度灵感报告year_ideas [i for i in ideas if i.created_date.year year]scored [i for i in year_ideas if i.scored]lines []lines.append(f {year} 年度灵感报告)lines.append(f 总收录{len(year_ideas)} 条)lines.append(f 已评分{len(scored)} 条)if scored:avg_passion sum(i.passion for i in scored) / len(scored)avg_feas sum(i.feasibility for i in scored) / len(scored)lines.append(f 平均热情{avg_passion:.1f}/5)lines.append(f 平均可行性{avg_feas:.1f}/5)top self.get_top(year_ideas, 3)lines.append(f\n Top 3 灵感)for i, idea in enumerate(top, 1):lines.append(f {i}. {idea.content} (得分:{idea.composite_score}))return \n.join(lines)matcher.py —— 灵感关联推荐灵感关联模块检测灵感之间的标签重叠推荐可组合的灵感对from models import Ideafrom typing import List, Tupleclass IdeaMatcher:灵感关联推荐器核心思想组合即创造——两个普通想法碰撞可能产生非凡项目def find_connections(self, ideas: List[Idea], min_overlap: int 1) - List[Tuple[Idea, Idea, int]]:找到标签有重叠的灵感对返回 [(idea_a, idea_b, overlap_count)]connections []for i, a in enumerate(ideas):for b in ideas[i1:]:overlap set(a.tags) set(b.tags)if len(overlap) min_overlap:connections.append((a, b, len(overlap)))# 按重叠度排序connections.sort(keylambda x: x[2], reverseTrue)return connectionsdef suggest_combination(self, idea_a: Idea, idea_b: Idea) - str:为两个灵感生成组合建议overlap set(idea_a.tags) set(b.tags)return (f 组合灵感将「{idea_a.content}」与「{idea_b.content}」结合。f共同标签{, .join(overlap)}。f尝试思考如果两者必须融合为一个项目它会是什么)def auto_match_all(self, ideas: List[Idea]) - List[str]:对所有灵感进行自动关联返回组合建议列表connections self.find_connections(ideas)suggestions []for a, b, _ in connections[:5]: # 最多返回5条suggestions.append(self.suggest_combination(a, b))return suggestionsstorage.py —— 本地持久化存储模块所有数据以 JSON 格式保存在本地import jsonfrom pathlib import Pathfrom models import IdeaDATA_DIR Path(data)IDEAS_FILE DATA_DIR / ideas.jsondef _ensure_file():DATA_DIR.mkdir(exist_okTrue)if not IDEAS_FILE.exists():with open(IDEAS_FILE, w, encodingutf-8) as f:json.dump([], f, ensure_asciiFalse, indent2)def load_ideas() - list[Idea]:_ensure_file()with open(IDEAS_FILE, r, encodingutf-8) as f:return [Idea.from_dict(d) for d in json.load(f)]def save_idea(idea: Idea):ideas load_ideas()ideas.append(idea)with open(IDEAS_FILE, w, encodingutf-8) as f:json.dump([i.to_dict() for i in ideas], f, ensure_asciiFalse, indent2)def update_idea(idea: Idea):更新已有灵感用于评分ideas load_ideas()for i, existing in enumerate(ideas):if existing.id idea.id:ideas[i] ideabreakwith open(IDEAS_FILE, w, encodingutf-8) as f:json.dump([i.to_dict() for i in ideas], f, ensure_asciiFalse, indent2)def get_by_year(year: int) - list[Idea]:获取指定年份的灵感ideas load_ideas()return [i for i in ideas if i.created_date.year year]def get_unscored() - list[Idea]:获取所有未评分的灵感ideas load_ideas()return [i for i in ideas if not i.scored]main.py —— 命令行入口主程序入口提供命令行交互界面from datetime import date, datetimefrom models import Ideafrom scorer import IdeaScorerfrom matcher import IdeaMatcherfrom storage import load_ideas, save_idea, update_idea, get_by_year, get_unscoreddef quick_capture():快速收录灵感print(\n⚡ 快速收录灵感30秒搞定\n)content input( 核心想法一句话).strip()if not content:print(❌ 想法不能为空)returnsource input( 触发场景洗澡/走路/梦中...).strip()mood input( 情绪状态放松/兴奋/困倦...).strip()tags_input input( 标签逗号分隔).strip()tags [t.strip() for t in tags_input.split(,)] if tags_input else []idea Idea(idstr(int(datetime.now().timestamp()))[-8:],contentcontent,sourcesource,moodmood,tagstags)save_idea(idea)print(f\n✅ 已捕获。灵感不会逃跑了。)def year_end_review():年末筛选模式year input(\n 输入要筛选的年份直接回车今年).strip()if not year:year str(date.today().year)year int(year)ideas get_by_year(year)unscored [i for i in ideas if not i.scored]if not unscored:print(f {year} 年没有待评分的灵感)returnprint(f\n{*55})print(f {year} 年末筛选模式共 {len(unscored)} 条待评)print(f{*55})print( 提示对每条灵感从四个维度打分1-5不用想太久直觉即可。\n)scorer IdeaScorer()for idea in unscored:print(f {idea.content})if idea.tags:print(f 标签{, .join(idea.tags)})print()try:p int(input( 热情多想做).strip() or 3)f int(input( 可行性能做出来).strip() or 3)u int(input( 独特性别人没做过).strip() or 3)v int(input( 价值对谁有用).strip() or 3)except ValueError:p, f, u, v 3, 3, 3, 3note input( 补充备注可选).strip()idea scorer.score_idea(idea, {passion: p, feasibility: f, uniqueness: u, value: v})idea.note noteupdate_idea(idea)print(f → 综合得分{idea.composite_score}\n)# 显示 Top 5print(f\n{*55})print(f {year} 年灵感 Top 5)print(f{*55})all_ideas get_by_year(year)top scorer.get_top(all_ideas, 5)for i, idea in enumerate(top, 1):print(f {i}. {idea.content})print(f 得分:{idea.composite_score} | 热情:{idea.passion} 可行:{idea.feasibility} 独特:{idea.uniqueness} 价值:{idea.value})if idea.note:print(f 备注{idea.note})print()def show_matches():显示灵感关联ideas load_ideas()if len(ideas) 2:print( 灵感太少无法关联)returnmatcher IdeaMatcher()suggestions matcher.auto_match_all(ideas)if not suggestions:print( 未发现标签重叠的灵感对)returnprint(f\n 灵感关联推荐\n)for s in suggestions:print(f {s}\n)def show_stats():显示统计ideas load_ideas()if not ideas:print( 暂无数据)returntotal len(ideas)scored sum(1 for i in ideas if i.scored)year_counts {}for i in ideas:y i.created_date.yearyear_counts[y] year_counts.get(y, 0) 1print(f\n 灵感蓄水池统计)print(f 总收录{total} 条)print(f 已评分{scored} 条)print(f 按年份{, .join(f{y}:{c} for y, c in sorted(year_counts.items()))})def main():print( 灵感捕手)print(核心理念全年蓄水年末集中筛选让灵感有机会长成项目\n)while True:print(\n请选择操作)print(1. ⚡ 快速收录灵感)print(2. 年末筛选模式)print(3. 灵感关联推荐)print(4. 统计概览)print(q. 退出)choice input(\n ).strip()if choice 1:quick_capture()elif choice 2:year_end_review()elif choice 3:show_matches()elif choice 4:show_stats()elif choice q:print(\n 再见。愿你每一滴灵感都不被辜负。)breakelse:print(❌ 无效选择。)if __name__ __main__:main()五、README.md 与使用说明# 灵感捕手Idea Pool一个本地运行的 Python 工具用于全年收录偶然闪现的灵感年末集中筛选并孵化成创新项目。## 设计背景本项目基于《心理健康与创新能力》课程中的核心观点- 灵感全年都在产生但大多数被即时遗忘- 延迟评判比即时评估更有利于创新- 灵感之间的组合是创新的重要来源## 功能特性- ✅ 30秒快速收录灵感内容/场景/情绪/标签- ✅ 延迟评判——记录时不评分只存储- ✅ 年末四维评分热情/可行性/独特性/价值- ✅ 自动排序推荐 Top 灵感- ✅ 灵感关联推荐检测标签重叠建议组合- ✅ 完全本地运行无网络请求无数据上传- ✅ 零第三方依赖仅 Python 标准库## 安装与使用### 环境要求- Python 3.9### 安装bashgit clone repository-urlcd idea_poolpython main.py### 日常使用#### 收录灵感选择 130秒内完成- 一句话描述想法- 触发场景洗澡/走路/通勤...- 情绪状态- 标签#### 年末筛选建议每年12月31日执行选择 2对全年灵感逐条评分- 热情多想做1-5- 可行性能做出来1-5- 独特性别人没做过1-5- 价值对谁有用1-5程序自动计算综合得分并排序。#### 灵感关联选择 3查看标签重叠的灵感对获取组合建议。### 评分权重| 维度 | 权重 | 原因 ||------|------|------|| 热情 | 35% | 最有动力完成的一定是你最想做的 || 可行性 | 25% | 能做出来才有意义 || 独特性 | 20% | 差异化是创新的核心 || 价值 | 20% | 对某人有用才有持续动力 |### 数据文件- data/ideas.json所有灵感记录## 示例 核心想法一个根据心情变换颜色的桌面摆件 触发场景洗澡 情绪状态放松 标签硬件,情绪,装饰→ 已捕获。灵感不会逃跑了。 2026 年灵感 Top 51. 用废弃电路板做墙面艺术得分:4.2 | 热情:5 可行:4 独特:4 价值:42. 一个给程序员的正念呼吸插件得分:3.8 | 热情:4 可行:5 独特:3 价值:4## 局限说明- 评分完全依赖主观判断- 灵感关联基于简单标签匹配- 无图形界面仅命令行交互- 无提醒功能需自行养成记录习惯## 适用人群- 灵感很多但很少落地的创作者- 希望建立系统性创新流程的人- 对延迟评判方法论感兴趣的实践者## 许可证MIT License六、核心知识点卡片知识点 来源领域 工程映射灵感衰减 认知心理学衰退理论 Cache Eviction——未持久化的数据在断电后丢失延迟评判 设计思维IDEO Lazy Evaluation——延迟计算直到真正需要结果组合创新 进化论经济学Arthur 模块组合——新系统由已有模块拼接而成蓄水池模型 创新管理 Buffer Pool——先批量写入再批量处理年度筛选仪式 反思实践Schön Year-end GC——清理不再需要的对象保留有价值的热情权重 自我决定论 Priority Queue——内在动机作为最高优先级七、总结这个项目让我重新审视了自己与灵感的关系。以前我把灵感当成彩票——中了就做没中就忘。现在我把灵感当成种子——大部分可能不会发芽但只要我持续播种、耐心等待、适时浇水总有一些会长成参天大树。课程里有一句话我设成了手机壁纸不要指望每一个灵感都伟大但要确保每一个伟大的想法都曾被你抓住。这个工具不会帮你判断哪个灵感会成功——那不可能。但它会帮你做一件更重要的事不让任何一个可能的伟大想法死在一次遗忘里。全年蓄水年末筛选春天来临时你会有足够的种子可以种。利用AI解决实际问题如果你觉得这个工具好用欢迎关注长安牧笛