دنبال فرمانی برای اجرا بگردید…
هر دستور همکاری در zev را یک اسکریپت، یک کار CI یا یک عامل هوش مصنوعی میتواند به همان خوبی اجرا کند که یک انسان پشت صفحهکلید. قواعد زیر قراردادی است که این ابزارها میتوانند به آن تکیه کنند.
--json روی stdout میرود، بهصورت یک سند JSON واحد. هر چیزی که برای انسان است، یعنی پیشرفت کار، پرسشها، هشدارها و خطاها، روی stderr میرود. پس گرفتن stdout فقط داده را میگیرد.0 یعنی موفقیت و 1 یعنی شکست. در صورت شکست، توضیح روی stderr است و stdout خالی است؛ بنابراین یک دستور ناموفق هرگز خروجیای تولید نمیکند که با نتیجه اشتباه گرفته شود.NO_COLOR تنظیم شده باشد همیشه خاموشاند.if result=$(zev pr list --json 2>/dev/null); then echo "$result"else echo "zev failed" >&2fiیک استثنای عمدی برای قاعدهی «stdout در صورت شکست خالی است» وجود دارد: درخواست ادغام pull requestی که قبلاً ادغام شده با کد 1 خارج میشود و یک خطای قابلخواندن برای ماشین چاپ میکند، تا ابزار بتواند این حالت را از یک شکست واقعی تشخیص دهد:
{"error":"pull request is already merged","status":"merged"}یک عامل هرگز نباید حساب جداگانه یا کلید شما را داشته باشد. اجازه دهید از طریق شما وارد شود:
zev login zaryn.xyz --device --client "Claude Code"یک پیوند و یک کد چاپ میکند. پیوند را باز میکنید، کد را بررسی میکنید، تیک هر چیزی را که لازم ندارد برمیدارید و تأیید میکنید. سپس عامل توکن خودش را دارد: به نام خودش، محدود به دسترسیهایی که تأیید کردهاید، با اعتبار ۹۰ روز، فهرستشده در تنظیمات که میتوانید لغوش کنید، و ثبتشده در گزارش ممیزی به نام خودش.
برای اینکه Zaryn را بهصورت ابزار در اختیار عامل بگذارید، سرور MCP همراه zev را بیفزایید:
claude mcp add zaryn -- zev mcp # Claude Codecodex mcp add zaryn -- zev mcp # Codexzev mcp ابزارهای zaryn_* را برای مخزنها، فایلها، تاریخچه، جستوجو، مسئلهها، درخواستهای ادغام، CI و هشدارها ارائه میدهد. میتواند مسئله باز کند و نظر بگذارد (با repo:write)؛ ادغام، حذف و تغییر تنظیمات بر عهدهٔ انسانهاست. عاملها میتوانند ساخت حساب را برای یک فرد آغاز کنند (zev login … --register <name> --email <address>)، اما فقط خود آن فرد با کدی که به صندوقش میرسد میتواند آن را تمام کند. Zaryn برای عاملهای هوش مصنوعی را ببینید.
یک دستور فقط اطلاعاتی را میپرسد که شما ندادهاید، پس دادن همهچیز بهصورت پرچم آن را کاملاً غیرتعاملی میکند:
zev issue --title <t> --desc <d> بدون پرسش یک issue میسازد.zev issue comment <n> --body <text> بدون پرسش نظر میگذارد.zev pr --yes یک pull request با عنوان و توضیحات پیشنویسشده و مقصد main باز میکند؛ برای مقصد دیگر --target <branch> را اضافه کنید.zev issue close <n> --yes و zev pr merge <n> --yes از تأیید صرفنظر میکنند. با --json هم تأیید پرسیده نمیشود، چون یک پرسش جلسهی غیرتعاملی را معطل میکند.export ZEV_SERVER=zaryn.xyzexport ZEV_TOKEN=zev_pat_...zev issue list --repo alice/project --jsonZEV_SERVER و ZEV_TOKEN بر ورود ذخیرهشده اولویت دارند، و --server و --token بر هر دو. همراه با --repo owner/name، این امکان را میدهد که یک ابزار از هر پوشهای و بدون هیچ checkout محلی روی هر مخزنی کار کند.
خواندن از مخزنهای عمومی بهصورت ناشناس موفق میشود، پس توکن نامعتبر فقط وقتی تشخیص داده میشود که دستوری نیاز به نوشتن داشته باشد: ساختن، نظر دادن، بستن یا ادغام، خطای HTTP 401 و کد خروج 1 برمیگرداند.
{"issues":[{"number":1,"title":"Login button misaligned","status":"open","author":"alice","created_at":"2026-09-22 23:38:51+03:30"}]}zev issue view <n> --json خود issue و رشتهی نظرهایش را با هم برمیگرداند:
{"issue":{"number":1,"title":"...","description":"...","status":"open","author":"alice","created_at":"..."}, "comments":{"comments":[{"id":7,"author":"alice","body":"...","created_at":"..."}]}}zev add .zev commit "Automated change"zev pushnumber=$(zev pr --yes --json 2>/dev/null | python3 -c "import json,sys; print(json.load(sys.stdin)['number'])")echo "Opened pull request #$number"zev issue list --json 2>/dev/null \ | python3 -c "import json,sys; [print(i['number']) for i in json.load(sys.stdin)['issues'] if i['status']=='open']" \ | while read n; do zev issue comment "$n" --body "Triaged automatically." --json > /dev/null donedirty=$(zev status --json | python3 -c "import json,sys; d=json.load(sys.stdin); print(len(d['staged'])+len(d['modified'])+len(d['deleted']))")if [ "$dirty" != "0" ]; then echo "Uncommitted changes present; not switching branches." >&2 exit 1fizev checkout releasezev checkout خودش همین بررسی ایمنی را انجام میدهد و بهجای بازنویسی هر چیزی با کد 1 خارج میشود؛ پس بررسی صریح بالا فقط وقتی لازم است که ابزار بخواهد پیش از تلاش تصمیم بگیرد چه کند.