ارسال شماره ۰۰۱ · ایمیل ← عامل

claude-email مکاتبه‌ای با عامل‌های هوشمند

همان‌طور که به یک همکار نامه می‌نویسید، به Claude نامه بنویسید — از صندوق ورودی خودتان.

پوشش ایمیل‌محور برای خط فرمان Claude Code با رله چت MCP یکپارچه. صندوق IMAP را بررسی می‌کند، فرستنده را با GPG یا رمز مشترک تایید می‌کند، دستور را اجرا می‌کند و پاسخ را با SMTP می‌فرستد. یک پوشش، چندین عامل، و هر سرویس‌گیرنده ایمیلی.

۰۱

فهرست ویژگی‌ها چرا با ایمیل به یک ربات بنویسیم

  1. № ۰۱

    ایمیل به‌جای ترمینال

    هر سرویس‌گیرنده ایمیلی به یک کنترل از راه دور جهانی برای Claude Code تبدیل می‌شود. دستور را می‌فرستید، نتیجه را به‌عنوان پاسخ رشته‌ای دریافت می‌کنید. نه نصب نرم‌افزار، نه VPN. ایمیل‌هایی که از روی موبایل فقط در موضوع دستور دارند هم پذیرفته می‌شوند — اگر بدنه خالی باشد، موضوع به‌عنوان دستور استفاده می‌شود و پیشوندهای Re: / Fwd: / Fw: به‌طور خودکار حذف می‌گردند، و موضوع‌های کدشده با RFC 2047 (فارسی، حروف لاتین با علامت) پیش از اجرا کدگشایی می‌شوند. در حالت GPG، استفادهٔ پشتیبان از موضوع غیرفعال است تا یک واسطهٔ دستکاری‌گر هدر نتواند از کنار امضایی که فقط بدنه را پوشش می‌دهد رد شود.

  2. № ۰۲

    احراز هویت دوگانه

    هر پیام ورودی با From، Return-Path و یکی از دو روش GPG یا رمز مشترک چرخشی تایید می‌شود. نامه‌های بدون امضا از غریبه‌ها در همان لحظه دور ریخته می‌شوند.

  3. № ۰۳

    گذرگاه چت چند عاملی

    یک سرور MCP بر بستر SSE و SQLite (حالت WAL) به چندین عامل Claude Code اجازه می‌دهد از طریق رله پیام مشترک هماهنگ شوند. ارزان، محلی، و آن‌قدر ساده که قابل اتکا باشد.

  4. № ۰۴

    هماهنگی عامل‌ها

    هر عامل را با @agent-name هدف بگیرید، با spawn یکی تازه در مسیر پروژه به‌راه بیندازید، یا همگانی بفرستید. رشته‌بندی، بررسی زنده‌بودن و پاک‌سازی را سیستم انجام می‌دهد. هر پروژه‌ای که ارکستراتور به آن دست می‌زند چهار قلاب می‌گیرد: SessionStart ردیف ثبت را مستقیم روی SQLite گذرگاه می‌نویسد (قطعی)، UserPromptSubmit هر پیام رسیده را به نوبت بعدی مدل تحویل می‌دهد، Stop در پایان هر پاسخ عامل دوباره صندوق را زهکشی می‌کند — اگر پیامی از عامل دیگری در راه باشد، با decision:block توقف را لغو می‌کند تا پیام بلافاصله نوبت بعدی عامل شود — و PreCompact هر بار که کلود حافظه کاری‌اش را فشرده می‌کند یک ضربان روی گذرگاه می‌فرستد، تا پنل جریان داشبورد در فاصله‌ی فشرده‌سازی هم ضربان داشته باشد. پیام‌های همتا که وسط یک پاسخ می‌رسند دیگر منتظر پیام بعدی کاربر نمی‌مانند. عامل‌ها با chat_message_agent می‌توانند به هم پیام بدهند — همتا به همتا، بدون عبور از کاربر. چند عامل در یک پروژه؟ با spawn <path> as agent-foo آن را با نامی صریح ثبت کنید — متغیر محیطی CLAUDE_AGENT_NAME هم به قلاب SessionStart می‌رسد و هم به اسکن /proc پس از ری‌استارت گذرگاه، پس هویت همیشه درست می‌ماند.

  5. № ۰۵

    systemd سطح کاربر

    دو سرویس سبک، بی‌نیاز از sudo، بی‌نیاز از کانتینر. راه‌اندازی مجدد خودکار، ترتیب وابستگی میان ایمیل و چت، و پشتیبانی از lingering تا پس از خروج هم زنده بمانند.

  6. № ۰۶

    تست‌شده تا حاشیه‌ها

    ۱۶۲۳ تست، پوشش ۱۰۰٪، پایتون ۳.۱۲، کاملا تایپ‌شده، shell=False همه‌جا، و TLS با کانتکست امن. کسل‌کننده به‌عمد؛ تا بردارهای نفوذ بسته بمانند.

  7. № ۰۷

    داشبورد رصدخانه زنده

    یک داشبورد کاملا گرافیکی در /dashboard گذرگاه را به‌صورت یک رادار CRT نمایش می‌دهد: کاربر در مرکز، عامل‌ها دور یک حلقه، و هر پیام به‌صورت یک نقطه درخشان روی وتر میان فرستنده و گیرنده حرکت می‌کند. یال‌های پایدار «گرما» کانال‌های پرترافیک را برجسته می‌کنند و یک ثبت مخابرات بدنه‌ها را روی EventSource زنده پخش می‌کند. دو چهره دیگر پشت دکمه‌های بالای صفحه نشسته‌اند: یک نمودار فنیِ زنده که با هر رویداد wake_watcher یا درین هوک، کارت گام مربوطه را روشن می‌کند، و یک پنل واژه‌نامه قابل جستجو که هر سرنام و اصطلاح پروژه را فهرست کرده است. عامل‌های شبح که heartbeat آن‌ها کهنه شده از دید پنهان می‌شوند تا رادار تصویر واقعیت را بدهد.

  8. № ۰۸

    همراه اندروید (در دست ساخت)

    یک اپ بومی اندروید در یک مخزن همراه جداگانه در حال ساخت است تا بتوانید از راه تلفن همراه دستور بفرستید و به عامل‌ها پاسخ دهید، بدون اینکه در یک سرویس‌گیرنده ایمیل عمومی بنویسید. همان بستر IMAP/SMTP؛ چند فیلد اختیاری در پاکت JSON، قابلیت‌های ویژه اپ را روشن می‌کنند (مسیریابی به عامل زنده، نوارهای پیشرفت، تراشه‌های پاسخ پیشنهادی) بدون اینکه بر کاربران ایمیل ساده تأثیری بگذارد. لینک مخزن و تصاویر به‌زودی اضافه می‌شوند.

  9. № ۰۹

    وظایف فقط‌خواندنی از دروازهٔ مخزن کثیف عبور می‌کنند

    پرسش‌های نخستین و پاسخ‌های پی‌گیری که آشکارا فقط‌خواندنی شناخته می‌شوند (explain …, show …, list …، پرسش‌های ساده، صورت‌های مودبانه مانند can you explain …) دیگر نیاز به درختِ‌کارِ پاک ندارند و شاخهٔ تازه‌ای برای وظیفه باز نمی‌کنند، مگر آنکه ادامهٔ شاخهٔ وظیفهٔ پیشین باشند. وظایف تغییردهنده هنوز برای ساختن شاخهٔ تازه به مخزن پاک نیاز دارند. دسته‌بندی محافظه‌کارانه است — هرچه مبهم باشد (مثلاً also fix the rest) به‌عنوان تغییردهنده در نظر گرفته می‌شود. دسته‌بند تنها بر پایهٔ regex است و روی سرور اجرا می‌شود.

  10. № ۱۰

    پی‌گیری‌های ایمیلی روی همان شاخه ادامه می‌یابند

    وقتی روی نخی پاسخ می‌دهید که از نتیجهٔ یک وظیفهٔ پیشین آمده، وظیفهٔ پی‌گیری از همان شاخهٔ وظیفهٔ قبلی استفاده می‌کند — حتی اگر وظیفهٔ قبلی آن را کثیف رها کرده باشد (تغییرات کامیت‌نشدهٔ نوبت پیشین به‌عنوان کارِ شما در جریان قلمداد می‌شود). اگر مخزن روی شاخه‌ای دیگر تغییرات کثیف نامرتبط داشته باشد، پی‌گیری باز هم با پیام روشن «نمی‌توان بی‌خطر سویچ کرد» شکست می‌خورد. جست‌وجو سربرگ SMTP In-Reply-To را از مسیر outbound_emails.task_id دنبال می‌کند؛ ردیف‌های قدیمی بدون این ستون دقیقاً مانند امروز رفتار می‌کنند.

