NoPlanB: An AI Execution Engine to Cure Productive Procrastination

NoPlanB: An AI Execution Engine to Cure Productive Procrastination

NoPlanB:一款治愈“生产性拖延”的 AI 执行引擎

Hacktoberfest: Maintainer Spotlight For the Hacktoberfest 2026 Weekend Challenge (“Build for a Friend”), I decided to tackle a problem that has paralyzed a close friend of mine for years: Productive Procrastination. My friend has an incredibly elaborate Obsidian vault. They have nested folders for 2026 goals, 5-year plans, and daily habits. They spend hours organizing these notes, researching the “best backend frameworks,” and restructuring their markdown files. But when it comes time to actually sit down and write code? They freeze. They use planning as an emotional shield against execution. To solve this, I built NoPlanB: an open-source, air-gapped AI execution engine designed to force you out of the planning phase and into the trenches.

Hacktoberfest:维护者聚焦 为了参加 2026 年 Hacktoberfest 周末挑战赛(“为朋友而建”),我决定解决一个困扰我好友多年的问题:生产性拖延(Productive Procrastination)。我的朋友拥有一个极其复杂的 Obsidian 知识库,里面有为 2026 年目标、五年计划和日常习惯建立的嵌套文件夹。他们花费数小时整理这些笔记、研究“最佳后端框架”并重构 Markdown 文件。但当真正需要坐下来写代码时,他们却僵住了。他们将“规划”作为逃避执行的情感盾牌。为了解决这个问题,我开发了 NoPlanB:一个开源、离线的 AI 执行引擎,旨在强迫你走出规划阶段,投入到实际工作中。

How It Works: The Anti-Procrastination Crucible Traditional tools like Notion or Yeolpumta (YPT) often fail because they don’t address the underlying emotion preventing you from starting. NoPlanB replaces the passive to-do list with a Socratic WOOP (Wish, Outcome, Obstacle, Plan) Interrogator. Before you can start a task, you must face the Crucible:

  • The Emotion: What exact emotion is making you avoid this? (e.g., Fear of failure).
  • The Planning Trap: How are you productively procrastinating right now? (e.g., I keep telling myself I need to read one more API doc).
  • Atomic Action: What is the absolute smallest physical step?
  • Internal Obstacle: What feeling will make you quit?
  • Survival Plan: If that happens, what is your plan?

工作原理:反拖延“熔炉” Notion 或 Yeolpumta (YPT) 等传统工具往往会失败,因为它们没有解决阻碍你开始的潜在情绪。NoPlanB 用苏格拉底式的 WOOP(愿望、结果、障碍、计划)询问器取代了被动的待办事项列表。在开始任务之前,你必须面对“熔炉”的拷问:

  • 情绪: 究竟是什么情绪让你回避这件事?(例如:对失败的恐惧)。
  • 规划陷阱: 你现在是如何进行“生产性拖延”的?(例如:我一直告诉自己还需要再读一份 API 文档)。
  • 原子化行动: 绝对最小的物理步骤是什么?
  • 内在障碍: 什么感觉会让你放弃?
  • 生存计划: 如果这种情况发生,你的应对计划是什么?

Open Source AI (Local Gemma) I didn’t want my friend’s deepest anxieties and journal entries going to a third-party server. So, NoPlanB runs entirely locally. If you are too overwhelmed to figure out your emotional blockers, you click the ✨ Ask AI button. NoPlanB uses a local Google Gemma model (via Ollama) to read your current journal entry, call out your cognitive distortions, and generate a harsh but fair CBT (Cognitive Behavioral Therapy) survival plan.

开源 AI(本地 Gemma) 我不希望我朋友内心深处的焦虑和日记内容上传到第三方服务器。因此,NoPlanB 完全在本地运行。如果你感到不知所措,无法理清自己的情绪障碍,可以点击“✨ 询问 AI”按钮。NoPlanB 使用本地的 Google Gemma 模型(通过 Ollama)来阅读你当前的日记条目,指出你的认知偏差,并生成一份严厉但公正的 CBT(认知行为疗法)生存计划。

