Spark Creative Solutions · ماژول 1
ماژول 1 · 7 نوامبر 2026
خودبهسازی بازگشتی برای دستیار هوش مصنوعیتان: راهاندازی با حداقل اعتبار
برای کلاسم و دوستانم. نوشتهشده از یک روز کار روی تنظیمات خودم، 7 نوامبر 2026. با Claude، ChatGPT یا Gemini، روی Windows یا Mac کار میکند؛ هیچ چیزی اینجا لازم ندارد برنامهنویس باشید. هر گام میگوید آن چیز در هر اپ کجاست.
چرا این کار میکند
بیشتر اعتبار شما خرج فکر کردن نمیشود. خرج چهار نشتی میشود، و هر کدامشان را میشود در یک بعدازظهر بست.
- هر افزونه، کانکتور و ابزاری که روشن کردهاید در تکتک پیامها بارگذاری میشود، چه از آن استفاده کنید چه نه. بیست ابزار بیکار در هر نوبت از هر چت برایتان هزینه دارد.
- اسکرینشاتها. هر بار که دستیارتان به صفحهٔ شما نگاه میکند یا مرورگر را با تصویر هدایت میکند، صدها برابر خواندن متن هزینه میدهد.
- توضیح دوباره. هر چت جدیدی که کور شروع میشود وادارتان میکند وضعتان را دوباره تایپ کنید، و دستیار را وادار میکند حافظه و چتهای قدیمیاش را بگردد تا به شما برسد. آن جستوجو بیشتر از پیام شما هزینه دارد.
- کارهای زمانبندیشدهای که هر صبح همهچیز را روی گرانترین مدل میخوانند تا صفحهای بسازند که هیچوقت بازش نمیکنید.
تنها ایدهٔ پشت کل این تنظیمات: دستیار شما اول یک فایل خیلی کوچک را میخواند و آخر یک فایل خیلی کوچک را مینویسد. بقیهاش هرس است. حساب خودم از چهار اجرای سنگین صبحگاهی به یکی رسید، و از «دوباره بگو کجا بودیم» به یک فایل 300 توکنی که دستیار پیش از حرف زدن میخواند. همین حرکتها در Claude، ChatGPT و Gemini کار میکنند، چون عادت و فایلاند، نه قابلیت.
چه لازم دارید و چقدر هزینه دارد
یک پلن پولی دستیار، اپ دسکتاپ رایگانش، یک پوشه روی کامپیوترتان، و حدود 40 دقیقه. بقیهٔ چیزهای این راهنما رایگان است.
| مورد | هزینه | یادداشتها |
|---|---|---|
| پلن دستیار | سطح پولی استاندارد یک اپ (Claude Pro، ChatGPT Plus یا Google AI Pro) | سطحهای رایگان برای عادتهای فایلی کافیاند اما استفادهٔ سنگین را محدود میکنند. فقط وقتی به سطح بالاتر بروید که بیشتر روزها به سقف میخورید. هیچوقت دو پلن پولی با هم. |
| اپ دسکتاپ همان دستیار | رایگان | برای خواندن یک پوشه روی کامپیوترتان لازم است. Windows و Mac. |
| یک ویرایشگر متن | رایگان | Notepad روی Windows، TextEdit روی Mac، یا Obsidian (رایگان، بهتر، اختیاری). |
| حساب Google | رایگان | برای اتوماسیون رایگان (Apps Script) در گام 6 و کمکیار ارزان در گام 5. |
| Python | رایگان | فقط برای اسکریپت اختیاری نبض (pulse) در گام 4. Mac آن را دارد؛ Windows با دو کلیک از python.org نصبش میکند. |
| سقف هزینه | 0 | روز اول تنظیم کنید: یک سقف ماهانه، شارژ خودکار خاموش. سقف همان چیزی است که آزمایش کردن را امن میکند. |
فرض را بر Windows بگذارید مگر اینکه Mac داشته باشید؛ هر گام در ادامه هر دو را دارد. گوشی برای خواندن است، نه برای این راهاندازی.
گام 1، هرس
ده دقیقه، و بزرگترین صرفهجویی تکی در فهرست. هر چیز روشنی در هر پیام بارگذاری میشود.
- تنظیمات اپ را باز کنید و افزونهها، کانکتورها، یکپارچهسازیها، GPTها یا اکستنشنهایی را که فعال کردهاید ببینید. هر چیزی را که در دو هفتهٔ گذشته استفاده نکردهاید خاموش کنید. وقتی لازمش داشتید با یک کلیک دوباره روشنش میکنید.
- یک کانکتور اتوماسیون نگه دارید، نه دو تا. اگر هم IFTTT دارید هم Zapier، آن را که چیز واقعیای در آن هست انتخاب کنید.
- حافظه: از دستیارتان بخواهید آنچه به یاد دارد را نشانتان بدهد («هر چیزی را که دربارهٔ من به یاد داری، دستهبندیشده، خروجی بده»). آنچه غلط یا کهنه است را پاک کنید. به زبان ساده بگویید چه چیزی را نگه دارد: اسمتان، کارتان، قواعدی که میخواهید رعایت شود. حافظهٔ خوب یعنی توضیح دوبارهٔ کمتر؛ حافظهٔ کهنه یعنی جوابهای غلطِ با اعتماد به نفس.
- هزینه: صفحهٔ صورتحساب را پیدا کنید، یک سقف ماهانه بگذارید، شارژ خودکار را خاموش کنید. اگر شارژهای ماه گذشتهتان خیلی بالاتر از قیمت ثابت پلن بود، سطح بعدی ارزانتر از اعتبار خریدن است.
کجا قرار دارد. Claude: Settings، بعد Connectors and Plugins؛ حافظه زیر Settings، Memory. ChatGPT: Settings، بعد Apps and connectors؛ حافظه زیر Personalization، Manage memories. Gemini: Settings، بعد Apps؛ حافظه زیر Saved info. سقفهای هزینه در صفحهٔ صورتحساب هر اپ هستند، یا در کنسول API اگر از آن استفاده میکنید.
گام 2، پوشهٔ خانه و سه فایل
یک پوشه بسازید که دستیارتان همیشه بتواند ببیند، و سه فایل متنی کوچک در آن نگه دارید. کل سیستم پیوستگی همین است؛ در 40 خط جا میشود.
در پوشهٔ home کاربریتان پوشهای به نام ops بسازید. در اپ دسکتاپ دستیار، آن را وصل کنید (Claude: دکمهٔ +، Add folder؛ ChatGPT: Settings، Work with apps یا انتخابگر پوشه در اپ دسکتاپ؛ Gemini: یک پوشهٔ Google Drive همین کار را میکند، چون Gemini از Drive میخواند). بعد این سه فایل را با هر ویرایشگر متنی داخل آن بسازید.
| فایل | چه چیزی در آن است | چه کسی مینویسدش |
|---|---|---|
NOW.md | همین حالا کجا هستید: روی چه کار میکنید، آخرین چیزی که تمام شد، گام بعدی، آن یک چیزی که منتظر شماست. حداکثر 20 خط. | شما، در یک دقیقه، در آغاز و پایان یک بلوک کاری. یا اسکریپت نبض در گام 4، بهطور خودکار. |
handoff.md | دو خط برای هر جلسه: تاریخ، چه کاری انجام شد، بعدی چیست. تازهترین مورد بالا. | دستیار، در پایان هر چت کاری، وقتی میگویید «write the handoff» (تحویل را بنویس). |
hands.md | یک فهرست تیکزدنی از کارهایی که فقط خودتان میتوانید بکنید: رمزی که باید تایپ شود، فایلی که باید به اشتراک گذاشته شود، دکمهای که باید کلیک شود. | دستیار اضافه میکند؛ شما تیک میزنید. |
قالب هر سه در پیوست هست. قاعدهای که کارشان میاندازد: هیچ چیزی در این فایلها محرمانه نیست، هیچ چیزی بلند نیست، و دستیار پیش از هر کار دیگری آنها را میخواند.
اگر از Obsidian استفاده میکنید، پوشه را داخل vault خودتان بگذارید. افزونهٔ Local REST API در Obsidian، بهعلاوهٔ یک خط در پیکربندی دسکتاپ Claude، به دستیار اجازه میدهد بدون اینکه هر بار پوشهای وصل کنید vault را بخواند و بنویسد؛ آن پروژهٔ یک شب برای بعد است، نه روز اول.
گام 3، پروژهٔ Ops و دستورالعمل آغازین
یک پروژه بسازید (Claude: Project؛ ChatGPT: Project یا یک GPT سفارشی؛ Gemini: یک Gem، یا در حسابهای شخصی بعد از 17 نوامبر 2026، یک مورد Saved info بهعلاوهٔ یک پوشهٔ Drive سنجاقشده) و این را بهعنوان دستورالعملهایش بچسبانید:
On the first turn of every chat, before anything else, read ops/NOW.md, ops/handoff.md and ops/hands.md. Open by saying in one line where I am and what I was doing, then take my message. No screenshots and no searching old chats until those three files are read.
At the end of a working session, when I say "write the handoff", add two lines to the top of ops/handoff.md: the date, what was done, what is next. Anything that needs my own hands goes as a tick-box line into ops/hands.md.
Style: concise, no moralising, no numbered lists, no em dashes. Ask before anything that cannot be undone: sending, deleting, sharing, publishing, paying. Never type a password; I type those.
کپی: ops-project-instructions.txt
پوشهٔ ops را به خود پروژه وصل کنید، نه به یک چت تنها، تا هر چت جدیدی بتواند ببیندش. تقریباً همهٔ کارتان را داخل همین یک پروژه انجام دهید. کوریِ بین پروژهها که بیشتر اپها دارند، وقتی کارتان در یک جا زندگی میکند دیگر مهم نیست.
نتیجه: شروع یک چت جدید هیچ هزینهای برایتان ندارد. دستیار با «وسط پیشنویس خبرنامه بودی، Takeout هنوز در حال اجراست، و پرینتر کاغذ میخواهد» شروع میکند، و شما ادامه میدهید.
گام 4، نبض (اختیاری، بخشی که حس جادو دارد)
یک اسکریپت خیلی کوچک هر پنج دقیقه NOW.md را با آنچه واقعاً دارید انجام میدهید بازنویسی میکند، تا هیچوقت مجبور نباشید دستی بهروزش کنید. سه چیز را ثبت میکند: اپ فعال و عنوان پنجرهاش، فایلهایی که در 15 دقیقهٔ گذشته به آنها دست زدهاید، و بالای hands.md و handoff.md. هیچ چیزی از کامپیوترتان بیرون نمیرود و هیچوقت اسکرینشات نمیگیرد.
حریم خصوصی از پایه در آن ساخته شده، نه اینکه بعداً به آن پیچ شده باشد. اسکریپت فهرست کوتاهی از اپهایی دارد که عنوان پنجرهشان هیچوقت ثبت نمیشود (مدیرهای رمز، Signal، بانکداری) و از هر پنجرهٔ مرور خصوصی رد میشود. اگر اپی در فهرست مجاز نباشد، فقط اسمش ثبت میشود. پیش از نصب، آن فهرستها را ویرایش کنید.
- Windows:
pulse.ps1را از پیوست درopsذخیره کنید، بعد Task Scheduler را باز کنید، Create Basic Task، تریگر «When I log on»، اقدام «Start a program»:powershell.exe -ExecutionPolicy Bypass -File "C:\Users\you\ops\pulse.ps1"، و در ویژگیهای تسک تنظیم کنید هر 5 دقیقه تکرار شود. یک پنجره، تمام. - Mac:
pulse.pyوinstall-pulse.commandرا از پیوست درopsذخیره کنید، یک بار روی فایل.commandدوبار کلیک کنید، و در دو پیام مجوز روی OK بزنید.
بررسی کنید کار میکند: بعد از پنج دقیقه NOW.md را باز کنید. اگر خط اول ساعت را دارد، حلقه بسته شده، و از این به بعد هر چت با دانستن اینکه کجا هستید باز میشود.
کاربران Gemini: خروجی اسکریپت را به جای پوشهٔ محلی به یک پوشهٔ Drive بدهید، و Gemini از آنجا میخواندش.
گام 5، کمکیارهای ارزان
دستیار اصلی شما همان دستیار گران است. خواندن حجیم را به یکی ارزانتر بدهید و فقط نتیجه را برگردانید.
- فایلهای بلند. هیچوقت یک PDF 200 صفحهای را در چت اصلیتان نچسبانید. اول از یک مدل ارزان بخواهید خلاصهاش کند (سطح رایگان Gemini در AI Studio، یا سطح رایگان هر کدام از سه اپ)، بعد خلاصهٔ دو صفحهای را به دستیار اصلیتان بدهید. ده برابر ارزانتر، اغلب بهتر، چون دستیار اصلی حالا روی یک چکیدهٔ تمیز استدلال میکند.
- نظر دوم. برای یک تصمیم، یک جواب قوی بهتر از چهار تاست. چند مدل را فقط وقتی به کار بگیرید که میخواهید با هم مخالفت کنند، و بعد یک جمعبندی بخواهید.
- متن بچسبانید، هیچوقت آپلود نکنید. فایلی که در یک سرویس چندمدلی آپلود شده میتواند بدون هیچ دکمهٔ حذفی روی فضای ذخیرهشان بماند؛ من این را به شکل گران یاد گرفتم. متنی را که میخواهید خوانده شود بچسبانید، پاکشده از نامها، آدرسها، جزئیات سلامت و مشتری، و نه چیز دیگری. سطحهای رایگان ممکن است از آنچه میچسبانید برای آموزش مدل استفاده کنند، پس پاکسازی اختیاری نیست.
- تنها اسکریپتی که ارزش داشتن دارد، برای کنجکاوهای فنی: یک فایل Python 40 خطی با کلید Gemini شما در فایلی کنارش، که هر سندی را از خط فرمان خلاصه میکند تا دستیار اصلیتان هیچوقت مجبور نباشد بارگذاریاش کند. نسخهٔ من
council.pyاست؛ از من بخواهید. یک سقف هزینه روی کلید، چند یورو در ماه، فراموش کردنش را امن میکند.
کجا قرار دارد. کلیدهای Gemini: AI Studio، API keys؛ سطح پولی پول خردی بیش نیست و Google میگوید دادههای سطح پولی برای آموزش استفاده نمیشود. کلیدهای Claude و ChatGPT: کنسولهای توسعهدهندگانشان، همان ایده، همان محدودیتها. روز اول لازم نیست.
گام 6، کارهای زمانبندیشدهای که خرج خودشان را درمیآورند
یک کار زمانبندیشده چتی است که بدون شما اجرا میشود. به اندازهٔ یک چت هزینه دارد، هر روز، تا ابد، پس هر کدام باید خرج خودش را دربیاورد.
- آنهایی را نگه دارید که خروجیشان به شکل اعلانی به شما میرسد که واقعاً میخوانیدش. یک خط صبحگاهی با تقویم امروز و دو ایمیلی که مهماند میارزد. یک صفحهٔ زیبا که هیچوقت بازش نمیکنید، نه.
- هر کار را روی ارزانترین مدلی بگذارید که از پسش برمیآید. خواندن یک فهرست و فیلتر کردنش کار مدل کوچک است. خواندن رسیدها و درست درآوردن مبلغها مدل متوسط میخواهد. تقریباً هیچ چیزی مدل بالا را روی تایمر لازم ندارد.
- کارهای قاعدهمحور اصلاً مدل لازم ندارند. برچسب زدن و بایگانی ایمیل از فرستندههای شناختهشده یک فیلتر Gmail است. زیر نظر گرفتن یک پوشهٔ مشترک برای ویرایشهای کس دیگر یک Google Apps Script شش خطی روی تایمر است، رایگان، و میبیند چه کسی ویرایش کرده، که دستیار نمیتواند. بررسی سلامت تقویم یک regex است. از دستیارتان بخواهید اسکریپت را بنویسد؛ شما آن را در script.google.com میچسبانید و یک بار روی Allow میزنید.
- ماهی یک بار، کارها را فهرست کنید و دربارهٔ هر کدام بپرسید: هفتهٔ پیش خواندمش؟ اگر نه، حذفش کنید یا نصفش کنید.
کجا قرار دارد. Claude: کارهای زمانبندیشده، در نوار کناری دیده میشوند، هر کدام با تنظیم مدل خودش. ChatGPT: Tasks. Gemini: Scheduled actions. Google Apps Script برای هر سه کار میکند، چون در حساب Google شما زندگی میکند، نه در دستیار.
حساب من پیش و پس از یک بازبینی: چهار اجرای سنگین روزهای هفته روی مدل بالا شد یکی؛ دو اجرای زیر نظر گرفتن پوشه در روز شد یک اسکریپت رایگان؛ بقیه به مدلهای کوچک منتقل شد. همان اطلاعات به من میرسد، با کسری از اعتبار.
قواعد ایمنیای که همراه همهٔ اینها میروند
اینها احتیاط برای خود احتیاط نیستند. هر کدام هست چون یک بار رد کردنش برای کسی زمان واقعی یا حریم خصوصی هزینه داشته.
- رمزها و کلیدهای API را خودتان تایپ میکنید، در فایلی روی کامپیوتر خودتان، هیچوقت در چت. کلیدی که در چت چسبانده شده در آن متن میماند. اگر پیش آمد، همان روز یک کلید جدید بسازید و قدیمی را حذف کنید.
- هیچ کار برگشتناپذیری بدون «بله»ی شما: نه فرستادن، نه حذف، نه اشتراکگذاری، نه انتشار، نه پرداخت. این خط را در دستورالعملهای پروژه بگذارید و دستیار هر بار میپرسد.
- به مدلهای بیرونی متن بچسبانید، هیچوقت فایل. اول نامها، آدرسها، جزئیات سلامت، پول و مشتری را پاک کنید. فهرستی از کلمههایی که هیچوقت نباید از دستگاهتان بیرون بروند نگه دارید و پیش از چسباندن، متن را با آن بسنجید.
- پوشههایی به نام Private خصوصی میمانند. به دستیار بگویید کدام پوشهها را هیچوقت نباید بخواند، و آن فهرست را هم در دستورالعملهای پروژه نگه دارید.
- عنوان پنجرهها و فایلهای اخیر یک گزارش از زندگی شماست. فهرست ممنوعِ نبض را صادقانه نگه دارید، و
NOW.mdرا از هر چیزی که به اشتراک میگذارید بیرون نگه دارید. - یک «نه» از سیستم مجوز دستیار مانعی نیست که دورش بزنید. سیستم دارد کارش را میکند؛ آن گام به جایش به فهرست
hands.mdشما میرود. - کلمههای خودتان را مال خودتان نگه دارید. وقتی چیزی را که دستیار نوشته جلو میفرستید، بگویید. وقتی برایتان پیشنویس میکند، نقطهگذاری و صدای خودتان را نگه دارید؛ صیقل همان چیزی است که لو میدهد.
پانزده دقیقهٔ هفتگی
این همان چیزی است که بازگشتیاش میکند: دستیار تنظیمات خودش را بهتر میکند، و شما دستی هستید که کلیک میکند.
هفتهای یک بار، پروژهٔ Ops را باز کنید و بگویید: «hands.md و handoff.md را بخوان. بگو این هفته پول چه چیزی را دادهام که استفاده نکردهام، چه چیزی را مجبور شدی دو بار از من بپرسی، و کدام یک تغییر بیشترین اعتبار را ذخیره میکند. بعد دستورالعملهای پروژه را با آنچه توافق میکنیم بهروز کن.» تا فکر میکند، هر چه میتوانید در hands.md تیک بزنید.
سه پرسش حلقه را صادق نگه میدارند:
- این هفته چه چیزی را دوباره توضیح دادم؟ آن یک خط است که در دستورالعملهای پروژه یا در حافظه کم است.
- دستیار از چه چیزی اسکرینشات گرفت یا چه چیزی را جستوجو کرد که یک فایل میتوانست به او بگوید؟ آن یک خط است که در
NOW.mdکم است. - چه چیزی طبق زمانبندی اجرا شد که هیچوقت نخواندم؟ آن کاری است که باید حذف شود.
جوابها را در دستورالعملها بنویسید، نه در سرتان. تا یک ماه دیگر تنظیمات مثل دستکش اندازهتان میشود و صورتحساب اعتبار کسری از آن چیزی است که بود. بعد آن را به یک دوست یاد بدهید؛ توضیح دادنش راهی است که میفهمید کدام بخشها را هنوز از روی عادت انجام میدهید.
هیچ خط تیرهٔ بلندی هیچجا، هیچ فهرست شمارهداری، نقطهگذاری خودتان در هر چیزی که به نام خودتان میفرستید. با عشق، تمام.
پیوست: قالبها و اسکریپتها برای کپی
سه فایل، آنطور که روز اول باید باشند. هر کدام دانلود هم میشود؛ راستکلیک، ذخیره در ops.
NOW.md
# NOW.md
Working on: the newsletter draft, section 3
Last finished: sent the invoice to the printer
Next: proofread section 3, then export the PDF
Waiting on me: reply to the landlord about Thursday
دانلود: NOW.md
handoff.md
# handoff.md (newest on top)
2026-11-07 Set up the ops folder, Project and pulse. Next: prune the plugins, set the spend cap.
دانلود: handoff.md
hands.md
# hands.md: things only I can do
- [ ] set the monthly spend limit and turn auto-reload off
- [ ] connect the ops folder to the Project
دانلود: hands.md
نبض Windows: pulse.ps1
در ops ذخیره کنید، با Task Scheduler هر 5 دقیقه زمانبندی کنید. اول دو فهرست بالای فایل را ویرایش کنید.
# pulse.ps1: rewrites ops\NOW.md with what you are doing. Nothing leaves this computer.
$ops = "$HOME\ops"
$deny = @("1Password","Bitwarden","KeePass","Signal","Passwords") # never logged at all
$titleOk = @("Claude","ChatGPT","Code","Obsidian","chrome","msedge","firefox","WINWORD","EXCEL","notepad","explorer","WhatsApp","OUTLOOK","Zoom") # window title logged only for these
Add-Type @"
using System; using System.Runtime.InteropServices;
public class W { [DllImport("user32.dll")] public static extern IntPtr GetForegroundWindow();
[DllImport("user32.dll")] public static extern uint GetWindowThreadProcessId(IntPtr h, out uint pid); }
"@
$h = [W]::GetForegroundWindow(); $procId = 0; [W]::GetWindowThreadProcessId($h, [ref]$procId) | Out-Null
$p = Get-Process -Id $procId -ErrorAction SilentlyContinue
$app = if ($p) { $p.ProcessName } else { "unknown" }; $title = ""
if ($deny -contains $app) { $app = "[private app]" }
elseif ($titleOk -contains $app -and $p.MainWindowTitle -and $p.MainWindowTitle -notmatch "InPrivate|Incognito|Private") { $title = $p.MainWindowTitle.Substring(0, [Math]::Min(90, $p.MainWindowTitle.Length)) }
$since = (Get-Date).AddMinutes(-15)
$files = Get-ChildItem "$HOME\Documents","$HOME\Desktop","$HOME\Downloads",$ops -Recurse -File -ErrorAction SilentlyContinue |
Where-Object { $_.LastWriteTime -gt $since -and $_.FullName -notmatch "\\Private\\|Signal|\\\.git\\|node_modules|NOW\.md" } |
Sort-Object LastWriteTime -Descending | Select-Object -First 8
$lines = @("# NOW (auto, $(Get-Date -Format 'ddd dd MMM HH:mm'), pulse.ps1, read this first)", "Active: $app" + $(if ($title) { " `"$title`"" } else { "" }))
$lines += "Files touched (last 15 min):"
if ($files) { $files | ForEach-Object { $lines += " " + $_.FullName.Replace($HOME, "~") } } else { $lines += " none" }
foreach ($f in @("hands.md","handoff.md")) { if (Test-Path "$ops\$f") { $lines += "From ${f}:"; Get-Content "$ops\$f" | Where-Object { $_.Trim() -and -not $_.StartsWith("#") } | Select-Object -First 5 | ForEach-Object { $lines += " $_" } } }
$lines | Select-Object -First 22 | Set-Content "$ops\NOW.md" -Encoding UTF8
دانلود: pulse.ps1SHA-256 851136a23d920e67798fb8d0ae6627fc1b6b13e3b8e482db9f13303c4b1a28ad
نبض Mac: pulse.py بهعلاوهٔ install-pulse.command
هر دو را در ops ذخیره کنید، یک بار روی .command دوبار کلیک کنید.
#!/usr/bin/env python3
# pulse.py: rewrites ops/NOW.md with what you are doing. Nothing leaves this computer.
import os, subprocess, datetime, re
HOME = os.path.expanduser("~"); OPS = os.path.join(HOME, "ops")
DENY = {"Signal", "Passwords", "1Password", "Keychain Access", "Bitwarden", "Messages", "Photos"}
TITLE_OK = {"Claude", "ChatGPT", "Obsidian", "Google Chrome", "Safari", "Finder", "Pages", "Numbers", "TextEdit", "Notes", "Mail", "WhatsApp", "Zoom", "Code"}
EXCLUDE = ("/Private", "Signal", "/.git", "node_modules", "/Library/", "NOW.md")
def osa(s):
try: return subprocess.run(["osascript", "-e", s], capture_output=True, text=True, timeout=8).stdout.strip()
except Exception: return ""
app = osa('tell application "System Events" to get name of first application process whose frontmost is true')
title = ""
if app in DENY: app = "[private app]"
elif app in TITLE_OK:
title = osa('tell application "System Events" to tell (first application process whose frontmost is true) to get name of front window')[:90]
if re.search(r"incognito|private", title, re.I): title = "[private window]"
files = []
for d in ("Documents", "Desktop", "Downloads", "ops"):
r = subprocess.run(["mdfind", "-onlyin", os.path.join(HOME, d), "kMDItemFSContentChangeDate >= $time.now(-900)"], capture_output=True, text=True)
files += [p for p in r.stdout.splitlines() if os.path.isfile(p) and not any(x in p for x in EXCLUDE)]
files = sorted(set(files), key=os.path.getmtime, reverse=True)[:8]
lines = ["# NOW (auto, %s, pulse.py, read this first)" % datetime.datetime.now().strftime("%a %d %b %H:%M"), "Active: %s%s" % (app or "unknown", ' "%s"' % title if title else "")]
lines.append("Files touched (last 15 min):"); lines += [" " + p.replace(HOME + "/", "~/") for p in files] or [" none"]
for f in ("hands.md", "handoff.md"):
p = os.path.join(OPS, f)
if os.path.exists(p):
lines.append("From %s:" % f); lines += [" " + l.rstrip() for l in open(p, encoding="utf-8") if l.strip() and not l.startswith("#")][:5]
open(os.path.join(OPS, "NOW.md"), "w", encoding="utf-8").write("\n".join(lines[:22]) + "\n")
دانلود: pulse.pySHA-256 fb868f9f7cbecc0d5dc18492157591568c52462db603a82456273be61605737a
#!/bin/bash
# install-pulse.command: runs pulse.py every 5 minutes via launchd. Double-click once.
OPS="$HOME/ops"; PL="$HOME/Library/LaunchAgents/com.me.pulse.plist"; mkdir -p "$HOME/Library/LaunchAgents"
cat > "$PL" <<PLIST
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0"><dict><key>Label</key><string>com.me.pulse</string>
<key>ProgramArguments</key><array><string>/usr/bin/python3</string><string>$OPS/pulse.py</string></array>
<key>StartInterval</key><integer>300</integer><key>RunAtLoad</key><true/></dict></plist>
PLIST
launchctl bootout "gui/$(id -u)/com.me.pulse" 2>/dev/null; launchctl bootstrap "gui/$(id -u)" "$PL" && echo "installed"
python3 "$OPS/pulse.py" && cat "$OPS/NOW.md"
دانلود: install-pulse.commandSHA-256 c2f0f1abb9f37e28480e6ea8f9ad49ffb0860a621ca699b44cc36b06516debab
Gemهای Gemini، اگر در یک حساب Google شخصی دارید: پیش از 17 نوامبر 2026 خروجی بگیرید (Google Takeout، همه را از انتخاب درآورید، فقط «Gemini» را تیک بزنید)؛ دستورالعملها به شکل متنی بیرون میآیند که میتوانید در یک پروژه یا یک مورد Saved info بچسبانید.