۰۲

سازوکار چگونه یک نامه به یک وظیفه بدل می‌شود

دو سرویس systemd سطح کاربر کار را پیش می‌برند. claude-email صندوق IMAP را هر چند ثانیه بررسی می‌کند، فرستنده را تایید می‌کند، دستور را از متن ایمیل بیرون می‌کشد، و آن را از راه claude --print اجرا می‌کند. نتیجه به‌صورت پاسخ رشته‌ای بازمی‌گردد.

claude-chat یک گذرگاه پیام MCP خالص است. عامل‌ها ثبت می‌شوند، پیام می‌فرستند و از راه ابزارهای MCP روی SSE پرس‌وجو می‌کنند. سرویس ایمیل در همین گذرگاه، آواتار شماست — دستورهای ایمیلی را به عامل‌ها می‌راند و پاسخ‌ها را به‌صورت ایمیل بیرون می‌آورد.

به‌جای چت‌بات، به یک مرکز تلگراف قدیم فکر کنید: اپراتورها ترافیک را جابه‌جا می‌کنند، هر پیام امضا می‌شود، هر پرش ثبت می‌شود.

Email Client ↓ IMAP Poll (claude-email) ↓ Verify sender (GPG / shared secret) ↓ ├─ Direct → claude --print ────────→ SMTP reply └─ Chat → MCP bus (claude-chat) ↓ Agents respond ────────→ SMTP reply
۰۳