Intense Execution Mode Once the Crucible is complete, the entire planning interface disappears. You are locked into the “Active Task” widget. I took inspiration from YPT (Yeolpumta) and added a massive, neon-green digital countdown timer. The Socratic planning is replaced by a blunt directive: 🚀 STOP PLANNING. JUST EXECUTE.

高强度执行模式 一旦“熔炉”环节完成,整个规划界面就会消失。你将被锁定在“当前任务”小部件中。我从 YPT (Yeolpumta) 中汲取灵感,添加了一个巨大的霓虹绿数字倒计时器。苏格拉底式的规划被一句直白的指令所取代:🚀 停止规划。立即执行。

The Tech Stack Because my friend uses an older i3/i5 laptop, I had to ensure the app was blazing fast and didn’t crash when running local LLM inference.

  • Backend: Pure Python / FastAPI. Lightning-fast and lightweight.
  • Frontend: Vanilla JS, CSS, and HTML. No heavy React payloads.
  • Data Layer: Zero databases. It reads/writes directly to local .md files using Python’s pathlib.rglob.
  • Markdown: I wired in marked.js and wrote a custom regex parser to support Obsidian-style [[bidirectional linking]] so my friend feels right at home.

技术栈 由于我的朋友使用的是较旧的 i3/i5 笔记本电脑,我必须确保应用程序运行极快,且在运行本地大模型推理时不会崩溃。

  • 后端: 纯 Python / FastAPI。闪电般快速且轻量。
  • 前端: 原生 JS、CSS 和 HTML。没有沉重的 React 负载。
  • 数据层: 无数据库。使用 Python 的 pathlib.rglob 直接读写本地 .md 文件。
  • Markdown: 我接入了 marked.js 并编写了一个自定义正则表达式解析器,以支持 Obsidian 风格的 [[双向链接]],让我的朋友感到宾至如归。

Architecture & Tech Stack

  • Local AI Interrogator (Google Gemma via Ollama): NoPlanB uses Gemma to interrogate your vague goals, forcing you to identify the specific micro-action and the internal emotional obstacle preventing you from starting. It runs locally to ensure your raw journal entries and fears remain 100% private.
  • Durable State Machine (Temporal Python SDK): Once a task is defined, Temporal takes over. It drip-feeds exactly ONE task at a time. Temporal allows the workflow to safely pause for hours or days, waiting for your signal (Done, Stuck, Resist, Defer) without losing state or draining CPU.
  • Behavioral Observability (Sentry Agent Tracing): Sentry instruments the local Gemma calls to measure “cognitive friction latency” (how long you avoid committing to a plan). Tracks model token usage and workflow timeouts.
  • Obsidian-Compatible Vault: Data isn’t locked in a database. Everything is saved as standard Markdown files with YAML front-matter in the vault/ directory.

架构与技术栈

  • 本地 AI 询问器(通过 Ollama 使用 Google Gemma): NoPlanB 使用 Gemma 来审视你模糊的目标,强迫你确定具体的微行动以及阻碍你开始的内在情绪障碍。它在本地运行,确保你的原始日记和恐惧 100% 私密。
  • 持久状态机(Temporal Python SDK): 一旦任务定义完成,Temporal 就会接管。它一次只“滴灌”一个任务。Temporal 允许工作流安全地暂停数小时或数天,等待你的信号(完成、卡住、抵触、推迟),而不会丢失状态或消耗 CPU。
  • 行为可观测性(Sentry Agent Tracing): Sentry 对本地 Gemma 调用进行监测,以衡量“认知摩擦延迟”(你回避提交计划的时间)。它还会跟踪模型 Token 使用量和工作流超时情况。
  • 兼容 Obsidian 的知识库: 数据不会被锁定在数据库中。所有内容都以标准 Markdown 文件形式保存,并在 vault/ 目录中包含 YAML 元数据。