جایگاه در مقایسه با Agent View کلود کد

کلود کد اکنون قابلیتی به نام Agent View دارد — یک نمای ترمینالی از همه نشست‌های هم‌زمان، با پاسخ درون‌خطی و claude --bg برای کارهای پس‌زمینه. وقتی پای لپ‌تاپ نشسته‌اید عالی است. claude-email دقیقاً از همان‌جایی شروع می‌کند که Agent View تمام می‌شود.

  • اول از همه از راه دور. هر عامل را از هر صندوق ایمیلی — موبایل، وب، mutt — هدایت کنید، بی‌نیاز از ssh، VPN یا ترمینال باز. Agent View محدود به یک ماشین است؛ یک ایمیل نیست.
  • گذرگاه میان عامل‌ها. عامل‌ها می‌توانند با chat_message_agent روی گذرگاه چت MCP به یکدیگر پیام بدهند، نه فقط به شما. Agent View هیچ کانال عامل‌به‌عامل ندارد.
  • وضعیت پایدار و چندسطحی. گفت‌وگوها، تاریخچه وظایف و وضعیت زنده‌بودن در SQLite (حالت WAL) ذخیره می‌شوند و در یک داشبورد گرافیکی CRT روی /dashboard، در همراه اندروید (در دست ساخت)، و در همان رشته ایمیلی که آغاز کرده‌اید نمایان می‌گردند — حتی پس از ری‌استارت سیستم یا گذرگاه.

خلاصه: Agent View کابینِ خلبان شماست وقتی پای لپ‌تاپ‌اید؛ claude-email بی‌سیمِ شماست وقتی نیستید.

۰۴

شروع کار نصب و ارسال نخستین نامه

مخزن را کلون کرده و نصب‌کننده را اجرا کنید:

git clone https://github.com/cocodedk/claude-email.git
cd claude-email
cp .env.example .env    # تنظیم IMAP/SMTP و AUTHORIZED_SENDER
bash install.sh         # ساخت venv + هر دو سرویس systemd

نصب‌کننده یک محیط مجازی پایتون می‌سازد، وابستگی‌ها را نصب می‌کند و هر دو سرویس claude-email و claude-chat را به‌عنوان سرویس‌های سطح کاربر با ترتیب وابستگی درست ثبت می‌کند.

# بررسی وضعیت سرویس
systemctl --user status claude-email
systemctl --user status claude-chat

# دنبال کردن لاگ
journalctl --user -u claude-email -f

از آن لحظه به بعد، هر ایمیلی که به نشانی پیکربندی‌شده بفرستید — از فرستنده امضاشده، در قالب خواسته‌شده — توسط Claude اجرا می‌شود و پاسخش به همان نخ برمی‌گردد. می‌توانید دستور را از گوشی، صندوق ورودی، یا mutt بنویسید. بدون نیاز به برنامه.