From 66957d06a07782d59fde5600838b8e1e3bcefa76 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" Date: Tue, 23 Jun 2026 11:06:15 +0000 Subject: [PATCH] docs: update translations for changed English sources --- docs/ar/cli/audit.mdx | 87 +++++++++++++++++++++----------- docs/ar/dashboard.mdx | 88 ++++++++++++++++----------------- docs/de/cli/audit.mdx | 99 +++++++++++++++++++++++++------------ docs/de/dashboard.mdx | 88 ++++++++++++++++----------------- docs/es/cli/audit.mdx | 98 +++++++++++++++++++++++++----------- docs/es/dashboard.mdx | 62 +++++++++++------------ docs/fr/cli/audit.mdx | 99 ++++++++++++++++++++++++++----------- docs/fr/dashboard.mdx | 58 +++++++++++----------- docs/he/cli/audit.mdx | 97 +++++++++++++++++++++++------------- docs/he/dashboard.mdx | 102 ++++++++++++++++++++------------------ docs/hi/cli/audit.mdx | 97 +++++++++++++++++++++++------------- docs/hi/dashboard.mdx | 87 ++++++++++++++++---------------- docs/it/cli/audit.mdx | 96 +++++++++++++++++++++++++----------- docs/it/dashboard.mdx | 82 +++++++++++++++--------------- docs/ja/cli/audit.mdx | 93 ++++++++++++++++++++++------------ docs/ja/dashboard.mdx | 72 +++++++++++++-------------- docs/ko/cli/audit.mdx | 95 +++++++++++++++++++++++------------ docs/ko/dashboard.mdx | 74 ++++++++++++++-------------- docs/pt-br/cli/audit.mdx | 87 +++++++++++++++++++++++--------- docs/pt-br/dashboard.mdx | 60 +++++++++++----------- docs/ru/cli/audit.mdx | 102 +++++++++++++++++++++++++------------- docs/ru/dashboard.mdx | 99 +++++++++++++++++++------------------ docs/tr/cli/audit.mdx | 97 +++++++++++++++++++++++------------- docs/tr/dashboard.mdx | 88 ++++++++++++++++----------------- docs/vi/cli/audit.mdx | 97 +++++++++++++++++++++++------------- docs/vi/dashboard.mdx | 104 +++++++++++++++++++-------------------- docs/zh/cli/audit.mdx | 95 +++++++++++++++++++++++------------ docs/zh/dashboard.mdx | 76 ++++++++++++++-------------- 28 files changed, 1481 insertions(+), 998 deletions(-) diff --git a/docs/ar/cli/audit.mdx b/docs/ar/cli/audit.mdx index f3330beec..7a338c22f 100644 --- a/docs/ar/cli/audit.mdx +++ b/docs/ar/cli/audit.mdx @@ -1,57 +1,88 @@ --- --- title: تدقيق الجلسات السابقة (نسخة تجريبية) -description: "عد عدد المرات التي قام بها الوكيل بأشياء مهدرة أو محفوفة بالمخاطر عبر النصوص السابقة" +description: "عد عدد مرات قيام الوكيل بأشياء مهدرة أو محفوفة بالمخاطر عبر النصوص السابقة" --- - **ميزة تجريبية.** يتم شحن التدقيق كنسخة تجريبية أثناء جمع التعليقات المبكرة. - قد يتغير كتالوج الكاشف وتنسيق التقرير قبل الإصدار المستقر التالي. يرجى فتح مشكلة إذا بدا أي شيء غير صحيح. + **ميزة تجريبية.** يتم شحن التدقيق كنسخة تجريبية أثناء جمعنا للملاحظات المبكرة. + قد يتغير كتالوج الكاشف وتنسيق التقرير قبل الإصدار المستقر التالي. يرجى فتح مشكلة إذا بدا شيء ما غير صحيح. -التدقيق الآن معروض كصفحة **/لوحة تحكم التدقيق**، وليس كأمر فرعي في سطر الأوامر. افتحه من شريط التنقل في لوحة التحكم (بين السياسات والمشاريع)، أو قم بزيارة `http://localhost:8020/audit` مباشرة عند تشغيل `failproofai` محليًا. +يعيد التدقيق تشغيل نصوص وكيل CLI السابقة لديك من خلال محرك سياسة failproofai ويعرض تقرير بصري قابل للمشاركة على **صفحة لوحة المعلومات `/audit`** — نمط وكيلك، درجة من 0 إلى 100، وبالضبط أي السياسات كان يمكن أن تحتفظ بما. -```bash -failproofai # open the dashboard, then click "Audit" +## تشغيله + +ثلاث طرق للدخول — كلها تؤدي إلى نفس تقرير `/audit`. + + + +```bash npx (no install) +npx -y failproofai audit +``` + +```bash failproofai audit +failproofai audit ``` -تقوم لوحة التحكم بمسح نصوص CLI للوكيل السابقة على هذه الآلة (Claude Code وCodex وCopilot وCursor وOpenCode وPi وGemini) وتقرير عدد المرات التي قام بها الوكيل بأشياء تم بناء failproofai لإيقافها — فحوصات متغيرات البيئة والدفع القسري والبادئات `cd ` الزائدة ودورات sleep-polling وإعادة قراءة الملفات المحررة للتو والمزيد. +```bash failproofai (dashboard) +failproofai +``` + + + + + + يجلب `npx -y failproofai audit` failproofai، ويشغل الفحص، ويفتح لوحة المعلومات لك — بدون تثبيت أولاً. + + + يشغل `failproofai audit` الفحص في المحطة الطرفية لديك، ثم يفتح `localhost:8020/audit` تلقائياً عند الانتهاء. + + + شغّل `failproofai` وانقر على **Audit** في شريط التنقل (بين Policies و Projects)، أو افتح `/audit` مباشرة. + + + + + شغّل `failproofai audit -h` (أو `--help`) لرؤية الاستخدام. يعمل التدقيق **بالكامل في وضع عدم الاتصال** — لا حساب أو شبكة مطلوبة — ولوحة المعلومات تستمر في الخدمة حتى تيقفها بـ `Ctrl+C`. + + +تفحص لوحة المعلومات نصوص وكيل CLI السابقة على هذا الجهاز (Claude Code وCodex وCopilot وCursor وOpenCode وPi وGemini) وتبلغ عن عدد مرات قيام الوكيل بأشياء بنيت failproofai لإيقافها — فحوصات متغيرات البيئة والدفع القسري والبادئات الزائدة `cd ` وحلقات sleep-polling وإعادة قراءة الملفات المحررة للتو والمزيد. -لكل نص، يتم إعادة تشغيل كل حدث استخدام أداة عبر 39 سياسة مدمجة **و** عبر 8 كواشف خاصة بالتدقيق فقط تلتقط الأنماط التي لم تغطها السياسات في وقت التشغيل بعد. يتم تجميع الأعداد لكل سياسة / كاشف عبر جميع الجلسات. +لكل نص، يتم إعادة تشغيل كل حدث استخدام أداة من خلال 39 سياسة مدمجة **و** من خلال 8 كاشفات خاصة بالتدقيق فقط تحتفظ بالأنماط غير المغطاة حتى الآن بسياسات وقت التشغيل. يتم تجميع الأعداد لكل سياسة / كاشف عبر جميع الجلسات. ## ما تحصل عليه -تتكون صفحة `/audit` من ستة أقسام: +صفحة `/audit` هي **ملصق** على شاشة واحدة وقابل للمشاركة متبوعاً بأربع أقسام أسفل الطية: -1. **الهوية** — يتم تصنيف وكيلك في إحدى النماذج الأصلية الثمانية (`optimist` و `cowboy` و `explorer` و `goldfish` و `paranoid architect` و `precision builder` و `hammer` و `ghost`) بناءً على الإشارة المرجحة عبر كل نص تم تدقيقه. -2. **نقاط القوة** — أرقام حقيقية مشتقة من المسح (نسبة المكالمات النظيفة ومستند "0 credential leaks" وما إلى ذلك) محدودة بسياسات التعقيم ذات الصلة التي تعمل فعليًا. -3. **النقاط** — من 0 إلى 100 مع فئات S/A/B/C/D/F والارتفاع المتوقع إذا تم تفعيل كل سياسة موصى بها. -4. **النتائج** — بطاقات لكل سياسة توضح ما حدث والتكلفة والأدلة المرصودة والأمر `failproofai policy add ` الدقيق لتفعيل المدمج في وقت التشغيل الذي كان سيتقاطه. -5. **السياسات الموصى بها** — قائمة التثبيت المجمعة مع أمر `failproofai policies --install` أحادي الضربة. -6. **تذكير إعادة التدقيق** — "عد أفضل." قم بتعيين تذكير بريد إلكتروني لمدة 7 أيام عبر خادم API (يتطلب تسجيل الدخول؛ انظر [`failproofai auth`](/ar/cli/auth)). +1. **الملصق** — هوية وكيلك في لمحة: **نمطه** (واحد من 8 — `optimist` أو `cowboy` أو `explorer` أو `goldfish` أو `paranoid architect` أو `precision builder` أو `hammer` أو `ghost`)، وكلماته الرئيسية الشخصية، ومدى ندرة هذا النمط، و**درجة من 0 إلى 100** مع نطاق طبقة (`S` إلى `bottom tier`). مصممة للمشاركة — انشرها على X أو LinkedIn، أو حملها كملف PNG. +2. **`// strengths`** — ما يفعله وكيلك بالفعل بشكل جيد، كأرقام حقيقية من الفحص (مثلاً clean-tool-call % أو `0` محاولات push-to-main)، تظهر فقط حيث تحتفظ السياسة ذات الصلة بسجل نظيف. +3. **`// quirks`** — ما انزلق: جدول مرتب للسلوكيات التي كانت ستحتفظ بها failproofai — *متى* حدثت آخر مرة، *ما انزلق* (والأداة المدمجة التي كان يمكن أن تحظره)، **شدته**، وعدد مرات *رؤيته* (`new` / `recurring` / `N× seen`). +4. **`// how to improve`** — قائمة الإصلاح الموصوفة: صف واحد لكل سياسة مع `failproofai policy add ` قابلة للنسخ واللصق، بالإضافة إلى زر **تثبيت الكل** الذي يمكّن كل توصية في نفس الوقت ويظهر **درجتك المتوقعة** إذا فعلت ذلك. +5. **`// come back better`** — بناء العادة: اضبط **تذكير** إعادة التدقيق عبر البريد الإلكتروني (`3d` / `7d` / `14d` / `30d`) أو أعد التدقيق الآن، و**ادعُ صديقاً** لتشغيل التدقيق الخاص به (مرسل من failproof.ai مع نسخة لك). التذكيرات والدعوات تتطلب تسجيل الدخول — انظر [`failproofai auth`](/ar/cli/auth). ## كواشف خاصة بالتدقيق فقط -تكتشف أنماط "السلوك الغبي" التي لم يتم (حتى الآن) فرضها في الوقت الفعلي. يتم تشغيلها فقط أثناء التدقيق ولا تحجب أبدًا استدعاء أداة مباشر. +تكتشف أنماط السلوك الأحمق غير المفروضة (حتى الآن) في الوقت الفعلي. يتم تشغيلها فقط أثناء التدقيق ولا تحجب أبداً استدعاء أداة مباشرة. | الكاشف | ما يعده | |---|---| -| `redundant-cd-cwd` | أوامر Bash تبدأ بـ `cd && …` على الرغم من أن الأوامر تعمل بالفعل في `cwd`. | +| `redundant-cd-cwd` | أوامر Bash تبدأ بـ `cd && …` حتى عندما تعمل الأوامر بالفعل في `cwd`. | | `prefer-edit-over-read-cat` | `cat`/`head`/`tail`/`less`/`more` على ملف مصدر واحد — استخدم أداة `Read`. | -| `prefer-edit-over-sed-awk` | `sed -i` / `awk … > file` في الموضع — استخدم أداة `Edit`. | -| `prefer-write-over-heredoc` | كتابة الملفات عبر Heredoc / `echo` متعدد الأسطر `> file` — استخدم أداة `Write`. | -| `sleep-polling-loop` | `sleep N` طويلة (≥ 30s) أو حلقات استقصاء `while …; sleep …; done`. | -| `find-from-root` | `find /` و `find /home` و `find /usr` وما إلى ذلك — حدد النطاق إلى `cwd` بدلاً من ذلك. | -| `git-commit-no-verify` | `git commit … --no-verify` / `-n` وتخطي الخطافات. | -| `reread-after-edit` | `Read` لملف تم تحريره للتو / `Write` في نفس الجلسة. | +| `prefer-edit-over-sed-awk` | تعديلات في المكان `sed -i` / `awk … > file` — استخدم أداة `Edit`. | +| `prefer-write-over-heredoc` | كتابة ملفات Heredoc / متعددة الأسطر `echo > file` — استخدم أداة `Write`. | +| `sleep-polling-loop` | `sleep N` طويل (≥ 30s) أو حلقات استطلاع `while …; sleep …; done`. | +| `find-from-root` | `find /` أو `find /home` أو `find /usr` وما إلى ذلك — حصر النطاق على `cwd`. | +| `git-commit-no-verify` | `git commit … --no-verify` / `-n`، تخطي الخطافات. | +| `reread-after-edit` | `Read` لملف تم `Edit`/`Write` للتو في نفس الجلسة. | ## الذاكرات المؤقتة -- **ذاكرة مؤقتة لكل نص** في `~/.failproofai/cache/audit/.json` مفهرسة بـ `(mtime, size, engineVersion, detectorVersion)` — تُلغى تلقائيًا عند تغيير النص أو رمز السياسة/الكاشف. تخزن كل مدخلة أيضًا طابع زمني `cachedAt` كـ **بيانات وصفية TTL** (وليس جزءًا من مفتاح الذاكرة المؤقتة)؛ يتم رفض الإدخالات الأقدم من **7 أيام** عند القراءة حتى لا تتجاوز النتائج طويلة الأمد النية المتطورة للكاشف. -- **ذاكرة مؤقتة للنتيجة الكاملة** في `~/.failproofai/audit-dashboard.json` (الوضع 0600). يتيح لوحة التحكم العرض الفوري عند التنقل دون إعادة التشغيل. يتم رفضها أيضًا عند القراءة بعد **TTL لمدة 7 أيام** — `/audit` تندرج بعد ذلك إلى حالتها الفارغة وتطالب بتشغيل جديد. انقر على `[ re-audit now ]` بالقرب من أسفل التقرير للتحديث — يرسل إعادة التدقيق `noCache: true`، لذا فهو يتجاوز ذاكرة النص المؤقتة ويعيد مسح كل نص بدلاً من إرجاع النتيجة المخزنة مؤقتًا؛ يبث التشغيل التقدم عبر شريط لاصق علوي ويستبدل النتيجة في موضعها عند النجاح (لا إعادة تحميل الصفحة؛ تحتفظ إعادة التدقيق الفاشلة بالتقرير السابق). +- **ذاكرة مؤقتة لكل نص** في `~/.failproofai/cache/audit/.json` مفهرسة حسب `(mtime, size, engineVersion, detectorVersion)` — تبطل تلقائياً عندما يتغير النص أو كود السياسة/الكاشف. يخزن كل إدخال أيضاً طابع زمني `cachedAt` كـ **بيانات وصفية TTL** (ليس جزءاً من مفتاح الذاكرة المؤقتة)؛ الإدخالات الأقدم من **7 أيام** يتم رفضها عند القراءة حتى لا تتجاوز النتائج طويلة العمر نية الكاشف المتطورة. +- **ذاكرة مؤقتة للنتيجة الكاملة** في `~/.failproofai/audit-dashboard.json` (الوضع 0600). تسمح لوحة المعلومات بالعرض الفوري عند التنقل دون إعادة التشغيل. يتم رفضها أيضاً عند القراءة بعد **7 أيام TTL** — ثم `/audit` تسقط في حالتها الفارغة وتطلب تشغيل جديد. انقر على `[ re-audit now ]` بالقرب من أسفل التقرير للتحديث — إعادة التدقيق ترسل `noCache: true`، لذا تتجاوز ذاكرة التخزين المؤقت لكل نص وتعيد مسح كل نص بدلاً من إرجاع النتيجة المخزنة مؤقتاً؛ يعرض التشغيل تقدم التقدم عبر شريط لاصق في الأعلى ويستبدل النتيجة في مكانها عند النجاح (بدون إعادة تحميل الصفحة؛ فشل إعادة التدقيق يحتفظ بالتقرير السابق). ## ملاحظات -- **لا طفرات.** يعاد التدقيق في الوضع الذي يقرأ فقط. يتم تخطي `warn-repeated-tool-calls` لأن الملف الجانبي الخاص بالجلسة سيتم تعديله وإلا. -- **سياسات سير العمل المتخطاة.** سياسات `require-*-before-stop` تنطلق فقط عند أحداث `Stop` و `execSync` مقابل حالة git المباشرة — ليس لديها تفسير "ماذا كان سيحدث في 2025" ذي مغزى، لذلك لا تظهر في أعداد التدقيق. -- **السياسات المخصصة المتخطاة.** الخطافات المخصصة المسماة من قبل المستخدم لا تتم إعادة تشغيلها (قد تكون قد تغيرت منذ الجلسة الأصلية). \ No newline at end of file +- **بدون تحوير.** يعيد التدقيق التشغيل في الوضع للقراءة فقط. يتم تخطي `warn-repeated-tool-calls` لأن ملف جانبي لكل جلسة سيتم تعديله بخلاف ذلك. +- **سياسات سير العمل المتجاهلة.** تشغل سياسات `require-*-before-stop` فقط على أحداث `Stop` و `execSync` ضد حالة git المباشرة — ليس لديها تفسير معنوي "ماذا كان سيحدث في 2025"، لذا لا تظهر في أعداد التدقيق. +- **السياسات المخصصة المتجاهلة.** لا يتم إعادة تشغيل الخطافات المخصصة التي يوفرها المستخدم (قد تكون تغيرت منذ الجلسة الأصلية). \ No newline at end of file diff --git a/docs/ar/dashboard.mdx b/docs/ar/dashboard.mdx index 71cc5b996..2082cff29 100644 --- a/docs/ar/dashboard.mdx +++ b/docs/ar/dashboard.mdx @@ -1,11 +1,11 @@ --- --- title: لوحة المعلومات -description: "مراقبة جلسات الوكيل، ومراجعة استدعاءات الأدوات، وإدارة السياسات" +description: "مراقبة جلسات الوكيل، مراجعة استدعاءات الأدوات، وإدارة السياسات" icon: chart-line --- -لوحة معلومات failproofai هي تطبيق ويب محلي لمراقبة جلسات وكيل الذكاء الاصطناعي الخاص بك وإدارة السياسات. انظر ماذا فعل وكلاؤك بينما كنت بعيداً. +لوحة معلومات failproofai هي تطبيق ويب محلي لمراقبة جلسات وكيل الذكاء الاصطناعي الخاص بك وإدارة السياسات. انظر إلى ما فعله وكلاؤك بينما كنت بعيداً. --- @@ -25,75 +25,75 @@ failproofai ### المشاريع -يسرد جميع مشاريع Claude Code و OpenAI Codex و GitHub Copilot CLI _(beta)_ و Cursor Agent _(beta)_ و OpenCode _(beta)_ و Pi _(beta)_ و Gemini CLI _(beta)_ الموجودة على جهازك. يتم اكتشاف مشاريع Claude من `~/.claude/projects/` (أو المسار المحدد بواسطة `CLAUDE_PROJECTS_PATH`)؛ يتم اكتشاف مشاريع Codex من خلال مسح كل نص تحت `~/.codex/sessions///
/*.jsonl` وتجميعها حسب `cwd` المسجل في السجل الأول من جلسة كل واحد؛ يتم اكتشاف مشاريع Copilot CLI من خلال مسح كل `~/.copilot/session-state//workspace.yaml` (قابل للتكوين عبر `COPILOT_HOME`) وتجميعها حسب حقل `cwd` الخاص به؛ يتم اكتشاف مشاريع Cursor Agent من خلال مسح البيانات الوصفية لكل جلسة تحت `~/.cursor/agent-sessions//` (قابل للتكوين عبر `CURSOR_HOME`، مع اختبار `conversations/` و `sessions/` كخيارات بديلة) بحثاً عن `cwd` قياسي في `meta.json` / `session.json` / `workspace.yaml`؛ يتم اكتشاف مشاريع OpenCode من خلال الاستعلام عن قاعدة بيانات SQLite الخاصة بها في `~/.local/share/opencode/opencode.db` عبر `opencode db --format json` (نقرأ جداول `session` و `project` ونجمعها حسب `project_id`)؛ يتم اكتشاف مشاريع Pi من خلال مسح نصوص JSONL لكل جلسة تحت `~/.pi/agent/sessions//_.jsonl` (قابل للتكوين عبر `PI_SESSIONS_DIR`) وسحب `cwd` من السجل الأول لكل جلسة؛ يتم اكتشاف مشاريع Gemini CLI من خلال مسح `~/.gemini/tmp//chats/session--.jsonl` (قابل للتكوين عبر `GEMINI_SESSIONS_DIR`) واسترجاع cwd القانوني من علامة نص الأخت `.project_root`. يتم عرض المشروع الذي تم استخدامه بواسطة عدة واجهات سطر أوامر كصف واحد بجميع الشارات المطابقة. استخدم القائمة المنسدلة **CLI** أعلى الجدول للتصفية حسب واجهة سطر أوامر وكيل معينة؛ يحافظ عنوان URL على اختيارك كـ `?cli=claude|codex|copilot|cursor|opencode|pi|gemini`. +تسرد جميع مشاريع Claude Code و OpenAI Codex و GitHub Copilot CLI _(beta)_ و Cursor Agent _(beta)_ و OpenCode _(beta)_ و Pi _(beta)_ و Gemini CLI _(beta)_ الموجودة على جهازك. يتم اكتشاف مشاريع Claude من `~/.claude/projects/` (أو المسار المحدد بواسطة `CLAUDE_PROJECTS_PATH`); يتم اكتشاف مشاريع Codex بفحص كل نسخة احتياطية تحت `~/.codex/sessions///
/*.jsonl` وتجميعها حسب `cwd` المسجل في السجل الأول لكل جلسة; يتم اكتشاف مشاريع Copilot CLI بفحص كل `~/.copilot/session-state//workspace.yaml` (قابل للتكوين عبر `COPILOT_HOME`) وتجميعها حسب حقل `cwd`; يتم اكتشاف مشاريع Cursor Agent بفحص البيانات الوصفية لكل جلسة تحت `~/.cursor/agent-sessions//` (قابل للتكوين عبر `CURSOR_HOME`، مع استكشاف `conversations/` و `sessions/` كخيارات بديلة) عن عددي `cwd` في `meta.json` / `session.json` / `workspace.yaml`; يتم اكتشاف مشاريع OpenCode بالاستعلام من قاعدة بيانات SQLite الخاصة بها في `~/.local/share/opencode/opencode.db` عبر `opencode db --format json` (نقرأ جداول `session` و `project` ونجمعها حسب `project_id`); يتم اكتشاف مشاريع Pi بفحص نسخ احتياطية JSONL لكل جلسة تحت `~/.pi/agent/sessions//_.jsonl` (قابل للتكوين عبر `PI_SESSIONS_DIR`) واستخلاص `cwd` من السجل الأول لكل جلسة; يتم اكتشاف مشاريع Gemini CLI بفحص `~/.gemini/tmp//chats/session--.jsonl` (قابل للتكوين عبر `GEMINI_SESSIONS_DIR`) واسترجاع cwd الأساسي من علامة نصية `.project_root` المجاورة. يتم عرض المشروع الذي تم استخدامه بواسطة عدة CLIs كصف واحد مع جميع الشارات المطابقة. استخدم القائمة المنسدلة **CLI** أعلى الجدول للتصفية حسب CLI وكيل معين; يحافظ الرابط على اختيارك كـ `?cli=claude|codex|copilot|cursor|opencode|pi|gemini`. يعرض كل مشروع: -- اسم المشروع (مشتق من مسار المجلد) -- شارة CLI — `Claude Code` (برتقالي)، `OpenAI Codex` (بنفسجي)، `GitHub Copilot` (أزرق)، `Cursor Agent` (زمردي)، `OpenCode` (كهرماني)، `Pi` (وردي)، و/أو `Gemini CLI` (سماوي) -- تاريخ أحدث نشاط جلسة +- اسم المشروع (المشتق من مسار المجلد) +- شارة CLI — `Claude Code` (برتقالي)، `OpenAI Codex` (بنفسجي)، `GitHub Copilot` (أزرق)، `Cursor Agent` (أخضر، `OpenCode` (كهرماني)، `Pi` (وردي)، و/أو `Gemini CLI` (سماوي) +- تاريخ نشاط الجلسة الأخيرة -انقر على مشروع لرؤية جلساته. +انقر فوق مشروع لرؤية جلساته. ### الجلسات -يسرد جميع الجلسات داخل مشروع. تعرض كل جلسة: -- معرّف الجلسة -- طوابع زمنية البداية والنهاية +تسرد جميع الجلسات ضمن مشروع. تعرض كل جلسة: +- معرف الجلسة +- الطوابع الزمنية للبداية والنهاية - عدد استدعاءات الأدوات -- عدد نشاط الخطاف (السياسات التي تم تطبيقها) +- عدد نشاط hook (السياسات التي تم تفعيلها) -استخدم مرشح نطاق التاريخ والبحث عن معرّف الجلسة لتضييق القائمة. يتم تقسيم الجلسات إلى صفحات. +استخدم مرشح نطاق التاريخ والبحث عن معرف الجلسة لتضييق القائمة. يتم تقسيم الجلسات إلى صفحات. -انقر على جلسة لفتح عارض الجلسة. +انقر فوق جلسة لفتح عارض الجلسة. ### عارض الجلسة -يجيب عارض الجلسة على السؤال الرئيسي للوكلاء المستقلين: ماذا فعل الوكيل، وهل ظل على المسار الصحيح؟ تشير شارة CLI بجانب الرأس إلى ما إذا كانت الجلسة نص Claude Code أو OpenAI Codex أو GitHub Copilot CLI أو Cursor Agent أو OpenCode أو Pi أو Gemini CLI. يعرض خطاً زمنياً لكل ما حدث في جلسة: +يجيب عارض الجلسة على السؤال الأساسي للوكلاء المستقلين: ماذا فعل الوكيل، وهل ظل على المسار الصحيح؟ تشير شارة CLI بجانب الرأس إلى ما إذا كانت الجلسة نسخة Claude Code أو OpenAI Codex أو GitHub Copilot CLI أو Cursor Agent أو OpenCode أو Pi أو Gemini CLI. يعرض خطة زمنية لكل ما حدث في جلسة: -- **الرسائل** - استجابات Claude النصية وطلبات المستخدم -- **استدعاءات الأدوات** - كل أداة استدعاها Claude، مع مدخلاتها ومخرجاتها -- **نشاط السياسة** - لكل استدعاء أداة، السياسات التي تم تطبيقها والقرار الذي أرجعته +- **الرسائل** - الردود النصية من Claude ومحفوزات المستخدم +- **استدعاءات الأدوات** - كل أداة استدعاها Claude، مع إدخالاتها ومخرجاتها +- **نشاط السياسة** - لكل استدعاء أداة، السياسات التي تم تفعيلها والقرار الذي أرجعته -يعرض شريط الإحصائيات في الأعلى مدة الجلسة وإجمالي استدعاءات الأدوات وملخص قرارات الخطاف (عدد السماح / الرفض / التعليمات). +يعرض شريط الإحصائيات في الأعلى مدة الجلسة، إجمالي استدعاءات الأدوات، وملخص قرارات hook (عدادات السماح / الرفض / الإرشاد). -انقر على زر **تنزيل السجلات** لتصدير الجلسة. بالنسبة لجلسات Claude Code و Codex و Copilot و Cursor و Pi و Gemini، ستحصل على نص JSONL الأصلي على القرص بالبايت الدقيق؛ بالنسبة لـ OpenCode (التي تعيش جلساتها في SQLite وليس على القرص) ستحصل على وثيقة JSON تعكس جداول `session` / `messages` / `parts` الأساسية. +انقر على زر **تنزيل السجلات** لتصدير الجلسة. بالنسبة لجلسات Claude Code و Codex و Copilot و Cursor و Pi و Gemini، تحصل على نسخة النص الأصلية على القرص بالكامل; بالنسبة لـ OpenCode (التي تكون جلساتها في SQLite، وليس على القرص) تحصل على وثيقة JSON تعكس جداول `session` / `messages` / `parts` الأساسية. ### التدقيق -تقرير مدفوع بالشخصية عن كيفية تصرف الوكيل الفعلي عبر الجلسات السابقة. يشغل نفس الفحص الذي يقوم به `failproofai audit` CLI ولكن يعرضه كملصق شاشة واحدة قابل للمشاركة + أربعة أقسام أسفل الطية: +تقرير بطابع شخصي عن كيفية تصرف وكيلك فعلياً عبر الجلسات الماضية. يقوم بنفس المسح الذي يقوم به CLI `failproofai audit` لكن يعرضه كملصق واحد على الشاشة قابل للمشاركة + أربعة أقسام تحت الطية: -1. **الملصق** — يملأ viewport الأول. منطقة ملتقطة من PNG مكتفية ذاتياً مع كلمة failproof_ai + تسمية التدقيق · فهرس الأنماط (`№ NN of 08`) + تاريخ التدقيق · درجة رقمية (0–100) + حبة تصنيف مئوي (`top 15%`) · اسم النمط (أحدها `the optimist` أو `the cowboy` أو `the explorer` أو `the goldfish` أو `the paranoid architect` أو `the precision builder` أو `the hammer` أو `the ghost`) + شريط 3 كلمات · `// only N% of agents are this archetype` سطر الندرة · بلاط sigil 8×8 بكسل · `audit yours → failproof.ai` تذييل. ثلاثة أزرار مشاركة تجلس خارج صندوق الالتقاط مباشرة: `post your archetype` (نية X)، `share on linkedin`، `download poster`. يتم تشغيل الالتقاط من خلال `html-to-image` بحيث يطابق PNG العرض على الشاشة بكسل لكل بكسل (حدود متقطعة، قناع شعار SVG، تدرجات، مقاييس الخط — كل شيء محفوظ). -2. **نقاط القوة** — قائمة صف هادئة من السلوكيات التي يقوم بها الوكيل بالفعل بشكل صحيح، مشتقة من بيانات التدقيق المباشرة (معدل استدعاء أداة نظيف، متوسط طول الجلسة، صفر تسرب بيانات اعتماد، صفر عواصف إعادة محاولة، إلخ). -3. **الغرائب** — جدول ما تسلل، مرتبة حسب التأثير: `time · what slipped + policy that would've caught it · severity pill · recurrence` (جديد / Nx هذا الأسبوع / متكرر). -4. **كيفية التحسن** — قائمة صف هادئة، واحدة لكل سياسة موصى بها: اسم السياسة باللون الأبيض، وصف سطر واحد، أمر التثبيت + زر النسخ على الجانب الأيمن. يقوم زر `[install all]` في رأس القسم بنسخ أمر `failproofai policy add a b c …` المدمج لكل سياسة موصى بها. -5. **العودة أفضل** — بطاقتان جنباً إلى جنب. اليسار: ضع تذكيراً (`3d` / `7d` / `14d` / `30d` منتقي الإيقاع؛ يستمر عبر `/api/auth/reminder` بعد المصادقة). اليمين: فتح مزايا failproof — `invite a friend` يفتح وسيط يأخذ قائمة بريد إلكتروني للصديق مفصولة بفاصلات/مسافات/أسطر جديدة (بحد أقصى 10 لكل إرسال)، يرسل POST إلى `/api/audit/invite`، والذي ينقل إلى `POST /v0/invite` الخاص بخادم api. يرسل خادم api بريداً إلكترونياً واحداً لكل مستقبل من `invite@failproof.ai` مع نسخة Cc للمرسل و `Reply-To` مضبوطة، بحيث يرى المستقبل من دعاه والمرسل ينسخ في صندوق الوارد الخاص به. يتم توجيه المستخدمين المجهولين عبر `AuthDialog` أولاً بحيث يُعرف البريد الإلكتروني للمرسل قبل إرسال الدعوات. الاستحقاق / تحقيق المزايا متابعة لاحقة. +1. **الملصق** — يملأ منفذ العرض الأول. منطقة التقاط PNG مكتفية ذاتياً مع علامة failproof_ai · تسمية التدقيق · فهرس النمط الأصلي (`№ NN من 08`) + تاريخ التدقيق · نقطة عددية (0–100) + حبة تصنيف مئوي (`أفضل 15%`) · اسم النمط الأصلي (أحد `المتفائل` أو `الرعديد` أو `المستكشف` أو `سمك الذهب` أو `المهندس المريب` أو `بناء الدقة` أو `المطرقة` أو `الشبح`) + شريط الكلمات الثلاث · `// فقط N% من الوكلاء لديهم هذا النمط الأصلي` سطر الندرة · بلاط sigil 8×8 بكسل · `تدقيق لك → failproof.ai` تذييل. ثلاثة أزرار مشاركة خارج مربع الالتقاط: `انشر نمطك الأصلي` (X intent)، `مشاركة على linkedin`، `تنزيل الملصق`. يتم تشغيل الالتقاط عبر `html-to-image` بحيث يطابق PNG العرض على الشاشة بكسل تلو الآخر (حدود مسسحة، قناع شعار SVG، تدرجات، مقاييس الخط — كل شيء محفوظ). +2. **نقاط القوة** — قائمة صفوف هادئة من السلوكيات التي يقوم بها وكيلك بالفعل بشكل صحيح، مستمدة من بيانات التدقيق المباشر (معدل استدعاء أداة نظيف، بدون دفع مباشر إلى main، تسريب بيانات اعتماد صفري، عدم حدوث عواصف إعادة محاولة) — يتم عرض كل منها فقط عندما تكون السياسة ذات الصلة نظيفة عبر نافذة التدقيق. +3. **المميزات الغريبة** — جدول ما تسرب، مرتب حسب الشدة: `عندما · ما تسرب + السياسة التي كانت ستلتقطه · حبة الشدة · رؤية`، حيث تقرأ التكرار `جديد` (مرة واحدة)، `N× رؤية` (2–9 مرات)، أو `متكرر` (10+). +4. **كيفية التحسن** — قائمة صفوف هادئة، واحد لكل سياسة موصى بها: اسم السياسة بالأبيض، وصف سطر واحد، أمر التثبيت + زر النسخ على الجانب الأيمن. يقرأ رأس القسم `تفعيل الكل N → مشروع · ` (النقطة التي ستصل إليها مع تطبيق كل إصلاح)، وزر `[تثبيت الكل]` الخاص به ينسخ أمر `failproofai policy add a b c …` المدمج لكل سياسة موصى بها. +5. **عودة بشكل أفضل** — بطاقتان جنباً إلى جنب. اليسار: ضبط تذكير (`3d` / `7d` / `14d` / `30d` منتقي الإيقاع; يستمر عبر `/api/auth/reminder` بعد المصادقة). اليمين: فتح مزايا failproof — `دعوة صديق` يفتح نافذة حوار تأخذ قائمة برسائل البريد الإلكتروني للأصدقاء المفصولة بفواصل/مسافات/أسطر جديدة (الحد الأقصى 10 لكل إرسال)، POSTs إلى `/api/audit/invite`، والتي تنقل إلى `POST /v0/invite` في خادم api. يرسل خادم api بريداً إلكترونياً واحداً لكل مستقبل من `invite@failproof.ai` مع إضافة المرسل بـ Cc وتعيين `Reply-To`، بحيث يرى المستقبل من دعاهم والمرسل يحصل على نسخة في صندوق البريد الخاص به. يتم توجيه المستخدمين المجهولين عبر `AuthDialog` أولاً بحيث تكون رسالة البريد الإلكتروني للمرسل معروفة قبل إرسال الدعوات. تحقيق الأحقية / الامتيازات هو المتابعة. -مدفوع بوقت التشغيل `failproofai audit` — انظر [Audit CLI](/ar/cli/audit) لمحرك الفحص الأساسي والعلامات المدعومة وثوابت التخزين المؤقت لكل النص. تخزن لوحة المعلومات النتيجة الأخيرة في `~/.failproofai/audit-dashboard.json` (mode `0600`، فتحة واحدة، تحل التشغيلات الجديدة محل الموجودة) بحيث تكون إعادة الزيارات فورية؛ **يتم رفض كل من التخزين المؤقت لكل نص والنتيجة الكاملة عند القراءة بمجرد أن تكون أقدم من 7 أيام** بحيث لا تقدم لوحة المعلومات بصمت نتيجة قديمة بأسبوع — بعد TTL `/audit` يسقط في الحالة الفارغة ويطالب بتشغيل جديد. ينقر على `[ re-audit now ]` بالقرب من أسفل التقرير على `/api/audit/run` مع `noCache: true` — يتجاوز إعادة التدقيق التخزين المؤقت لكل نص وينجز فحص كل نص من البداية بدلاً من إرجاع الحل المخزن مؤقتاً بصمت — وتستقصي لوحة المعلومات `/api/audit/status` بسرعة 1Hz حتى ينتهي التشغيل؛ شريط تقدم وردي لاصق يثبت في الجزء العلوي من viewport أثناء التشغيل مع مؤقت مضى الوقت، وتحل النتيجة الجديدة مكانها عند النجاح (لا إعادة تحميل كاملة الصفحة؛ يترك التدقيق المفشل التقرير السابق سليماً). عند الفشل يتحول الشريط إلى الأحمر مع copy مفتاحه `RerunError.kind` (`timeout` / `network` / `post_failed`). يتم توسيط الحالة الفارغة (بلا ذاكرة تخزين مؤقت أو انتهت الصلاحية) وحالة الجلسات الصفرية (التخزين المؤقت موجود لكن الفحص لم يجد نصوص) بشكل منفصل. +مدفوع بـ `failproofai audit` runtime — انظر [Audit CLI](/ar/cli/audit) لمحرك المسح الأساسي والأعلام المدعومة وثوابت الذاكرة المؤقتة لكل نسخة. تخزن لوحة المعلومات مؤقتاً أحدث نتيجة في `~/.failproofai/audit-dashboard.json` (الوضع `0600`، فتحة واحدة، تستبدل التشغيلات الجديدة) بحيث تكون الزيارات اللاحقة فورية; **يتم رفض كل من ذاكرة التخزين المؤقت لكل نسخة ونتيجة كاملة عند القراءة بمجرد أن تصبح أقدم من 7 أيام** بحيث لا تخدم لوحة المعلومات أبداً بصمت نتيجة بعمر أسبوع — بعد انتهاء الصلاحية `/audit` يسقط إلى حالته الفارغة ويطالب بتشغيل جديد. النقر على `[ إعادة تدقيق الآن ]` بالقرب من أسفل التقرير POSTs `/api/audit/run` مع `noCache: true` — إعادة التدقيق تجاوز ذاكرة التخزين المؤقت لكل نسخة وتعيد مسح كل نسخة من البداية بدلاً من إرجاع النتيجة المخزنة بصمت — ولوحة المعلومات تستطلع `/api/audit/status` عند 1Hz حتى انتهاء التشغيل; شريط تقدم وردي لزج يدبس إلى أعلى viewport أثناء التشغيل مع مؤقت انقضى، وتبديل النتيجة الطازجة في المكان عند النجاح (بدون إعادة تحميل كاملة للصفحة; إعادة تدقيق فاشلة تترك التقرير السابق سليماً). عند الفشل، يتحول الشريط إلى اللون الأحمر مع نسخ مفتاح من `RerunError.kind` (`timeout` / `network` / `post_failed`). تتم سطح الحالة الفارغة (بدون ذاكرة تخزين مؤقت أو منتهية الصلاحية) والحالة الخالية من الجلسات (توجد ذاكرة تخزين مؤقت ولكن لم يجد المسح نسخ) بشكل منفصل. ### السياسات -صفحة ذات علامتي تبويب لإدارة السياسات ومراجعة النشاط. +صفحة بلسانين لإدارة السياسات ومراجعة النشاط. - - - تحديد متعدد لواجهات سطر أوامر الوكيل التي تحمي failproofai من لوحة واحدة — Claude Code و OpenAI Codex و GitHub Copilot و Cursor Agent و OpenCode و Pi و Gemini CLI كل منها لديه صف مع حالة التثبيت (`Active` / `Detected` / `Inactive`)، مسار إعدادات نطاق المستخدم، وضغط يحمل علامة تجارية. تحقق أو قم بإلغاء تحديد واجهات سطر الأوامر التي تريدها وانقر فوق `Apply changes` لتثبيت/إلغاء تثبيت الفرق في خطوة واحدة. يتم فحص واجهات سطر الأوامر التي يتم اكتشاف ثنائيتها على PATH مسبقاً. - - بدّل السياسات الفردية على أو بيقاف مع نقرة واحدة (يكتب إلى `~/.failproofai/policies-config.json` — مشاركة في جميع واجهات سطر الأوامر المثبتة) - - قم بتوسيع السياسة لتكوين معاملات (للسياسات التي تدعم `policyParams`) - - اضبط مسار ملف السياسات المخصص + + - حدد متعدد مع CLIs التي يحمي failproofai من لوحة واحدة — Claude Code و OpenAI Codex و GitHub Copilot و Cursor Agent و OpenCode و Pi و Gemini CLI كلها لها صف يحتوي على حالة التثبيت (`Active` / `Detected` / `Inactive`)، مسار إعدادات نطاق المستخدم، وضفة مميزة بعلامة تجارية. تحقق من مربعات CLIs التي تريدها أو ألغ تحديد مربع الاختيار وانقر فوق `تطبيق التغييرات` لتثبيت/إلغاء تثبيت الفارق في خطوة واحدة. CLIs التي يتم الكشف عن ملف تنفيذي الخاص بها على PATH يتم فحصه مسبقاً. + - بدّل السياسات الفردية على أو إيقاف بنقرة واحدة (يكتب إلى `~/.failproofai/policies-config.json` — مشترك في كل CLI مثبت) + - توسيع سياسة لتكوين معاملات (للسياسات التي تدعم `policyParams`) + - تعيين مسار ملف سياسات مخصص - - السجل الموحى به الكامل لكل حدث خطاف نظر عبر جميع الجلسات - - تصفية حسب القرار أو نوع الحدث أو CLI (Claude Code / OpenAI Codex / GitHub Copilot _(beta)_ / Cursor Agent _(beta)_ / OpenCode _(beta)_ / Pi _(beta)_ / Gemini CLI _(beta)_) أو اسم السياسة أو معرّف الجلسة - - يعرض كل صف: الطابع الزمني، اسم السياسة، القرار، شارة CLI (برتقالي = Claude Code، بنفسجي = OpenAI Codex، أزرق = GitHub Copilot، زمردي = Cursor Agent، كهرماني = OpenCode، وردي = Pi، سماوي = Gemini CLI)، اسم الأداة، معرّف الجلسة، والسبب وراء قرارات الرفض/التعليمات - - انقر على معرّف جلسة لفتح النص — يكتشف العارض تلقائياً واجهة سطر الأوامر التي أطلقت الخطاف (Claude `~/.claude/projects/…`، Codex `~/.codex/sessions/…`، Copilot CLI `~/.copilot/session-state//events.jsonl`، Cursor Agent `~/.cursor/agent-sessions//events.jsonl`، OpenCode `~/.local/share/opencode/opencode.db`، Pi `~/.pi/agent/sessions//.jsonl`، Gemini CLI `~/.gemini/tmp//chats/.jsonl`) ويعرض شارة CLI المطابقة في الرأس + - سجل مخزن بالكامل في صفحات لكل حدث hook تم تشغيله عبر جميع الجلسات + - تصفية حسب القرار ونوع الحدث و CLI (Claude Code / OpenAI Codex / GitHub Copilot _(beta)_ / Cursor Agent _(beta)_ / OpenCode _(beta)_ / Pi _(beta)_ / Gemini CLI _(beta)_) واسم السياسة أو معرف الجلسة + - يعرض كل صف: الطابع الزمني، اسم السياسة، القرار، شارة CLI (برتقالي = Claude Code، بنفسجي = OpenAI Codex، أزرق = GitHub Copilot، أخضر = Cursor Agent، كهرماني = OpenCode، وردي = Pi، سماوي = Gemini CLI)، اسم الأداة، معرف الجلسة، والسبب لقرارات الرفض/الإرشاد + - انقر فوق معرف الجلسة لفتح نسختها — يكتشف العارض تلقائياً أي CLI أطلق hook (Claude `~/.claude/projects/…`، Codex `~/.codex/sessions/…`، Copilot CLI `~/.copilot/session-state//events.jsonl`، Cursor Agent `~/.cursor/agent-sessions//events.jsonl`، OpenCode `~/.local/share/opencode/opencode.db`، Pi `~/.pi/agent/sessions//.jsonl`، Gemini CLI `~/.gemini/tmp//chats/.jsonl`) ويعرض شارة CLI المطابقة في الرأس --- -## التحديث التلقائي +## الإنعاش التلقائي -تحتوي لوحة المعلومات على تبديل التحديث التلقائي في التنقل العلوي. عند تفعيله، يتم تحديث الصفحة الحالية بشكل دوري لإظهار جلسات جديدة ونشاط سياسة عند ظهورها. ضروري لمراقبة جلسات الوكيل المستقل طويلة الأجل. +تحتوي لوحة المعلومات على مبدل إنعاش تلقائي في التنقل العلوي. عند تفعيله، تنعش الصفحة الحالية بشكل دوري لعرض جلسات جديدة ونشاط سياسة جديدة عند ظهورها. ضروري لمراقبة جلسات وكيل مستقلة طويلة التشغيل. --- @@ -105,13 +105,13 @@ failproofai FAILPROOFAI_DISABLE_PAGES=policies failproofai ``` -القيم الصحيحة: `policies` و `projects` و `audit`. +القيم الصحيحة: `policies`، `projects`، `audit`. --- ## تكوين مسار المشاريع -بشكل افتراضي، تقرأ لوحة المعلومات من مجلد مشاريع Claude Code القياسي. قم بتجاوزها للإعدادات المخصصة: +بشكل افتراضي، تقرأ لوحة المعلومات من دليل مشاريع Claude Code القياسي. استبدله للإعدادات المخصصة: ```bash CLAUDE_PROJECTS_PATH=/custom/path/to/projects failproofai @@ -119,21 +119,21 @@ CLAUDE_PROJECTS_PATH=/custom/path/to/projects failproofai --- -## الوصول من مضيف بخلاف localhost +## الوصول من مضيف غير محلي -عند تشغيل لوحة المعلومات في **وضع dev** (`npm run dev`) والوصول إليها من اسم مضيف بخلاف `localhost` - على سبيل المثال، مجال مخصص أو عنوان IP بعيد أو عنوان URL مقسى - قد ترى تحذيراً مثل: +عند تشغيل لوحة المعلومات في **وضع dev** (`npm run dev`) والوصول إليها من اسم مضيف بخلاف `localhost` - على سبيل المثال، مجال مخصص أو IP بعيدة أو URL موصولة — قد تظهر تحذير مثل: ```text ⚠ Blocked cross-origin request to Next.js dev resource /_next/webpack-hmr from "dashboard.example.com". ``` -هذا هو Next.js يحظر الوصول عبر الأصول إلى websocket HMR (hot module reload)، وهي ميزة dev فقط. للسماح بمضيفك، استخدم العلم `--allowed-origins`: +هذا هو Next.js يمنع الوصول عبر الأصول إلى مورد HMR dev الخاص به (إعادة تحميل الوحدة الساخنة)، وهي ميزة dev فقط. للسماح لمضيفك، استخدم العلم `--allowed-origins`: ```bash npm run dev -- --allowed-origins dashboard.example.com ``` -لعدة مضيفين أو عناوين IP، مرر قائمة مفصولة بفواصل: +لعدة مضيفات أو IPs، مرر قائمة مفصولة بفواصل: ```bash npm run dev -- --allowed-origins dashboard.example.com,192.168.1.5 diff --git a/docs/de/cli/audit.mdx b/docs/de/cli/audit.mdx index a7074d3ee..db6a1fe2e 100644 --- a/docs/de/cli/audit.mdx +++ b/docs/de/cli/audit.mdx @@ -1,58 +1,95 @@ --- title: Vergangene Sitzungen prüfen (Beta) -description: "Zählt, wie oft der Agent in vergangenen Transkripten verschwenderische oder riskante Aktionen durchgeführt hat" +description: "Wie oft der Agent in vergangenen Transkripten verschwenderische oder riskante Aktionen ausgeführt hat" --- - **Beta-Funktion.** Die Prüfung wird als Beta veröffentlicht, während wir - frühes Feedback sammeln. Der Detektor-Katalog und das Berichtsformat können - sich vor dem nächsten stabilen Release ändern. Bitte öffne ein Issue, wenn - etwas nicht stimmt. + **Beta-Funktion.** Das Audit wird als Beta ausgeliefert, während wir erstes Feedback sammeln. + Der Detektor-Katalog und das Berichtsformat können sich vor dem nächsten stabilen + Release ändern. Bitte öffne ein Issue, wenn etwas nicht stimmt. -Die Prüfung ist jetzt als **/audit-Dashboard-Seite** verfügbar, nicht als CLI-Unterbefehl. Öffne sie über die Dashboard-Navigationsleiste (zwischen Policies und Projekten) oder besuche `http://localhost:8020/audit` direkt, wenn `failproofai` lokal läuft. +Das Audit spielt vergangene Agent-CLI-Transkripte durch die Richtlinien-Engine von failproofai ab +und erstellt einen teilbaren, visuellen Bericht auf der **`/audit`-Dashboard-Seite** — +den Archetyp deines Agenten, einen Score von 0–100 und genau, welche Richtlinien was abgefangen hätten. -```bash -failproofai # open the dashboard, then click "Audit" +## Ausführen + +Drei Einstiegswege — alle landen im gleichen `/audit`-Bericht. + + + +```bash npx (keine Installation) +npx -y failproofai audit +``` + +```bash failproofai audit +failproofai audit ``` -Das Dashboard scannt vergangene Agent-CLI-Transkripte auf diesem Gerät (Claude Code, Codex, Copilot, Cursor, OpenCode, Pi, Gemini) und meldet, wie oft der Agent Dinge getan hat, die failproofai verhindern soll — Umgebungsvariablen-Prüfungen, Force-Pushes, redundante `cd `-Präfixe, Sleep-Polling-Schleifen, erneutes Lesen gerade bearbeiteter Dateien und mehr. +```bash failproofai (Dashboard) +failproofai +``` + + + + + + `npx -y failproofai audit` lädt failproofai herunter, führt den Scan durch und öffnet das + Dashboard — ohne vorherige Installation. + + + `failproofai audit` führt den Scan im Terminal aus und öffnet anschließend + automatisch `localhost:8020/audit`. + + + Starte `failproofai` und klicke in der Navigationsleiste auf **Audit** (zwischen Policies und + Projects), oder öffne `/audit` direkt. + + + + + Führe `failproofai audit -h` (oder `--help`) aus, um die Nutzungshinweise anzuzeigen. Das Audit läuft **vollständig + offline** — kein Konto und keine Netzwerkverbindung erforderlich — und das Dashboard bleibt aktiv, + bis du es mit `Ctrl+C` beendest. + + +Das Dashboard scannt vergangene Agent-CLI-Transkripte auf diesem Rechner (Claude Code, Codex, Copilot, Cursor, OpenCode, Pi, Gemini) und zeigt, wie oft der Agent Dinge getan hat, die failproofai verhindern soll — Umgebungsvariablen-Prüfungen, Force-Pushes, redundante `cd `-Präfixe, Sleep-Polling-Schleifen, erneutes Lesen gerade bearbeiteter Dateien und mehr. -Für jedes Transkript wird jedes Tool-Use-Ereignis durch die 39 integrierten Policies **und** durch 8 nur für die Prüfung vorgesehene Detektoren wiedergegeben, die Muster erkennen, die noch nicht durch Laufzeit-Policies abgedeckt sind. Zählungen werden pro Policy / Detektor über alle Sitzungen aggregiert. +Für jedes Transkript wird jedes Tool-Use-Ereignis durch die 39 eingebauten Richtlinien **und** durch 8 Audit-exklusive Detektoren abgespielt, die Muster erkennen, die noch nicht durch Laufzeitrichtlinien abgedeckt sind. Die Zählungen werden pro Richtlinie / Detektor über alle Sitzungen hinweg aggregiert. ## Was du erhältst -Die `/audit`-Seite besteht aus sechs Abschnitten: +Die `/audit`-Seite ist ein einseitiges, teilbares **Poster**, gefolgt von vier Abschnitten unterhalb des sichtbaren Bereichs: -1. **Identität** — dein Agent wird anhand des gewichteten Signals über alle geprüften Transkripte in einen von 8 Archetypen eingeordnet (`optimist`, `cowboy`, `explorer`, `goldfish`, `paranoid architect`, `precision builder`, `hammer`, `ghost`). -2. **Stärken** — echte Zahlen aus dem Scan (Anteil sauberer Aufrufe in %, „0 Credential-Leaks" usw.), die davon abhängen, dass die relevanten Sanitize-Policies tatsächlich ausgelöst haben. -3. **Score** — 0–100 mit den Bandbreiten S/A/B/C/D/F und einem prognostizierten Anstieg, wenn alle empfohlenen Policies aktiviert wären. -4. **Befunde** — Policy-Karten mit Beschreibung des Vorgefallenen, Kosten, gesammelten Belegen und dem genauen `failproofai policy add `-Befehl, um das integrierte Live-Feature zu aktivieren, das den Vorfall abgefangen hätte. -5. **Empfohlene Policies** — aggregierte Installationsliste mit einem einzigen `failproofai policies --install`-Befehl. -6. **Erinnerung zur erneuten Prüfung** — „komm besser zurück." Richte eine 7-tägige E-Mail-Erinnerung über den API-Server ein (erfordert Anmeldung; siehe [`failproofai auth`](/de/cli/auth)). +1. **Poster** — die Identität deines Agenten auf einen Blick: sein **Archetyp** (einer von 8 — `optimist`, `cowboy`, `explorer`, `goldfish`, `paranoid architect`, `precision builder`, `hammer`, `ghost`), seine Persona-Schlüsselwörter, wie selten dieser Archetyp ist, und ein **Score von 0–100** mit einem Stufenband (`S` bis `bottom tier`). Zum Teilen gedacht — poste es auf X oder LinkedIn oder lade es als PNG herunter. +2. **`// strengths`** — was dein Agent bereits gut macht, als echte Zahlen aus dem Scan (z. B. Clean-Tool-Call-%, `0` Push-to-Main-Versuche), nur angezeigt, wenn die entsprechende Richtlinie eine saubere Bilanz hat. +3. **`// quirks`** — was durchgeglitten ist: eine nach Rang sortierte Tabelle der Verhaltensweisen, die failproofai abgefangen hätte — *wann* es zuletzt vorkam, *was durchgeglitten ist* (und das eingebaute Tool, das es blockiert hätte), dessen *Schweregrad* und wie oft es *gesehen* wurde (`new` / `recurring` / `N× seen`). +4. **`// how to improve`** — die vorgeschriebene Verbesserungsliste: eine Zeile pro Richtlinie mit einem kopierfertigen `failproofai policy add `, plus einem **Alle installieren**-Button, der alle Empfehlungen auf einmal aktiviert und deinen **prognostizierten Score** anzeigt. +5. **`// come back better`** — die Gewohnheit aufbauen: eine E-Mail-**Erinnerung** für ein erneutes Audit setzen (`3d` / `7d` / `14d` / `30d`) oder jetzt erneut prüfen, und **einen Freund einladen**, sein eigenes Audit durchzuführen (gesendet von failproof.ai, Cc an dich). Erinnerungen und Einladungen erfordern eine Anmeldung — siehe [`failproofai auth`](/de/cli/auth). -## Nur für die Prüfung vorgesehene Detektoren +## Audit-exklusive Detektoren -Diese erkennen Muster für „unintelligentes Verhalten", die (noch) nicht in Echtzeit durchgesetzt werden. Sie laufen nur während der Prüfung und blockieren niemals einen Live-Tool-Aufruf. +Diese erkennen Muster für dummes Verhalten, die (noch) nicht in Echtzeit durchgesetzt werden. Sie laufen nur während des Audits und blockieren nie einen Live-Tool-Aufruf. -| Detektor | Was gezählt wird | +| Detektor | Was er zählt | |---|---| | `redundant-cd-cwd` | Bash-Befehle, die mit `cd && …` beginnen, obwohl Befehle bereits in `cwd` ausgeführt werden. | -| `prefer-edit-over-read-cat` | `cat`/`head`/`tail`/`less`/`more` auf eine einzelne Quelldatei — verwende stattdessen das `Read`-Tool. | -| `prefer-edit-over-sed-awk` | `sed -i` / `awk … > file`-In-Place-Bearbeitungen — verwende stattdessen das `Edit`-Tool. | -| `prefer-write-over-heredoc` | Heredoc / mehrzeiliges `echo > file` zum Schreiben von Dateien — verwende stattdessen das `Write`-Tool. | -| `sleep-polling-loop` | Lange `sleep N`-Aufrufe (≥ 30 s) oder `while …; sleep …; done`-Polling-Schleifen. | -| `find-from-root` | `find /`, `find /home`, `find /usr` usw. — schränke auf `cwd` ein. | +| `prefer-edit-over-read-cat` | `cat`/`head`/`tail`/`less`/`more` auf einer einzelnen Quelldatei — verwende stattdessen das `Read`-Tool. | +| `prefer-edit-over-sed-awk` | `sed -i` / `awk … > file` direkte Bearbeitungen — verwende stattdessen das `Edit`-Tool. | +| `prefer-write-over-heredoc` | Heredoc / mehrzeilige `echo > file`-Dateioperationen — verwende stattdessen das `Write`-Tool. | +| `sleep-polling-loop` | Lange `sleep N`-Befehle (≥ 30s) oder `while …; sleep …; done`-Polling-Schleifen. | +| `find-from-root` | `find /`, `find /home`, `find /usr` usw. — auf `cwd` eingrenzen. | | `git-commit-no-verify` | `git commit … --no-verify` / `-n`, wodurch Hooks übersprungen werden. | -| `reread-after-edit` | `Read` einer Datei, die gerade mit `Edit`/`Write` in derselben Sitzung bearbeitet wurde. | +| `reread-after-edit` | `Read` einer Datei, die in derselben Sitzung gerade per `Edit`/`Write` bearbeitet wurde. | ## Caches -- **Transkript-spezifischer Cache** unter `~/.failproofai/cache/audit/.json`, indexiert nach `(mtime, size, engineVersion, detectorVersion)` — wird automatisch ungültig, wenn das Transkript oder der Policy-/Detektor-Code sich ändert. Jeder Eintrag speichert außerdem einen `cachedAt`-Zeitstempel als **TTL-Metadaten** (kein Teil des Cache-Schlüssels); Einträge, die älter als **7 Tage** sind, werden beim Lesen abgelehnt, damit langlebige Ergebnisse nicht die Weiterentwicklung der Detektoren überdauern. -- **Gesamtergebnis-Cache** unter `~/.failproofai/audit-dashboard.json` (Modus 0600). Ermöglicht dem Dashboard eine sofortige Darstellung beim Navigieren, ohne erneut ausgeführt zu werden. Ebenfalls nach Ablauf des **7-Tage-TTL** beim Lesen abgelehnt — `/audit` fällt dann in seinen leeren Zustand zurück und fordert einen neuen Durchlauf an. Klicke auf `[ re-audit now ]` unten im Bericht, um zu aktualisieren — eine erneute Prüfung sendet `noCache: true`, umgeht damit den transkriptspezifischen Cache und scannt alle Transkripte neu, anstatt das gecachte Ergebnis zurückzugeben; der Durchlauf streamt den Fortschritt über einen fixierten oberen Streifen und tauscht das Ergebnis bei Erfolg direkt aus (kein Seitenneuladen; eine fehlgeschlagene erneute Prüfung behält den vorherigen Bericht). +- **Transkript-spezifischer Cache** unter `~/.failproofai/cache/audit/.json`, indiziert nach `(mtime, size, engineVersion, detectorVersion)` — wird automatisch invalidiert, wenn das Transkript oder der Richtlinien-/Detektor-Code sich ändert. Jeder Eintrag speichert auch einen `cachedAt`-Zeitstempel als **TTL-Metadaten** (nicht Teil des Cache-Schlüssels); Einträge, die älter als **7 Tage** sind, werden beim Lesen abgelehnt, damit langlebige Ergebnisse nicht die Weiterentwicklung der Detektoren überdauern. +- **Gesamtergebnis-Cache** unter `~/.failproofai/audit-dashboard.json` (Modus 0600). Ermöglicht sofortiges Rendern des Dashboards bei der Navigation ohne erneuten Scan. Ebenfalls nach dem **7-Tage-TTL** abgelehnt — `/audit` fällt dann in seinen leeren Zustand zurück und fordert einen neuen Scan an. Klicke auf `[ re-audit now ]` unten im Bericht zum Aktualisieren — Re-Audit sendet `noCache: true`, umgeht damit den transkriptspezifischen Cache und scannt alle Transkripte neu, anstatt das gecachte Ergebnis zurückzugeben; der Lauf streamt den Fortschritt über einen festen oberen Streifen und tauscht das Ergebnis bei Erfolg an Ort und Stelle aus (kein Seitenneulade; ein fehlgeschlagenes Re-Audit behält den vorherigen Bericht). ## Hinweise -- **Keine Änderungen.** Die Prüfung läuft im reinen Lesemodus. `warn-repeated-tool-calls` wird übersprungen, da sein sitzungsspezifischer Begleiter sonst verändert würde. -- **Workflow-Policies werden übersprungen.** `require-*-before-stop`-Policies werden nur bei `Stop`-Ereignissen ausgelöst und führen `execSync` gegen den Live-Git-Zustand aus — sie haben keine sinnvolle Interpretation im Sinne von „Was wäre 2025 passiert", daher erscheinen sie nicht in den Prüfzählungen. -- **Benutzerdefinierte Policies werden übersprungen.** Benutzerdefinierte Hooks werden nicht wiedergegeben (sie können sich seit der ursprünglichen Sitzung geändert haben). \ No newline at end of file +- **Keine Mutation.** Das Audit wird im Nur-Lese-Modus abgespielt. `warn-repeated-tool-calls` wird übersprungen, da dessen sitzungsspezifische Hilfsdatei andernfalls geändert würde. +- **Workflow-Richtlinien übersprungen.** `require-*-before-stop`-Richtlinien werden nur bei `Stop`-Ereignissen ausgelöst und führen `execSync` gegen den Live-Git-Status aus — sie haben keine sinnvolle Interpretation im Sinne von 2025, daher erscheinen sie nicht in den Audit-Zählungen. +- **Benutzerdefinierte Richtlinien übersprungen.** Vom Benutzer bereitgestellte benutzerdefinierte Hooks werden nicht abgespielt (sie können sich seit der ursprünglichen Sitzung geändert haben). \ No newline at end of file diff --git a/docs/de/dashboard.mdx b/docs/de/dashboard.mdx index 9b9028c85..14509310a 100644 --- a/docs/de/dashboard.mdx +++ b/docs/de/dashboard.mdx @@ -1,10 +1,10 @@ --- title: Dashboard -description: "Agent-Sitzungen überwachen, Tool-Aufrufe prüfen und Policies verwalten" +description: "Agent-Sitzungen überwachen, Tool-Aufrufe einsehen und Richtlinien verwalten" icon: chart-line --- -Das failproofai Dashboard ist eine lokale Webanwendung zur Überwachung deiner KI-Agent-Sitzungen und zur Verwaltung von Policies. Sieh nach, was deine Agents während deiner Abwesenheit getan haben. +Das failproofai-Dashboard ist eine lokale Webanwendung zur Überwachung Ihrer KI-Agent-Sitzungen und zur Verwaltung von Richtlinien. Sehen Sie, was Ihre Agenten in Ihrer Abwesenheit getan haben. --- @@ -16,7 +16,7 @@ failproofai Öffnet sich unter `http://localhost:8020`. -Das Dashboard liest direkt aus dem Dateisystem – aus deinen Claude Code Projektordnern und den failproofai Konfigurationsdateien. Es werden keine Daten an einen externen Dienst übertragen. +Das Dashboard liest direkt aus dem Dateisystem – aus Ihren Claude Code-Projektordnern und den failproofai-Konfigurationsdateien. Es werden keine Daten an einen Remote-Dienst übertragen. --- @@ -24,67 +24,67 @@ Das Dashboard liest direkt aus dem Dateisystem – aus deinen Claude Code Projek ### Projekte -Zeigt alle Claude Code, OpenAI Codex, GitHub Copilot CLI _(beta)_, Cursor Agent _(beta)_, OpenCode _(beta)_, Pi _(beta)_ und Gemini CLI _(beta)_ Projekte, die auf deinem Rechner gefunden wurden. Claude-Projekte werden aus `~/.claude/projects/` (oder dem über `CLAUDE_PROJECTS_PATH` festgelegten Pfad) erkannt; Codex-Projekte werden durch das Durchsuchen aller Transkripte unter `~/.codex/sessions///
/*.jsonl` und Gruppierung nach dem im ersten Eintrag jeder Sitzung enthaltenen `cwd` ermittelt; Copilot CLI-Projekte werden durch das Scannen jeder `~/.copilot/session-state//workspace.yaml` (konfigurierbar über `COPILOT_HOME`) und Gruppierung nach dem darin enthaltenen `cwd`-Feld erkannt; Cursor Agent-Projekte werden durch das Scannen sitzungsbezogener Metadaten unter `~/.cursor/agent-sessions//` (konfigurierbar über `CURSOR_HOME`, mit `conversations/` und `sessions/` als Fallback) nach einem `cwd`-Skalar in `meta.json` / `session.json` / `workspace.yaml` erkannt; OpenCode-Projekte werden durch Abfrage seiner SQLite-DB unter `~/.local/share/opencode/opencode.db` via `opencode db --format json` ermittelt (es werden die Tabellen `session` und `project` gelesen und nach `project_id` gruppiert); Pi-Projekte werden durch das Scannen sitzungsbezogener JSONL-Transkripte unter `~/.pi/agent/sessions//_.jsonl` (konfigurierbar über `PI_SESSIONS_DIR`) und Auslesen des `cwd` aus dem ersten Eintrag jeder Sitzung erkannt; Gemini CLI-Projekte werden durch das Scannen von `~/.gemini/tmp//chats/session--.jsonl` (konfigurierbar über `GEMINI_SESSIONS_DIR`) und Ermittlung des kanonischen cwd aus dem benachbarten `.project_root`-Textmarker erkannt. Ein Projekt, das von mehreren CLIs verwendet wurde, erscheint als einzelne Zeile mit allen passenden Badges. Verwende das **CLI**-Dropdown oberhalb der Tabelle, um nach einer bestimmten Agent-CLI zu filtern; die Auswahl wird in der URL als `?cli=claude|codex|copilot|cursor|opencode|pi|gemini` gespeichert. +Listet alle Claude Code-, OpenAI Codex-, GitHub Copilot CLI- _(Beta)_, Cursor Agent- _(Beta)_, OpenCode- _(Beta)_, Pi- _(Beta)_ und Gemini CLI- _(Beta)_ Projekte auf, die auf Ihrem Computer gefunden wurden. Claude-Projekte werden aus `~/.claude/projects/` ermittelt (oder dem Pfad, der über `CLAUDE_PROJECTS_PATH` gesetzt wurde); Codex-Projekte werden durch Durchsuchen aller Transkripte unter `~/.codex/sessions///
/*.jsonl` und Gruppierung nach dem `cwd`-Feld im ersten Datensatz jeder Sitzung erkannt; Copilot CLI-Projekte werden durch Durchsuchen von `~/.copilot/session-state//workspace.yaml` (konfigurierbar über `COPILOT_HOME`) und Gruppierung nach dem `cwd`-Feld gefunden; Cursor Agent-Projekte werden durch Durchsuchen der sitzungsspezifischen Metadaten unter `~/.cursor/agent-sessions//` (konfigurierbar über `CURSOR_HOME`, mit `conversations/` und `sessions/` als Fallbacks) nach einem `cwd`-Skalar in `meta.json` / `session.json` / `workspace.yaml` erkannt; OpenCode-Projekte werden durch Abfrage der SQLite-Datenbank unter `~/.local/share/opencode/opencode.db` via `opencode db --format json` ermittelt (es werden die Tabellen `session` und `project` gelesen und nach `project_id` gruppiert); Pi-Projekte werden durch Durchsuchen der sitzungsspezifischen JSONL-Transkripte unter `~/.pi/agent/sessions//_.jsonl` (konfigurierbar über `PI_SESSIONS_DIR`) und Auslesen des `cwd`-Werts aus dem ersten Datensatz jeder Sitzung erkannt; Gemini CLI-Projekte werden durch Durchsuchen von `~/.gemini/tmp//chats/session--.jsonl` (konfigurierbar über `GEMINI_SESSIONS_DIR`) und Wiederherstellung des kanonischen cwd aus dem benachbarten `.project_root`-Textmarker gefunden. Ein Projekt, das von mehreren CLIs verwendet wurde, wird als einzelne Zeile mit allen zugehörigen Badges dargestellt. Verwenden Sie das **CLI**-Dropdown über der Tabelle, um nach einer bestimmten Agent-CLI zu filtern; die URL speichert Ihre Auswahl als `?cli=claude|codex|copilot|cursor|opencode|pi|gemini`. Jedes Projekt zeigt: - Projektname (abgeleitet vom Ordnerpfad) -- Ein CLI-Badge — `Claude Code` (orange), `OpenAI Codex` (lila), `GitHub Copilot` (blau), `Cursor Agent` (smaragd), `OpenCode` (bernstein), `Pi` (pink) und/oder `Gemini CLI` (himmelblau) +- Ein CLI-Badge — `Claude Code` (orange), `OpenAI Codex` (lila), `GitHub Copilot` (blau), `Cursor Agent` (smaragdgrün), `OpenCode` (bernstein), `Pi` (pink) und/oder `Gemini CLI` (himmelblau) - Datum der letzten Sitzungsaktivität -Klicke auf ein Projekt, um seine Sitzungen anzuzeigen. +Klicken Sie auf ein Projekt, um dessen Sitzungen anzuzeigen. ### Sitzungen -Zeigt alle Sitzungen innerhalb eines Projekts. Jede Sitzung enthält: +Listet alle Sitzungen innerhalb eines Projekts auf. Jede Sitzung zeigt: - Sitzungs-ID -- Start- und Endzeitpunkt +- Start- und Endzeitstempel - Anzahl der Tool-Aufrufe -- Anzahl der Hook-Aktivitäten (ausgelöste Policies) +- Anzahl der Hook-Aktivitäten (ausgelöste Richtlinien) -Verwende den Datumsbereichsfilter und die Sitzungs-ID-Suche, um die Liste einzugrenzen. Sitzungen werden seitenweise angezeigt. +Verwenden Sie den Datumsbereichsfilter und die Sitzungs-ID-Suche, um die Liste einzuschränken. Sitzungen werden seitenweise angezeigt. -Klicke auf eine Sitzung, um den Sitzungsbetrachter zu öffnen. +Klicken Sie auf eine Sitzung, um den Sitzungs-Viewer zu öffnen. -### Sitzungsbetrachter +### Sitzungs-Viewer -Der Sitzungsbetrachter beantwortet die zentrale Frage bei autonomen Agents: Was hat der Agent getan, und ist er auf Kurs geblieben? Ein CLI-Badge neben der Überschrift zeigt an, ob es sich um ein Claude Code-, OpenAI Codex-, GitHub Copilot CLI-, Cursor Agent-, OpenCode-, Pi- oder Gemini CLI-Transkript handelt. Er zeigt eine Zeitleiste aller Ereignisse in einer Sitzung: +Der Sitzungs-Viewer beantwortet die entscheidende Frage bei autonomen Agenten: Was hat der Agent getan, und hat er sich auf Kurs gehalten? Ein CLI-Badge neben der Überschrift zeigt an, ob es sich um ein Claude Code-, OpenAI Codex-, GitHub Copilot CLI-, Cursor Agent-, OpenCode-, Pi- oder Gemini CLI-Transkript handelt. Er zeigt eine Zeitachse aller Ereignisse einer Sitzung: -- **Nachrichten** – Claudes Textantworten und Benutzeranfragen +- **Nachrichten** – Claudes Textantworten und Benutzereingaben - **Tool-Aufrufe** – Jeder von Claude aufgerufene Tool mit Eingabe und Ausgabe -- **Policy-Aktivität** – Für jeden Tool-Aufruf: welche Policies ausgelöst wurden und welche Entscheidung sie getroffen haben +- **Richtlinienaktivität** – Für jeden Tool-Aufruf, welche Richtlinien ausgelöst wurden und welche Entscheidung sie zurückgegeben haben -Die Statusleiste oben zeigt Sitzungsdauer, Gesamtzahl der Tool-Aufrufe und eine Zusammenfassung der Hook-Entscheidungen (allow / deny / instruct Anzahl). +Die Statusleiste oben zeigt Sitzungsdauer, Gesamtanzahl der Tool-Aufrufe und eine Zusammenfassung der Hook-Entscheidungen (Anzahl allow / deny / instruct). -Klicke auf den Button **Logs herunterladen**, um die Sitzung zu exportieren. Für Claude Code-, Codex-, Copilot-, Cursor-, Pi- und Gemini-Sitzungen erhältst du das originale JSONL-Transkript byte-für-byte vom Datenträger; für OpenCode (dessen Sitzungen in SQLite und nicht auf dem Datenträger gespeichert sind) erhältst du ein JSON-Dokument, das die zugrunde liegenden Tabellen `session` / `messages` / `parts` widerspiegelt. +Klicken Sie auf die Schaltfläche **Logs herunterladen**, um die Sitzung zu exportieren. Bei Claude Code-, Codex-, Copilot-, Cursor-, Pi- und Gemini-Sitzungen erhalten Sie das originale JSONL-Transkript vom Datenträger Byte für Byte; bei OpenCode (dessen Sitzungen in SQLite statt auf dem Datenträger gespeichert sind) erhalten Sie ein JSON-Dokument, das die zugrunde liegenden Tabellen `session` / `messages` / `parts` abbildet. ### Audit -Ein charaktergetriebener Bericht darüber, wie sich dein Agent tatsächlich in vergangenen Sitzungen verhalten hat. Führt denselben Scan wie das `failproofai audit` CLI aus, stellt ihn aber als einseitiges, teilbares Poster dar – ergänzt durch vier nachfolgende Abschnitte: +Ein persönlichkeitsbasierter Bericht darüber, wie sich Ihr Agent tatsächlich über vergangene Sitzungen hinweg verhalten hat. Führt denselben Scan wie das `failproofai audit`-CLI aus, stellt das Ergebnis jedoch als einzeln anzeigbares, teilbares Poster dar – ergänzt durch vier Abschnitte unterhalb des sichtbaren Bereichs: -1. **Poster** — füllt den ersten Viewport. Ein in sich geschlossener PNG-Erfassungsbereich mit dem failproof_ai-Wortmarkenlogo + Audit-Label · Archetyp-Index (`№ NN of 08`) + Audit-Datum · numerischer Score (0–100) + Perzentil-Rangpille (`top 15%`) · der Archetyp-Name (einer von `the optimist`, `the cowboy`, `the explorer`, `the goldfish`, `the paranoid architect`, `the precision builder`, `the hammer`, `the ghost`) + 3-Schlüsselwort-Streifen · `// only N% of agents are this archetype`-Seltenheitszeile · 8×8 Pixel Sigel-Kachel · `audit yours → failproof.ai`-Fußzeile. Drei Share-Buttons befinden sich knapp außerhalb des Erfassungsbereichs: `post your archetype` (X-Intent), `share on linkedin`, `download poster`. Die Erfassung erfolgt über `html-to-image`, sodass das PNG pixelgenau dem Bildschirm-Rendering entspricht (gestrichelte Rahmen, SVG-Logo-Maske, Farbverläufe, Schriftmetriken – alles erhalten). -2. **Stärken** — ruhige ✓-Zeilenliste der Verhaltensweisen, die dein Agent bereits richtig macht, abgeleitet aus den Live-Audit-Daten (saubere Tool-Aufruf-Rate, durchschnittliche Sitzungslänge, keine Credential-Lecks, keine Retry-Stürme usw.). -3. **Eigenheiten** — Tabelle der Dinge, die durchgerutscht sind, nach Auswirkung gerankt: `Zeitpunkt · was durchgerutscht ist + Policy, die es abgefangen hätte · Schweregrad-Pille · Wiederkehr` (neu / Nx diese Woche / wiederkehrend). -4. **So geht es besser** — ruhige Zeilenliste, eine pro empfohlener Policy: Policy-Name in weiß, einzeilige Beschreibung, Installationsbefehl + Kopierschaltfläche rechts. Ein `[install all]`-Button am Abschnitts-Header kopiert den kombinierten `failproofai policy add a b c …`-Befehl für jede empfohlene Policy. -5. **Komm besser zurück** — zwei nebeneinander liegende Karten. Links: Erinnerung setzen (`3d` / `7d` / `14d` / `30d` Kadenz-Auswahl; wird nach Authentifizierung über `/api/auth/reminder` gespeichert). Rechts: failproof-Vergünstigungen freischalten — `invite a friend` öffnet ein Modal, das eine durch Komma/Leerzeichen/Zeilenumbruch getrennte Liste von Freundes-E-Mail-Adressen entgegennimmt (max. 10 pro Versendung), POSTet diese an `/api/audit/invite`, was an den `/v0/invite` des api-servers weitergeleitet wird. Der api-server sendet pro Empfänger eine E-Mail von `invite@failproof.ai`, wobei der Absender im Cc ist und `Reply-To` gesetzt ist, sodass der Empfänger sieht, wer ihn eingeladen hat, und der Absender eine Kopie in seinem Posteingang erhält. Anonyme Benutzer werden zuerst durch den `AuthDialog` geleitet, damit die E-Mail-Adresse des Absenders vor dem Versenden der Einladungen bekannt ist. Berechtigung / Vergünstigungserfüllung folgt zu einem späteren Zeitpunkt. +1. **Poster** — füllt den ersten Viewport. Eigenständiger PNG-Erfassungsbereich mit dem failproof_ai-Schriftzug + Audit-Label · Archetyp-Index (`№ NN von 08`) + Audit-Datum · numerischer Score (0–100) + Perzentilrang-Pille (`top 15%`) · der Archetyp-Name (eines von: `the optimist`, `the cowboy`, `the explorer`, `the goldfish`, `the paranoid architect`, `the precision builder`, `the hammer`, `the ghost`) + 3-Keyword-Streifen · `// only N% of agents are this archetype`-Seltenheitszeile · 8×8-Pixel-Siegel-Kachel · `audit yours → failproof.ai`-Fußzeile. Drei Teilen-Schaltflächen befinden sich knapp außerhalb des Erfassungsbereichs: `post your archetype` (X-Intent), `share on linkedin`, `download poster`. Die Erfassung erfolgt über `html-to-image`, sodass das PNG pixelgenau der Bildschirmdarstellung entspricht (gestrichelte Rahmen, SVG-Logo-Maske, Verläufe, Schriftmetriken – alles erhalten). +2. **Stärken** — ruhige ✓-Zeilenliste der Verhaltensweisen, die Ihr Agent bereits richtig macht, abgeleitet aus den Live-Audit-Daten (saubere Tool-Aufruf-Rate, keine direkten Pushes an main, keine Credential-Leaks, keine Retry-Stürme) — jede Zeile erscheint nur, wenn die relevante Richtlinie über das gesamte Audit-Fenster hinweg ein sauberes Protokoll aufweist. +3. **Eigenheiten** — Tabelle der durchgerutschten Probleme, nach Schweregrad gerankt: `Zeitpunkt · was durchrutschte + die Richtlinie, die es abgefangen hätte · Schweregrad-Pille · gesehen`, wobei die Häufigkeit als `new` (einmal), `N× seen` (2–9 Mal) oder `recurring` (10+) angegeben wird. +4. **So verbessern Sie sich** — ruhige Zeilenliste, eine pro empfohlener Richtlinie: Richtlinienname in Weiß, einzeilige Beschreibung, Installationsbefehl + Kopier-Schaltfläche auf der rechten Seite. Die Abschnittsüberschrift lautet `enable all N → projected · ` (der Score, den Sie mit allen Korrekturen erreichen würden), und die Schaltfläche `[install all]` kopiert den kombinierten `failproofai policy add a b c …`-Befehl für alle empfohlenen Richtlinien. +5. **Kommen Sie besser zurück** — zwei nebeneinander angeordnete Karten. Links: Erinnerung setzen (`3d` / `7d` / `14d` / `30d` Intervall-Auswahl; wird über `/api/auth/reminder` nach Authentifizierung gespeichert). Rechts: failproof-Vorteile freischalten — `invite a friend` öffnet ein Modal, das eine komma-/leerzeichen-/zeilentrennte Liste von Freundes-E-Mail-Adressen entgegennimmt (max. 10 pro Versand), diese per POST an `/api/audit/invite` sendet, was an den api-server's `POST /v0/invite` weitergeleitet wird. Der api-server sendet eine E-Mail pro Empfänger von `invite@failproof.ai` mit dem Absender in Cc und gesetztem `Reply-To`, sodass der Empfänger sieht, wer ihn eingeladen hat, und der Absender eine Kopie im Posteingang erhält. Anonyme Benutzer werden zuerst durch den `AuthDialog` geleitet, damit die E-Mail-Adresse des Absenders bekannt ist, bevor Einladungen verschickt werden. Berechtigungs-/Vorteilsabwicklung folgt in einem späteren Schritt. -Gesteuert von der `failproofai audit`-Laufzeit — siehe [Audit CLI](/de/cli/audit) für die zugrunde liegende Scan-Engine, unterstützte Flags und sitzungsspezifische Cache-Invarianten. Das Dashboard speichert das neueste Ergebnis unter `~/.failproofai/audit-dashboard.json` (Modus `0600`, einzelner Slot, neue Durchläufe überschreiben), sodass Besuche sofort laden; **sowohl der sitzungsbezogene als auch der gesamte Ergebnis-Cache werden beim Lesen verworfen, sobald sie älter als 7 Tage sind**, damit das Dashboard nie still ein über eine Woche altes Ergebnis ausliefert — nach Ablauf der TTL fällt `/audit` auf seinen leeren Zustand zurück und fordert einen neuen Durchlauf an. Ein Klick auf `[ re-audit now ]` am unteren Ende des Berichts sendet einen POST an `/api/audit/run` mit `noCache: true` — ein Re-Audit umgeht den sitzungsbezogenen Cache und scannt jedes Transkript von Grund auf neu, anstatt still das gecachte Ergebnis zurückzugeben — und das Dashboard fragt `/api/audit/status` mit 1 Hz ab, bis der Durchlauf abgeschlossen ist; ein pinker Fortschrittsstreifen heftet sich während des Durchlaufs mit einem Zeitmesser an den oberen Rand des Viewports, und das frische Ergebnis wird bei Erfolg an Ort und Stelle eingetauscht (kein vollständiger Seitenneustart; ein fehlgeschlagenes Re-Audit lässt den vorherigen Bericht unberührt). Bei einem Fehler wird der Streifen rot mit einem Text, der sich nach dem `RerunError.kind` richtet (`timeout` / `network` / `post_failed`). Leerzustand (kein Cache oder abgelaufen) und Null-Sitzungen-Zustand (Cache vorhanden, aber der Scan fand keine Transkripte) werden getrennt dargestellt. +Betrieben durch die `failproofai audit`-Laufzeit — siehe [Audit CLI](/de/cli/audit) für die zugrunde liegende Scan-Engine, unterstützte Flags und sitzungsspezifische Cache-Invarianten. Das Dashboard speichert das neueste Ergebnis unter `~/.failproofai/audit-dashboard.json` (Modus `0600`, einzelner Slot, neue Läufe überschreiben) im Cache, sodass erneute Aufrufe sofort erfolgen; **sowohl der sitzungsspezifische als auch der gesamte Ergebnis-Cache werden beim Lesen verworfen, sobald sie älter als 7 Tage sind**, sodass das Dashboard nie stillschweigend ein wochenaltes Ergebnis liefert — nach Ablauf der TTL fällt `/audit` in seinen leeren Zustand zurück und fordert einen neuen Scan an. Ein Klick auf `[ re-audit now ]` am unteren Ende des Berichts sendet POST an `/api/audit/run` mit `noCache: true` — ein erneuter Audit umgeht den sitzungsspezifischen Cache und scannt jedes Transkript von Grund auf neu, anstatt stillschweigend das gecachte Ergebnis zurückzugeben — und das Dashboard fragt `/api/audit/status` mit 1 Hz ab, bis der Lauf abgeschlossen ist; ein pinker Fortschrittsstreifen wird während des Laufs mit einem Elapsed-Timer oben im Viewport angeheftet, und das neue Ergebnis wird nach Erfolg direkt eingetauscht (kein vollständiger Seitenneuladevorgang; ein fehlgeschlagener erneuter Audit lässt den vorherigen Bericht unverändert). Bei einem Fehler wird der Streifen rot mit einem auf `RerunError.kind` abgestimmten Text (`timeout` / `network` / `post_failed`). Leerer Zustand (kein Cache oder abgelaufen) und Nullsitzungszustand (Cache vorhanden, aber der Scan hat keine Transkripte gefunden) werden separat angezeigt. -### Policies +### Richtlinien -Eine zweiseitige Seite zur Verwaltung von Policies und zur Überprüfung der Aktivitäten. +Eine Seite mit zwei Tabs zur Verwaltung von Richtlinien und zur Überprüfung von Aktivitäten. - - - Wähle in einem einzigen Panel aus, welche Agent-CLIs failproofai schützt — Claude Code, OpenAI Codex, GitHub Copilot, Cursor Agent, OpenCode, Pi und Gemini CLI haben jeweils eine Zeile mit Installationsstatus (`Active` / `Detected` / `Inactive`), dem benutzerbezogenen Einstellungspfad und einem markenspezifischen Akzent. Hake die gewünschten CLIs an oder ab und klicke auf `Apply changes`, um die Änderungen in einem Schritt zu installieren/deinstallieren. CLIs, deren Binary im PATH erkannt wird, sind vorausgewählt. - - Einzelne Policies per Klick aktivieren oder deaktivieren (schreibt in `~/.failproofai/policies-config.json` — wird von jeder installierten CLI geteilt) - - Eine Policy erweitern, um ihre Parameter zu konfigurieren (für Policies, die `policyParams` unterstützen) - - Einen benutzerdefinierten Pfad für die Policies-Datei festlegen + + - Wählen Sie in einem einzigen Panel aus, welche Agent-CLIs failproofai schützen soll — Claude Code, OpenAI Codex, GitHub Copilot, Cursor Agent, OpenCode, Pi und Gemini CLI haben jeweils eine Zeile mit Installationsstatus (`Active` / `Detected` / `Inactive`), dem benutzerspezifischen Einstellungspfad und einem markenfarbenakzentuierten Akzent. Aktivieren oder deaktivieren Sie die gewünschten CLIs und klicken Sie auf `Apply changes`, um die Änderungen in einem Schritt zu installieren/deinstallieren. CLIs, deren Binary im PATH erkannt wird, sind vorab ausgewählt. + - Aktivieren oder deaktivieren Sie einzelne Richtlinien mit einem Klick (schreibt in `~/.failproofai/policies-config.json` — gilt für alle installierten CLIs) + - Erweitern Sie eine Richtlinie, um ihre Parameter zu konfigurieren (für Richtlinien, die `policyParams` unterstützen) + - Legen Sie einen benutzerdefinierten Pfad für die Richtliniendatei fest - - - Vollständige, seitenweise angezeigter Verlauf aller Hook-Ereignisse, die über alle Sitzungen hinweg ausgelöst wurden - - Filtern nach Entscheidung, Ereignistyp, CLI (Claude Code / OpenAI Codex / GitHub Copilot _(beta)_ / Cursor Agent _(beta)_ / OpenCode _(beta)_ / Pi _(beta)_ / Gemini CLI _(beta)_), Policy-Name oder Sitzungs-ID - - Jede Zeile zeigt: Zeitstempel, Policy-Name, Entscheidung, CLI-Badge (orange = Claude Code, lila = OpenAI Codex, blau = GitHub Copilot, smaragd = Cursor Agent, bernstein = OpenCode, pink = Pi, himmelblau = Gemini CLI), Tool-Name, Sitzungs-ID und den Grund für deny/instruct-Entscheidungen - - Klicke auf eine Sitzungs-ID, um ihr Transkript zu öffnen — der Betrachter erkennt automatisch, welche CLI den Hook ausgelöst hat (Claude `~/.claude/projects/…`, Codex `~/.codex/sessions/…`, Copilot CLI `~/.copilot/session-state//events.jsonl`, Cursor Agent `~/.cursor/agent-sessions//events.jsonl`, OpenCode `~/.local/share/opencode/opencode.db`, Pi `~/.pi/agent/sessions//.jsonl`, Gemini CLI `~/.gemini/tmp//chats/.jsonl`) und zeigt das passende CLI-Badge in der Kopfzeile an + + - Vollständige seitenweise Historie aller Hook-Ereignisse, die über alle Sitzungen hinweg ausgelöst wurden + - Filtern nach Entscheidung, Ereignistyp, CLI (Claude Code / OpenAI Codex / GitHub Copilot _(Beta)_ / Cursor Agent _(Beta)_ / OpenCode _(Beta)_ / Pi _(Beta)_ / Gemini CLI _(Beta)_), Richtlinienname oder Sitzungs-ID + - Jede Zeile zeigt: Zeitstempel, Richtlinienname, Entscheidung, CLI-Badge (orange = Claude Code, lila = OpenAI Codex, blau = GitHub Copilot, smaragdgrün = Cursor Agent, bernstein = OpenCode, pink = Pi, himmelblau = Gemini CLI), Tool-Name, Sitzungs-ID und den Grund für deny/instruct-Entscheidungen + - Klicken Sie auf eine Sitzungs-ID, um das Transkript zu öffnen — der Viewer erkennt automatisch, welche CLI den Hook ausgelöst hat (Claude `~/.claude/projects/…`, Codex `~/.codex/sessions/…`, Copilot CLI `~/.copilot/session-state//events.jsonl`, Cursor Agent `~/.cursor/agent-sessions//events.jsonl`, OpenCode `~/.local/share/opencode/opencode.db`, Pi `~/.pi/agent/sessions//.jsonl`, Gemini CLI `~/.gemini/tmp//chats/.jsonl`) und zeigt das passende CLI-Badge in der Kopfzeile an @@ -92,13 +92,13 @@ Eine zweiseitige Seite zur Verwaltung von Policies und zur Überprüfung der Akt ## Automatische Aktualisierung -Das Dashboard verfügt über einen Auto-Refresh-Schalter in der oberen Navigation. Wenn aktiviert, aktualisiert sich die aktuelle Seite regelmäßig, um neue Sitzungen und Policy-Aktivitäten anzuzeigen, sobald sie auftreten. Unverzichtbar für die Überwachung langläufiger autonomer Agent-Sitzungen. +Das Dashboard verfügt über eine Umschalttaste für die automatische Aktualisierung in der oberen Navigation. Wenn aktiviert, wird die aktuelle Seite regelmäßig aktualisiert, um neue Sitzungen und Richtlinienaktivitäten anzuzeigen, sobald sie erscheinen. Unverzichtbar für die Überwachung langläufiger autonomer Agent-Sitzungen. --- ## Seiten deaktivieren -Wenn du nur bestimmte Teile des Dashboards benötigst, setze `FAILPROOFAI_DISABLE_PAGES` auf eine kommagetrennte Liste von Seitennamen: +Wenn Sie nur bestimmte Teile des Dashboards benötigen, setzen Sie `FAILPROOFAI_DISABLE_PAGES` auf eine kommagetrennte Liste von Seitennamen: ```bash FAILPROOFAI_DISABLE_PAGES=policies failproofai @@ -110,7 +110,7 @@ Gültige Werte: `policies`, `projects`, `audit`. ## Projektpfad konfigurieren -Standardmäßig liest das Dashboard aus dem Standard-Claude Code Projektverzeichnis. Überschreibe es für benutzerdefinierte Setups: +Standardmäßig liest das Dashboard aus dem Standard-Claude Code-Projektverzeichnis. Überschreiben Sie es für benutzerdefinierte Setups: ```bash CLAUDE_PROJECTS_PATH=/custom/path/to/projects failproofai @@ -120,30 +120,30 @@ CLAUDE_PROJECTS_PATH=/custom/path/to/projects failproofai ## Zugriff von einem Nicht-localhost-Host -Wenn das Dashboard im **Dev-Modus** (`npm run dev`) ausgeführt und von einem anderen Hostnamen als `localhost` aufgerufen wird — zum Beispiel einer benutzerdefinierten Domain, einer Remote-IP oder einer getunnelten URL — kann folgende Warnung erscheinen: +Wenn Sie das Dashboard im **Dev-Modus** (`npm run dev`) ausführen und von einem anderen Hostnamen als `localhost` darauf zugreifen — zum Beispiel einer benutzerdefinierten Domain, einer Remote-IP oder einer getunnelten URL — wird möglicherweise eine Warnung angezeigt wie: ```text ⚠ Blocked cross-origin request to Next.js dev resource /_next/webpack-hmr from "dashboard.example.com". ``` -Next.js blockiert damit Cross-Origin-Zugriffe auf seinen HMR-Websocket (Hot Module Reload), der nur im Dev-Modus verfügbar ist. Um deinen Host zuzulassen, verwende das `--allowed-origins`-Flag: +Hierbei blockiert Next.js den ursprungsübergreifenden Zugriff auf seinen HMR-WebSocket (Hot Module Reload), der eine reine Entwicklungsfunktion ist. Um Ihren Host zuzulassen, verwenden Sie das Flag `--allowed-origins`: ```bash npm run dev -- --allowed-origins dashboard.example.com ``` -Für mehrere Hosts oder IPs übergib eine kommagetrennte Liste: +Für mehrere Hosts oder IPs übergeben Sie eine kommagetrennte Liste: ```bash npm run dev -- --allowed-origins dashboard.example.com,192.168.1.5 ``` -Du kannst auch die Umgebungsvariable `FAILPROOFAI_ALLOWED_DEV_ORIGINS` verwenden: +Sie können auch die Umgebungsvariable `FAILPROOFAI_ALLOWED_DEV_ORIGINS` setzen: ```bash FAILPROOFAI_ALLOWED_DEV_ORIGINS=dashboard.example.com npm run dev ``` -Dies gilt nur für den Dev-Modus. Beim Ausführen von `failproofai` (Produktionsmodus) gibt es keinen HMR-Websocket und kein Cross-Origin-Dev-Ressourcen-Problem. +Dies gilt nur für den Dev-Modus. Beim Ausführen von `failproofai` (Produktionsmodus) gibt es keinen HMR-WebSocket und keine ursprungsübergreifenden Dev-Ressourcenprobleme. \ No newline at end of file diff --git a/docs/es/cli/audit.mdx b/docs/es/cli/audit.mdx index 95612961c..db80aa999 100644 --- a/docs/es/cli/audit.mdx +++ b/docs/es/cli/audit.mdx @@ -1,57 +1,97 @@ --- -title: Auditar sesiones pasadas (beta) -description: "Cuenta con qué frecuencia el agente realizó acciones costosas o riesgosas en transcripciones anteriores" +title: Auditar sesiones anteriores (beta) +description: "Cuenta con qué frecuencia el agente realizó acciones innecesarias o arriesgadas en transcripciones pasadas" --- - **Función beta.** La auditoría se lanza en beta mientras recopilamos retroalimentación temprana. - El catálogo de detectores y el formato del informe pueden cambiar antes de la próxima versión estable. - Por favor, abre un issue si algo no parece correcto. + **Función beta.** La auditoría se lanza como beta mientras recopilamos + comentarios iniciales. El catálogo de detectores y el formato del informe + pueden cambiar antes del próximo corte estable. Por favor, abre un issue si + algo no parece correcto. -La auditoría está disponible como la **página del dashboard /audit**, no como un subcomando de CLI. Ábrela desde la barra de navegación del dashboard (entre Políticas y Proyectos), o visita `http://localhost:8020/audit` directamente cuando ejecutes `failproofai` localmente. +La auditoría reproduce tus transcripciones pasadas del agente-CLI a través del +motor de políticas de failproofai y genera un informe visual y compartible en +la **página del panel `/audit`** — el arquetipo de tu agente, una puntuación +de 0 a 100, y exactamente qué políticas habrían detectado qué. -```bash -failproofai # abre el dashboard, luego haz clic en "Audit" +## Ejecución + +Tres formas de acceder — todas llevan al mismo informe `/audit`. + + + +```bash npx (no install) +npx -y failproofai audit +``` + +```bash failproofai audit +failproofai audit ``` -El dashboard escanea transcripciones pasadas del CLI del agente en esta máquina (Claude Code, Codex, Copilot, Cursor, OpenCode, Pi, Gemini) e informa con qué frecuencia el agente hizo cosas que failproofai está diseñado para detener: comprobaciones de variables de entorno, force pushes, prefijos `cd ` redundantes, bucles de sleep-polling, relectura de archivos recién editados, y más. +```bash failproofai (dashboard) +failproofai +``` + + + + + + `npx -y failproofai audit` descarga failproofai, ejecuta el análisis y abre + el panel por ti — no necesitas instalar nada antes. + + + `failproofai audit` ejecuta el análisis en tu terminal y luego abre + `localhost:8020/audit` automáticamente al finalizar. + + + Ejecuta `failproofai` y haz clic en **Audit** en la barra de navegación + (entre Policies y Projects), o abre `/audit` directamente. + + + + + Ejecuta `failproofai audit -h` (o `--help`) para ver el uso. La auditoría + funciona **completamente sin conexión** — no requiere cuenta ni red — y el + panel continúa sirviéndose hasta que lo detengas con `Ctrl+C`. + + +El panel analiza las transcripciones pasadas del agente CLI en esta máquina (Claude Code, Codex, Copilot, Cursor, OpenCode, Pi, Gemini) e informa con qué frecuencia el agente realizó acciones que failproofai está diseñado para detener — comprobaciones de variables de entorno, push forzados, prefijos redundantes `cd `, bucles de sondeo con sleep, re-lectura de archivos recién editados, y más. -Por cada transcripción, cada evento de uso de herramientas se reproduce a través de las 39 políticas integradas **y** a través de 8 detectores exclusivos de auditoría que identifican patrones no cubiertos aún por las políticas en tiempo real. Los conteos se agregan por política/detector a través de todas las sesiones. +Por cada transcripción, cada evento de uso de herramienta se reproduce a través de las 39 políticas integradas **y** a través de 8 detectores exclusivos de auditoría que identifican patrones que aún no están cubiertos por las políticas en tiempo de ejecución. Los recuentos se agregan por política / detector en todas las sesiones. ## Qué obtienes -La página `/audit` está compuesta por seis secciones: +La página `/audit` es un **póster** de una sola pantalla y compartible, seguido de cuatro secciones debajo del pliegue: -1. **Identidad** — tu agente clasificado en uno de 8 arquetipos (`optimist`, `cowboy`, `explorer`, `goldfish`, `paranoid architect`, `precision builder`, `hammer`, `ghost`) basado en la señal ponderada de todas las transcripciones auditadas. -2. **Fortalezas** — números reales derivados del escaneo (% de llamadas limpias, "0 filtraciones de credenciales", etc.) condicionados a que las políticas de sanitización relevantes hayan disparado. -3. **Puntuación** — de 0 a 100 con bandas S/A/B/C/D/F y una proyección de mejora si todas las políticas recomendadas estuvieran habilitadas. -4. **Hallazgos** — tarjetas por política con lo que ocurrió, el costo, evidencia capturada y el comando exacto `failproofai policy add ` para habilitar el integrado en tiempo real que lo habría detectado. -5. **Políticas recomendadas** — lista de instalación consolidada con un comando único `failproofai policies --install`. -6. **Recordatorio de re-auditoría** — "vuelve mejor". Configura un recordatorio por correo electrónico de 7 días a través del servidor de API (requiere inicio de sesión; consulta [`failproofai auth`](/es/cli/auth)). +1. **Póster** — la identidad de tu agente de un vistazo: su **arquetipo** (uno de 8 — `optimist`, `cowboy`, `explorer`, `goldfish`, `paranoid architect`, `precision builder`, `hammer`, `ghost`), sus palabras clave de personalidad, qué tan raro es ese arquetipo, y una **puntuación de 0 a 100** con una banda de nivel (de `S` hasta `bottom tier`). Diseñado para compartir — publícalo en X o LinkedIn, o descárgalo como PNG. +2. **`// strengths`** — lo que tu agente ya hace bien, con números reales del análisis (ej. porcentaje de llamadas a herramientas limpias, `0` intentos de push a main), mostrado solo cuando la política relevante tiene un historial limpio. +3. **`// quirks`** — lo que se escapó: una tabla ordenada de comportamientos que failproofai habría detectado — *cuándo* ocurrió por última vez, *qué se escapó* (y la política integrada que lo habría bloqueado), su *gravedad*, y con qué frecuencia se *vio* (`new` / `recurring` / `N× seen`). +4. **`// how to improve`** — la lista de correcciones recomendadas: una fila por política con un `failproofai policy add ` listo para copiar y pegar, más un botón **instalar todo** que habilita todas las recomendaciones a la vez y muestra tu **puntuación proyectada** si lo hicieras. +5. **`// come back better`** — construye el hábito: establece un **recordatorio** de reauditoría por correo electrónico (`3d` / `7d` / `14d` / `30d`) o reaudita ahora, e **invita a un amigo** a ejecutar su propia auditoría (enviado desde failproof.ai, con copia a ti). Los recordatorios e invitaciones requieren inicio de sesión — ver [`failproofai auth`](/es/cli/auth). ## Detectores exclusivos de auditoría -Estos detectan patrones de "comportamiento ineficiente" que no se aplican (aún) en tiempo real. Solo se ejecutan durante la auditoría y nunca bloquean una llamada de herramienta en vivo. +Estos detectan patrones de comportamiento ineficiente que no están (todavía) aplicados en tiempo real. Solo se ejecutan durante la auditoría y nunca bloquean una llamada a herramienta en vivo. | Detector | Qué cuenta | |---|---| -| `redundant-cd-cwd` | Comandos Bash que comienzan con `cd && …` aunque los comandos ya se ejecutan en `cwd`. | -| `prefer-edit-over-read-cat` | `cat`/`head`/`tail`/`less`/`more` sobre un único archivo fuente — usar la herramienta `Read` en su lugar. | -| `prefer-edit-over-sed-awk` | Ediciones en sitio con `sed -i` / `awk … > file` — usar la herramienta `Edit` en su lugar. | -| `prefer-write-over-heredoc` | Escritura de archivos con heredoc o `echo > file` multilínea — usar la herramienta `Write` en su lugar. | -| `sleep-polling-loop` | `sleep N` prolongados (≥ 30s) o bucles de sondeo `while …; sleep …; done`. | -| `find-from-root` | `find /`, `find /home`, `find /usr`, etc. — restringir al `cwd`. | +| `redundant-cd-cwd` | Comandos Bash que comienzan con `cd && …` aunque los comandos ya se ejecuten en `cwd`. | +| `prefer-edit-over-read-cat` | `cat`/`head`/`tail`/`less`/`more` sobre un único archivo fuente — usa la herramienta `Read`. | +| `prefer-edit-over-sed-awk` | Ediciones en sitio con `sed -i` / `awk … > file` — usa la herramienta `Edit`. | +| `prefer-write-over-heredoc` | Escritura de archivos con heredoc / `echo > file` multilínea — usa la herramienta `Write`. | +| `sleep-polling-loop` | `sleep N` largo (≥ 30s) o bucles de sondeo `while …; sleep …; done`. | +| `find-from-root` | `find /`, `find /home`, `find /usr`, etc. — limita el alcance a `cwd`. | | `git-commit-no-verify` | `git commit … --no-verify` / `-n`, omitiendo los hooks. | -| `reread-after-edit` | `Read` de un archivo que acababa de ser modificado con `Edit`/`Write` en la misma sesión. | +| `reread-after-edit` | `Read` de un archivo que acaba de ser editado con `Edit`/`Write` en la misma sesión. | ## Cachés -- **Caché por transcripción** en `~/.failproofai/cache/audit/.json`, con clave basada en `(mtime, size, engineVersion, detectorVersion)` — se invalida automáticamente cuando cambia la transcripción o el código de políticas/detectores. Cada entrada también almacena un timestamp `cachedAt` como **metadato TTL** (no forma parte de la clave de caché); las entradas con más de **7 días** de antigüedad se rechazan en la lectura para que los resultados de larga duración no sobrevivan a la evolución de los detectores. -- **Caché del resultado completo** en `~/.failproofai/audit-dashboard.json` (modo 0600). Permite que el dashboard se muestre instantáneamente al navegar sin volver a ejecutar. También se rechaza en la lectura si supera el **TTL de 7 días** — `/audit` vuelve entonces a su estado vacío y solicita una nueva ejecución. Haz clic en `[ re-audit now ]` cerca de la parte inferior del informe para actualizar — la re-auditoría envía `noCache: true`, por lo que omite el caché por transcripción y vuelve a escanear todas las transcripciones en lugar de devolver el resultado en caché; la ejecución transmite el progreso mediante una franja fija en la parte superior y reemplaza el resultado en el lugar al completarse correctamente (sin recarga de página; si la re-auditoría falla, se conserva el informe anterior). +- **Caché por transcripción** en `~/.failproofai/cache/audit/.json` con clave `(mtime, size, engineVersion, detectorVersion)` — se invalida automáticamente cuando la transcripción o el código de política/detector cambia. Cada entrada también almacena una marca de tiempo `cachedAt` como **metadatos TTL** (no forma parte de la clave de caché); las entradas con más de **7 días** de antigüedad se rechazan al leer para que los resultados de larga duración no sobrevivan a la evolución de la lógica de los detectores. +- **Caché de resultado completo** en `~/.failproofai/audit-dashboard.json` (modo 0600). Permite que el panel se renderice instantáneamente al navegar sin volver a ejecutar el análisis. También se rechaza al leer pasado el **TTL de 7 días** — `/audit` entonces cae a su estado vacío y solicita una nueva ejecución. Haz clic en `[ re-audit now ]` cerca de la parte inferior del informe para actualizar — la reauditoría envía `noCache: true`, por lo que omite la caché por transcripción y vuelve a analizar cada transcripción en lugar de devolver el resultado en caché; la ejecución transmite el progreso mediante una barra adhesiva en la parte superior y reemplaza el resultado en su lugar al completarse correctamente (sin recarga de página; una reauditoría fallida conserva el informe anterior). ## Notas -- **Sin mutaciones.** La auditoría se reproduce en modo de solo lectura. `warn-repeated-tool-calls` se omite porque de lo contrario su sidecar por sesión sería modificado. -- **Políticas de flujo de trabajo omitidas.** Las políticas `require-*-before-stop` se activan solo en eventos `Stop` y ejecutan `execSync` contra el estado git en vivo — no tienen una interpretación significativa de "qué habría pasado en 2025", por lo que no aparecen en los conteos de auditoría. +- **Sin mutación.** La auditoría se reproduce en modo de solo lectura. `warn-repeated-tool-calls` se omite porque su archivo auxiliar por sesión se modificaría de lo contrario. +- **Políticas de flujo de trabajo omitidas.** Las políticas `require-*-before-stop` solo se activan en eventos `Stop` y ejecutan `execSync` contra el estado git activo — no tienen una interpretación significativa de tipo "qué habría pasado en 2025", por lo que no aparecen en los recuentos de auditoría. - **Políticas personalizadas omitidas.** Los hooks personalizados proporcionados por el usuario no se reproducen (pueden haber cambiado desde la sesión original). \ No newline at end of file diff --git a/docs/es/dashboard.mdx b/docs/es/dashboard.mdx index f27ff9d5c..48ef2be7a 100644 --- a/docs/es/dashboard.mdx +++ b/docs/es/dashboard.mdx @@ -16,7 +16,7 @@ failproofai Se abre en `http://localhost:8020`. -El dashboard lee directamente desde el sistema de archivos: las carpetas de proyectos de Claude Code y los archivos de configuración de failproofai. No se escribe nada en ningún servicio remoto. +El dashboard lee directamente del sistema de archivos — tus carpetas de proyectos de Claude Code y los archivos de configuración de failproofai. No se escribe nada en un servicio remoto. --- @@ -24,11 +24,11 @@ El dashboard lee directamente desde el sistema de archivos: las carpetas de proy ### Proyectos -Lista todos los proyectos de Claude Code, OpenAI Codex, GitHub Copilot CLI _(beta)_, Cursor Agent _(beta)_, OpenCode _(beta)_, Pi _(beta)_ y Gemini CLI _(beta)_ encontrados en tu máquina. Los proyectos de Claude se descubren desde `~/.claude/projects/` (o la ruta definida por `CLAUDE_PROJECTS_PATH`); los proyectos de Codex se descubren escaneando todas las transcripciones en `~/.codex/sessions///
/*.jsonl` y agrupando por el `cwd` registrado en el primer registro de cada sesión; los proyectos de Copilot CLI se descubren escaneando cada `~/.copilot/session-state//workspace.yaml` (configurable mediante `COPILOT_HOME`) y agrupando por su campo `cwd`; los proyectos de Cursor Agent se descubren escaneando metadatos por sesión en `~/.cursor/agent-sessions//` (configurable mediante `CURSOR_HOME`, con `conversations/` y `sessions/` como alternativas de búsqueda) para un escalar `cwd` en `meta.json` / `session.json` / `workspace.yaml`; los proyectos de OpenCode se descubren consultando su base de datos SQLite en `~/.local/share/opencode/opencode.db` mediante `opencode db --format json` (se leen las tablas `session` y `project` y se agrupan por `project_id`); los proyectos de Pi se descubren escaneando transcripciones JSONL por sesión en `~/.pi/agent/sessions//_.jsonl` (configurable mediante `PI_SESSIONS_DIR`) y extrayendo el `cwd` del primer registro de cada sesión; los proyectos de Gemini CLI se descubren escaneando `~/.gemini/tmp//chats/session--.jsonl` (configurable mediante `GEMINI_SESSIONS_DIR`) y recuperando el cwd canónico a partir del marcador de texto `.project_root` adyacente. Un proyecto que haya sido utilizado por múltiples CLIs se muestra como una sola fila con todas las insignias correspondientes. Usa el desplegable **CLI** sobre la tabla para filtrar por un agente CLI específico; la URL conserva tu selección como `?cli=claude|codex|copilot|cursor|opencode|pi|gemini`. +Lista todos los proyectos de Claude Code, OpenAI Codex, GitHub Copilot CLI _(beta)_, Cursor Agent _(beta)_, OpenCode _(beta)_, Pi _(beta)_ y Gemini CLI _(beta)_ encontrados en tu máquina. Los proyectos de Claude se descubren desde `~/.claude/projects/` (o la ruta definida por `CLAUDE_PROJECTS_PATH`); los proyectos de Codex se descubren escaneando cada transcript en `~/.codex/sessions///
/*.jsonl` y agrupando por el `cwd` registrado en el primer registro de cada sesión; los proyectos de Copilot CLI se descubren escaneando cada `~/.copilot/session-state//workspace.yaml` (configurable mediante `COPILOT_HOME`) y agrupando por su campo `cwd`; los proyectos de Cursor Agent se descubren escaneando los metadatos por sesión en `~/.cursor/agent-sessions//` (configurable mediante `CURSOR_HOME`, con `conversations/` y `sessions/` como alternativas) buscando un valor escalar `cwd` en `meta.json` / `session.json` / `workspace.yaml`; los proyectos de OpenCode se descubren consultando su base de datos SQLite en `~/.local/share/opencode/opencode.db` mediante `opencode db --format json` (se leen las tablas `session` y `project` y se agrupan por `project_id`); los proyectos de Pi se descubren escaneando los transcripts JSONL por sesión en `~/.pi/agent/sessions//_.jsonl` (configurable mediante `PI_SESSIONS_DIR`) y extrayendo el `cwd` del primer registro de cada sesión; los proyectos de Gemini CLI se descubren escaneando `~/.gemini/tmp//chats/session--.jsonl` (configurable mediante `GEMINI_SESSIONS_DIR`) y recuperando el cwd canónico a partir del marcador de texto `.project_root` adyacente. Un proyecto que ha sido usado por múltiples CLIs se muestra como una sola fila con todos los badges correspondientes. Usa el menú desplegable **CLI** sobre la tabla para filtrar por un agente CLI específico; la URL conserva tu selección como `?cli=claude|codex|copilot|cursor|opencode|pi|gemini`. Cada proyecto muestra: - Nombre del proyecto (derivado de la ruta de la carpeta) -- Una insignia de CLI — `Claude Code` (naranja), `OpenAI Codex` (morado), `GitHub Copilot` (azul), `Cursor Agent` (esmeralda), `OpenCode` (ámbar), `Pi` (rosa) y/o `Gemini CLI` (celeste) +- Un badge de CLI — `Claude Code` (naranja), `OpenAI Codex` (morado), `GitHub Copilot` (azul), `Cursor Agent` (esmeralda), `OpenCode` (ámbar), `Pi` (rosa) y/o `Gemini CLI` (celeste) - Fecha de la actividad de sesión más reciente Haz clic en un proyecto para ver sus sesiones. @@ -47,44 +47,44 @@ Haz clic en una sesión para abrir el visor de sesión. ### Visor de sesión -El visor de sesión responde la pregunta clave para agentes autónomos: ¿qué hizo el agente y se mantuvo en curso? Una insignia de CLI junto al encabezado indica si la sesión es una transcripción de Claude Code, OpenAI Codex, GitHub Copilot CLI, Cursor Agent, OpenCode, Pi o Gemini CLI. Muestra una línea de tiempo de todo lo que ocurrió en una sesión: +El visor de sesión responde la pregunta clave para agentes autónomos: ¿qué hizo el agente y se mantuvo en el camino correcto? Un badge de CLI junto al encabezado indica si la sesión es un transcript de Claude Code, OpenAI Codex, GitHub Copilot CLI, Cursor Agent, OpenCode, Pi o Gemini CLI. Muestra una línea de tiempo de todo lo que ocurrió en una sesión: -- **Mensajes** - Las respuestas de texto de Claude y los prompts del usuario -- **Llamadas a herramientas** - Cada herramienta que Claude invocó, con su entrada y salida -- **Actividad de políticas** - Para cada llamada a herramienta, qué políticas se activaron y qué decisión devolvieron +- **Mensajes** — Las respuestas de texto de Claude y los prompts del usuario +- **Llamadas a herramientas** — Cada herramienta que invocó Claude, con su entrada y salida +- **Actividad de políticas** — Para cada llamada a herramienta, qué políticas se activaron y qué decisión devolvieron -La barra de estadísticas en la parte superior muestra la duración de la sesión, el total de llamadas a herramientas y un resumen de las decisiones de los hooks (conteos de allow / deny / instruct). +La barra de estadísticas en la parte superior muestra la duración de la sesión, el total de llamadas a herramientas y un resumen de las decisiones de los hooks (recuentos de allow / deny / instruct). -Haz clic en el botón **Download Logs** para exportar la sesión. Para sesiones de Claude Code, Codex, Copilot, Cursor, Pi y Gemini obtienes la transcripción JSONL original en disco byte a byte; para OpenCode (cuyas sesiones residen en SQLite, no en disco) obtienes un documento JSON que refleja las tablas subyacentes `session` / `messages` / `parts`. +Haz clic en el botón **Download Logs** para exportar la sesión. Para sesiones de Claude Code, Codex, Copilot, Cursor, Pi y Gemini obtienes el transcript JSONL original en disco byte a byte; para OpenCode (cuyas sesiones residen en SQLite, no en disco) obtienes un documento JSON que refleja las tablas subyacentes `session` / `messages` / `parts`. ### Audit -Un informe con personalidad sobre cómo se ha comportado realmente tu agente a lo largo de sesiones pasadas. Ejecuta el mismo escaneo que el CLI `failproofai audit`, pero lo presenta como un póster compartible en pantalla completa más cuatro secciones debajo del pliegue: +Un informe con personalidad propia sobre cómo se ha comportado realmente tu agente a lo largo de sesiones anteriores. Ejecuta el mismo análisis que el CLI `failproofai audit` pero lo presenta como un póster de pantalla completa compartible + cuatro secciones debajo del pliegue: -1. **Póster** — ocupa el primer viewport. Región de captura PNG autónoma con el logotipo de failproof_ai + etiqueta de auditoría · índice de arquetipo (`№ NN of 08`) + fecha de auditoría · puntuación numérica (0–100) + píldora de rango percentil (`top 15%`) · el nombre del arquetipo (uno de `the optimist`, `the cowboy`, `the explorer`, `the goldfish`, `the paranoid architect`, `the precision builder`, `the hammer`, `the ghost`) + franja de 3 palabras clave · línea de rareza `// only N% of agents are this archetype` · mosaico de sigilo de 8×8 píxeles · pie de página `audit yours → failproof.ai`. Tres botones de compartir se sitúan justo fuera del área de captura: `post your archetype` (intento en X), `share on linkedin`, `download poster`. La captura se realiza mediante `html-to-image`, por lo que el PNG coincide píxel a píxel con el renderizado en pantalla (bordes discontinuos, máscara SVG del logo, degradados, métricas de fuente — todo preservado). -2. **Strengths** — lista de filas ✓ tranquilas con los comportamientos que tu agente ya hace bien, derivados de los datos de auditoría en vivo (tasa de llamadas a herramientas limpias, duración media de sesión, cero filtraciones de credenciales, cero tormentas de reintentos, etc.). -3. **Quirks** — tabla de lo que se coló, ordenado por impacto: `momento · qué se coló + política que lo habría detectado · píldora de gravedad · recurrencia` (nuevo / Nx esta semana / recurrente). -4. **How to improve** — lista de filas tranquilas, una por política prescrita: nombre de política en blanco, descripción en una línea, comando de instalación + botón de copiar a la derecha. Un botón `[install all]` en el encabezado de la sección copia el comando combinado `failproofai policy add a b c …` para cada política prescrita. -5. **Come back better** — dos tarjetas una al lado de la otra. Izquierda: establecer un recordatorio (selector de cadencia `3d` / `7d` / `14d` / `30d`; persiste mediante `/api/auth/reminder` una vez autenticado). Derecha: desbloquear ventajas de failproof — `invite a friend` abre un modal que acepta una lista de correos electrónicos de amigos separados por coma, espacio o salto de línea (máximo 10 por envío), hace POST a `/api/audit/invite`, que reenvía al servidor API `POST /v0/invite`. El servidor API envía un correo por destinatario desde `invite@failproof.ai` con el remitente en Cc y `Reply-To` configurado, de modo que el destinatario ve quién lo invitó y el remitente recibe una copia en su bandeja de entrada. Los usuarios anónimos son redirigidos primero a través del `AuthDialog` para que el correo del remitente sea conocido antes de enviar las invitaciones. El cumplimiento de derechos y ventajas es un seguimiento pendiente. +1. **Póster** — ocupa el primer viewport. Región de captura PNG autónoma con el logotipo de failproof_ai + etiqueta de auditoría · índice de arquetipo (`№ NN of 08`) + fecha de auditoría · puntuación numérica (0–100) + pastilla de percentil (`top 15%`) · el nombre del arquetipo (uno de `the optimist`, `the cowboy`, `the explorer`, `the goldfish`, `the paranoid architect`, `the precision builder`, `the hammer`, `the ghost`) + tira de 3 palabras clave · línea de rareza `// only N% of agents are this archetype` · mosaico de símbolo de 8×8 píxeles · pie de página `audit yours → failproof.ai`. Tres botones de compartir se ubican justo fuera del área de captura: `post your archetype` (X intent), `share on linkedin`, `download poster`. La captura se ejecuta a través de `html-to-image`, por lo que el PNG coincide píxel a píxel con lo que se muestra en pantalla (bordes punteados, máscara de logo SVG, degradados, métricas de fuente — todo preservado). +2. **Fortalezas** — lista en calma con marca ✓ de comportamientos que tu agente ya hace bien, derivados de los datos de auditoría en vivo (tasa limpia de llamadas a herramientas, sin push directos a main, cero filtraciones de credenciales, cero tormentas de reintentos) — cada uno se muestra solo cuando la política relevante tiene un historial limpio durante el período de auditoría. +3. **Peculiaridades** — tabla de lo que se pasó por alto, ordenado por severidad: `cuándo · qué se pasó + la política que lo habría detectado · pastilla de severidad · visto`, donde la recurrencia se lee como `new` (una vez), `N× seen` (2–9 veces) o `recurring` (10+). +4. **Cómo mejorar** — lista en calma, una entrada por política prescrita: nombre de la política en blanco, descripción de una línea, comando de instalación + botón de copiar en el lado derecho. El encabezado de la sección dice `enable all N → projected · ` (la puntuación que alcanzarías con todas las correcciones aplicadas), y su botón `[install all]` copia el comando combinado `failproofai policy add a b c …` para todas las políticas prescritas. +5. **Vuelve mejorado** — dos tarjetas lado a lado. Izquierda: configura un recordatorio (selector de cadencia `3d` / `7d` / `14d` / `30d`; persiste a través de `/api/auth/reminder` una vez autenticado). Derecha: desbloquea ventajas de failproof — `invite a friend` abre un modal que acepta una lista de correos de amigos separados por comas, espacios o saltos de línea (máximo 10 por envío), los envía mediante POST a `/api/audit/invite`, que los reenvía al `POST /v0/invite` del api-server. El api-server envía un correo por destinatario desde `invite@failproof.ai` con el remitente en Cc y `Reply-To` configurado, de modo que el destinatario ve quién lo invitó y el remitente recibe una copia en su bandeja de entrada. Los usuarios anónimos son dirigidos primero a `AuthDialog` para que el correo del remitente sea conocido antes de enviar las invitaciones. La gestión de derechos y ventajas es un paso posterior. -Impulsado por el runtime `failproofai audit` — consulta [Audit CLI](/es/cli/audit) para conocer el motor de escaneo subyacente, los indicadores admitidos y las invariantes de caché por transcripción. El dashboard almacena en caché el último resultado en `~/.failproofai/audit-dashboard.json` (modo `0600`, ranura única, las nuevas ejecuciones sobrescriben) para que las revisitas sean instantáneas; **tanto la caché por transcripción como la caché del resultado completo se rechazan al leerlas si tienen más de 7 días de antigüedad**, por lo que el dashboard nunca sirve silenciosamente un resultado de una semana atrás — pasado el TTL, `/audit` cae a su estado vacío y solicita una nueva ejecución. Hacer clic en `[ re-audit now ]` cerca de la parte inferior del informe envía un POST a `/api/audit/run` con `noCache: true` — la re-auditoría omite la caché por transcripción y vuelve a escanear cada transcripción desde cero en lugar de devolver silenciosamente el resultado en caché — y el dashboard sondea `/api/audit/status` a 1Hz hasta que la ejecución finaliza; una franja de progreso rosa fija se ancla en la parte superior del viewport durante la ejecución con un temporizador de tiempo transcurrido, y el resultado actualizado se reemplaza en su lugar al completarse (sin recarga completa de página; una re-auditoría fallida deja intacto el informe anterior). En caso de fallo, la franja se vuelve roja con texto asociado al `RerunError.kind` (`timeout` / `network` / `post_failed`). El estado vacío (sin caché o caducada) y el estado de cero sesiones (la caché existe pero el escaneo no encontró transcripciones) se presentan por separado. +Impulsado por el runtime de `failproofai audit` — consulta [Audit CLI](/es/cli/audit) para el motor de análisis subyacente, flags compatibles e invariantes de caché por transcript. El dashboard almacena en caché el último resultado en `~/.failproofai/audit-dashboard.json` (modo `0600`, un solo slot, las nuevas ejecuciones sobreescriben) para que las revisitas sean instantáneas; **tanto la caché por transcript como la caché del resultado completo se rechazan al leerse si tienen más de 7 días**, por lo que el dashboard nunca sirve silenciosamente un resultado de hace una semana — pasado el TTL, `/audit` cae a su estado vacío y solicita una nueva ejecución. Al hacer clic en `[ re-audit now ]` cerca de la parte inferior del informe se envía un POST a `/api/audit/run` con `noCache: true` — la re-auditoría omite la caché por transcript y vuelve a analizar cada transcript desde cero en lugar de devolver silenciosamente el resultado en caché — y el dashboard consulta `/api/audit/status` a 1 Hz hasta que la ejecución finaliza; una banda de progreso rosa fija se ancla en la parte superior del viewport durante la ejecución con un temporizador transcurrido, y el resultado actualizado reemplaza el anterior en su lugar al completarse con éxito (sin recarga de página completa; una re-auditoría fallida deja el informe anterior intacto). En caso de fallo, la banda se vuelve roja con un mensaje según `RerunError.kind` (`timeout` / `network` / `post_failed`). El estado vacío (sin caché o expirado) y el estado de cero sesiones (la caché existe pero el análisis no encontró transcripts) se muestran por separado. -### Policies +### Políticas -Una página con dos pestañas para gestionar políticas y revisar actividad. +Una página con dos pestañas para gestionar políticas y revisar la actividad. - - - Selecciona múltiples CLIs de agentes que failproofai protege desde un único panel — Claude Code, OpenAI Codex, GitHub Copilot, Cursor Agent, OpenCode, Pi y Gemini CLI tienen cada uno una fila con el estado de instalación (`Active` / `Detected` / `Inactive`), la ruta de configuración de ámbito de usuario y un acento de color de marca. Marca o desmarca los CLIs que desees y haz clic en `Apply changes` para instalar/desinstalar la diferencia en un solo paso. Los CLIs cuyo binario se detecta en PATH se marcan previamente. + + - Selección múltiple de qué CLIs de agentes protege failproofai desde un único panel — Claude Code, OpenAI Codex, GitHub Copilot, Cursor Agent, OpenCode, Pi y Gemini CLI tienen cada uno una fila con el estado de instalación (`Active` / `Detected` / `Inactive`), la ruta de configuración del scope de usuario y un acento de color de marca. Marca o desmarca los CLIs que deseas y haz clic en `Apply changes` para instalar/desinstalar la diferencia en un solo paso. Los CLIs cuyo binario se detecta en PATH se marcan previamente. - Activa o desactiva políticas individuales con un solo clic (escribe en `~/.failproofai/policies-config.json` — compartido entre todos los CLIs instalados) - Expande una política para configurar sus parámetros (para políticas que admiten `policyParams`) - - Establece una ruta de archivo de políticas personalizada + - Establece una ruta de archivo de políticas personalizadas - + - Historial completo paginado de cada evento de hook que se ha activado en todas las sesiones - - Filtra por decisión, tipo de evento, CLI (Claude Code / OpenAI Codex / GitHub Copilot _(beta)_ / Cursor Agent _(beta)_ / OpenCode _(beta)_ / Pi _(beta)_ / Gemini CLI _(beta)_), nombre de política o ID de sesión - - Cada fila muestra: marca de tiempo, nombre de política, decisión, insignia de CLI (naranja = Claude Code, morado = OpenAI Codex, azul = GitHub Copilot, esmeralda = Cursor Agent, ámbar = OpenCode, rosa = Pi, celeste = Gemini CLI), nombre de herramienta, ID de sesión y el motivo de las decisiones deny/instruct - - Haz clic en un ID de sesión para abrir su transcripción — el visor detecta automáticamente qué CLI activó el hook (Claude `~/.claude/projects/…`, Codex `~/.codex/sessions/…`, Copilot CLI `~/.copilot/session-state//events.jsonl`, Cursor Agent `~/.cursor/agent-sessions//events.jsonl`, OpenCode `~/.local/share/opencode/opencode.db`, Pi `~/.pi/agent/sessions//.jsonl`, Gemini CLI `~/.gemini/tmp//chats/.jsonl`) y muestra la insignia de CLI correspondiente en el encabezado + - Filtro por decisión, tipo de evento, CLI (Claude Code / OpenAI Codex / GitHub Copilot _(beta)_ / Cursor Agent _(beta)_ / OpenCode _(beta)_ / Pi _(beta)_ / Gemini CLI _(beta)_), nombre de política o ID de sesión + - Cada fila muestra: marca de tiempo, nombre de política, decisión, badge de CLI (naranja = Claude Code, morado = OpenAI Codex, azul = GitHub Copilot, esmeralda = Cursor Agent, ámbar = OpenCode, rosa = Pi, celeste = Gemini CLI), nombre de herramienta, ID de sesión y el motivo de las decisiones deny/instruct + - Haz clic en un ID de sesión para abrir su transcript — el visor detecta automáticamente qué CLI activó el hook (Claude `~/.claude/projects/…`, Codex `~/.codex/sessions/…`, Copilot CLI `~/.copilot/session-state//events.jsonl`, Cursor Agent `~/.cursor/agent-sessions//events.jsonl`, OpenCode `~/.local/share/opencode/opencode.db`, Pi `~/.pi/agent/sessions//.jsonl`, Gemini CLI `~/.gemini/tmp//chats/.jsonl`) y muestra el badge de CLI correspondiente en el encabezado @@ -92,13 +92,13 @@ Una página con dos pestañas para gestionar políticas y revisar actividad. ## Actualización automática -El dashboard tiene un interruptor de actualización automática en la navegación superior. Cuando está habilitado, la página actual se actualiza periódicamente para mostrar nuevas sesiones y actividad de políticas a medida que aparecen. Es esencial para monitorear sesiones de agentes autónomos de larga duración. +El dashboard tiene un botón de actualización automática en la navegación superior. Cuando está habilitado, la página actual se refresca periódicamente para mostrar nuevas sesiones y actividad de políticas a medida que aparecen. Es esencial para monitorear sesiones de agentes autónomos de larga duración. --- ## Deshabilitar páginas -Si solo necesitas algunas partes del dashboard, establece `FAILPROOFAI_DISABLE_PAGES` con una lista separada por comas de nombres de páginas: +Si solo necesitas algunas partes del dashboard, establece `FAILPROOFAI_DISABLE_PAGES` con una lista de nombres de páginas separados por comas: ```bash FAILPROOFAI_DISABLE_PAGES=policies failproofai @@ -110,7 +110,7 @@ Valores válidos: `policies`, `projects`, `audit`. ## Configurar la ruta de proyectos -De forma predeterminada, el dashboard lee desde el directorio estándar de proyectos de Claude Code. Sobreescríbelo para configuraciones personalizadas: +Por defecto, el dashboard lee del directorio estándar de proyectos de Claude Code. Puedes sobreescribirlo para configuraciones personalizadas: ```bash CLAUDE_PROJECTS_PATH=/custom/path/to/projects failproofai @@ -120,13 +120,13 @@ CLAUDE_PROJECTS_PATH=/custom/path/to/projects failproofai ## Acceder desde un host que no sea localhost -Cuando se ejecuta el dashboard en **modo dev** (`npm run dev`) y se accede desde un nombre de host distinto a `localhost` — por ejemplo, un dominio personalizado, una IP remota o una URL tunelizada — es posible que veas una advertencia como: +Cuando ejecutas el dashboard en **modo dev** (`npm run dev`) y accedes a él desde un hostname distinto de `localhost` — por ejemplo, un dominio personalizado, una IP remota o una URL tunelizada — puede aparecer una advertencia como: ```text ⚠ Blocked cross-origin request to Next.js dev resource /_next/webpack-hmr from "dashboard.example.com". ``` -Esto ocurre porque Next.js bloquea el acceso de origen cruzado a su websocket de HMR (recarga en caliente de módulos), que es una característica exclusiva del modo de desarrollo. Para permitir tu host, usa el indicador `--allowed-origins`: +Esto es Next.js bloqueando el acceso de origen cruzado a su websocket HMR (recarga en caliente de módulos), que es una función exclusiva del modo dev. Para permitir tu host, usa el flag `--allowed-origins`: ```bash npm run dev -- --allowed-origins dashboard.example.com @@ -145,5 +145,5 @@ FAILPROOFAI_ALLOWED_DEV_ORIGINS=dashboard.example.com npm run dev ``` -Esto solo aplica al modo dev. Al ejecutar `failproofai` (modo producción), no hay websocket de HMR ni problema de recursos de desarrollo de origen cruzado. +Esto solo aplica al modo dev. Al ejecutar `failproofai` (modo producción), no hay websocket HMR ni problema de recursos dev de origen cruzado. \ No newline at end of file diff --git a/docs/fr/cli/audit.mdx b/docs/fr/cli/audit.mdx index 7e2b0c815..efb678b4c 100644 --- a/docs/fr/cli/audit.mdx +++ b/docs/fr/cli/audit.mdx @@ -1,57 +1,96 @@ --- title: Auditer les sessions passées (bêta) -description: "Compter la fréquence à laquelle l'agent a effectué des opérations inutiles ou risquées dans les transcriptions passées" +description: "Comptabiliser la fréquence des comportements inefficaces ou risqués dans les transcriptions passées" --- - **Fonctionnalité bêta.** L'audit est disponible en bêta pendant la collecte des premiers retours. - Le catalogue de détecteurs et le format du rapport peuvent évoluer avant la prochaine version stable. - N'hésitez pas à ouvrir une issue si quelque chose vous semble incorrect. + **Fonctionnalité bêta.** L'audit est livré en bêta pendant que nous recueillons les premiers retours. + Le catalogue de détecteurs et le format des rapports sont susceptibles d'évoluer avant la prochaine version stable. + N'hésitez pas à ouvrir un ticket si quelque chose vous semble incorrect. -L'audit est désormais accessible via la **page du tableau de bord /audit**, et non comme sous-commande CLI. Ouvrez-la depuis la barre de navigation du tableau de bord (entre Policies et Projects), ou accédez directement à `http://localhost:8020/audit` lorsque vous exécutez `failproofai` en local. +L'audit rejoue vos transcriptions passées de l'agent CLI à travers le moteur de politiques de failproofai +et génère un rapport visuel partageable sur la **page `/audit` du tableau de bord** +— l'archétype de votre agent, un score de 0 à 100, et précisément quelles politiques +auraient détecté quoi. -```bash -failproofai # open the dashboard, then click "Audit" +## Lancer l'audit + +Trois façons de procéder — toutes aboutissent au même rapport `/audit`. + + + +```bash npx (no install) +npx -y failproofai audit +``` + +```bash failproofai audit +failproofai audit ``` -Le tableau de bord analyse les transcriptions passées de l'agent CLI sur cette machine (Claude Code, Codex, Copilot, Cursor, OpenCode, Pi, Gemini) et indique la fréquence à laquelle l'agent a effectué des actions que failproofai est conçu pour bloquer — vérifications de variables d'environnement, force pushes, préfixes `cd ` redondants, boucles sleep-polling, re-lecture de fichiers récemment modifiés, et bien d'autres. +```bash failproofai (dashboard) +failproofai +``` + + + + + + `npx -y failproofai audit` télécharge failproofai, lance l'analyse et ouvre le + tableau de bord pour vous — aucune installation préalable nécessaire. + + + `failproofai audit` exécute l'analyse dans votre terminal, puis ouvre + `localhost:8020/audit` automatiquement une fois terminé. + + + Lancez `failproofai` et cliquez sur **Audit** dans la barre de navigation (entre Politiques et + Projets), ou ouvrez `/audit` directement. + + + + + Exécutez `failproofai audit -h` (ou `--help`) pour afficher l'aide. L'audit fonctionne **entièrement + hors ligne** — aucun compte ni connexion réseau requis — et le tableau de bord reste actif + jusqu'à ce que vous l'arrêtiez avec `Ctrl+C`. + + +Le tableau de bord analyse les transcriptions passées de l'agent CLI sur cette machine (Claude Code, Codex, Copilot, Cursor, OpenCode, Pi, Gemini) et indique la fréquence à laquelle l'agent a effectué des actions que failproofai est conçu pour bloquer — vérifications de variables d'environnement, push forcés, préfixes `cd ` redondants, boucles de polling avec sleep, relecture de fichiers venant d'être modifiés, et bien d'autres. -Pour chaque transcription, chaque événement d'utilisation d'outil est rejoué à travers les 39 politiques intégrées **et** à travers 8 détecteurs réservés à l'audit, qui repèrent des patterns non encore couverts par les politiques en temps réel. Les occurrences sont agrégées par politique / détecteur sur l'ensemble des sessions. +Pour chaque transcription, chaque événement d'utilisation d'outil est rejoué à travers les 39 politiques intégrées **et** à travers 8 détecteurs réservés à l'audit, qui identifient des comportements non encore couverts par les politiques en temps réel. Les comptages sont agrégés par politique/détecteur sur l'ensemble des sessions. ## Ce que vous obtenez -La page `/audit` se compose de six sections : +La page `/audit` est une **affiche** sur un seul écran, partageable, suivie de quatre sections sous le pli : -1. **Identité** — votre agent est classifié dans l'un des 8 archétypes (`optimist`, `cowboy`, `explorer`, `goldfish`, `paranoid architect`, `precision builder`, `hammer`, `ghost`) en fonction du signal pondéré issu de toutes les transcriptions auditées. -2. **Points forts** — chiffres concrets issus de l'analyse (pourcentage d'appels propres, « 0 fuite de credentials », etc.) conditionnés à l'activation effective des politiques sanitize concernées. -3. **Score** — de 0 à 100 avec les niveaux S/A/B/C/D/F et une projection de l'amélioration si toutes les politiques recommandées étaient activées. -4. **Résultats** — fiches par politique indiquant ce qui s'est passé, le coût, les preuves collectées, et la commande exacte `failproofai policy add ` pour activer le builtin en temps réel qui l'aurait intercepté. -5. **Politiques prescrites** — liste d'installation agrégée avec une commande `failproofai policies --install` en une seule fois. -6. **Rappel de ré-audit** — « revenez amélioré. » Programmez un rappel par e-mail dans 7 jours via l'api-server (connexion requise ; voir [`failproofai auth`](/fr/cli/auth)). +1. **Affiche** — l'identité de votre agent en un coup d'œil : son **archétype** (parmi 8 — `optimist`, `cowboy`, `explorer`, `goldfish`, `paranoid architect`, `precision builder`, `hammer`, `ghost`), ses mots-clés de persona, la rareté de cet archétype, et un **score de 0 à 100** avec une bande de niveau (`S` jusqu'à `bottom tier`). Conçu pour être partagé — publiez sur X ou LinkedIn, ou téléchargez en PNG. +2. **`// strengths`** — ce que votre agent fait déjà bien, sous forme de données réelles issues de l'analyse (ex. : % d'appels d'outils propres, `0` tentatives de push sur main), affiché uniquement lorsque la politique concernée n'a enregistré aucun incident. +3. **`// quirks`** — ce qui a échappé au contrôle : un tableau classé des comportements que failproofai aurait interceptés — *quand* c'est arrivé pour la dernière fois, *ce qui a glissé* (et le détecteur intégré qui l'aurait bloqué), sa *sévérité*, et la fréquence d'apparition (`new` / `recurring` / `N× seen`). +4. **`// how to improve`** — la liste des correctifs recommandés : une ligne par politique avec une commande `failproofai policy add ` à copier-coller, plus un bouton **install all** qui active toutes les recommandations d'un coup et affiche votre **score projeté** si vous le faisiez. +5. **`// come back better`** — ancrez la bonne habitude : configurez un **rappel** par e-mail pour relancer l'audit (`3d` / `7d` / `14d` / `30d`) ou relancez-le maintenant, et **invitez un ami** à effectuer le sien (envoyé depuis failproof.ai, en Cc pour vous). Les rappels et invitations nécessitent une connexion — voir [`failproofai auth`](/fr/cli/auth). ## Détecteurs réservés à l'audit -Ces détecteurs repèrent des patterns de « comportement inutile » qui ne sont pas (encore) appliqués en temps réel. Ils ne s'exécutent que lors de l'audit et ne bloquent jamais un appel d'outil en direct. +Ces détecteurs identifient des comportements «inutilement coûteux» qui ne sont pas (encore) appliqués en temps réel. Ils ne s'exécutent que lors de l'audit et ne bloquent jamais un appel d'outil en direct. -| Détecteur | Ce qu'il compte | +| Détecteur | Ce qu'il comptabilise | |---|---| | `redundant-cd-cwd` | Commandes Bash commençant par `cd && …` alors que les commandes s'exécutent déjà dans `cwd`. | -| `prefer-edit-over-read-cat` | `cat`/`head`/`tail`/`less`/`more` sur un seul fichier source — utilisez l'outil `Read`. | -| `prefer-edit-over-sed-awk` | Modifications en place avec `sed -i` / `awk … > file` — utilisez l'outil `Edit`. | -| `prefer-write-over-heredoc` | Écriture de fichiers via heredoc / `echo > file` multiligne — utilisez l'outil `Write`. | -| `sleep-polling-loop` | `sleep N` de longue durée (≥ 30s) ou boucles de polling `while …; sleep …; done`. | -| `find-from-root` | `find /`, `find /home`, `find /usr`, etc. — limitez la portée à `cwd`. | -| `git-commit-no-verify` | `git commit … --no-verify` / `-n`, contournant les hooks. | -| `reread-after-edit` | `Read` d'un fichier qui vient d'être modifié via `Edit`/`Write` dans la même session. | +| `prefer-edit-over-read-cat` | `cat`/`head`/`tail`/`less`/`more` sur un seul fichier source — utiliser plutôt l'outil `Read`. | +| `prefer-edit-over-sed-awk` | Éditions en place avec `sed -i` / `awk … > file` — utiliser plutôt l'outil `Edit`. | +| `prefer-write-over-heredoc` | Écriture de fichiers avec heredoc / `echo > file` multiligne — utiliser plutôt l'outil `Write`. | +| `sleep-polling-loop` | Longs `sleep N` (≥ 30s) ou boucles de polling `while …; sleep …; done`. | +| `find-from-root` | `find /`, `find /home`, `find /usr`, etc. — limiter la portée à `cwd`. | +| `git-commit-no-verify` | `git commit … --no-verify` / `-n`, ignorant les hooks. | +| `reread-after-edit` | Lecture (`Read`) d'un fichier qui vient d'être modifié (`Edit`/`Write`) dans la même session. | ## Caches -- **Cache par transcription** dans `~/.failproofai/cache/audit/.json`, indexé par `(mtime, size, engineVersion, detectorVersion)` — invalidé automatiquement lorsque la transcription ou le code des politiques/détecteurs change. Chaque entrée stocke également un horodatage `cachedAt` comme **métadonnée TTL** (ne faisant pas partie de la clé de cache) ; les entrées de plus de **7 jours** sont rejetées à la lecture afin que les résultats anciens ne survivent pas à l'évolution des détecteurs. -- **Cache du résultat global** dans `~/.failproofai/audit-dashboard.json` (mode 0600). Permet au tableau de bord de s'afficher instantanément lors de la navigation sans relancer l'analyse. Également rejeté à la lecture après la **TTL de 7 jours** — `/audit` bascule alors vers son état vide et invite à relancer une analyse. Cliquez sur `[ re-audit now ]` en bas du rapport pour actualiser — le ré-audit envoie `noCache: true`, ce qui contourne le cache par transcription et réanalyse toutes les transcriptions au lieu de retourner le résultat mis en cache ; l'exécution diffuse la progression via une bandeaux fixe en haut et remplace le résultat en place en cas de succès (sans rechargement de page ; un ré-audit échoué conserve le rapport précédent). +- **Cache par transcription** dans `~/.failproofai/cache/audit/.json`, indexé par `(mtime, size, engineVersion, detectorVersion)` — invalidé automatiquement lorsque la transcription ou le code des politiques/détecteurs change. Chaque entrée stocke également un horodatage `cachedAt` comme **métadonnée de TTL** (non incluse dans la clé de cache) ; les entrées de plus de **7 jours** sont rejetées à la lecture afin que les résultats anciens ne survivent pas à l'évolution des détecteurs. +- **Cache du résultat global** dans `~/.failproofai/audit-dashboard.json` (mode 0600). Permet au tableau de bord de s'afficher instantanément lors de la navigation sans relancer l'analyse. Également rejeté à la lecture au-delà du **TTL de 7 jours** — `/audit` revient alors à son état vide et invite à effectuer une nouvelle analyse. Cliquez sur `[ re-audit now ]` en bas du rapport pour actualiser — ce nouveau passage envoie `noCache: true`, ce qui contourne le cache par transcription et réanalyse toutes les transcriptions au lieu de retourner le résultat mis en cache ; l'exécution diffuse la progression via une bande fixe en haut de l'écran et remplace le résultat en cas de succès (sans rechargement de page ; en cas d'échec, le rapport précédent est conservé). -## Remarques +## Notes -- **Aucune mutation.** L'audit s'exécute en mode lecture seule. `warn-repeated-tool-calls` est ignoré car son sidecar de session serait sinon modifié. -- **Politiques de workflow ignorées.** Les politiques `require-*-before-stop` ne se déclenchent que sur les événements `Stop` et s'exécutent via `execSync` sur l'état git en direct — elles n'ont pas d'interprétation pertinente pour « ce qui se serait passé en 2025 » et n'apparaissent donc pas dans les comptages d'audit. +- **Aucune modification.** L'audit rejoue en mode lecture seule. `warn-repeated-tool-calls` est ignoré car son sidecar par session serait autrement modifié. +- **Politiques de workflow ignorées.** Les politiques `require-*-before-stop` se déclenchent uniquement sur les événements `Stop` et via `execSync` sur l'état git en direct — elles n'ont pas d'interprétation pertinente de type «qu'aurait-il pu se passer en 2025», et n'apparaissent donc pas dans les comptages de l'audit. - **Politiques personnalisées ignorées.** Les hooks personnalisés fournis par l'utilisateur ne sont pas rejoués (ils peuvent avoir changé depuis la session d'origine). \ No newline at end of file diff --git a/docs/fr/dashboard.mdx b/docs/fr/dashboard.mdx index 02f02526e..c5452303c 100644 --- a/docs/fr/dashboard.mdx +++ b/docs/fr/dashboard.mdx @@ -1,22 +1,22 @@ --- -title: Dashboard -description: "Surveillez les sessions d'agents, examinez les appels d'outils et gérez les politiques" +title: Tableau de bord +description: "Surveiller les sessions d'agents, examiner les appels d'outils et gérer les politiques" icon: chart-line --- -Le dashboard failproofai est une application web locale pour surveiller vos sessions d'agents IA et gérer vos politiques. Voyez ce que vos agents ont fait en votre absence. +Le tableau de bord failproofai est une application web locale qui vous permet de surveiller vos sessions d'agents IA et de gérer vos politiques. Voyez ce que vos agents ont fait pendant votre absence. --- -## Démarrer le dashboard +## Démarrer le tableau de bord ```bash failproofai ``` -S'ouvre sur `http://localhost:8020`. +S'ouvre à l'adresse `http://localhost:8020`. -Le dashboard lit directement depuis le système de fichiers — vos dossiers de projets Claude Code et les fichiers de configuration failproofai. Rien n'est écrit vers un service distant. +Le tableau de bord lit directement depuis le système de fichiers — vos dossiers de projets Claude Code et les fichiers de configuration failproofai. Aucune donnée n'est transmise à un service distant. --- @@ -24,7 +24,7 @@ Le dashboard lit directement depuis le système de fichiers — vos dossiers de ### Projets -Liste tous les projets Claude Code, OpenAI Codex, GitHub Copilot CLI _(bêta)_, Cursor Agent _(bêta)_, OpenCode _(bêta)_, Pi _(bêta)_ et Gemini CLI _(bêta)_ trouvés sur votre machine. Les projets Claude sont découverts depuis `~/.claude/projects/` (ou le chemin défini par `CLAUDE_PROJECTS_PATH`) ; les projets Codex sont découverts en analysant chaque transcript sous `~/.codex/sessions///
/*.jsonl` et regroupés par le `cwd` enregistré dans le premier enregistrement de chaque session ; les projets Copilot CLI sont découverts en analysant chaque `~/.copilot/session-state//workspace.yaml` (configurable via `COPILOT_HOME`) et regroupés par son champ `cwd` ; les projets Cursor Agent sont découverts en analysant les métadonnées par session sous `~/.cursor/agent-sessions//` (configurable via `CURSOR_HOME`, avec `conversations/` et `sessions/` sondés comme replis) pour un scalaire `cwd` dans `meta.json` / `session.json` / `workspace.yaml` ; les projets OpenCode sont découverts en interrogeant sa base SQLite à `~/.local/share/opencode/opencode.db` via `opencode db --format json` (nous lisons les tables `session` et `project` et regroupons par `project_id`) ; les projets Pi sont découverts en analysant les transcripts JSONL par session sous `~/.pi/agent/sessions//_.jsonl` (configurable via `PI_SESSIONS_DIR`) et en récupérant le `cwd` depuis le premier enregistrement de chaque session ; les projets Gemini CLI sont découverts en analysant `~/.gemini/tmp//chats/session--.jsonl` (configurable via `GEMINI_SESSIONS_DIR`) et en récupérant le cwd canonique depuis le marqueur texte `.project_root` voisin. Un projet utilisé par plusieurs CLIs s'affiche sur une seule ligne avec tous les badges correspondants. Utilisez le menu déroulant **CLI** au-dessus du tableau pour filtrer par un agent CLI spécifique ; l'URL conserve votre sélection sous la forme `?cli=claude|codex|copilot|cursor|opencode|pi|gemini`. +Liste tous les projets Claude Code, OpenAI Codex, GitHub Copilot CLI _(bêta)_, Cursor Agent _(bêta)_, OpenCode _(bêta)_, Pi _(bêta)_ et Gemini CLI _(bêta)_ trouvés sur votre machine. Les projets Claude sont découverts depuis `~/.claude/projects/` (ou le chemin défini par `CLAUDE_PROJECTS_PATH`) ; les projets Codex sont découverts en analysant chaque transcript sous `~/.codex/sessions///
/*.jsonl` et en les regroupant par le `cwd` enregistré dans le premier enregistrement de chaque session ; les projets Copilot CLI sont découverts en analysant chaque `~/.copilot/session-state//workspace.yaml` (configurable via `COPILOT_HOME`) et en les regroupant par leur champ `cwd` ; les projets Cursor Agent sont découverts en analysant les métadonnées par session sous `~/.cursor/agent-sessions//` (configurable via `CURSOR_HOME`, avec `conversations/` et `sessions/` explorés en solution de repli) pour un scalaire `cwd` dans `meta.json` / `session.json` / `workspace.yaml` ; les projets OpenCode sont découverts en interrogeant sa base de données SQLite à `~/.local/share/opencode/opencode.db` via `opencode db --format json` (nous lisons les tables `session` et `project` et les regroupons par `project_id`) ; les projets Pi sont découverts en analysant les transcripts JSONL par session sous `~/.pi/agent/sessions//_.jsonl` (configurable via `PI_SESSIONS_DIR`) et en extrayant le `cwd` du premier enregistrement de chaque session ; les projets Gemini CLI sont découverts en analysant `~/.gemini/tmp//chats/session--.jsonl` (configurable via `GEMINI_SESSIONS_DIR`) et en récupérant le cwd canonique depuis le marqueur texte `.project_root` situé dans le même répertoire. Un projet utilisé par plusieurs interfaces CLI s'affiche sur une seule ligne avec tous les badges correspondants. Utilisez le menu déroulant **CLI** au-dessus du tableau pour filtrer par un agent CLI spécifique ; l'URL conserve votre sélection sous la forme `?cli=claude|codex|copilot|cursor|opencode|pi|gemini`. Chaque projet affiche : - Le nom du projet (dérivé du chemin du dossier) @@ -47,42 +47,42 @@ Cliquez sur une session pour ouvrir le visualiseur de session. ### Visualiseur de session -Le visualiseur de session répond à la question clé pour les agents autonomes : qu'est-ce que l'agent a fait, et est-il resté dans les rails ? Un badge CLI à côté de l'en-tête indique si la session est un transcript Claude Code, OpenAI Codex, GitHub Copilot CLI, Cursor Agent, OpenCode, Pi ou Gemini CLI. Il affiche une chronologie de tout ce qui s'est passé dans une session : +Le visualiseur de session répond à la question essentielle pour les agents autonomes : qu'a fait l'agent, et est-il resté sur la bonne voie ? Un badge CLI à côté de l'en-tête indique si la session est un transcript Claude Code, OpenAI Codex, GitHub Copilot CLI, Cursor Agent, OpenCode, Pi ou Gemini CLI. Il affiche une chronologie de tout ce qui s'est passé durant une session : - **Messages** — Les réponses textuelles de Claude et les invites utilisateur - **Appels d'outils** — Chaque outil invoqué par Claude, avec ses entrées et sorties -- **Activité de politique** — Pour chaque appel d'outil, quelles politiques se sont déclenchées et quelle décision elles ont retournée +- **Activité des politiques** — Pour chaque appel d'outil, quelles politiques ont été déclenchées et quelle décision elles ont retournée La barre de statistiques en haut affiche la durée de la session, le nombre total d'appels d'outils et un résumé des décisions de hook (comptages allow / deny / instruct). -Cliquez sur le bouton **Télécharger les logs** pour exporter la session. Pour les sessions Claude Code, Codex, Copilot, Cursor, Pi et Gemini, vous obtenez le transcript JSONL original sur disque octet par octet ; pour OpenCode (dont les sessions résident dans SQLite et non sur disque), vous obtenez un document JSON reflétant les tables sous-jacentes `session` / `messages` / `parts`. +Cliquez sur le bouton **Télécharger les journaux** pour exporter la session. Pour les sessions Claude Code, Codex, Copilot, Cursor, Pi et Gemini, vous obtenez le transcript JSONL original sur disque octet par octet ; pour OpenCode (dont les sessions résident dans SQLite et non sur disque), vous obtenez un document JSON reflétant les tables sous-jacentes `session` / `messages` / `parts`. ### Audit -Un rapport personnalisé de la façon dont votre agent s'est réellement comporté au fil des sessions passées. Exécute le même scan que le CLI `failproofai audit` mais le restitue sous forme d'une affiche imprimable sur un seul écran + quatre sections en dessous du pli : +Un rapport personnalisé décrivant le comportement réel de votre agent à travers les sessions passées. Exécute la même analyse que la CLI `failproofai audit`, mais le restitue sous la forme d'une affiche partageable plein écran et de quatre sections sous la ligne de flottaison : -1. **Affiche** — occupe le premier viewport. Zone de capture PNG autonome avec la marque failproof_ai + libellé d'audit · index d'archétype (`№ NN sur 08`) + date d'audit · score numérique (0–100) + pastille de rang percentile (`top 15%`) · le nom de l'archétype (l'un des suivants : `the optimist`, `the cowboy`, `the explorer`, `the goldfish`, `the paranoid architect`, `the precision builder`, `the hammer`, `the ghost`) + bande de 3 mots-clés · ligne de rareté `// only N% of agents are this archetype` · tuile sigil 8×8 pixels · pied de page `audit yours → failproof.ai`. Trois boutons de partage se trouvent juste à l'extérieur de la zone de capture : `post your archetype` (intention X), `share on linkedin`, `download poster`. La capture s'effectue via `html-to-image` afin que le PNG corresponde pixel pour pixel au rendu à l'écran (bordures en tirets, masque de logo SVG, dégradés, métriques de police — tout est préservé). -2. **Points forts** — liste de lignes ✓ calmes des comportements que votre agent fait déjà correctement, dérivés des données d'audit en direct (taux d'appels d'outils propre, durée moyenne de session, zéro fuite de credentials, zéro tempête de nouvelles tentatives, etc.). -3. **Particularités** — tableau de ce qui a glissé, classé par impact : `moment · ce qui a glissé + politique qui l'aurait intercepté · pastille de sévérité · récurrence` (nouveau / Nx cette sem. / récurrent). -4. **Comment s'améliorer** — liste de lignes calmes, une par politique prescrite : nom de la politique en blanc, description en une ligne, commande d'installation + bouton de copie à droite. Un bouton `[tout installer]` en en-tête de section copie la commande combinée `failproofai policy add a b c …` pour chaque politique prescrite. -5. **Revenez plus fort** — deux cartes côte à côte. Gauche : définir un rappel (sélecteur de cadence `3j` / `7j` / `14j` / `30j` ; persiste via `/api/auth/reminder` une fois authentifié). Droite : débloquer les avantages failproof — `inviter un ami` ouvre une modale qui accepte une liste d'e-mails d'amis séparés par des virgules/espaces/sauts de ligne (max 10 par envoi), les envoie en POST à `/api/audit/invite`, qui les transfère au serveur API via `POST /v0/invite`. Le serveur API envoie un e-mail par destinataire depuis `invite@failproof.ai` avec l'expéditeur en Cc et `Reply-To` configuré, de sorte que le destinataire voit qui l'a invité et l'expéditeur reçoit une copie dans sa boîte de réception. Les utilisateurs anonymes sont d'abord redirigés vers `AuthDialog` pour que l'e-mail de l'expéditeur soit connu avant l'envoi des invitations. La gestion des droits/avantages est une suite à venir. +1. **Affiche** — occupe le premier viewport. Zone de capture PNG autonome avec le logotype failproof_ai + étiquette d'audit · index d'archétype (`№ NN of 08`) + date d'audit · score numérique (0–100) + pastille de rang en centile (`top 15%`) · le nom de l'archétype (l'un de `the optimist`, `the cowboy`, `the explorer`, `the goldfish`, `the paranoid architect`, `the precision builder`, `the hammer`, `the ghost`) + banderole de 3 mots-clés · ligne de rareté `// only N% of agents are this archetype` · tuile sigil 8×8 pixels · pied de page `audit yours → failproof.ai`. Trois boutons de partage se trouvent juste en dehors de la zone de capture : `post your archetype` (X intent), `share on linkedin`, `download poster`. La capture est réalisée via `html-to-image` afin que le PNG corresponde pixel pour pixel au rendu à l'écran (bordures en pointillés, masque SVG du logo, dégradés, métriques de police — tout est préservé). +2. **Points forts** — liste de lignes ✓ apaisées décrivant les comportements que votre agent adopte déjà correctement, dérivés des données d'audit en direct (taux d'appels d'outils propre, aucun push direct sur main, zéro fuite de credentials, zéro tempête de tentatives) — chaque point n'est affiché que lorsque la politique concernée affiche un historique propre sur toute la fenêtre d'audit. +3. **Écarts** — tableau de ce qui est passé entre les mailles, classé par gravité : `quand · ce qui a glissé + la politique qui l'aurait intercepté · pastille de gravité · observé`, où la récurrence se lit `new` (une fois), `N× seen` (2–9 fois) ou `recurring` (10+). +4. **Comment s'améliorer** — liste de lignes apaisées, une par politique prescrite : nom de la politique en blanc, description en une ligne, commande d'installation + bouton de copie sur le côté droit. L'en-tête de section indique `enable all N → projected · ` (le score que vous atteindriez en appliquant toutes les corrections), et son bouton `[install all]` copie la commande combinée `failproofai policy add a b c …` pour toutes les politiques prescrites. +5. **Revenez mieux armé** — deux cartes côte à côte. À gauche : définir un rappel (sélecteur de cadence `3d` / `7d` / `14d` / `30d` ; persisté via `/api/auth/reminder` une fois authentifié). À droite : débloquer les avantages failproof — `invite a friend` ouvre une fenêtre modale qui accepte une liste d'e-mails d'amis séparés par des virgules, espaces ou sauts de ligne (max 10 par envoi), les envoie via POST à `/api/audit/invite`, qui les transmet au `POST /v0/invite` du serveur API. Le serveur API envoie un e-mail par destinataire depuis `invite@failproof.ai` avec l'expéditeur en Cc et `Reply-To` configuré, afin que le destinataire voie qui l'a invité et que l'expéditeur reçoive une copie dans sa boîte de réception. Les utilisateurs anonymes sont d'abord redirigés vers l'`AuthDialog` pour que l'e-mail de l'expéditeur soit connu avant l'envoi des invitations. Les droits d'accès et l'exécution des avantages feront l'objet d'une mise à jour ultérieure. -Piloté par le runtime `failproofai audit` — voir [Audit CLI](/fr/cli/audit) pour le moteur de scan sous-jacent, les options supportées et les invariants de cache par transcript. Le dashboard met en cache le dernier résultat dans `~/.failproofai/audit-dashboard.json` (mode `0600`, emplacement unique, les nouvelles exécutions écrasent) pour que les revisites soient instantanées ; **les deux caches — par transcript et résultat global — sont rejetés à la lecture dès qu'ils ont plus de 7 jours**, de sorte que le dashboard ne serve jamais silencieusement un résultat vieux d'une semaine — passé la TTL, `/audit` passe à son état vide et invite à relancer un scan. Cliquer sur `[ re-audit now ]` en bas du rapport envoie un POST `/api/audit/run` avec `noCache: true` — un re-audit contourne le cache par transcript et réanalyse chaque transcript depuis le début plutôt que de retourner silencieusement le résultat mis en cache — et le dashboard interroge `/api/audit/status` à 1 Hz jusqu'à la fin de l'exécution ; une bande de progression rose collante s'épingle en haut du viewport pendant l'exécution avec un minuteur écoulé, et le nouveau résultat se substitue en place en cas de succès (pas de rechargement de page complet ; un re-audit échoué laisse l'ancien rapport intact). En cas d'échec, la bande devient rouge avec un message correspondant à `RerunError.kind` (`timeout` / `network` / `post_failed`). L'état vide (pas de cache ou expiré) et l'état zéro session (cache existant mais le scan n'a trouvé aucun transcript) sont affichés séparément. +Alimenté par le runtime `failproofai audit` — consultez [Audit CLI](/fr/cli/audit) pour le moteur d'analyse sous-jacent, les options prises en charge et les invariants de cache par transcript. Le tableau de bord met en cache le dernier résultat dans `~/.failproofai/audit-dashboard.json` (mode `0600`, emplacement unique, les nouvelles exécutions écrasent l'ancien) afin que les revisites soient instantanées ; **les caches par transcript et le cache de résultat global sont rejetés à la lecture dès qu'ils ont plus de 7 jours**, de sorte que le tableau de bord ne serve jamais silencieusement un résultat vieux d'une semaine — passé le délai d'expiration, `/audit` retombe dans son état vide et invite à effectuer une nouvelle analyse. Cliquer sur `[ re-audit now ]` en bas du rapport envoie un POST à `/api/audit/run` avec `noCache: true` — la ré-analyse contourne le cache par transcript et réanalyse chaque transcript depuis le début plutôt que de retourner silencieusement le résultat mis en cache — et le tableau de bord interroge `/api/audit/status` à 1 Hz jusqu'à la fin de l'exécution ; une banderole de progression rose épinglée reste visible en haut du viewport pendant l'exécution avec un compteur de temps écoulé, et le nouveau résultat se substitue en place en cas de succès (sans rechargement complet de la page ; un échec de ré-analyse laisse le rapport précédent intact). En cas d'échec, la banderole devient rouge avec un message adapté selon le `RerunError.kind` (`timeout` / `network` / `post_failed`). L'état vide (pas de cache ou expiré) et l'état sans sessions (cache existant mais l'analyse n'a trouvé aucun transcript) sont présentés séparément. ### Politiques -Une page à deux onglets pour gérer les politiques et examiner l'activité. +Une page à deux onglets pour gérer les politiques et consulter l'activité. - - Sélection multiple des CLIs d'agents que failproofai protège depuis un seul panneau — Claude Code, OpenAI Codex, GitHub Copilot, Cursor Agent, OpenCode, Pi et Gemini CLI disposent chacun d'une ligne avec le statut d'installation (`Active` / `Detected` / `Inactive`), le chemin des paramètres de portée utilisateur et un accent de couleur de marque. Cochez ou décochez les CLIs souhaités et cliquez sur `Appliquer les modifications` pour installer/désinstaller le diff en une seule étape. Les CLIs dont le binaire est détecté dans le PATH sont pré-cochés. - - Activer ou désactiver les politiques individuelles d'un seul clic (écrit dans `~/.failproofai/policies-config.json` — partagé entre tous les CLIs installés) - - Développer une politique pour configurer ses paramètres (pour les politiques qui supportent `policyParams`) - - Définir un chemin de fichier de politiques personnalisé + - Sélectionnez les CLIs d'agents que failproofai protège depuis un panneau unique — Claude Code, OpenAI Codex, GitHub Copilot, Cursor Agent, OpenCode, Pi et Gemini CLI ont chacun une ligne avec l'état d'installation (`Active` / `Detected` / `Inactive`), le chemin des paramètres de portée utilisateur et un accent de couleur de marque. Cochez ou décochez les CLIs souhaités et cliquez sur `Apply changes` pour installer/désinstaller les différences en une seule étape. Les CLIs dont le binaire est détecté dans le PATH sont pré-cochés. + - Activez ou désactivez les politiques individuelles d'un simple clic (écrit dans `~/.failproofai/policies-config.json` — partagé entre tous les CLIs installés) + - Développez une politique pour configurer ses paramètres (pour les politiques qui prennent en charge `policyParams`) + - Définissez un chemin de fichier de politiques personnalisé - Historique paginé complet de chaque événement de hook déclenché dans toutes les sessions - - Filtrer par décision, type d'événement, CLI (Claude Code / OpenAI Codex / GitHub Copilot _(bêta)_ / Cursor Agent _(bêta)_ / OpenCode _(bêta)_ / Pi _(bêta)_ / Gemini CLI _(bêta)_), nom de politique ou identifiant de session + - Filtrez par décision, type d'événement, CLI (Claude Code / OpenAI Codex / GitHub Copilot _(bêta)_ / Cursor Agent _(bêta)_ / OpenCode _(bêta)_ / Pi _(bêta)_ / Gemini CLI _(bêta)_), nom de politique ou identifiant de session - Chaque ligne affiche : horodatage, nom de politique, décision, badge CLI (orange = Claude Code, violet = OpenAI Codex, bleu = GitHub Copilot, émeraude = Cursor Agent, ambre = OpenCode, rose = Pi, ciel = Gemini CLI), nom d'outil, identifiant de session et la raison des décisions deny/instruct - Cliquez sur un identifiant de session pour ouvrir son transcript — le visualiseur détecte automatiquement quel CLI a déclenché le hook (Claude `~/.claude/projects/…`, Codex `~/.codex/sessions/…`, Copilot CLI `~/.copilot/session-state//events.jsonl`, Cursor Agent `~/.cursor/agent-sessions//events.jsonl`, OpenCode `~/.local/share/opencode/opencode.db`, Pi `~/.pi/agent/sessions//.jsonl`, Gemini CLI `~/.gemini/tmp//chats/.jsonl`) et affiche le badge CLI correspondant dans l'en-tête @@ -92,13 +92,13 @@ Une page à deux onglets pour gérer les politiques et examiner l'activité. ## Actualisation automatique -Le dashboard dispose d'un bouton d'actualisation automatique dans la navigation supérieure. Lorsqu'il est activé, la page actuelle se rafraîchit périodiquement pour afficher les nouvelles sessions et l'activité de politique au fur et à mesure qu'elles apparaissent. Indispensable pour surveiller les sessions d'agents autonomes de longue durée. +Le tableau de bord dispose d'un bouton d'actualisation automatique dans la navigation principale. Lorsqu'il est activé, la page actuelle se rafraîchit périodiquement pour afficher les nouvelles sessions et l'activité des politiques au fur et à mesure qu'elles apparaissent. Indispensable pour surveiller les sessions d'agents autonomes de longue durée. --- ## Désactiver des pages -Si vous n'avez besoin que de certaines parties du dashboard, définissez `FAILPROOFAI_DISABLE_PAGES` avec une liste de noms de pages séparés par des virgules : +Si vous n'avez besoin que de certaines parties du tableau de bord, définissez `FAILPROOFAI_DISABLE_PAGES` avec une liste de noms de pages séparés par des virgules : ```bash FAILPROOFAI_DISABLE_PAGES=policies failproofai @@ -110,7 +110,7 @@ Valeurs valides : `policies`, `projects`, `audit`. ## Configurer le chemin des projets -Par défaut, le dashboard lit depuis le répertoire de projets Claude Code standard. Remplacez-le pour des configurations personnalisées : +Par défaut, le tableau de bord lit depuis le répertoire de projets Claude Code standard. Remplacez-le pour des configurations personnalisées : ```bash CLAUDE_PROJECTS_PATH=/custom/path/to/projects failproofai @@ -120,13 +120,13 @@ CLAUDE_PROJECTS_PATH=/custom/path/to/projects failproofai ## Accès depuis un hôte autre que localhost -Lorsque vous exécutez le dashboard en **mode dev** (`npm run dev`) et y accédez depuis un nom d'hôte autre que `localhost` — par exemple un domaine personnalisé, une IP distante ou une URL tunnelisée — vous pouvez voir un avertissement comme : +Lorsque vous exécutez le tableau de bord en **mode développement** (`npm run dev`) et y accédez depuis un nom d'hôte autre que `localhost` — par exemple, un domaine personnalisé, une IP distante ou une URL tunnelisée — vous pouvez voir un avertissement comme : ```text ⚠ Blocked cross-origin request to Next.js dev resource /_next/webpack-hmr from "dashboard.example.com". ``` -Il s'agit de Next.js qui bloque l'accès cross-origin à son websocket HMR (rechargement à chaud des modules), une fonctionnalité réservée au mode dev. Pour autoriser votre hôte, utilisez le flag `--allowed-origins` : +Il s'agit de Next.js qui bloque l'accès cross-origin à son websocket HMR (rechargement à chaud des modules), qui est une fonctionnalité réservée au mode développement. Pour autoriser votre hôte, utilisez l'option `--allowed-origins` : ```bash npm run dev -- --allowed-origins dashboard.example.com @@ -145,5 +145,5 @@ FAILPROOFAI_ALLOWED_DEV_ORIGINS=dashboard.example.com npm run dev ``` -Cela s'applique uniquement au mode dev. Lors de l'exécution de `failproofai` (mode production), il n'y a pas de websocket HMR ni de problème de ressource dev cross-origin. +Ceci s'applique uniquement au mode développement. Lors de l'exécution de `failproofai` (mode production), il n'y a pas de websocket HMR ni de problème de ressource de développement cross-origin. \ No newline at end of file diff --git a/docs/he/cli/audit.mdx b/docs/he/cli/audit.mdx index 804df1031..8a3adb25e 100644 --- a/docs/he/cli/audit.mdx +++ b/docs/he/cli/audit.mdx @@ -1,56 +1,87 @@ --- -title: ביקורת בסדרות עבר (בטא) -description: "ספור כמה פעמים הסוכן עשה דברים מבוזבזים או מסוכנים בחלק התמלילים בעבר" +title: ביקורת על הפעלות קודמות (beta) +description: "ספרו כמה פעמים הסוכן עשה דברים בזבזניים או מסוכנים על פני תמלילים קודמים" --- - **תכונת בטא.** הביקורת משודרת כבטא בזמן שאנחנו אוספים משוב מוקדם. - קטלוג הגלאים וערכת הדוח עשויים להשתנות לפני הגרסה היציבה הבאה. אנא פתח בעיה אם משהו נראה לא בסדר. + **תכונת Beta.** הביקורת משתלחת כ-beta בזמן שאנחנו אוספים משוב מוקדם. + קטלוג הגלאים וקבוצת הדוחות עלולים להשתנות לפני החתך הקבוע הבא. אנא פתחו issue אם משהו נראה לא בסדר. -הביקורת כעת חשופה כעמוד **לוח הבקרה /audit**, לא כתת-פקודה CLI. פתח אותה מסרגל הניווט של לוח הבקרה (בין Policies ל-Projects), או בקר ב-`http://localhost:8020/audit` ישירות כאשר מריץ `failproofai` באופן מקומי. +הביקורת מחזירה את תמלילי agent-CLI הקודמים שלך דרך מנוע המדיניות של failproofai ומעבירה דוח חזותי שניתן לשיתוף על **דף לוח המחוונים `/audit`** — הטיפוס של הסוכן שלך, ניקוד 0–100, והנושאים בדיוק אילו מדיניויות היו תופסות. -```bash -failproofai # פתח את לוח הבקרה, ואז לחץ על "Audit" +## הריצו אותה + +שלוש דרכים — כולן מגיעות לאותו דוח `/audit`. + + + +```bash npx (no install) +npx -y failproofai audit +``` + +```bash failproofai audit +failproofai audit ``` -לוח הבקרה סורק תמלילי CLI של סוכנים קודמים במכונה זו (Claude Code, Codex, Copilot, Cursor, OpenCode, Pi, Gemini) ודוח כמה פעמים הסוכן עשה דברים ש-failproofai בנוי כדי להעצור — בדיקות משתנות סביבה, דחיפות כפויות, קידומות `cd ` מיותרות, לולאות sleep-polling, קריאה חוזרת של קבצים שנערכו זה עתה, ועוד. +```bash failproofai (dashboard) +failproofai +``` + + + + + + `npx -y failproofai audit` מביא את failproofai, מריץ את הסריקה, ופותח את לוח המחוונים עבורכם — לא צריך להתקין קודם. + + + `failproofai audit` מריץ את הסריקה בטרמינל שלכם, ואז פותח את `localhost:8020/audit` באופן אוטומטי כשהוא מסתיים. + + + הריצו `failproofai` ולחצו על **Audit** בסרגל הניווט (בין Policies ו-Projects), או פתחו את `/audit` ישירות. + + + + + הריצו `failproofai audit -h` (או `--help`) כדי לראות שימוש. הביקורת רצה **לחלוטין בלא אינטרנט** — לא נדרשים חשבון או רשת — ולוח המחוונים ממשיך להיות בשירות עד שתעצרו אותו ב-`Ctrl+C`. + + +לוח המחוונים סורק תמלילי agent CLI קודמים על המכונה הזו (Claude Code, Codex, Copilot, Cursor, OpenCode, Pi, Gemini) ודיווח כמה פעמים הסוכן עשה דברים שfailproofai בנוי כדי להפסיק — בדיקות env-var, push כופים, קידומות `cd ` מיותרות, לולאות sleep-polling, קריאה מחדש של קבצים שנערכו זה עתה, ועוד. -לכל תמליל, כל אירוע tool-use מופעל מחדש דרך 39 המדיניויות המובנות **ו**דרך 8 גלאים בעצמם שלביקורת שתופסים דפוסים שעדיין לא מכוסים על ידי מדיניויות זמן-ריצה. ספירות מצטברות לכל מדיניות / גלאי בכל הסדרות. +לכל תמליל, כל אירוע tool-use מוחזר דרך 39 המדיניויות המובנות **ודרך** 8 גלאים שהם רק לביקורת שתופסים דפוסים שעדיין לא מכוסים על ידי מדיניויות זמן הריצה. הספירות מתרכזות לכל מדיניות / גלאי על פני כל הפעלות. -## מה אתה מקבל +## מה אתם מקבלים -הדף `/audit` מחברת שישה חלקים: +דף ה-`/audit` הוא **פוסטר** של מסך יחיד וניתן לשיתוף ואחריו ארבע סעיפים מתחת: -1. **Identity** — הסוכן שלך מסווג לאחד משמונה ארכיטיפים (`optimist`, `cowboy`, `explorer`, `goldfish`, `paranoid architect`, `precision builder`, `hammer`, `ghost`) בהתאם לאות משוקלל בכל התמליל שבוקר. -2. **Strengths** — מספרים אמיתיים הנגזרים מהסריקה (clean-call %, "0 credential leaks", וכו') בשערים על מדיניויות sanitize הרלוונטיות שפעולות בפועל. -3. **Score** — 0-100 עם נתיבי S/A/B/C/D/F ותחזוקה משוערת אם כל המדיניות המומלצות היו מופעלות. -4. **Findings** — כרטיסי לכל מדיניות עם מה קרה, עלות, ראיות תפוסות, והפקודה המדויקת `failproofai policy add ` להפעלת הבנייה המובנית בזמן-ריצה שהיתה תופסת את זה. -5. **Prescribed policies** — רשימת התקנה מצטברת עם פקודה `failproofai policies --install` במכה אחת. -6. **Re-audit reminder** — "בואו חזרה טוב יותר." הגדר תזכורת דוא"ל בן 7 ימים דרך api-server (דורש כניסה; ראה [`failproofai auth`](/he/cli/auth)). +1. **פוסטר** — זהות הסוכן שלך במבט חטוף: **הטיפוס** שלו (אחד משמונה — `optimist`, `cowboy`, `explorer`, `goldfish`, `paranoid architect`, `precision builder`, `hammer`, `ghost`), מילות מפתח של הגולם, כמה דיר הטיפוס הזה, וניקוד **0–100** עם פס קטגוריה (`S` עד `bottom tier`). בנוי לשיתוף — פרסמו ב-X או LinkedIn, או הורידו אותו כ-PNG. +2. **`// strengths`** — מה הסוכן שלך כבר עושה טוב, כמספרים אמיתיים מהסריקה (למשל clean-tool-call %, `0` push-to-main attempts), מוצג רק כאשר למדיניות הרלוונטית יש רקורד נקי. +3. **`// quirks`** — מה חמק: טבלה דורגת של התנהגויות שfailproofai היה תופס — *מתי* זה קרה לאחרונה, *מה חמק* (ועל ידי איזה מובנה הוא היה חסום), **`severity`** שלו, וכמה פעמים זה **seen** (`new` / `recurring` / `N× seen`). +4. **`// how to improve`** — רשימת התיקוני המרשם: שורה אחת לכל מדיניות עם `failproofai policy add ` להעתקה-הדבקה, בתוספת כפתור **install all** שמאפשר כל המלצה בבת אחת ומציג את **ניקוד היעד** שלך אם הייתם עושים זאת. +5. **`// come back better`** — בנו את ההרגל: קבעו **reminder** בדוא"ל לביקורת חוזרת (`3d` / `7d` / `14d` / `30d`) או בצעו ביקורת מחדש עכשיו, **הזמינו חבר** להריץ ביקורת שלהם שלהם (נשלח מ-failproof.ai, Cc אליכם). הזמנות וזמנות דורשות כניסה — ראו [`failproofai auth`](/he/cli/auth). -## גלאים בעצמם שלביקורת +## גלאים לביקורת בלבד -אלה תופסים דפוסי "התנהגות טיפשה" לא (עדיין) מאומצת בזמן אמת. הם רצים רק במהלך הביקורת ולעולם אל תחסום קריאת כלי חי. +אלה מגלים דפוסי "התנהגות טיפשה" שאינם (עדיין) אכופים בזמן אמת. הם רצים רק במהלך הביקורת ולעולם לא חוסמים קריאת כלי חי. | גלאי | מה זה סופר | |---|---| -| `redundant-cd-cwd` | פקודות Bash המתחילות ב-`cd && …` למרות שפקודות כבר רצות ב-`cwd`. | -| `prefer-edit-over-read-cat` | `cat`/`head`/`tail`/`less`/`more` בקובץ מקור יחיד — השתמש בכלי `Read`. | -| `prefer-edit-over-sed-awk` | `sed -i` / `awk … > file` עריכות בטוח — השתמש בכלי `Edit`. | -| `prefer-write-over-heredoc` | Heredoc / `echo > file` רב-שורות כתיבת קבצים — השתמש בכלי `Write`. | -| `sleep-polling-loop` | `sleep N` ארוך (≥ 30s) או `while …; sleep …; done` לולאות polling. | -| `find-from-root` | `find /`, `find /home`, `find /usr`, וכו' — הגבל ל-`cwd`. | -| `git-commit-no-verify` | `git commit … --no-verify` / `-n`, דלנו hooks. | -| `reread-after-edit` | `Read` של קובץ שהיה זה עתה `Edit`/`Write` באותה סדרה. | +| `redundant-cd-cwd` | פקודות Bash המתחילות ב-`cd && …` גם כשפקודות כבר רצות ב-`cwd`. | +| `prefer-edit-over-read-cat` | `cat`/`head`/`tail`/`less`/`more` בקובץ מקור יחיד — השתמשו בכלי `Read`. | +| `prefer-edit-over-sed-awk` | עריכות in-place של `sed -i` / `awk … > file` — השתמשו בכלי `Edit`. | +| `prefer-write-over-heredoc` | Heredoc / כתיבת רב-שורות `echo > file` לקבצים — השתמשו בכלי `Write`. | +| `sleep-polling-loop` | `sleep N` (≥ 30s) ארוך או `while …; sleep …; done` לולאות הצבעות. | +| `find-from-root` | `find /`, `find /home`, `find /usr` וכו' — טווח ל-`cwd` במקום זאת. | +| `git-commit-no-verify` | `git commit … --no-verify` / `-n`, דילוג על hooks. | +| `reread-after-edit` | `Read` של קובץ שזה עתה `Edit`/`Write` באותה הפעלה. | -## קאשים +## זיכרונות מטמון -- **קאש לכל תמליל** ב-`~/.failproofai/cache/audit/.json` מעוצב לפי `(mtime, size, engineVersion, detectorVersion)` — מבטל באופן אוטומטי כאשר התמליל או קוד המדיניות/הגלאי משתנה. כל ערך גם מאחסן חתימת זמן `cachedAt` כ**metadata TTL** (לא חלק מממתח הקאש); רשומות קדומות מ**7 ימים** דחויים בקריאה כך תוצאות שאורכות זמן לא חיות מעבר לכוונת גלאי משתנה. -- **קאש תוצאה כוללת** ב-`~/.failproofai/audit-dashboard.json` (mode 0600). מאפשר לוח הבקרה להרנדר מיד בניווט ללא הפעלה מחדש. גם דחוי בקריאה עבור **7-day TTL** — `/audit` כעת נופל דרך למצבו הריק והנושא הנוגע לריצה טרייה. לחץ על `[ re-audit now ]` ליד תחתית הדוח כדי לרענן — re-audit שולח `noCache: true`, כך שהוא עוקף את קאש לכל תמליל ותוביל כל תמליל במקום להחזיר את התוצאה המטמנת; הריצה נוזלת התקדמות דרך רצועה צמודה למעלה וחליפי התוצאה במקום בהצלחה (ללא טעינה מחדש של עמוד; ביקורת מחדש שנכשלה שומרת על הדוח הקודם). +- **מטמון per-transcript** ב-`~/.failproofai/cache/audit/.json` מסומן על ידי `(mtime, size, engineVersion, detectorVersion)` — מבטל באופן אוטומטי כאשר התמליל או הקוד של מדיניות/גלאי משתנים. כל כניסה גם אחסונות חותמת `cachedAt` כמטא נתונים **TTL** (לא חלק מהמפתח של המטמון); כניסות ישנות יותר מ-**7 ימים** מעוכלות בקריאה כך שתוצאות מחיי ארוך לא חיות הערכת גלאים משתנים. +- **מטמון תוצאה שלמה** ב-`~/.failproofai/audit-dashboard.json` (mode 0600). מאפשר ללוח המחוונים להציג באופן מיידי בניווט ללא ריצה מחדש. גם דחוי בקריאה מעבר ל-**7-day TTL** — `/audit` נופל דרך למצב הריק שלו ותוקף ריצה טרייה. לחצו על `[ re-audit now ]` ליד התחתון של הדוח כדי לרענן — ביקורת מחדש שולחת `noCache: true`, אז היא עוקפת את מטמון ה-per-transcript וסורקת מחדש כל תמליל בתור החזרת התוצאה שמטמונה; הריצה זורמת קדימה דרך רצועה דבוקה למעלה וחילופי התוצאה בשנן בהצלחה (לא טעינת דף; ביקורת מחדש נכשלת שומרת את הדוח הקודם). ## הערות -- **אין מוטציה.** הביקורת מחזרת במצב קריאה בלבד. `warn-repeated-tool-calls` דלנו כי sidecar לכל סדרה שלו אחרת היה משונה. -- **מדיניויות זרימת עבודה דלנו.** `require-*-before-stop` מדיניויות אש רק על `Stop` אירועים ו-`execSync` נגד מצב git חי — אין להם פרשנות משמעותית של "מה היה קורה ב-2025", כך שהם לא מופיעים בספירות ביקורת. -- **מדיניויות מותאמות אישית דלנו.** hooks מותאמות אישית שסופק משתמש לא מוחזרות (הם אולי השתנו מאז הסדרה המקורית). \ No newline at end of file +- **ללא מוטציה.** הביקורת מחזירה במצב לקריאה בלבד. `warn-repeated-tool-calls` דולק מכיוון שה-sidecar לכל הפעלה שלו אחרת היה שונה. +- **מדיניויות Workflow דלוקות.** `require-*-before-stop` מדיניויות אש רק על אירועי `Stop` ו-`execSync` כנגד מצב git חי — אין להם פרשנות משמעותית "מה הייתה קורה ב-2025", כך שהם לא מופיעים בספירות ביקורת. +- **מדיניויות מותאמות אישית דולקות.** hooks מותאמים אישית שסופקו על ידי משתמש אינם מחוזרים (הם עשויים להשתנות מאז הפעלה המקורית). \ No newline at end of file diff --git a/docs/he/dashboard.mdx b/docs/he/dashboard.mdx index 798198639..2b66e534d 100644 --- a/docs/he/dashboard.mdx +++ b/docs/he/dashboard.mdx @@ -1,10 +1,10 @@ --- title: לוח בקרה -description: "עקוב אחר הפעלות של סוכנים, בדוק קריאות כלים וניהל מדיניות" +description: "מراقبة جلسات الوكيل، مراجعة استدعاءات الأدوات، وإدارة السياسات" icon: chart-line --- -לוח הבקרה של failproofai היא אפליקציית אינטרנט מקומית לניטור של הפעלות סוכן AI שלך וניהול מדיניות. ראה מה עשו הסוכנים שלך בזמן שלא היית שם. +לוח הבקרה של failproofai הוא יישום אינטרנט מקומי לניטור של جلسات סוכני AI שלך וניהול מדיניויות. ראה מה העשו הסוכנים שלך בזמן שהיית רחוק. --- @@ -14,77 +14,81 @@ icon: chart-line failproofai ``` -נפתח בכתובת `http://localhost:8020`. +נפתח ב-`http://localhost:8020`. -לוח הבקרה קורא ישירות מהמערכת של קבצים - תיקיות פרויקט Claude Code וקובצי תצורה של failproofai. שום דבר לא נשמר לשירות מרחוק. +לוח הבקרה קורא ישירות מקובץ המערכת - תיקיות הפרויקט Claude Code שלך וקובצי הגדרות failproofai. שום דבר לא נכתב לשירות מרחוק. --- -## עמודים +## דפים ### Projects -מפרטת את כל פרויקטי Claude Code, OpenAI Codex, GitHub Copilot CLI _(beta)_, Cursor Agent _(beta)_, OpenCode _(beta)_, Pi _(beta)_ ו-Gemini CLI _(beta)_ שנמצאו במחשב שלך. פרויקטי Claude מתגלים מ-`~/.claude/projects/` (או הנתיב שנקבע על ידי `CLAUDE_PROJECTS_PATH`); פרויקטי Codex מתגלים על ידי סריקה של כל תמלול תחת `~/.codex/sessions///
/*.jsonl` וקיבוץ לפי `cwd` שנרשם ברשומה הראשונה של כל הפעלה; פרויקטי Copilot CLI מתגלים על ידי סריקה של כל `~/.copilot/session-state//workspace.yaml` (ניתן לעדכון דרך `COPILOT_HOME`) וקיבוץ לפי שדה `cwd` שלו; פרויקטי Cursor Agent מתגלים על ידי סריקה של מטא-נתונים לכל הפעלה תחת `~/.cursor/agent-sessions//` (ניתן לעדכון דרך `CURSOR_HOME`, עם `conversations/` ו-`sessions/` הנדונים כחילופיים) עבור סקלר `cwd` ב-`meta.json` / `session.json` / `workspace.yaml`; פרויקטי OpenCode מתגלים על ידי שאילתה של מסד הנתונים SQLite שלו בכתובת `~/.local/share/opencode/opencode.db` דרך `opencode db --format json` (אנו קוראים את הטבלאות `session` ו-`project` ומקבצים לפי `project_id`); פרויקטי Pi מתגלים על ידי סריקה של תמלולי JSONL לכל הפעלה תחת `~/.pi/agent/sessions//_.jsonl` (ניתן לעדכון דרך `PI_SESSIONS_DIR`) וחילוץ ה-`cwd` מהרשומה הראשונה של כל הפעלה; פרויקטי Gemini CLI מתגלים על ידי סריקה של `~/.gemini/tmp//chats/session--.jsonl` (ניתן לעדכון דרך `GEMINI_SESSIONS_DIR`) והחזרת ה-cwd הקנוני מסימן הטקסט `.project_root` הסמוך. פרויקט שהשתמשו בו מספר CLIs מתוצג כשורה אחת עם כל הדגלים התואמים. השתמש בתפריט הנפתח **CLI** מעל הטבלה כדי לסנן לפי סוכן CLI מסוים; כתובת ה-URL שמרת בחירתך כ-`?cli=claude|codex|copilot|cursor|opencode|pi|gemini`. +רשימה של כל פרויקטי Claude Code, OpenAI Codex, GitHub Copilot CLI _(beta)_, Cursor Agent _(beta)_, OpenCode _(beta)_, Pi _(beta)_, ו-Gemini CLI _(beta)_ שנמצאו במחשב שלך. פרויקטי Claude מתגלים מ-`~/.claude/projects/` (או המסלול שנקבע על ידי `CLAUDE_PROJECTS_PATH`); פרויקטי Codex מתגלים על ידי סריקת כל תמלול תחת `~/.codex/sessions///
/*.jsonl` וקיבוץ לפי `cwd` המוקלט בתיעוד הראשון של כל סession; פרויקטי Copilot CLI מתגלים על ידי סריקת `~/.copilot/session-state//workspace.yaml` (הניתן להגדרה דרך `COPILOT_HOME`) וקיבוץ לפי שדה `cwd` שלו; פרויקטי Cursor Agent מתגלים על ידי סריקת מטא-נתונים לכל סession תחת `~/.cursor/agent-sessions//` (הניתן להגדרה דרך `CURSOR_HOME`, עם `conversations/` ו-`sessions/` בדוקים כחלופות) עבור סקלאר `cwd` ב-`meta.json` / `session.json` / `workspace.yaml`; פרויקטי OpenCode מתגלים על ידי שאילתה של מסד נתונים SQLite שלו ב-`~/.local/share/opencode/opencode.db` דרך `opencode db --format json` (אנחנו קוראים את הטבלאות `session` ו-`project` וקיבוץ לפי `project_id`); פרויקטי Pi מתגלים על ידי סריקת תמלולי JSONL לכל סession תחת `~/.pi/agent/sessions//_.jsonl` (הניתן להגדרה דרך `PI_SESSIONS_DIR`) ושימור `cwd` מתיעוד הראשון של כל סession; פרויקטי Gemini CLI מתגלים על ידי סריקת `~/.gemini/tmp//chats/session--.jsonl` (הניתן להגדרה דרך `GEMINI_SESSIONS_DIR`) והחזרת cwd הקנוני מסימן `project_root` הטקסטי הסמוך. פרויקט שהשתמשו בו מספר CLIs מוצג בשורה אחת עם כל התגים המתאימים. השתמש בתפריט הנפתח **CLI** מעל הטבלה כדי לסנן לפי CLI סוכן ספציפי; ה-URL משמר את הבחירה שלך כ-`?cli=claude|codex|copilot|cursor|opencode|pi|gemini`. כל פרויקט מציג: -- שם הפרויקט (הנגזר מנתיב התיקייה) -- דגל CLI — `Claude Code` (כתום), `OpenAI Codex` (סגול), `GitHub Copilot` (כחול), `Cursor Agent` (אזמרגד), `OpenCode` (amber), `Pi` (ורוד), ו/או `Gemini CLI` (sky) -- תאריך של פעילות ההפעלה האחרונה +- שם הפרויקט (מושא מנתיב התיקייה) +- תג CLI — `Claude Code` (כתום), `OpenAI Codex` (סגול), `GitHub Copilot` (כחול), `Cursor Agent` (זמרד), `OpenCode` (ענבר), `Pi` (ורוד), ו/או `Gemini CLI` (שמיים) +- תאריך של פעילות הסession הקודמת -לחץ על פרויקט כדי לראות את ההפעלות שלו. +לחץ על פרויקט כדי לראות את הsessions שלו. ### Sessions -מפרטת את כל ההפעלות בתוך פרויקט. כל הפעלה מציגה: -- מזהה הפעלה +רשימה של כל הsessions בתוך פרויקט. כל סession מציג: +- Session ID - חותמות זמן התחלה וסיום -- מספר קריאות כלים -- ספירת פעילות hook (מדיניות שעלו בתוקף) +- מספר קריאות הכלים +- ספירת פעילות hook (מדיניויות שהופעלו) -השתמש בסינון טווח התאריכים וחיפוש מזהה ההפעלה כדי לצמצם את הרשימה. הפעלות מחולקות לעמודים. +השתמש בסנן טווח התאריך וחיפוש Session ID כדי לצמצם את הרשימה. Sessionsים מחולקים לעמודים. -לחץ על הפעלה כדי לפתוח את מציג ההפעלות. +לחץ על סession כדי לפתוח את מציג הsession. -### Session viewer +### מציג Session -מציג ההפעלות עונה על השאלה המרכזית עבור סוכנים אוטונומיים: מה עשה הסוכן, והאם הוא נשאר על עקבותיו? דגל CLI ליד הכותרת מעיד אם ההפעלה היא תמלול Claude Code, OpenAI Codex, GitHub Copilot CLI, Cursor Agent, OpenCode, Pi או Gemini CLI. הוא מציג ציר הזמן של כל מה שקרה בהפעלה: +מציג הsession עונה על השאלה המרכזית עבור סוכנים אוטונומיים: מה עשה הסוכן, והאם הוא נשאר בעקבות? תג CLI ליד הכותרת מציין האם הsession הוא תמלול Claude Code, OpenAI Codex, GitHub Copilot CLI, Cursor Agent, OpenCode, Pi, או Gemini CLI. הוא מציג ציר הזמן של כל מה שקרה בsession: -- **Messages** - תגובות טקסט של Claude והנחיות משתמש -- **Tool calls** - כל כלי שב-Claude שימש, עם הקלט והפלט שלו -- **Policy activity** - עבור כל קריאת כלים, אילו מדיניות עלו בתוקף ואיזו החלטה הן החזירו +- **Messages** - תגובות טקסט של Claude והודעות משתמש +- **Tool calls** - כל כלי שClaude הפעיל, עם הקלט והפלט שלו +- **Policy activity** - לכל קריאת כלי, אילו מדיניויות הופעלו ואיזו החלטה הן החזירו -סרגל הסטטיסטיקות בחלק העליון מציג משך ההפעלה, סך הקריאות של כלים וסיכום של החלטות hook (ספירות allow / deny / instruct). +סרגל הסטטיסטיקה בחלק העליון מציג משך הsession, סך כל קריאות הכלים, וסיכום החלטות hook (ספירות allow / deny / instruct). -לחץ על כפתור **Download Logs** כדי לייצא את ההפעלה. עבור ההפעלות Claude Code, Codex, Copilot, Cursor, Pi ו-Gemini אתה מקבל את תמלול JSONL על הדיסק המקורי בן לעצמו; עבור OpenCode (שההפעלות שלה חיות ב-SQLite ולא על הדיסק) אתה מקבל מסמך JSON המשקף את הטבלאות `session` / `messages` / `parts` הבסיסיות. +לחץ על כפתור **Download Logs** כדי לייצא את הsession. עבור Sessionsי Claude Code, Codex, Copilot, Cursor, Pi, ו-Gemini אתה מקבל את תמלול JSONL המקורי בדיסק בתים-בתים; עבור OpenCode (שהsessionsים שלה חיים ב-SQLite, לא בדיסק) אתה מקבל מסמך JSON המשקף את הטבלאות `session` / `messages` / `parts` הבסיסיות. ### Audit -דוח מופעל על ידי אישיות כיצד הסוכן שלך למעשה התנהג בהפעלות קודמות. מפעיל את אותה סריקה כמו ממשק השורה של `failproofai audit` אך עובר אותו כעמוד אחד שניתן לשיתוף כרזה + ארבע חלקים מתחת: +דוח מונע בעקבות אישיות איך הסוכן שלך התנהג בפועל על פני sessionsים קודמים. מפעיל את אותה סריקה כמו CLI `failproofai audit` אבל מעניק אותה כפוסטר בן מסך יחיד שניתן לשיתוף + ארבעה חלקים מתחת לקפל: -1. **Poster** — ממלא את הצפייה הראשונה. אזור NPG עצמאי עם סימן failproof_ai + תווית audit · אינדקס ארכיטיפ (`№ NN של 08`) + תאריך audit · ניקוד מספרי (0–100) + כדור דרגה percentile (`top 15%`) · שם הארכיטיפ (אחד מ-`the optimist`, `the cowboy`, `the explorer`, `the goldfish`, `the paranoid architect`, `the precision builder`, `the hammer`, `the ghost`) + רצועת מילים חשובות של 3 · `// רק N% של סוכנים הם ארכיטיפ זה` שורת נדירות · אריח sigil של 8×8 pixel · כותרת תחתונה `audit yours → failproof.ai`. שלושה כפתורי שיתוף יושבים בדיוק מחוץ תיבת הלכידה: `post your archetype` (כוונת X), `share on linkedin`, `download poster`. הלכידה פועלת דרך `html-to-image` כך ש-PNG תואם את ההעברה על המסך pixel-to-pixel (גבולות מקווקוו, מסקת לוגו SVG, הדרגתיות, מדדי פונט — כל זה נשמר). -2. **Strengths** — רשימת שורות רגועה ✓ של התנהגויות שהסוכן שלך כבר עושה נכון, הנגזרות מנתוני האודיט החי (שיעור קריאות כלים נקי, אורך הפעלה ממוצע, אפס דליפות אישור, אפס סערות ניסיון חוזר וכו'). -3. **Quirks** — טבלת מה התגנב, מדורגת לפי השפעה: `time · what slipped + policy that would've caught it · severity pill · recurrence` (חדש / Nx שבוע זה / חוזר). -4. **How to improve** — רשימת שורות רגועה, אחת לכל מדיניות קבועה: שם מדיניות בלבן, תיאור בשורה אחת, פקודת התקנה + כפתור העתקה בצד ימין. כפתור `[install all]` בכותרת הקטע העתק את הפקודה `failproofai policy add a b c …` המשולבת עבור כל מדיניות קבועה. -5. **Come back better** — שתי כרטיסים זה לצד זה. שמאל: קבע תזכורת (בחיר קדנציה `3d` / `7d` / `14d` / `30d`; נשמר דרך `/api/auth/reminder` ברגע שמאומת). ימין: בטל נעילה של יתרונות failproof — `invite a friend` פותח מודאל שלוקח רשימה מופרדת בפסיקומה/רווח/שורה חדשה של דברי בן זוג (מקס 10 לשליחה), POSTs אותם ל-`/api/audit/invite`, שמעביר לשרת ה-api של `POST /v0/invite`. שרת ה-api שולח דוא"ל אחד לכל נמען מ-`invite@failproof.ai` עם המשדר מכובד ו-`Reply-To` שנקבע, כך שהנמען רואה מי זימן אותו והשולח מקבל עותק בתיבת הדואר שלו. משתמשים אנונימיים מועברים דרך `AuthDialog` תחילה כך שדוא"ל השולח ידוע לפני שההזמנות יוצאות. זכאות / מילוי יתרונות היא תעקוב. +1. **Poster** — ממלא את viewport הראשון. אזור PNG בעצמאות המעט עם ה-failproof_ai wordmark + תווית audit · אינדקס archetype (`№ NN of 08`) + תאריך audit · ניקוד מספרי (0–100) + כדור דרגת אחוזון (`top 15%`) · שם archetype (אחד מ-`the optimist`, `the cowboy`, `the explorer`, `the goldfish`, `the paranoid architect`, `the precision builder`, `the hammer`, `the ghost`) + רצועת 3 מילים · `// only N% of agents are this archetype` שורת נדירות · sigil tile של 8×8 פיקסל · `audit yours → failproof.ai` תוחלת. שלושה כפתורי שיתוף יושבים בחוץ מ-capture box: `post your archetype` (X intent), `share on linkedin`, `download poster`. Capture פועל דרך `html-to-image` אז ה-PNG תואם את הרינדור בעל המסך פיקסל-לפיקסל (גבולות מקווקווים, SVG logo mask, gradients, font metrics — הכל משומר). -מונע על ידי זמן הריצה של `failproofai audit` — ראה [Audit CLI](/he/cli/audit) עבור מנוע הסריקה הבסיסי, דגלים נתמכים וחוקיות מטמון לכל תמלול. לוח הבקרה משמר את התוצאה האחרונה בכתובת `~/.failproofai/audit-dashboard.json` (מצב `0600`, חריץ יחיד, הרצות חדשות מחליפות) כך שביקורות חוזרות היא מיידיות; **גם המטמון לכל תמלול וכל התוצאה נדחות בקריאה ברגע שהם קדומים ליותר מ-7 ימים** כך שלוח הבקרה לעולם לא משמר בשקט תוצאה בת שבוע — עבר ה-TTL `/audit` נופל לחנות הריקה שלו ומנחה הרצה טרייה. לחיצה על `[ re-audit now ]` ליד התחתון של הדוח POSTs `/api/audit/run` עם `noCache: true` — re-audit עוקף את המטמון לכל תמלול וסורק מחדש כל תמלול מאפס ולא מחזיר בשקט את התוצאה שנשמרה — ולוח הבקרה שוקל `/api/audit/status` ב-1Hz עד שההרצה מסתיימת; רצועת התקדמות ורודה דביקה מצמודה לחלק העליון של viewport בזמן ההרצה עם טיימר שחלף, והתוצאה הטרייה מחליפה במקום בהצלחה (לא טעינה דף מלאה; אודיט חוזר שנכשל משאיר את הדוח הקודם בשלום). בכישלון הרצועה הופכת לאדום עם עותק מפוצל מ-`RerunError.kind` (`timeout` / `network` / `post_failed`). מצב ריק (אין מטמון או פג תוקף) ומצב אפס הפעלות (מטמון קיים אך הסריקה לא מצאה תמלולים) משטחים בנפרד. +2. **Strengths** — שורת רשימה רגועה ✓ של התנהגויות שהסוכן שלך כבר עושה נכון, מביאות מנתוני audit חיוני (קצב קריאת כלים נקי, ללא דחיפות ישירות לראשי, אפס דלפי אישורים, אפס סערות ניסיון) — כל אחת מופיעה רק כאשר למדיניות הרלוונטית יש רקורד נקי על פני חלון ה-audit. + +3. **Quirks** — טבלה של מה שחלף, מדורגת לפי חומרה: `when · what slipped + the policy that would've caught it · severity pill · seen`, כאשר ה-recurrence קורא `new` (פעם אחת), `N× seen` (2–9 פעמים), או `recurring` (10+). + +4. **How to improve** — שורת רשימה רגועה, אחד לכל מדיניות מקבילה: שם מדיניות בלבן, תיאור בשורה אחת, כפתור פקודת התקנה + העתקה בצד ימין. כותרת הסעיף קוראת `enable all N → projected · ` (הניקוד שהייתה תוקף עם כל התיקון המיושם), וכפתור `[install all]` שלו מעתיק את הפקודה `failproofai policy add a b c …` המשולבת לכל מדיניות מקבילה. + +5. **Come back better** — שתי כרטיסים זה לצד זה. משמאל: הגדרת תזכורת (`3d` / `7d` / `14d` / `30d` בוחר קדנציה; שומר דרך `/api/auth/reminder` ברגע שמאומת). מימין: פתח הטבות failproof — `invite a friend` פותח מודאל שלוקח רשימה מופרדת בפסיק/ספייס/שורה חדשה של אימיילים חברים (מקסימום 10 לשליחה), POSTs להם ל-`/api/audit/invite`, שמעביר לשרת api `POST /v0/invite`. שרת ה-api שולח אימייל אחד לכל מקבל מ-`invite@failproof.ai` עם ה-Cc של השולח וה-`Reply-To` מוגדר, כך שהמקבל רואה מי הזמין אותו והשולח מקבל העתק בתיבת הדואר שלו. משתמשים אנונימיים מעוברים דרך `AuthDialog` תחילה אז אימייל השולח ידוע לפני שההזמנות יוצאות. עמידה / מילוי הטבות הוא מעקב. + +מונעות על ידי `failproofai audit` runtime — ראה [Audit CLI](/he/cli/audit) עבור מנוע הסריקה הבסיס, דגלים נתמכים, ובלתי-משתנים cache לכל תמלול. לוח הבקרה משמור את התוצאה העדכנית ביותר ב-`~/.failproofai/audit-dashboard.json` (מצב `0600`, חריץ יחיד, הריצות חדשות משכתבות) אז הביקורים חוזרים מיידיים; **גם ה-per-transcript וגם כל ה-result caches דוחים על קריאה ברגע שהם קדומים יותר מ-7 ימים** אז לוח הבקרה לעולם לא משרת בשקט תוצאה בן שבועות — עבר ה-TTL `/audit` נופל דרך למצב הריק שלו ומתגבר שריקה טרייה. לחיצה על `[ re-audit now ]` ליד תחתית הדוח POSTs `/api/audit/run` עם `noCache: true` — re-audit עוקף את ה-per-transcript cache ומסרק כל תמלול מהעט ​​במקום בשקט להחזיר את התוצאה המטומנת — ולוח הבקרה סוקר `/api/audit/status` ב-1Hz עד שהריצה תסתיים; רצועת התקדמות ורודה דביקה מתלמדת לחלק העליון של ה-viewport במהלך הריצה עם טיימר זמן חלוף, והתוצאה הטרייה משתלבת במקום בהצלחה (לא טעינת עמוד מלא; re-audit כושל משאיר את הדוח הקודם שלם). בכישלון הרצועה הופכת לאדום עם עותק מחובר ל-`RerunError.kind` (`timeout` / `network` / `post_failed`). מצב ריק (אין cache או פקוח) ומצב sessionsים אפס (cache קיים אך הסריקה לא מצאה תמלולים) מוצגים בנפרד. ### Policies -עמוד בעל שתי כרטיסיות לניהול מדיניות וביקורת פעילות. +דף שתי-טאב לניהול מדיניויות ובדיקת פעילות. - - בחר מספר CLIs של סוכן שעליו failproofai מגן מלוח יחיד — Claude Code, OpenAI Codex, GitHub Copilot, Cursor Agent, OpenCode, Pi ו-Gemini CLI לכולם יש שורה עם מצב התקנה (`Active` / `Detected` / `Inactive`), נתיב הגדרות ההיקף של משתמש וניגודיות בצבע מותג. סמן או בטל סימון של CLIs שברצונך וכולל `Apply changes` כדי להתקין/להסיר את ההבדל בשלב אחד. CLIs שהבינארי שלהם מתגלה ב-PATH מסומנים מראש. - - הפעל משקל מדיניות בודדות או כבויות בלחיצה יחידה (כותב ל-`~/.failproofai/policies-config.json` — משותף בכל CLI מותקן) - - הרחב מדיניות כדי להגדיר את הפרמטרים שלה (עבור מדיניות התומכת ב-`policyParams`) - - הגדר נתיב קובץ מדיניות מותאם + - בחר באופן מרובה איזו CLIs סוכן failproofai מגנה מפנל יחיד — Claude Code, OpenAI Codex, GitHub Copilot, Cursor Agent, OpenCode, Pi, ו-Gemini CLI כולם יש שורה עם סטטוס התקנה (`Active` / `Detected` / `Inactive`), נתיב הגדרות ה-user-scope, וכן נקודה צבעי-מותג. סמן או בטל סימון CLIs שאתה רוצה ולחץ על `Apply changes` כדי להתקין/להסיר את ההבדל בשלב אחד. CLIs שהבינארי שלהם מתגלה ב-PATH מסומנים מראש. + - החליפו מדיניויות בודדות או כיבוי עם לחיצה יחידה (כתיבה ל-`~/.failproofai/policies-config.json` — משותף על פני כל CLI שהותקן) + - הרחבו מדיניות כדי להגדיר את הפרמטרים שלה (עבור מדיניויות התומכות ב-`policyParams`) + - הגדר נתיב קובץ מדיניויות מותאם - - היסטוריה מלאה מחולקת לעמודים של כל אירוע hook שירה בכל ההפעלות - - סנן לפי החלטה, סוג אירוע, CLI (Claude Code / OpenAI Codex / GitHub Copilot _(beta)_ / Cursor Agent _(beta)_ / OpenCode _(beta)_ / Pi _(beta)_ / Gemini CLI _(beta)_), שם מדיניות או מזהה הפעלה - - כל שורה מציגה: חותמת זמן, שם מדיניות, החלטה, דגל CLI (כתום = Claude Code, סגול = OpenAI Codex, כחול = GitHub Copilot, אזמרגד = Cursor Agent, amber = OpenCode, ורוד = Pi, sky = Gemini CLI), שם כלים, מזהה הפעלה וסיבת החלטות deny/instruct - - לחץ על מזהה הפעלה כדי לפתוח את התמלול שלה — הצופה מזהה באופן אוטומטי איזה CLI ירה את ה-hook (Claude `~/.claude/projects/…`, Codex `~/.codex/sessions/…`, Copilot CLI `~/.copilot/session-state//events.jsonl`, Cursor Agent `~/.cursor/agent-sessions//events.jsonl`, OpenCode `~/.local/share/opencode/opencode.db`, Pi `~/.pi/agent/sessions//.jsonl`, Gemini CLI `~/.gemini/tmp//chats/.jsonl`) ועובד את דגל CLI התואם בכותרת + - היסטוריה מלאה מחולקת לעמודים של כל אירוע hook שהופעל על פני כל הsessions + - סנן לפי החלטה, סוג אירוע, CLI (Claude Code / OpenAI Codex / GitHub Copilot _(beta)_ / Cursor Agent _(beta)_ / OpenCode _(beta)_ / Pi _(beta)_ / Gemini CLI _(beta)_), שם מדיניות, או Session ID + - כל שורה מציגה: חותמת זמן, שם מדיניות, החלטה, תג CLI (כתום = Claude Code, סגול = OpenAI Codex, כחול = GitHub Copilot, זמרד = Cursor Agent, ענבר = OpenCode, ורוד = Pi, שמיים = Gemini CLI), שם כלי, Session ID, והסיבה להחלטות deny/instruct + - לחץ על Session ID כדי לפתוח את התמלול שלו — מציג אוטו-מזהה איזה CLI הדליק את ה-hook (Claude `~/.claude/projects/…`, Codex `~/.codex/sessions/…`, Copilot CLI `~/.copilot/session-state//events.jsonl`, Cursor Agent `~/.cursor/agent-sessions//events.jsonl`, OpenCode `~/.local/share/opencode/opencode.db`, Pi `~/.pi/agent/sessions//.jsonl`, Gemini CLI `~/.gemini/tmp//chats/.jsonl`) וממשיך את תג CLI המתאים בכותרת @@ -92,13 +96,13 @@ failproofai ## Auto-refresh -לוח הבקרה יש הפעל/כבה auto-refresh בניווט העליון. כשהוא מופעל, העמוד הנוכחי מתרענן תקופתית כדי להציג הפעלות חדשות ופעילות מדיניות כאשר הם מופיעים. חיוני לניטור הפעלות סוכן אוטונומיות ארוכות. +לוח הבקרה יש תיאום toggle auto-refresh בניווט העליון. כאשר הוא מופעל, הדף הנוכחי מתרענן בתדירות כדי להציג sessionsים חדשים ופעילות מדיניות כאשר הם מופיעים. חיוני לניטור של sessionsים סוכנים אוטונומיים ארוכי משך. --- -## השבתת עמודים +## השבתת דפים -אם אתה זקוק רק לחלקים מסוימים של לוח הבקרה, הגדר `FAILPROOFAI_DISABLE_PAGES` לרשימה מופרדת בפסיקומה של שמות עמודים: +אם אתה צריך רק חלקים מסוימים של לוח הבקרה, הגדר `FAILPROOFAI_DISABLE_PAGES` לרשימה מופרדת בפסיק של שמות דפים: ```bash FAILPROOFAI_DISABLE_PAGES=policies failproofai @@ -110,7 +114,7 @@ FAILPROOFAI_DISABLE_PAGES=policies failproofai ## הגדרת נתיב הפרויקטים -כברירת מחדל, לוח הבקרה קורא מספריית פרויקטי Claude Code הסטנדרטית. עקוף אותה עבור הגדרות מותאמות: +כברירת מחדל, לוח הבקרה קורא מתיקיית הפרויקטים הסטנדרטית Claude Code. עקוף אותו עבור הגדרות מותאמות: ```bash CLAUDE_PROJECTS_PATH=/custom/path/to/projects failproofai @@ -118,32 +122,32 @@ CLAUDE_PROJECTS_PATH=/custom/path/to/projects failproofai --- -## גישה מהוסט non-localhost +## הגישה מhoست non-localhost -בעת הפעלת לוח הבקרה במצב **dev** (`npm run dev`) והגישה אליו מ-hostname אחר מאשר `localhost` - למשל, תחום מותאם, IP מרחוק או כתובת URL מנוצלת - ייתכן שתראה אזהרה כמו: +כאשר בפעלון לוח הבקרה בעבודה **dev mode** (`npm run dev`) וגישה אליו משם hostname שאינו `localhost` - לדוגמה, תחום מותאם, IP מרחוק, או URL tunneled - אתה עשוי לראות אזהרה כמו: ```text ⚠ Blocked cross-origin request to Next.js dev resource /_next/webpack-hmr from "dashboard.example.com". ``` -זה Next.js חוסם גישה חוצה-מקור ל-HMR שלו (hot module reload) websocket, שהיא תכונה dev-only. כדי לאפשר לכותב המוזבן שלך, השתמש בדגל `--allowed-origins`: +זה Next.js חוסם גישה cross-origin לחוט HMR (hot module reload) שלו, שזה תכונה dev-only. כדי לתת אפשרות לhoust שלך, השתמש בדגל `--allowed-origins`: ```bash npm run dev -- --allowed-origins dashboard.example.com ``` -עבור מספר מארחים או כתובות IP, מסור רשימה מופרדת בפסיקומה: +עבור מספר hostsים או IPs, העבור רשימה מופרדת בפסיק: ```bash npm run dev -- --allowed-origins dashboard.example.com,192.168.1.5 ``` -אתה יכול גם להגדיר את משתנה הסביבה `FAILPROOFAI_ALLOWED_DEV_ORIGINS` במקום: +אתה גם יכול להגדיר את משתנה הסביבה `FAILPROOFAI_ALLOWED_DEV_ORIGINS` במקום: ```bash FAILPROOFAI_ALLOWED_DEV_ORIGINS=dashboard.example.com npm run dev ``` -זה חל רק על מצב dev. בעת הרצת `failproofai` (מצב production), אין websocket HMR ואין בעיית משאב dev חוצה-מקור. +זה חל רק ל-dev mode. כאשר רצים `failproofai` (production mode), אין HMR websocket ואין בעיה cross-origin dev resource. \ No newline at end of file diff --git a/docs/hi/cli/audit.mdx b/docs/hi/cli/audit.mdx index 8301b6bb0..cc83921c5 100644 --- a/docs/hi/cli/audit.mdx +++ b/docs/hi/cli/audit.mdx @@ -1,56 +1,87 @@ --- -title: पिछले सत्रों का ऑडिट (बीटा) -description: "जाँचें कि एजेंट ने अतीत के ट्रांसक्रिप्ट में कितनी बार अव्यर्थ या जोखिम भरे काम किए" +title: पिछले सेशन ऑडिट करें (बीटा) +description: "पिछले ट्रांसक्रिप्ट्स में देखें कि एजेंट कितनी बार बेकार या जोखिम भरे काम करता था" --- - **बीटा फीचर।** ऑडिट बीटा के रूप में जारी किया जा रहा है जबकि हम प्रारंभिक प्रतिक्रिया एकत्र कर रहे हैं। - अगली स्थिर रिलीज़ से पहले डिटेक्टर कैटलॉग और रिपोर्ट फॉर्मेट बदल सकते हैं। यदि कुछ ग़लत दिखे तो कृपया एक इश्यू खोलें। + **बीटा फीचर।** ऑडिट बीटा के रूप में शिप किया जा रहा है जबकि हम शुरुआती फीडबैक एकत्र करते हैं। + डिटेक्टर कैटलॉग और रिपोर्ट फॉर्मेट अगले स्थिर संस्करण से पहले बदल सकते हैं। कृपया एक issue खोलें यदि कुछ गलत लगे। -ऑडिट अब **डैशबोर्ड के /audit पृष्ठ** के रूप में उपलब्ध है, CLI सबकमांड के रूप में नहीं। इसे डैशबोर्ड नेविगेशन बार से खोलें (Policies और Projects के बीच), या `failproofai` को लोकली चलाते समय सीधे `http://localhost:8020/audit` पर जाएँ। +ऑडिट आपके पिछले एजेंट-CLI ट्रांसक्रिप्ट्स को failproofai के policy इंजन के माध्यम से फिर से चलाता है और **`/audit` डैशबोर्ड पेज** पर एक साझा, विजुअल रिपोर्ट प्रदान करता है — आपके एजेंट का आर्कटाइप, एक 0–100 स्कोर, और बिल्कुल कौन सी पॉलिसीज क्या पकड़ सकती थीं। -```bash -failproofai # डैशबोर्ड खोलें, फिर "Audit" पर क्लिक करें +## इसे चलाएं + +तीन तरीके — सभी एक जैसी `/audit` रिपोर्ट पर पहुंचते हैं। + + + +```bash npx (इंस्टॉल न करें) +npx -y failproofai audit +``` + +```bash failproofai audit +failproofai audit ``` -डैशबोर्ड इस मशीन पर पिछले एजेंट CLI ट्रांसक्रिप्ट स्कैन करता है (Claude Code, Codex, Copilot, Cursor, OpenCode, Pi, Gemini) और रिपोर्ट करता है कि एजेंट ने failproofai को रोकने के लिए बनाई गई चीजें कितनी बार कीं — env-var चेक, force push, अनावश्यक `cd ` उपसर्ग, sleep-polling लूप, अभी-संपादित फ़ाइलों को फिर से पढ़ना, और अधिक। +```bash failproofai (डैशबोर्ड) +failproofai +``` + + + + + + `npx -y failproofai audit` failproofai को फेच करता है, स्कैन चलाता है, और आपके लिए डैशबोर्ड खोलता है — पहले कुछ भी इंस्टॉल करने की जरूरत नहीं है। + + + `failproofai audit` आपके टर्मिनल में स्कैन चलाता है, फिर जब यह समाप्त हो तो स्वचालित रूप से `localhost:8020/audit` खोलता है। + + + `failproofai` चलाएं और नेवबार में **Audit** पर क्लिक करें (Policies और Projects के बीच), या सीधे `/audit` खोलें। + + + + + उपयोग देखने के लिए `failproofai audit -h` (या `--help`) चलाएं। ऑडिट **पूरी तरह ऑफलाइन** चलता है — कोई अकाउंट या नेटवर्क आवश्यक नहीं है — और डैशबोर्ड तब तक सेवा प्रदान करता रहता है जब तक आप इसे `Ctrl+C` से नहीं रोकते। + + +डैशबोर्ड इस मशीन पर पिछले एजेंट CLI ट्रांसक्रिप्ट्स को स्कैन करता है (Claude Code, Codex, Copilot, Cursor, OpenCode, Pi, Gemini) और रिपोर्ट करता है कि एजेंट कितनी बार ऐसी चीजें करता था जिन्हें failproofai रोकने के लिए बनाया गया है — env-var चेक्स, force pushes, अनावश्यक `cd ` प्रीफिक्स, sleep-polling loops, बस अभी edit की गई फाइलों को दोबारा पढ़ना, और अधिक। -प्रत्येक ट्रांसक्रिप्ट के लिए, हर tool-use इवेंट को 39 बिल्ट-इन पॉलिसीज़ **और** 8 audit-only डिटेक्टरों के माध्यम से फिर से चलाया जाता है जो ऐसे पैटर्न पकड़ते हैं जो अभी तक रनटाइम पॉलिसीज़ द्वारा कवर नहीं किए गए हैं। गणना सभी सत्रों में प्रति पॉलिसी / डिटेक्टर एकत्रित की जाती है। +प्रत्येक ट्रांसक्रिप्ट के लिए, हर tool-use इवेंट को 39 बिल्ट-इन पॉलिसीज **और** 8 ऑडिट-केवल डिटेक्टर्स के माध्यम से दोबारा चलाया जाता है जो रनटाइम पॉलिसीज द्वारा अभी तक कवर न किए गए पैटर्न को पकड़ते हैं। गिनती को सभी सेशन्स में प्रति पॉलिसी / डिटेक्टर एकत्र किया जाता है। -## आपको क्या मिलता है +## आप क्या पाते हैं -`/audit` पृष्ठ छः अनुभागों से बना है: +`/audit` पेज एक सिंगल-स्क्रीन, साझा **पोस्टर** है जिसके बाद चार नीचे-के-गुंजन सेक्शन हैं: -1. **पहचान** — आपके एजेंट को 8 आर्कटाइप में से एक में वर्गीकृत किया गया (`optimist`, `cowboy`, `explorer`, `goldfish`, `paranoid architect`, `precision builder`, `hammer`, `ghost`) हर ऑडिट किए गए ट्रांसक्रिप्ट के भारित सिग्नल के आधार पर। -2. **शक्तियाँ** — स्कैन से प्राप्त वास्तविक संख्याएँ (clean-call %, "0 credential leaks", आदि) प्रासंगिक sanitize पॉलिसीज़ पर आधारित। -3. **स्कोर** — 0-100 S/A/B/C/D/F बैंड्स के साथ और प्रत्येक अनुशंसित पॉलिसी सक्षम होने पर अनुमानित सुधार। -4. **निष्कर्ष** — प्रति-पॉलिसी कार्ड जो दिखाते हैं कि क्या हुआ, लागत, पकड़ा गया साक्ष्य, और सटीक `failproofai policy add ` लाइव-टाइम बिल्ट-इन सक्षम करने के लिए। -5. **अनुशंसित पॉलिसीज़** — एकत्रित इंस्टॉल सूची एक-शॉट `failproofai policies --install` कमांड के साथ। -6. **पुनः-ऑडिट अनुस्मारक** — "बेहतर होकर वापस आएँ।" API-सर्वर के माध्यम से 7-दिन का ईमेल अनुस्मारक सेट करें (साइन-इन की आवश्यकता है; [`failproofai auth`](/hi/cli/auth) देखें)। +1. **पोस्टर** — एक नज़र में आपके एजेंट की पहचान: इसका **आर्कटाइप** (8 में से एक — `optimist`, `cowboy`, `explorer`, `goldfish`, `paranoid architect`, `precision builder`, `hammer`, `ghost`), इसके व्यक्तित्व कीवर्ड्स, वह आर्कटाइप कितना दुर्लभ है, और एक **0–100 स्कोर** एक टियर बैंड के साथ (`S` नीचे `bottom tier` तक)। साझा करने के लिए बनाया गया — X या LinkedIn पर पोस्ट करें, या इसे PNG के रूप में डाउनलोड करें। +2. **`// strengths`** — आपके एजेंट पहले से क्या अच्छी तरह करते हैं, स्कैन से वास्तविक संख्याओं के रूप में (उदा. clean-tool-call %, `0` push-to-main प्रयास), केवल जहां प्रासंगिक पॉलिसी का एक स्वच्छ रिकॉर्ड है। +3. **`// quirks`** — जो छूट गया: failproofai पकड़ सकता था ऐसे व्यवहारों की रैंक की गई तालिका — *कब* यह अंतिम बार हुआ, *क्या छूटा* (और बिल्ट-इन जो इसे ब्लॉक कर सकता था), इसकी *गंभीरता*, और कितनी बार यह *देखा गया* (`new` / `recurring` / `N× seen`)। +4. **`// how to improve`** — प्रस्तावित फिक्स सूची: एक पंक्ति प्रति पॉलिसी कॉपी-पेस्ट `failproofai policy add ` के साथ, प्लस एक **सभी को इंस्टॉल करें** बटन जो हर सिफारिश को एक बार सक्षम करता है और आपके **प्रोजेक्टेड स्कोर** दिखाता है यदि आप ऐसा करते। +5. **`// come back better`** — आदत बनाएं: एक पुनः-ऑडिट ईमेल **रिमाइंडर** सेट करें (`3d` / `7d` / `14d` / `30d`) या अभी पुनः-ऑडिट करें, और **एक दोस्त को आमंत्रित करें** अपना स्वयं का ऑडिट चलाने के लिए (failproof.ai से भेजा गया, आपको Cc किया गया)। रिमाइंडर्स और आमंत्रण साइन-इन की आवश्यकता है — [`failproofai auth`](/hi/cli/auth) देखें। -## Audit-only डिटेक्टर +## ऑडिट-केवल डिटेक्टर्स -ये "मूर्खतापूर्ण व्यवहार" पैटर्न का पता लगाते हैं जो (अभी तक) रीयल-टाइम में लागू नहीं किए जाते हैं। वे केवल ऑडिट के दौरान चलते हैं और कभी भी लाइव tool call को ब्लॉक नहीं करते हैं। +ये बेवकूफाना व्यवहार पैटर्न का पता लगाते हैं जो (अभी तक) वास्तविक समय में लागू नहीं किए जाते हैं। वे केवल ऑडिट के दौरान चलते हैं और कभी भी लाइव tool कॉल को ब्लॉक नहीं करते। | डिटेक्टर | यह क्या गिनता है | |---|---| -| `redundant-cd-cwd` | Bash कमांड जो `cd && …` से शुरू होते हैं भले ही कमांड पहले से ही `cwd` में चलते हों। | -| `prefer-edit-over-read-cat` | एकल स्रोत फ़ाइल पर `cat`/`head`/`tail`/`less`/`more` — `Read` टूल का उपयोग करें। | -| `prefer-edit-over-sed-awk` | `sed -i` / `awk … > file` इन-प्लेस एडिट्स — `Edit` टूल का उपयोग करें। | -| `prefer-write-over-heredoc` | Heredoc / मल्टी-लाइन `echo > file` फ़ाइलें लिखना — `Write` टूल का उपयोग करें। | -| `sleep-polling-loop` | लंबे `sleep N` (≥ 30s) या `while …; sleep …; done` polling लूप। | -| `find-from-root` | `find /`, `find /home`, `find /usr`, आदि — `cwd` तक स्कोप करें। | -| `git-commit-no-verify` | `git commit … --no-verify` / `-n`, हुक्स को छोड़ना। | -| `reread-after-edit` | एक फ़ाइल का `Read` जो उसी सत्र में अभी-अभी `Edit`/`Write` किया गया था। | +| `redundant-cd-cwd` | Bash कमांड्स जो `cd && …` से शुरू होती हैं भले ही कमांड्स पहले से ही `cwd` में चलती हैं। | +| `prefer-edit-over-read-cat` | एक एकल स्रोत फाइल पर `cat`/`head`/`tail`/`less`/`more` — `Read` टूल का उपयोग करें। | +| `prefer-edit-over-sed-awk` | `sed -i` / `awk … > file` स्थान पर संपादन — `Edit` टूल का उपयोग करें। | +| `prefer-write-over-heredoc` | फाइलें लिखने वाली Heredoc / बहु-लाइन `echo > file` — `Write` टूल का उपयोग करें। | +| `sleep-polling-loop` | लंबी `sleep N` (≥ 30s) या `while …; sleep …; done` polling loops। | +| `find-from-root` | `find /`, `find /home`, `find /usr`, आदि। — `cwd` के लिए स्कोप करें। | +| `git-commit-no-verify` | `git commit … --no-verify` / `-n`, हुक्स को छोड़कर। | +| `reread-after-edit` | एक फाइल का `Read` जो सेम सेशन में अभी `Edit`/`Write` था। | -## कैश +## कैशेस -- **प्रति-ट्रांसक्रिप्ट कैश** `~/.failproofai/cache/audit/.json` पर `(mtime, size, engineVersion, detectorVersion)` द्वारा कुंजीकृत — जब ट्रांसक्रिप्ट या पॉलिसी/डिटेक्टर कोड बदलते हैं तो स्वचालित रूप से अमान्य हो जाता है। प्रत्येक प्रविष्टि एक `cachedAt` टाइमस्टैम्प भी स्टोर करती है **TTL मेटाडेटा** के रूप में (कैश कुंजी का हिस्सा नहीं); **7 दिन** से पुरानी प्रविष्टियाँ पढ़ने पर अस्वीकृत कर दी जाती हैं ताकि दीर्घजीवी परिणाम विकसित डिटेक्टर इरादों को पछाड़ न सकें। -- **संपूर्ण-परिणाम कैश** `~/.failproofai/audit-dashboard.json` पर (mode 0600)। डैशबोर्ड को पुनः चलाए बिना नेविगेशन पर तुरंत रेंडर करने देता है। **7-दिन TTL** के बाद भी पढ़ने पर अस्वीकृत कर दिया जाता है — `/audit` फिर अपनी खाली स्थिति में गिरता है और ताज़ा रन के लिए प्रेरित करता है। रिपोर्ट के निचले हिस्से के पास `[ re-audit now ]` पर क्लिक करें ताज़ा करने के लिए — पुनः-ऑडिट `noCache: true` भेजता है, इसलिए यह प्रति-ट्रांसक्रिप्ट कैश को बाईपास करता है और कैश किए गए परिणाम के बजाय हर ट्रांसक्रिप्ट को फिर से स्कैन करता है; रन स्टिकी शीर्ष स्ट्रिप के माध्यम से प्रगति स्ट्रीम करता है और सफलता पर परिणाम को जगह में बदल देता है (कोई पृष्ठ रीलोड नहीं; एक विफल पुनः-ऑडिट पिछली रिपोर्ट रखता है)। +- **प्रति-ट्रांसक्रिप्ट कैश** `~/.failproofai/cache/audit/.json` पर `(mtime, size, engineVersion, detectorVersion)` द्वारा कुंजीकृत — स्वचालित रूप से अमान्य हो जाता है जब ट्रांसक्रिप्ट या पॉलिसी/डिटेक्टर कोड बदलता है। प्रत्येक प्रविष्टि एक `cachedAt` टाइमस्टैम्प भी स्टोर करती है **TTL मेटाडेटा** के रूप में (कैश कुंजी का हिस्सा नहीं); **7 दिन** से पुरानी प्रविष्टियों को पढ़ने पर अस्वीकार किया जाता है ताकि लंबे समय तक चलने वाले परिणाम विकसित होने वाले डिटेक्टर इरादे को आगे न जाएं। +- **पूर्ण-परिणाम कैश** `~/.failproofai/audit-dashboard.json` पर (मोड 0600)। डैशबोर्ड को पुनः-चलाए बिना नेविगेशन पर तुरंत रेंडर करने देता है। **7-दिन TTL** के बाद पढ़ने पर भी अस्वीकार किया जाता है — `/audit` फिर अपनी खाली स्थिति पर गिरता है और एक नया चलाने के लिए संकेत देता है। रिपोर्ट के निचले भाग के पास `[ re-audit now ]` पर क्लिक करें ताज़ा करने के लिए — re-audit `noCache: true` भेजता है, इसलिए यह प्रति-ट्रांसक्रिप्ट कैश को बायपास करता है और कैश किए गए परिणाम को लौटाने के बजाय हर ट्रांसक्रिप्ट को दोबारा स्कैन करता है; चलाना एक स्टिकी शीर्ष पट्टी के माध्यम से प्रगति स्ट्रीम करता है और सफलता पर परिणाम को स्थान पर स्वैप करता है (कोई पेज रीलोड नहीं; एक विफल पुनः-ऑडिट पिछली रिपोर्ट रखता है)। ## नोट्स -- **कोई परिवर्तन नहीं।** ऑडिट केवल-पढ़ने की मोड में फिर से चलाया जाता है। `warn-repeated-tool-calls` को छोड़ दिया जाता है क्योंकि इसका प्रति-सत्र साइडकार अन्यथा संशोधित हो जाएगा। -- **वर्कफ़्लो पॉलिसीज़ छोड़ दी गई।** `require-*-before-stop` पॉलिसीज़ केवल `Stop` इवेंट्स और लाइव git स्थिति के विरुद्ध `execSync` पर आग लगाती हैं — उनका कोई अर्थपूर्ण "2025 में क्या होता" व्याख्या नहीं है, इसलिए वे ऑडिट गणना में प्रदर्शित नहीं होती हैं। -- **कस्टम पॉलिसीज़ छोड़ दी गई।** उपयोगकर्ता-आपूर्ति किए गए कस्टम हुक्स को फिर से चलाया नहीं जाता है (वे मूल सत्र के बाद से बदल गए हो सकते हैं)। \ No newline at end of file +- **कोई परिवर्तन नहीं।** ऑडिट केवल-पढ़ने मोड में फिर से चलता है। `warn-repeated-tool-calls` को छोड़ दिया जाता है क्योंकि इसका प्रति-सेशन साइडकार अन्यथा संशोधित होगा। +- **वर्कफ्लो पॉलिसीज छोड़ी गई।** `require-*-before-stop` पॉलिसीज केवल `Stop` इवेंट्स और लाइव गिट स्थिति के विरुद्ध `execSync` पर फायर करती हैं — उनका कोई सार्थक 2025 में क्या हुआ होता की व्याख्या नहीं है, इसलिए वे ऑडिट गिनती में दिखाई नहीं देते हैं। +- **कस्टम पॉलिसीज छोड़ी गई।** यूजर-आपूर्ति कस्टम हुक्स को फिर से नहीं चलाया जाता (वे मूल सेशन के बाद से बदल गए हो सकते हैं)। \ No newline at end of file diff --git a/docs/hi/dashboard.mdx b/docs/hi/dashboard.mdx index f4c4a0817..9a360b1b1 100644 --- a/docs/hi/dashboard.mdx +++ b/docs/hi/dashboard.mdx @@ -1,10 +1,11 @@ --- +--- title: डैशबोर्ड -description: "एजेंट सेशन की निगरानी करें, टूल कॉल की समीक्षा करें, और नीतियों का प्रबंधन करें" +description: "एजेंट सेशन की निगरानी करें, टूल कॉल की समीक्षा करें, और नीतियों को प्रबंधित करें" icon: chart-line --- -failproofai डैशबोर्ड आपके AI एजेंट सेशन की निगरानी करने और नीतियों का प्रबंधन करने के लिए एक स्थानीय वेब अनुप्रयोग है। देखें कि आपके एजेंट आपके दूर रहते समय क्या करते थे। +failproofai डैशबोर्ड आपके AI एजेंट सेशन की निगरानी और नीतियों को प्रबंधित करने के लिए एक स्थानीय वेब एप्लिकेशन है। देखें कि आपके एजेंट आपके दूर रहते हुए क्या कर रहे थे। --- @@ -16,95 +17,95 @@ failproofai `http://localhost:8020` पर खुलता है। -डैशबोर्ड सीधे फाइलसिस्टम से पढ़ता है - आपके Claude Code प्रोजेक्ट फ़ोल्डर और failproofai कॉन्फ़िगरेशन फ़ाइलें। कुछ भी दूरस्थ सेवा को नहीं लिखा जाता है। +डैशबोर्ड सीधे फाइलसिस्टम से पढ़ता है - आपके Claude Code प्रोजेक्ट फोल्डर और failproofai कॉन्फ़िग फाइलें। कुछ भी दूरस्थ सेवा में नहीं लिखा जाता है। --- ## पृष्ठ -### प्रोजेक्ट +### प्रोजेक्ट्स -आपकी मशीन पर मिले सभी Claude Code, OpenAI Codex, GitHub Copilot CLI _(beta)_, Cursor Agent _(beta)_, OpenCode _(beta)_, Pi _(beta)_, और Gemini CLI _(beta)_ प्रोजेक्ट को सूचीबद्ध करता है। Claude प्रोजेक्ट `~/.claude/projects/` से खोजे जाते हैं (या `CLAUDE_PROJECTS_PATH` द्वारा सेट किए गए पथ से); Codex प्रोजेक्ट `~/.codex/sessions///
/*.jsonl` के तहत हर ट्रांसक्रिप्ट को स्कैन करके और प्रत्येक सेशन के पहले रिकॉर्ड में दर्ज `cwd` द्वारा समूहित करके खोजे जाते हैं; Copilot CLI प्रोजेक्ट प्रत्येक `~/.copilot/session-state//workspace.yaml` को स्कैन करके (`COPILOT_HOME` के माध्यम से कॉन्फ़िगर किया जा सकता है) और इसके `cwd` फील्ड द्वारा समूहित करके खोजे जाते हैं; Cursor Agent प्रोजेक्ट `~/.cursor/agent-sessions//` के तहत प्रति-सेशन मेटाडेटा को स्कैन करके (`CURSOR_HOME` के माध्यम से कॉन्फ़िगर किया जा सकता है, `conversations/` और `sessions/` फॉलबैक के रूप में जांचे जाते हैं) `meta.json` / `session.json` / `workspace.yaml` में एक `cwd` स्केलर के लिए खोजे जाते हैं; OpenCode प्रोजेक्ट `~/.local/share/opencode/opencode.db` पर SQLite DB को क्वेरी करके (`opencode db --format json` के माध्यम से) खोजे जाते हैं (हम `session` और `project` टेबल पढ़ते हैं और `project_id` द्वारा समूहित करते हैं); Pi प्रोजेक्ट `~/.pi/agent/sessions//_.jsonl` के तहत प्रति-सेशन JSONL ट्रांसक्रिप्ट को स्कैन करके (`PI_SESSIONS_DIR` के माध्यम से कॉन्फ़िगर किया जा सकता है) और प्रत्येक सेशन के पहले रिकॉर्ड से `cwd` खींचकर खोजे जाते हैं; Gemini CLI प्रोजेक्ट `~/.gemini/tmp//chats/session--.jsonl` को स्कैन करके (`GEMINI_SESSIONS_DIR` के माध्यम से कॉन्फ़िगर किया जा सकता है) और सहायक `.project_root` टेक्स्ट मार्कर से canonical cwd को पुनः प्राप्त करके खोजे जाते हैं। एक प्रोजेक्ट जिसे कई CLI द्वारा उपयोग किया गया है, सभी मिलान बैज के साथ एक एकल पंक्ति के रूप में प्रदर्शित होता है। एक विशिष्ट एजेंट CLI द्वारा फ़िल्टर करने के लिए टेबल के ऊपर **CLI** ड्रॉपडाउन का उपयोग करें; URL आपकी चयन को `?cli=claude|codex|copilot|cursor|opencode|pi|gemini` के रूप में संरक्षित करता है। +आपकी मशीन पर मिले सभी Claude Code, OpenAI Codex, GitHub Copilot CLI _(बीटा)_, Cursor Agent _(बीटा)_, OpenCode _(बीटा)_, Pi _(बीटा)_, और Gemini CLI _(बीटा)_ प्रोजेक्ट की सूची। Claude प्रोजेक्ट `~/.claude/projects/` से खोजे जाते हैं (या `CLAUDE_PROJECTS_PATH` द्वारा सेट किए गए पथ से); Codex प्रोजेक्ट `~/.codex/sessions///
/*.jsonl` के तहत प्रत्येक ट्रांस्क्रिप्ट को स्कैन करके और प्रत्येक सेशन के पहले रिकॉर्ड में दर्ज `cwd` द्वारा समूहीकृत करके खोजे जाते हैं; Copilot CLI प्रोजेक्ट प्रत्येक `~/.copilot/session-state//workspace.yaml` को स्कैन करके (`COPILOT_HOME` के माध्यम से कॉन्फ़िगर करने योग्य) और इसके `cwd` फ़ील्ड द्वारा समूहीकृत करके खोजे जाते हैं; Cursor Agent प्रोजेक्ट `~/.cursor/agent-sessions//` के तहत प्रति-सेशन मेटाडेटा को स्कैन करके खोजे जाते हैं (`CURSOR_HOME` के माध्यम से कॉन्फ़िगर करने योग्य, `conversations/` और `sessions/` फॉलबैक के रूप में जांचे जाते हैं) `meta.json` / `session.json` / `workspace.yaml` में एक `cwd` स्केलर के लिए; OpenCode प्रोजेक्ट `~/.local/share/opencode/opencode.db` पर इसके SQLite DB को `opencode db --format json` के माध्यम से क्वेरी करके खोजे जाते हैं (हम `session` और `project` टेबल पढ़ते हैं और `project_id` द्वारा समूहीकृत करते हैं); Pi प्रोजेक्ट `~/.pi/agent/sessions//_.jsonl` के तहत प्रति-सेशन JSONL ट्रांस्क्रिप्ट को स्कैन करके खोजे जाते हैं (`PI_SESSIONS_DIR` के माध्यम से कॉन्फ़िगर करने योग्य) और प्रत्येक सेशन के पहले रिकॉर्ड से `cwd` खींचते हैं; Gemini CLI प्रोजेक्ट `~/.gemini/tmp//chats/session--.jsonl` को स्कैन करके खोजे जाते हैं (`GEMINI_SESSIONS_DIR` के माध्यम से कॉन्फ़िगर करने योग्य) और सहोदर `.project_root` टेक्स्ट मार्कर से विहित cwd को पुनः प्राप्त करते हैं। एक प्रोजेक्ट जो कई CLIs द्वारा उपयोग किया गया है एक एकल पंक्ति के रूप में सभी मिलान बैज के साथ प्रदर्शित होता है। एक विशिष्ट एजेंट CLI द्वारा फ़िल्टर करने के लिए तालिका के ऊपर **CLI** ड्रॉपडाउन का उपयोग करें; URL आपकी चयन को `?cli=claude|codex|copilot|cursor|opencode|pi|gemini` के रूप में सहेजता है। प्रत्येक प्रोजेक्ट दिखाता है: -- प्रोजेक्ट नाम (फ़ोल्डर पथ से व्युत्पन्न) +- प्रोजेक्ट नाम (फोल्डर पथ से प्राप्त) - एक CLI बैज — `Claude Code` (नारंगी), `OpenAI Codex` (बैंगनी), `GitHub Copilot` (नीला), `Cursor Agent` (पन्ना), `OpenCode` (एम्बर), `Pi` (गुलाबी), और/या `Gemini CLI` (आकाश) - सबसे हाल की सेशन गतिविधि की तारीख -एक प्रोजेक्ट पर क्लिक करके इसके सेशन देखें। +इसके सेशन देखने के लिए एक प्रोजेक्ट पर क्लिक करें। ### सेशन -किसी प्रोजेक्ट के भीतर सभी सेशन को सूचीबद्ध करता है। प्रत्येक सेशन दिखाता है: +एक प्रोजेक्ट के भीतर सभी सेशन की सूची। प्रत्येक सेशन दिखाता है: - सेशन ID -- शुरुआत और अंत टाइमस्टैम्प +- शुरुआत और अंत का समय - टूल कॉल की संख्या -- हुक गतिविधि गणना (नीतियां जो लागू हुईं) +- हुक गतिविधि की गिनती (नीतियां जो सक्रिय हुईं) -सूची को सीमित करने के लिए दिनांक श्रेणी फ़िल्टर और सेशन ID खोज का उपयोग करें। सेशन पेजीनेटेड हैं। +सूची को कम करने के लिए दिनांक सीमा फ़िल्टर और सेशन ID खोज का उपयोग करें। सेशन पृष्ठांकित हैं। -एक सेशन पर क्लिक करके सेशन दर्शक खोलें। +सेशन दर्शक को खोलने के लिए एक सेशन पर क्लिक करें। ### सेशन दर्शक -सेशन दर्शक स्वायत्त एजेंट के लिए मुख्य प्रश्न का उत्तर देता है: एजेंट ने क्या किया, और क्या यह ट्रैक पर रहा? हेडर के बगल में एक CLI बैज इंगित करता है कि सेशन Claude Code, OpenAI Codex, GitHub Copilot CLI, Cursor Agent, OpenCode, Pi, या Gemini CLI ट्रांसक्रिप्ट है। यह एक सेशन में घटी हर चीज की एक समय सारणी दिखाता है: +सेशन दर्शक स्वायत्त एजेंटों के लिए मुख्य प्रश्न का उत्तर देता है: एजेंट ने क्या किया, और क्या यह ट्रैक पर रहा? हेडर के बगल में एक CLI बैज यह दर्शाता है कि सेशन Claude Code, OpenAI Codex, GitHub Copilot CLI, Cursor Agent, OpenCode, Pi, या Gemini CLI ट्रांस्क्रिप्ट है। यह एक सेशन में हुई सभी चीजों की एक समयरेखा दिखाता है: -- **संदेश** - Claude के टेक्स्ट प्रतिक्रियाएं और उपयोगकर्ता प्रॉम्प्ट +- **संदेश** - Claude के पाठ प्रतिक्रियाएं और उपयोगकर्ता संकेत - **टूल कॉल** - हर टूल जिसे Claude ने आह्वान किया, इसके इनपुट और आउटपुट के साथ -- **नीति गतिविधि** - प्रत्येक टूल कॉल के लिए, कौन सी नीतियां लागू हुईं और वे कौन सा निर्णय लौटाईं +- **नीति गतिविधि** - प्रत्येक टूल कॉल के लिए, कौन सी नीतियां सक्रिय हुईं और उन्होंने क्या निर्णय लौटाया -शीर्ष पर स्टेट्स बार सेशन अवधि, कुल टूल कॉल, और हुक निर्णयों का सारांश (allow / deny / instruct गणना) दिखाता है। +शीर्ष पर सांख्यिकी पट्टी सेशन की अवधि, कुल टूल कॉल, और हुक निर्णयों का सारांश दिखाती है (allow / deny / instruct गिनती)। -**डाउनलोड लॉग** बटन पर क्लिक करके सेशन को निर्यात करें। Claude Code, Codex, Copilot, Cursor, Pi, और Gemini सेशन के लिए आपको मूल ऑन-डिस्क JSONL ट्रांसक्रिप्ट बाइट-दर-बाइट मिलता है; OpenCode सेशन के लिए (जिनके सेशन SQLite में हैं, डिस्क पर नहीं) आपको अंतर्निहित `session` / `messages` / `parts` टेबल को प्रतिबिंबित करने वाला एक JSON दस्तावेज़ मिलता है। +सेशन को निर्यात करने के लिए **डाउनलोड लॉग्स** बटन पर क्लिक करें। Claude Code, Codex, Copilot, Cursor, Pi, और Gemini सेशन के लिए आप मूल ऑन-डिस्क JSONL ट्रांस्क्रिप्ट बाइट-फॉर-बाइट प्राप्त करते हैं; OpenCode के लिए (जिसके सेशन SQLite में रहते हैं, डिस्क पर नहीं) आप एक JSON दस्तावेज़ प्राप्त करते हैं जो अंतर्निहित `session` / `messages` / `parts` तालिकाओं को प्रतिबिंबित करता है। ### ऑडिट -आपके एजेंट के पिछले सेशन में वास्तव में कैसे व्यवहार किया गया है, इसकी एक व्यक्तित्व-संचालित रिपोर्ट। `failproofai audit` CLI के समान स्कैन चलाता है लेकिन इसे एक एकल-स्क्रीन साझा करने योग्य पोस्टर + चार नीचे-गुना अनुभागों के रूप में प्रस्तुत करता है: +आपके एजेंट के व्यक्तित्व-संचालित रिपोर्ट कि वह वास्तव में अतीत के सेशन में कैसे व्यवहार कर रहा है। `failproofai audit` CLI के समान स्कैन चलाता है लेकिन इसे एक एकल-स्क्रीन शेयरयोग्य पोस्टर + चार नीचे-के-गुना अनुभागों के रूप में प्रदर्शित करता है: -1. **पोस्टर** — पहले व्यूपोर्ट को भरता है। failproof_ai वर्डमार्क + ऑडिट लेबल के साथ आत्मनिर्भर PNG-कैप्चर क्षेत्र · आर्कटाइप इंडेक्स (`№ NN of 08`) + ऑडिट तारीख · संख्यात्मक स्कोर (0–100) + प्रतिशतांक रैंक पिल (`top 15%`) · आर्कटाइप नाम (निम्नलिखित में से एक `the optimist`, `the cowboy`, `the explorer`, `the goldfish`, `the paranoid architect`, `the precision builder`, `the hammer`, `the ghost`) + 3-कीवर्ड पट्टी · `// only N% of agents are this archetype` दुर्लभता लाइन · 8×8 पिक्सेल सिगिल टाइल · `audit yours → failproof.ai` फुटर। कैप्चर बॉक्स के बाहर तीन साझा बटन बैठते हैं: `post your archetype` (X इरादा), `share on linkedin`, `download poster`। कैप्चर `html-to-image` के माध्यम से चलता है ताकि PNG ऑन-स्क्रीन रेंडर को पिक्सेल-दर-पिक्सेल से मेल खाए (डैश किए गए बॉर्डर, SVG लोगो मास्क, ग्रेडिएंट, फ़ॉन्ट मेट्रिक्स — सभी संरक्षित)। -2. **शक्तियां** — शांत ✓ पंक्ति सूची आपके एजेंट द्वारा पहले से सही तरीके से किए जाने वाले व्यवहार, लाइव ऑडिट डेटा से व्युत्पन्न (स्वच्छ टूल-कॉल दर, औसत सेशन लंबाई, शून्य प्रमाणपत्र लीक, शून्य पुनः प्रयास तूफान, आदि)। -3. **क्विर्क्स** — प्रभाव द्वारा रैंक किए गए जो फिसल गया, की एक तालिका: `time · what slipped + policy that would've caught it · severity pill · recurrence` (नया / Nx इस सप्ताह / पुनरावर्ती)। -4. **कैसे सुधारें** — शांत पंक्ति सूची, एक प्रति निर्धारित नीति: नीति का नाम सफेद में, एक-पंक्ति विवरण, इंस्टॉल कमांड + दाईं ओर कॉपी बटन। एक `[install all]` बटन अनुभाग हेडर पर हर निर्धारित नीति के लिए संयुक्त `failproofai policy add a b c …` कमांड को कॉपी करता है। -5. **बेहतर वापस आएं** — दो साइड-दर-साइड कार्ड। बाएं: एक अनुस्मारक सेट करें (`3d` / `7d` / `14d` / `30d` कैडेंस पिकर; `/api/auth/reminder` के माध्यम से प्रमाणित एक बार जारी रहता है)। दाएं: failproof पर्क्स को अनलॉक करें — `invite a friend` एक मोडल खोलता है जो अल्पविराम/स्पेस/न्यूलाइन-अलग किए गए मित्र ईमेल की सूची लेता है (प्रति भेज अधिकतम 10), उन्हें `/api/audit/invite` पर POST करता है, जो api-सर्वर के `POST /v0/invite` को अग्रेषित करता है। api-सर्वर `invite@failproof.ai` से एक ईमेल प्रति प्राप्तकर्ता भेजता है प्रेषक को Cc किया गया और `Reply-To` सेट किया गया, ताकि प्राप्तकर्ता को पता चले कि किसने उन्हें आमंत्रित किया और प्रेषक को उनके इनबॉक्स में एक प्रति मिले। गुमनाम उपयोगकर्ताओं को `AuthDialog` के माध्यम से रूट किया जाता है ताकि आमंत्रण जाने से पहले प्रेषक का ईमेल ज्ञात हो। एंटाइटलमेंट / पर्क्स पूर्ति एक अनुवर्ती है। +1. **पोस्टर** — पहला व्यूपोर्ट भरता है। Self-contained PNG-capture क्षेत्र failproof_ai शब्दचिन्ह + ऑडिट लेबल के साथ · आर्केटाइप इंडेक्स (`№ NN of 08`) + ऑडिट तारीख · संख्यात्मक स्कोर (0–100) + प्रतिशतांक रैंक गोली (`top 15%`) · आर्केटाइप नाम (एक `the optimist`, `the cowboy`, `the explorer`, `the goldfish`, `the paranoid architect`, `the precision builder`, `the hammer`, `the ghost` में) + 3-कीवर्ड पट्टी · `// only N% of agents are this archetype` दुर्लभता पंक्ति · 8×8 पिक्सल sigil टाइल · `audit yours → failproof.ai` पाद लेख। कैप्चर बॉक्स के ठीक बाहर तीन साझा बटन बैठते हैं: `post your archetype` (X intent), `share on linkedin`, `download poster`। कैप्चर `html-to-image` के माध्यम से चलता है इसलिए PNG ऑन-स्क्रीन रेंडर पिक्सल-फॉर-पिक्सल से मेल खाता है (डैशेड सीमाएं, SVG लोगो मास्क, ग्रेडिएंट, फॉन्ट मेट्रिक्स — सभी संरक्षित)। +2. **शक्तियां** — शांत ✓ पंक्ति सूची के आचरण जो आपका एजेंट पहले से सही कर रहा है, लाइव ऑडिट डेटा से प्राप्त (स्वच्छ टूल-कॉल दर, मुख्य में कोई प्रत्यक्ष पुश नहीं, शून्य क्रेडेंशियल रिसाव, शून्य रीट्राई तूफान) — प्रत्येक केवल तब सामने आता है जब प्रासंगिक नीति के पास ऑडिट विंडो भर में एक स्वच्छ रिकॉर्ड हो। +3. **विलक्षणताएं** — जो फिसल गया उसकी तालिका, गंभीरता द्वारा क्रमबद्ध: `when · what slipped + the policy that would've caught it · severity pill · seen`, जहां पुनरावृत्ति `new` (एक बार), `N× seen` (2–9 बार), या `recurring` (10+) पढ़ता है। +4. **सुधार कैसे करें** — शांत पंक्ति सूची, प्रत्येक निर्धारित नीति के लिए एक: नीति नाम सफेद में, एक-पंक्ति विवरण, स्थापना आदेश + दाहिनी ओर कॉपी बटन। अनुभाग शीर्षक `enable all N → projected · ` पढ़ता है (वह स्कोर जो आप हर सुधार लागू करके प्राप्त करेंगे), और इसका `[install all]` बटन हर निर्धारित नीति के लिए संयुक्त `failproofai policy add a b c …` कमांड की प्रतिलिपि बनाता है। +5. **बेहतर रूप से वापस आएं** — दो साथ-साथ कार्ड। बाएं: एक अनुस्मारक सेट करें (`3d` / `7d` / `14d` / `30d` कैडेंस पिकर; `/api/auth/reminder` के माध्यम से प्रमाणीकृत होने के बाद आगे बढ़ता है)। दाएं: failproof लाभ अनलॉक करें — `invite a friend` एक मोडल खोलता है जो अल्पविराम/स्पेस/न्यूलाइन-अलग सूची लेता है (प्रति भेजने के लिए अधिकतम 10) मित्र ईमेल, उन्हें `/api/audit/invite` में पोस्ट करते हैं, जो api-server के `POST /v0/invite` को अग्रेषित करते हैं। api-server प्रत्येक प्राप्तकर्ता को `invite@failproof.ai` से एक ईमेल भेजता है प्रेषक को Cc किया गया है और `Reply-To` सेट के साथ, इसलिए प्राप्तकर्ता देखता है कि उन्हें किसने आमंत्रित किया और प्रेषक को उनके इनबॉक्स में एक प्रति मिलती है। गुमनाम उपयोगकर्ता `AuthDialog` के माध्यम से रूट किए जाते हैं इसलिए आमंत्रण बाहर जाने से पहले प्रेषक का ईमेल ज्ञात हो। पात्रता / लाभ पूर्ति एक फॉलो-अप है। -`failproofai audit` रनटाइम द्वारा संचालित — अंतर्निहित स्कैन इंजन, समर्थित फ्लैग, और प्रति-ट्रांसक्रिप्ट कैश अपरिवर्तनीय के लिए [Audit CLI](/hi/cli/audit) देखें। डैशबोर्ड `~/.failproofai/audit-dashboard.json` पर नवीनतम परिणाम कैश करता है (मोड `0600`, एकल स्लॉट, नया चलता है अधिलेख करता है) ताकि पुनः देखना तुरंत हो; **प्रति-ट्रांसक्रिप्ट और संपूर्ण-परिणाम कैश दोनों को पढ़ने पर अस्वीकार कर दिया जाता है जब वे 7 दिन से पुराने हों** ताकि डैशबोर्ड कभी भी एक सप्ताह पुराने परिणाम को चुप्पी से न परोसे — TTL के पास `/audit` इसकी खाली स्थिति में गिरता है और एक ताज़ा चलाने के लिए संकेत देता है। रिपोर्ट के निचले हिस्से में `[ re-audit now ]` पर क्लिक करने से `/api/audit/run` को `noCache: true` के साथ POST किया जाता है — पुनः-ऑडिट प्रति-ट्रांसक्रिप्ट कैश को बायपास करता है और हर ट्रांसक्रिप्ट को शुरू से फिर से स्कैन करता है बजाय चुप्पी से कैश परिणाम लौटाने के — और डैशबोर्ड 1Hz पर `/api/audit/status` को पोल करता है जब तक कि चलाना समाप्त न हो जाए; एक चिपचिपी गुलाबी प्रगति पट्टी चलाने के दौरान व्यूपोर्ट के शीर्ष पर पिन करती है, जिसमें एक बीता हुआ टाइमर होता है, और ताज़ा परिणाम सफलता पर स्थान पर स्वैप होता है (कोई पूर्ण-पृष्ठ पुनः लोड नहीं; विफल पुनः-ऑडिट पूर्व रिपोर्ट को अक्षुण्ण छोड़ देता है)। विफलता पर पट्टी `RerunError.kind` (`timeout` / `network` / `post_failed`) से कॉपी के साथ लाल हो जाती है। खाली स्थिति (कोई कैश या समाप्त) और शून्य-सेशन स्थिति (कैश मौजूद है लेकिन स्कैन में कोई ट्रांसक्रिप्ट नहीं मिला) को अलग से सतह पर लाया जाता है। +`failproofai audit` रनटाइम द्वारा संचालित — अंतर्निहित स्कैन इंजन, समर्थित फ़्लैग, और प्रति-ट्रांस्क्रिप्ट कैश अपरिवर्तनीय के लिए [ऑडिट CLI](/hi/cli/audit) देखें। डैशबोर्ड सबसे हाल का परिणाम `~/.failproofai/audit-dashboard.json` पर कैश करता है (मोड `0600`, एकल स्लॉट, नए रन ओवरराइट करते हैं) इसलिए पुनः विजिट तत्काल हैं; **प्रति-ट्रांस्क्रिप्ट और संपूर्ण-परिणाम दोनों कैश को पढ़ने पर अस्वीकार कर दिया जाता है एक बार वे 7 दिन से अधिक पुराने हो जाते हैं** इसलिए डैशबोर्ड कभी भी एक सप्ताह पुराना परिणाम मौन रूप से परोसता नहीं है — TTL के बाद `/audit` खाली अवस्था में गिर जाता है और एक ताजा रन का संकेत देता है। रिपोर्ट के नीचे `[ re-audit now ]` पर क्लिक करना `/api/audit/run` को `noCache: true` के साथ पोस्ट करता है — पुनः-ऑडिट प्रति-ट्रांस्क्रिप्ट कैश को बायपास करता है और हर ट्रांस्क्रिप्ट को शुरुआत से फिर से स्कैन करता है मौन रूप से कैश किए गए परिणाम को लौटाने के बजाय — और डैशबोर्ड 1Hz पर `/api/audit/status` को पोल करता है जब तक रन समाप्त नहीं हो जाता; एक चिपचिपा गुलाबी प्रगति पट्टी चलाने के दौरान व्यूपोर्ट के शीर्ष पर पिन करता है एक बीते हुए टाइमर के साथ, और ताजा परिणाम सफलता पर स्थान में स्वैप करता है (कोई पूर्ण-पृष्ठ पुनः लोड नहीं; एक विफल पुनः-ऑडिट पूर्व रिपोर्ट को बरकरार छोड़ता है)। विफलता पर पट्टी `RerunError.kind` (`timeout` / `network` / `post_failed`) के आधार पर लाल हो जाती है। खाली अवस्था (कोई कैश या समाप्त नहीं) और शून्य-सेशन अवस्था (कैश मौजूद है लेकिन स्कैन ने कोई ट्रांस्क्रिप्ट नहीं पाया) अलग से सामने आते हैं। ### नीतियां -नीतियों का प्रबंधन और गतिविधि की समीक्षा करने के लिए एक दो-टैब पृष्ठ। +नीतियों को प्रबंधित करने और गतिविधि की समीक्षा करने के लिए एक दो-टैब पृष्ठ। - - एकल पैनल से नीचे किन एजेंट CLI को failproofai सुरक्षा देता है, यह बहु-चयन करें — Claude Code, OpenAI Codex, GitHub Copilot, Cursor Agent, OpenCode, Pi, और Gemini CLI के सभी में स्थापना स्थिति (`Active` / `Detected` / `Inactive`) के साथ एक पंक्ति होती है, उपयोगकर्ता-स्कोप सेटिंग पथ, और एक ब्रांड-रंगीन उच्चारण। उन CLI को चेक या अनचेक करें जिन्हें आप चाहते हैं और एक चरण में अंतर को स्थापित/अनस्थापित करने के लिए `Apply changes` पर क्लिक करें। CLI जिनका बाइनरी PATH पर पाया जाता है, पूर्व-जांच किए जाते हैं। - - एक क्लिक के साथ व्यक्तिगत नीतियों को चालू या बंद करें (`~/.failproofai/policies-config.json` में लिखता है — हर स्थापित CLI में साझा किया जाता है) - - एक नीति को विस्तारित करें इसके पैरामीटर को कॉन्फ़िगर करने के लिए (नीतियों के लिए जो `policyParams` का समर्थन करते हैं) - - एक कस्टम नीति फ़ाइल पथ सेट करें + - एक पैनल से failproofai जो एजेंट CLIs की सुरक्षा करता है उसे बहु-चयन करें — Claude Code, OpenAI Codex, GitHub Copilot, Cursor Agent, OpenCode, Pi, और Gemini CLI सभी के पास स्थापना स्थिति (`Active` / `Detected` / `Inactive`), उपयोगकर्ता-स्कोप सेटिंग्स पथ, और ब्रांड-रंगीन उच्चारण के साथ एक पंक्ति है। उन CLIs को चेक या अनचेक करें जिन्हें आप चाहते हैं और एक ही चरण में स्थापित/अनस्थापित के अंतर को लागू करने के लिए `Apply changes` पर क्लिक करें। CLIs जिनके बाइनरी PATH पर पाए जाते हैं पूर्व-चेक किए जाते हैं। + - एक एकल क्लिक के साथ व्यक्तिगत नीतियों को चालू या बंद करें (`~/.failproofai/policies-config.json` में लिखता है — हर स्थापित CLI के बीच साझा किया जाता है) + - एक नीति का विस्तार करें इसके पैरामीटर को कॉन्फ़िगर करने के लिए (जो नीतियां `policyParams` का समर्थन करती हैं) + - एक कस्टम नीति फाइल पथ सेट करें - - सभी सेशन में लागू हुए हर हुक इवेंट का पूर्ण पेजीनेटेड इतिहास - - निर्णय, इवेंट प्रकार, CLI (Claude Code / OpenAI Codex / GitHub Copilot _(beta)_ / Cursor Agent _(beta)_ / OpenCode _(beta)_ / Pi _(beta)_ / Gemini CLI _(beta)_), नीति नाम, या सेशन ID द्वारा फ़िल्टर करें - - प्रत्येक पंक्ति दिखाती है: टाइमस्टैम्प, नीति नाम, निर्णय, CLI बैज (नारंगी = Claude Code, बैंगनी = OpenAI Codex, नीला = GitHub Copilot, पन्ना = Cursor Agent, एम्बर = OpenCode, गुलाबी = Pi, आकाश = Gemini CLI), टूल नाम, सेशन ID, और deny/instruct निर्णयों के लिए कारण - - एक सेशन ID पर क्लिक करके इसके ट्रांसक्रिप्ट को खोलें — दर्शक स्वचालित रूप से पहचानता है कि कौन सा CLI हुक को लागू किया (Claude `~/.claude/projects/…`, Codex `~/.codex/sessions/…`, Copilot CLI `~/.copilot/session-state//events.jsonl`, Cursor Agent `~/.cursor/agent-sessions//events.jsonl`, OpenCode `~/.local/share/opencode/opencode.db`, Pi `~/.pi/agent/sessions//.jsonl`, Gemini CLI `~/.gemini/tmp//chats/.jsonl`) और हेडर में मिलान CLI बैज प्रदान करता है + - सभी सेशन में फायरिंग की गई हर हुक गतिविधि का पूर्ण पृष्ठांकित इतिहास + - निर्णय, घटना प्रकार, CLI (Claude Code / OpenAI Codex / GitHub Copilot _(बीटा)_ / Cursor Agent _(बीटा)_ / OpenCode _(बीटा)_ / Pi _(बीटा)_ / Gemini CLI _(बीटा)_), नीति नाम, या सेशन ID द्वारा फ़िल्टर करें + - प्रत्येक पंक्ति दिखाती है: समय, नीति नाम, निर्णय, CLI बैज (नारंगी = Claude Code, बैंगनी = OpenAI Codex, नीला = GitHub Copilot, पन्ना = Cursor Agent, एम्बर = OpenCode, गुलाबी = Pi, आकाश = Gemini CLI), टूल नाम, सेशन ID, और deny/instruct निर्णयों का कारण + - अपनी ट्रांस्क्रिप्ट खोलने के लिए एक सेशन ID पर क्लिक करें — दर्शक स्वचालित रूप से पहचानता है कि कौन सी CLI ने हुक को ट्रिगर किया (Claude `~/.claude/projects/…`, Codex `~/.codex/sessions/…`, Copilot CLI `~/.copilot/session-state//events.jsonl`, Cursor Agent `~/.cursor/agent-sessions//events.jsonl`, OpenCode `~/.local/share/opencode/opencode.db`, Pi `~/.pi/agent/sessions//.jsonl`, Gemini CLI `~/.gemini/tmp//chats/.jsonl`) और हेडर में मिलान CLI बैज प्रदान करता है --- -## ऑटो-रीफ्रेश +## स्वचालित रीफ्रेश -डैशबोर्ड में शीर्ष नेविगेशन में ऑटो-रीफ्रेश टॉगल है। जब सक्षम हो, तो मौजूदा पृष्ठ समय-समय पर रीफ्रेश होता है नई सेशन और नीति गतिविधि दिखाने के लिए जैसे-जैसे वे दिखाई देते हैं। दीर्घकालीन स्वायत्त एजेंट सेशन की निगरानी के लिए आवश्यक है। +डैशबोर्ड में शीर्ष नेविगेशन में एक स्वचालित-रीफ्रेश टॉगल है। जब सक्षम होता है, तो वर्तमान पृष्ठ नई सेशन और नीति गतिविधि दिखाने के लिए समय-समय पर ताज़ा होता है जैसे ही वे दिखाई देते हैं। दीर्घकालीन स्वायत्त एजेंट सेशन की निगरानी के लिए आवश्यक। --- ## पृष्ठों को अक्षम करना -यदि आपको डैशबोर्ड के केवल कुछ हिस्सों की आवश्यकता है, तो `FAILPROOFAI_DISABLE_PAGES` को पृष्ठ नामों की अल्पविराम-अलग सूची पर सेट करें: +यदि आपको केवल डैशबोर्ड के कुछ भाग की आवश्यकता है, तो `FAILPROOFAI_DISABLE_PAGES` को पृष्ठ नामों की अल्पविराम-सीमांकित सूची पर सेट करें: ```bash FAILPROOFAI_DISABLE_PAGES=policies failproofai ``` -वैध मान: `policies`, `projects`, `audit`। +मान्य मान: `policies`, `projects`, `audit`। --- @@ -118,32 +119,32 @@ CLAUDE_PROJECTS_PATH=/custom/path/to/projects failproofai --- -## गैर-localhost होस्ट से एक्सेस करना +## एक गैर-localhost होस्ट से एक्सेस करना -जब डैशबोर्ड को **dev मोड** में चलाते हैं (`npm run dev`) और इसे `localhost` के अलावा किसी अन्य होस्टनाम से एक्सेस करते हैं - उदाहरण के लिए, एक कस्टम डोमेन, एक दूरस्थ IP, या एक सुरंग URL - आप एक चेतावनी देख सकते हैं जैसे: +जब **dev mode** (`npm run dev`) में डैशबोर्ड चल रहा हो और `localhost` के अलावा किसी अन्य होस्टनाम से इसे एक्सेस किया जा रहा हो - उदाहरण के लिए, एक कस्टम डोमेन, एक दूरस्थ IP, या एक टनल किया हुआ URL — आपको एक चेतावनी जैसी दिख सकती है: ```text ⚠ Blocked cross-origin request to Next.js dev resource /_next/webpack-hmr from "dashboard.example.com". ``` -यह Next.js अपने HMR (हॉट मॉड्यूल रीलोड) वेबसॉकेट तक क्रॉस-ऑरिजिन एक्सेस को अवरुद्ध कर रहा है, जो एक dev-only सुविधा है। अपने होस्ट को अनुमति देने के लिए, `--allowed-origins` फ्लैग का उपयोग करें: +यह Next.js अपने HMR (hot module reload) websocket के क्रॉस-ऑरिजिन एक्सेस को ब्लॉक कर रहा है, जो एक dev-only सुविधा है। अपने होस्ट को अनुमति देने के लिए, `--allowed-origins` फ़्लैग का उपयोग करें: ```bash npm run dev -- --allowed-origins dashboard.example.com ``` -कई होस्ट या IP के लिए, अल्पविराम-अलग सूची पास करें: +कई होस्ट या IP के लिए, अल्पविराम-सीमांकित सूची पास करें: ```bash npm run dev -- --allowed-origins dashboard.example.com,192.168.1.5 ``` -आप इसके बजाय `FAILPROOFAI_ALLOWED_DEV_ORIGINS` पर्यावरण चर सेट कर सकते हैं: +आप इसके बजाय `FAILPROOFAI_ALLOWED_DEV_ORIGINS` पर्यावरण चर भी सेट कर सकते हैं: ```bash FAILPROOFAI_ALLOWED_DEV_ORIGINS=dashboard.example.com npm run dev ``` -यह केवल dev मोड पर लागू होता है। `failproofai` चलाते समय (production mode), कोई HMR वेबसॉकेट नहीं है और कोई क्रॉस-ऑरिजिन dev संसाधन समस्या नहीं है। +यह केवल dev mode पर लागू होता है। जब `failproofai` चलाया जाता है (production mode), कोई HMR websocket और कोई क्रॉस-ऑरिजिन dev संसाधन समस्या नहीं है। \ No newline at end of file diff --git a/docs/it/cli/audit.mdx b/docs/it/cli/audit.mdx index e54ccffa1..52e365ff3 100644 --- a/docs/it/cli/audit.mdx +++ b/docs/it/cli/audit.mdx @@ -1,57 +1,93 @@ --- title: Audit delle sessioni passate (beta) -description: "Conta quante volte l'agente ha fatto cose inefficienti o rischiose nei transcript passati" +description: "Conta quante volte l'agente ha fatto cose inutili o rischiose nelle trascrizioni precedenti" --- - **Funzionalità beta.** L'audit viene fornito in beta mentre raccogliamo i feedback iniziali. - Il catalogo dei detector e il formato del report potrebbero cambiare prima della prossima versione stabile. - Apri una segnalazione se qualcosa non ti sembra corretto. + **Funzionalità Beta.** L'audit è in versione beta mentre raccogliamo i feedback iniziali. + Il catalogo dei rilevatori e il formato del report potrebbero cambiare prima del prossimo rilascio stabile. + Per favore apri una segnalazione se qualcosa sembra non giusto. -L'audit è ora esposto come la **pagina dashboard /audit**, non come un sottocomando CLI. Aprilo dalla barra di navigazione del dashboard (tra Policies e Projects), oppure visita direttamente `http://localhost:8020/audit` quando esegui `failproofai` localmente. +L'audit riproduce le tue trascrizioni passate dell'agent-CLI attraverso il motore delle policy di failproofai e genera un report visivo e condivisibile nella **pagina dashboard `/audit`** — l'archetipo del tuo agente, un punteggio 0–100, e esattamente quali policy avrebbero bloccato cosa. -```bash -failproofai # apri il dashboard, quindi fai clic su "Audit" +## Eseguirlo + +Tre modi di accesso — portano tutti allo stesso report `/audit`. + + + +```bash npx (nessuna installazione) +npx -y failproofai audit +``` + +```bash failproofai audit +failproofai audit ``` -Il dashboard scansiona i transcript CLI passati dell'agente su questa macchina (Claude Code, Codex, Copilot, Cursor, OpenCode, Pi, Gemini) e riporta quante volte l'agente ha fatto cose che failproofai è costruito per bloccare — controlli di variabili d'ambiente, force push, prefissi `cd ` ridondanti, loop di sleep-polling, ri-letture di file appena modificati, e altro ancora. +```bash failproofai (dashboard) +failproofai +``` + + + + + + `npx -y failproofai audit` scarica failproofai, esegue la scansione e apre il + dashboard per te — nulla da installare in precedenza. + + + `failproofai audit` esegue la scansione nel tuo terminale, quindi apre + automaticamente `localhost:8020/audit` quando termina. + + + Esegui `failproofai` e fai clic su **Audit** nella barra di navigazione (tra Policies e + Projects), oppure apri `/audit` direttamente. + + + + + Esegui `failproofai audit -h` (o `--help`) per vedere l'utilizzo. L'audit viene eseguito **completamente + offline** — non è richiesto nessun account o connessione di rete — e il dashboard continua a essere fornito + fino a quando non lo interrompi con `Ctrl+C`. + + +Il dashboard scansiona le trascrizioni passate dell'agent CLI su questa macchina (Claude Code, Codex, Copilot, Cursor, OpenCode, Pi, Gemini) e segnala quante volte l'agente ha fatto cose che failproofai è costruito per bloccare — controlli di variabili d'ambiente, push forzati, prefissi `cd ` ridondanti, loop di polling con sleep, ricezione di file appena modificati, e altro. -Per ogni transcript, ogni evento di tool-use viene rieseguito attraverso le 39 politiche builtin **e** attraverso 8 detector audit-only che catturano pattern non ancora coperti dalle politiche di runtime. I conteggi sono aggregati per politica / detector su tutte le sessioni. +Per ogni trascrizione, ogni evento di tool-use viene riprodotto attraverso le 39 policy integrate **e** attraverso 8 rilevatori solo audit che catturano pattern non ancora coperti dalle policy di runtime. I conteggi vengono aggregati per policy / rilevatore in tutte le sessioni. -## Cosa ottieni +## Cosa otterrai -La pagina `/audit` è composta da sei sezioni: +La pagina `/audit` è un **poster** a schermo singolo e condivisibile seguito da quattro sezioni sotto la piega: -1. **Identity** — il tuo agente classificato in uno degli 8 archetipi (`optimist`, `cowboy`, `explorer`, `goldfish`, `paranoid architect`, `precision builder`, `hammer`, `ghost`) in base al segnale ponderato su ogni transcript sottoposto a audit. -2. **Strengths** — numeri reali derivati dalla scansione (clean-call %, "0 credential leaks", ecc.) soggetti alle politiche sanitize rilevanti che effettivamente si attivano. -3. **Score** — da 0 a 100 con bande S/A/B/C/D/F e un miglioramento previsto se ogni politica consigliata fosse abilitata. -4. **Findings** — schede per-politica con cosa è successo, costo, prove catturate, e il comando `failproofai policy add ` esatto per abilitare il builtin runtime che l'avrebbe catturato. -5. **Prescribed policies** — lista di installazione aggregata con il comando `failproofai policies --install` singolo. -6. **Re-audit reminder** — "ritorna meglio." Imposta un reminder email di 7 giorni tramite l'api-server (richiede accesso; vedi [`failproofai auth`](/it/cli/auth)). +1. **Poster** — l'identità del tuo agente a colpo d'occhio: il suo **archetipo** (uno di 8 — `optimist`, `cowboy`, `explorer`, `goldfish`, `paranoid architect`, `precision builder`, `hammer`, `ghost`), le sue parole chiave di persona, quanto sia raro quell'archetipo, e un **punteggio 0–100** con una banda di livello (`S` fino a `bottom tier`). Costruito per condividere — pubblica su X o LinkedIn, oppure scaricalo come PNG. +2. **`// strengths`** — cosa il tuo agente già fa bene, come numeri reali dalla scansione (es. clean-tool-call %, `0` tentativi di push-to-main), mostrato solo dove la policy rilevante ha un record pulito. +3. **`// quirks`** — cosa è scivolato: una tabella classificata di comportamenti che failproofai avrebbe bloccato — *quando* è successo l'ultima volta, *cosa è scivolato* (e la policy integrate che l'avrebbe bloccato), la sua *gravità*, e quante volte è stato *osservato* (`new` / `recurring` / `N× seen`). +4. **`// how to improve`** — la lista di correzioni prescritte: una riga per policy con `failproofai policy add ` pronto da copiare e incollare, più un pulsante **installa tutto** che abilita ogni raccomandazione contemporaneamente e mostra il tuo **punteggio proiettato** se lo farai. +5. **`// come back better`** — sviluppa l'abitudine: imposta un **promemoria** di re-audit email (`3d` / `7d` / `14d` / `30d`) o esegui nuovamente l'audit ora, e **invita un amico** a eseguire il proprio audit (inviato da failproof.ai, Cc'd a te). I promemoria e gli inviti richiedono l'accesso — vedi [`failproofai auth`](/it/cli/auth). -## Detector audit-only +## Rilevatori solo audit -Questi rilevano pattern di "comportamento stupido" non (ancora) applicati in tempo reale. Vengono eseguiti solo durante l'audit e non bloccano mai una tool call live. +Questi rilevano pattern di "comportamento stupido" non (ancora) applicati in tempo reale. Vengono eseguiti solo durante l'audit e non bloccano mai una chiamata di tool live. -| Detector | Cosa conta | +| Rilevatore | Cosa conta | |---|---| | `redundant-cd-cwd` | Comandi Bash che iniziano con `cd && …` anche se i comandi vengono già eseguiti in `cwd`. | | `prefer-edit-over-read-cat` | `cat`/`head`/`tail`/`less`/`more` su un singolo file sorgente — usa lo strumento `Read`. | | `prefer-edit-over-sed-awk` | `sed -i` / `awk … > file` modifiche in-place — usa lo strumento `Edit`. | -| `prefer-write-over-heredoc` | Heredoc / multi-linea `echo > file` scrittura di file — usa lo strumento `Write`. | -| `sleep-polling-loop` | Lunghi `sleep N` (≥ 30s) o loop di polling `while …; sleep …; done`. | -| `find-from-root` | `find /`, `find /home`, `find /usr`, ecc. — limita lo scope a `cwd`. | -| `git-commit-no-verify` | `git commit … --no-verify` / `-n`, saltando gli hook. | -| `reread-after-edit` | `Read` di un file appena modificato con `Edit`/`Write` nella stessa sessione. | +| `prefer-write-over-heredoc` | Heredoc / `echo > file` multi-line per scrivere file — usa lo strumento `Write`. | +| `sleep-polling-loop` | `sleep N` lungo (≥ 30s) o loop di polling `while …; sleep …; done`. | +| `find-from-root` | `find /`, `find /home`, `find /usr`, ecc. — limita l'ambito a `cwd`. | +| `git-commit-no-verify` | `git commit … --no-verify` / `-n`, ignorando gli hook. | +| `reread-after-edit` | `Read` di un file che era appena stato `Edit`/`Write` nella stessa sessione. | ## Cache -- **Cache per-transcript** in `~/.failproofai/cache/audit/.json` indicizzata da `(mtime, size, engineVersion, detectorVersion)` — si invalida automaticamente quando il transcript o il codice della politica/detector cambia. Ogni voce memorizza anche un timestamp `cachedAt` come **metadati TTL** (non parte della chiave di cache); le voci più vecchie di **7 giorni** vengono rifiutate nella lettura in modo che i risultati di lunga durata non superino l'intento del detector in evoluzione. -- **Cache del risultato completo** in `~/.failproofai/audit-dashboard.json` (modalità 0600). Permette al dashboard di eseguire il rendering istantaneamente nella navigazione senza rieseguire. Viene anche rifiutato nella lettura dopo il **TTL di 7 giorni** — `/audit` ricade quindi nello stato vuoto e richiede un'esecuzione aggiornata. Fai clic su `[ re-audit now ]` vicino al fondo del report per aggiornare — il re-audit invia `noCache: true`, quindi bypassa la cache per-transcript e scansiona di nuovo ogni transcript invece di restituire il risultato in cache; l'esecuzione fa lo streaming del progresso tramite una barra adesiva in alto e sostituisce il risultato sul posto al successo (nessun ricaricamento della pagina; un re-audit fallito mantiene il report precedente). +- **Cache per trascrizione** su `~/.failproofai/cache/audit/.json` con chiave `(mtime, size, engineVersion, detectorVersion)` — si invalida automaticamente quando la trascrizione o il codice della policy/rilevatore cambia. Ogni voce memorizza anche un timestamp `cachedAt` come **metadati TTL** (non parte della chiave di cache); le voci più vecchie di **7 giorni** vengono rifiutate in lettura così i risultati di lunga durata non sopravvivono all'evoluzione dell'intento del rilevatore. +- **Cache del risultato intero** su `~/.failproofai/audit-dashboard.json` (modalità 0600). Consente al dashboard di eseguire il rendering istantaneamente durante la navigazione senza rieseguire. Anche rifiutato in lettura dopo il **TTL di 7 giorni** — `/audit` cade quindi nel suo stato vuoto e richiede una corsa fresca. Fai clic su `[ re-audit now ]` vicino al fondo del report per aggiornare — re-audit invia `noCache: true`, quindi bypassa la cache per trascrizione e ripete la scansione di ogni trascrizione invece di restituire il risultato memorizzato nella cache; la corsa trasmette il progresso tramite una striscia in alto appiccicosa e scambia il risultato al suo posto al successo (nessun ricaricamento della pagina; un re-audit fallito mantiene il report precedente). ## Note -- **Nessuna mutazione.** L'audit viene rieseguito in modalità di sola lettura. `warn-repeated-tool-calls` viene saltato perché il suo sidecar per-sessione altrimenti verrebbe modificato. -- **Politiche workflow saltate.** Le politiche `require-*-before-stop` si attivano solo su eventi `Stop` e `execSync` rispetto allo stato git live — non hanno un'interpretazione significativa di "cosa sarebbe successo nel 2025", quindi non compaiono nei conteggi dell'audit. -- **Politiche personalizzate saltate.** Gli hook personalizzati forniti dall'utente non vengono rieseguiti (potrebbero essere cambiati dalla sessione originale). \ No newline at end of file +- **Nessuna mutazione.** L'audit viene riprodotto in modalità sola lettura. `warn-repeated-tool-calls` viene ignorato perché il suo sidecar per sessione verrebbe altrimenti modificato. +- **Policy del flusso di lavoro saltate.** Le policy `require-*-before-stop` si attivano solo su eventi `Stop` e `execSync` rispetto allo stato git live — non hanno un'interpretazione significativa di "cosa sarebbe successo nel 2025", quindi non compaiono nei conteggi dell'audit. +- **Policy personalizzate saltate.** Gli hook personalizzati forniti dall'utente non vengono riprodotti (potrebbero essere cambiati dalla sessione originale). \ No newline at end of file diff --git a/docs/it/dashboard.mdx b/docs/it/dashboard.mdx index 1826e018d..242ed0ec0 100644 --- a/docs/it/dashboard.mdx +++ b/docs/it/dashboard.mdx @@ -1,14 +1,14 @@ --- title: Dashboard -description: "Monitora le sessioni degli agenti, rivedi le chiamate ai tool e gestisci i criteri" +description: "Monitora le sessioni degli agenti, rivedi le chiamate ai tool e gestisci le policy" icon: chart-line --- -Il dashboard failproofai è un'applicazione web locale per monitorare le sessioni dei tuoi agenti AI e gestire i criteri. Scopri cosa hanno fatto i tuoi agenti mentre eri assente. +La dashboard failproofai è un'applicazione web locale per monitorare le sessioni dei tuoi agenti AI e gestire le policy. Scopri cosa hanno fatto i tuoi agenti mentre eri via. --- -## Avvio del dashboard +## Avviare la dashboard ```bash failproofai @@ -16,7 +16,7 @@ failproofai Si apre su `http://localhost:8020`. -Il dashboard legge direttamente dal filesystem - le tue cartelle di progetto Claude Code e i file di configurazione failproofai. Non viene scritto nulla su un servizio remoto. +La dashboard legge direttamente dal filesystem - i tuoi progetti Claude Code e i file di configurazione failproofai. Nulla viene scritto su un servizio remoto. --- @@ -24,81 +24,81 @@ Il dashboard legge direttamente dal filesystem - le tue cartelle di progetto Cla ### Progetti -Elenca tutti i progetti Claude Code, OpenAI Codex, GitHub Copilot CLI _(beta)_, Cursor Agent _(beta)_, OpenCode _(beta)_, Pi _(beta)_ e Gemini CLI _(beta)_ trovati sulla tua macchina. I progetti Claude vengono rilevati da `~/.claude/projects/` (o dal percorso impostato da `CLAUDE_PROJECTS_PATH`); i progetti Codex vengono rilevati scansionando ogni trascrizione in `~/.codex/sessions///
/*.jsonl` e raggruppando per `cwd` registrato nel primo record di ogni sessione; i progetti Copilot CLI vengono rilevati scansionando ogni `~/.copilot/session-state//workspace.yaml` (configurabile tramite `COPILOT_HOME`) e raggruppando per il suo campo `cwd`; i progetti Cursor Agent vengono rilevati scansionando i metadati per sessione in `~/.cursor/agent-sessions//` (configurabile tramite `CURSOR_HOME`, con `conversations/` e `sessions/` come fallback) cercando uno scalare `cwd` in `meta.json` / `session.json` / `workspace.yaml`; i progetti OpenCode vengono rilevati interrogando il suo DB SQLite in `~/.local/share/opencode/opencode.db` tramite `opencode db --format json` (leggiamo le tabelle `session` e `project` e raggruppiamo per `project_id`); i progetti Pi vengono rilevati scansionando le trascrizioni JSONL per sessione in `~/.pi/agent/sessions//_.jsonl` (configurabile tramite `PI_SESSIONS_DIR`) e estraendo `cwd` dal primo record di ogni sessione; i progetti Gemini CLI vengono rilevati scansionando `~/.gemini/tmp//chats/session--.jsonl` (configurabile tramite `GEMINI_SESSIONS_DIR`) e recuperando il cwd canonico dal marcatore di testo `.project_root` adiacente. Un progetto utilizzato da più CLI viene visualizzato come una singola riga con tutti i badge corrispondenti. Usa il menu a discesa **CLI** sopra la tabella per filtrare per uno specifico CLI agent; l'URL preserva la tua selezione come `?cli=claude|codex|copilot|cursor|opencode|pi|gemini`. +Elenca tutti i progetti Claude Code, OpenAI Codex, GitHub Copilot CLI _(beta)_, Cursor Agent _(beta)_, OpenCode _(beta)_, Pi _(beta)_ e Gemini CLI _(beta)_ trovati sulla tua macchina. I progetti Claude vengono individuati da `~/.claude/projects/` (o dal percorso impostato da `CLAUDE_PROJECTS_PATH`); i progetti Codex vengono individuati scansionando ogni trascrizione sotto `~/.codex/sessions///
/*.jsonl` e raggruppando per il `cwd` registrato nel primo record di ogni sessione; i progetti Copilot CLI vengono individuati scansionando ogni `~/.copilot/session-state//workspace.yaml` (configurabile tramite `COPILOT_HOME`) e raggruppando per il suo campo `cwd`; i progetti Cursor Agent vengono individuati scansionando i metadati per sessione sotto `~/.cursor/agent-sessions//` (configurabile tramite `CURSOR_HOME`, con `conversations/` e `sessions/` come fallback) per uno scalare `cwd` in `meta.json` / `session.json` / `workspace.yaml`; i progetti OpenCode vengono individuati interrogando il suo DB SQLite in `~/.local/share/opencode/opencode.db` tramite `opencode db --format json` (leggiamo le tabelle `session` e `project` e raggruppiamo per `project_id`); i progetti Pi vengono individuati scansionando le trascrizioni JSONL per sessione sotto `~/.pi/agent/sessions//_.jsonl` (configurabile tramite `PI_SESSIONS_DIR`) ed estraendo il `cwd` dal primo record di ogni sessione; i progetti Gemini CLI vengono individuati scansionando `~/.gemini/tmp//chats/session--.jsonl` (configurabile tramite `GEMINI_SESSIONS_DIR`) e recuperando il cwd canonico dal marcatore di testo `.project_root` adiacente. Un progetto che è stato utilizzato da più CLI viene reso come una singola riga con tutti i badge corrispondenti. Usa il dropdown **CLI** sopra la tabella per filtrare per un agente CLI specifico; l'URL preserva la tua selezione come `?cli=claude|codex|copilot|cursor|opencode|pi|gemini`. Ogni progetto mostra: - Nome del progetto (derivato dal percorso della cartella) -- Un badge CLI — `Claude Code` (arancione), `OpenAI Codex` (viola), `GitHub Copilot` (blu), `Cursor Agent` (smeraldo), `OpenCode` (ambra), `Pi` (rosa), e/o `Gemini CLI` (cielo) +- Un badge CLI — `Claude Code` (arancione), `OpenAI Codex` (viola), `GitHub Copilot` (blu), `Cursor Agent` (smeraldo), `OpenCode` (ambra), `Pi` (rosa) e/o `Gemini CLI` (azzurro) - Data dell'attività di sessione più recente -Fai clic su un progetto per vederne le sessioni. +Fai clic su un progetto per visualizzare le sue sessioni. ### Sessioni Elenca tutte le sessioni all'interno di un progetto. Ogni sessione mostra: -- ID della sessione +- ID sessione - Timestamp di inizio e fine - Numero di chiamate ai tool -- Conteggio dell'attività hook (criteri che si sono attivati) +- Numero di attività hook (policy che si sono attivate) -Usa il filtro dell'intervallo di date e la ricerca dell'ID sessione per restringere l'elenco. Le sessioni sono impaginate. +Usa il filtro intervallo di date e la ricerca per ID sessione per restringere l'elenco. Le sessioni sono impaginate. Fai clic su una sessione per aprire il visualizzatore di sessione. ### Visualizzatore di sessione -Il visualizzatore di sessione risponde alla domanda chiave per gli agenti autonomi: cosa ha fatto l'agente e ha mantenuto la rotta? Un badge CLI accanto all'intestazione indica se la sessione è una trascrizione Claude Code, OpenAI Codex, GitHub Copilot CLI, Cursor Agent, OpenCode, Pi o Gemini CLI. Mostra una cronologia di tutto ciò che è accaduto in una sessione: +Il visualizzatore di sessione risponde alla domanda fondamentale per gli agenti autonomi: cosa ha fatto l'agente e ha mantenuto la rotta? Un badge CLI accanto all'intestazione indica se la sessione è una trascrizione di Claude Code, OpenAI Codex, GitHub Copilot CLI, Cursor Agent, OpenCode, Pi o Gemini CLI. Mostra una cronologia di tutto ciò che è accaduto in una sessione: - **Messaggi** - Risposte di testo di Claude e prompt dell'utente - **Chiamate ai tool** - Ogni tool invocato da Claude, con il suo input e output -- **Attività dei criteri** - Per ogni chiamata ai tool, quali criteri si sono attivati e quale decisione hanno restituito +- **Attività policy** - Per ogni chiamata ai tool, quali policy si sono attivate e quale decisione hanno restituito -La barra delle statistiche in alto mostra la durata della sessione, il totale delle chiamate ai tool e un riepilogo delle decisioni hook (conteggi allow / deny / instruct). +La barra delle statistiche in alto mostra la durata della sessione, il numero totale di chiamate ai tool e un riepilogo delle decisioni hook (count allow / deny / instruct). -Fai clic sul pulsante **Download Logs** per esportare la sessione. Per Claude Code, Codex, Copilot, Cursor, Pi e sessioni Gemini ottieni la trascrizione JSONL originale sul disco byte-per-byte; per OpenCode (le cui sessioni vivono in SQLite, non su disco) ottieni un documento JSON che rispecchia le tabelle sottostanti `session` / `messages` / `parts`. +Fai clic sul pulsante **Download Logs** per esportare la sessione. Per le sessioni Claude Code, Codex, Copilot, Cursor, Pi e Gemini ottieni la trascrizione JSONL originale su disco byte-for-byte; per OpenCode (le cui sessioni risiedono in SQLite, non su disco) ottieni un documento JSON che rispecchia le tabelle sottostanti `session` / `messages` / `parts`. ### Audit -Un report di personalità su come il tuo agente si è effettivamente comportato nelle sessioni passate. Esegue la stessa scansione del CLI `failproofai audit` ma la renderizza come poster monoschermo condivisibile + quattro sezioni sotto il fold: +Un report caratterizzato da una personalità su come il tuo agente si è effettivamente comportato nelle sessioni passate. Esegue la stessa scansione del CLI `failproofai audit` ma la renderizza come un poster condivisibile in una singola schermata + quattro sezioni sotto il fold: -1. **Poster** — riempie il primo viewport. Regione PNG auto-contenuta con il marchio failproof_ai + etichetta audit · indice dell'archetipo (`№ NN di 08`) + data audit · punteggio numerico (0–100) + pillola di rank percentile (`top 15%`) · il nome dell'archetipo (uno tra `the optimist`, `the cowboy`, `the explorer`, `the goldfish`, `the paranoid architect`, `the precision builder`, `the hammer`, `the ghost`) + strip 3-keyword · linea di rarità `// solo N% degli agenti sono questo archetipo` · tile sigillo 8×8 pixel · footer `audit yours → failproof.ai`. Tre pulsanti di condivisione si trovano appena fuori dalla casella di cattura: `post your archetype` (X intent), `share on linkedin`, `download poster`. La cattura viene eseguita tramite `html-to-image` quindi il PNG corrisponde al rendering sullo schermo pixel-per-pixel (bordi tratteggiati, maschera logo SVG, gradienti, metriche dei font — tutto preservato). -2. **Strengths** — lista di righe calm ✓ dei comportamenti che il tuo agente già fa bene, derivati dai dati di audit in diretta (clean tool-call rate, lunghezza media della sessione, zero fughe di credenziali, zero retry storms, ecc.). -3. **Quirks** — tabella di ciò che è passato inosservato, classificato per impatto: `time · what slipped + policy that would've caught it · severity pill · recurrence` (new / Nx this wk / recurring). -4. **How to improve** — lista di righe calm, una per ogni criterio prescritto: nome del criterio in bianco, descrizione in una riga, comando di installazione + pulsante di copia sul lato destro. Un pulsante `[install all]` nell'intestazione della sezione copia il comando `failproofai policy add a b c …` combinato per ogni criterio prescritto. -5. **Come back better** — due schede affiancate. Sinistra: imposta un promemoria (`3d` / `7d` / `14d` / `30d` selettore di cadenza; persiste tramite `/api/auth/reminder` una volta autenticato). Destra: sblocca i vantaggi failproof — `invite a friend` apre un modale che accetta un elenco separato da virgola/spazio/newline di email di amici (max 10 per invio), POSTs a `/api/audit/invite`, che inoltra al `POST /v0/invite` del server api. Il server api invia un'email per ogni destinatario da `invite@failproof.ai` con il mittente Cc'd e `Reply-To` impostato, quindi il destinatario vede chi lo ha invitato e il mittente riceve una copia nella sua posta in arrivo. Gli utenti anonimi vengono instradati prima tramite `AuthDialog` quindi l'email del mittente è nota prima che gli inviti vengano inviati. L'adempimento dei diritti / vantaggi è un follow-up. +1. **Poster** — riempie il primo viewport. Regione di cattura PNG autonoma con il wordmark failproof_ai + etichetta audit · indice archetipo (`№ NN di 08`) + data audit · punteggio numerico (0–100) + pillola di rango percentile (`top 15%`) · il nome dell'archetipo (uno di `the optimist`, `the cowboy`, `the explorer`, `the goldfish`, `the paranoid architect`, `the precision builder`, `the hammer`, `the ghost`) + striscia di 3 parole chiave · `// solo il N% degli agenti ha questo archetipo` riga di rarità · sigillo di riquadro pixel 8×8 · footer `audit yours → failproof.ai`. Tre pulsanti di condivisione si trovano appena fuori dalla casella di cattura: `post your archetype` (intento X), `share on linkedin`, `download poster`. La cattura viene eseguita tramite `html-to-image` quindi il PNG corrisponde al rendering sullo schermo pixel-for-pixel (bordi tratteggiati, maschera logo SVG, gradienti, metriche dei font — tutto preservato). +2. **Strengths** — elenco di righe tranquillo ✓ dei comportamenti che il tuo agente già fa bene, derivati dai dati di audit in tempo reale (velocità di chiamata tool pulita, nessun push diretto a main, zero perdite di credenziali, zero storm di ripetizione) — ognuno visualizzato solo quando la policy corrispondente ha un record pulito nella finestra di audit. +3. **Quirks** — tabella di quello che è sfuggito, classificato per gravità: `when · what slipped + the policy that would've caught it · severity pill · seen`, dove la ricorrenza recita `new` (una volta), `N× seen` (2–9 volte), o `recurring` (10+). +4. **How to improve** — elenco di righe tranquillo, uno per policy prescritta: nome della policy in bianco, descrizione di una riga, comando di installazione + pulsante copia sul lato destro. L'intestazione della sezione recita `enable all N → projected · ` (il punteggio che raggiungeresti con ogni correzione applicata), e il suo pulsante `[install all]` copia il comando combinato `failproofai policy add a b c …` per ogni policy prescritta. +5. **Come back better** — due card affiancate. Sinistra: imposta un promemoria (selezionatore di cadenza `3d` / `7d` / `14d` / `30d`; persiste tramite `/api/auth/reminder` una volta autenticato). Destra: sblocca i vantaggi failproof — `invite a friend` apre una modale che accetta un elenco di indirizzi email di amici separati da virgole/spazi/newline (max 10 per invio), li invia a `/api/audit/invite`, che viene inoltrato a `POST /v0/invite` del server api. Il server api invia un'email per destinatario da `invite@failproof.ai` con il mittente in Cc e `Reply-To` impostato, quindi il destinatario vede chi lo ha invitato e il mittente ottiene una copia nella sua inbox. Gli utenti anonimi vengono instradati prima tramite `AuthDialog` in modo che l'email del mittente sia conosciuta prima che gli inviti vengano inviati. L'adempimento dei diritti / vantaggi è un follow-up. -Guidato dal runtime `failproofai audit` — vedi [Audit CLI](/it/cli/audit) per il motore di scansione sottostante, i flag supportati e gli invarianti della cache per trascrizione. Il dashboard memorizza nella cache l'ultimo risultato su `~/.failproofai/audit-dashboard.json` (mode `0600`, singolo slot, le nuove esecuzioni sovrascrivono) quindi i revisioni sono istantanee; **sia la cache per trascrizione che la cache del risultato completo vengono rifiutate alla lettura una volta che hanno più di 7 giorni** quindi il dashboard non serve mai silenziosamente un risultato di una settimana fa — dopo il TTL `/audit` cade nello stato vuoto e richiede un nuovo esecuzione. Facendo clic su `[ re-audit now ]` vicino al fondo del report POSTs `/api/audit/run` con `noCache: true` — il re-audit bypassa la cache per trascrizione e ri-scansiona ogni trascrizione da zero piuttosto che restituire silenziosamente il risultato memorizzato nella cache — e il dashboard esegue il polling `/api/audit/status` a 1Hz fino al completamento dell'esecuzione; una striscia di progresso rosa appiccicatizia si fissa in cima al viewport durante l'esecuzione con un timer di tempo trascorso e il risultato fresco si scambia al posto al successo (nessun ricaricamento della pagina completa; un re-audit fallito lascia il report precedente intatto). In caso di errore la striscia diventa rossa con copia basata su `RerunError.kind` (`timeout` / `network` / `post_failed`). Lo stato vuoto (nessuna cache o scaduta) e lo stato zero-sessioni (cache esiste ma la scansione non ha trovato trascrizioni) vengono visualizzati separatamente. +Guidato dal runtime `failproofai audit` — vedi [Audit CLI](/it/cli/audit) per il motore di scansione sottostante, i flag supportati e gli invarianti di cache per trascrizione. La dashboard mette in cache il risultato più recente in `~/.failproofai/audit-dashboard.json` (modalità `0600`, slot singolo, le nuove esecuzioni sovrascrivono) quindi i revisiti sono istantanei; **sia le cache per trascrizione che il risultato complessivo vengono rifiutate in lettura una volta che hanno più di 7 giorni** in modo che la dashboard non serva mai silenziosamente un risultato di una settimana fa — dopo il TTL `/audit` cade nello stato vuoto e richiede un'esecuzione nuova. Fare clic su `[ re-audit now ]` vicino al fondo del report invia a `/api/audit/run` con `noCache: true` — la rivalutazione ignora la cache per trascrizione e ripete la scansione di ogni trascrizione da zero piuttosto che ritornare silenziosamente il risultato in cache — e la dashboard interroga `/api/audit/status` a 1Hz fino al completamento dell'esecuzione; una striscia di progresso rosa appiccicosa si appunta alla parte superiore del viewport durante l'esecuzione con un timer trascorso, e il risultato fresco viene scambiato in posizione al successo (nessun ricaricamento di pagina completo; una rivalutazione non riuscita lascia il report precedente intatto). Al fallimento la striscia diventa rossa con copia basata su `RerunError.kind` (`timeout` / `network` / `post_failed`). Lo stato vuoto (nessuna cache o scaduta) e lo stato zero-sessioni (cache esiste ma la scansione non ha trovato trascrizioni) vengono visualizzati separatamente. -### Criteri +### Policies -Una pagina a due schede per gestire i criteri e rivedere l'attività. +Una pagina a due schede per gestire le policy e rivedere l'attività. - - Multi-selezione quale CLI agente failproofai protegge da un singolo pannello — Claude Code, OpenAI Codex, GitHub Copilot, Cursor Agent, OpenCode, Pi e Gemini CLI hanno tutti una riga con stato di installazione (`Active` / `Detected` / `Inactive`), il percorso delle impostazioni a livello utente e un accento di colore del marchio. Seleziona o deseleziona i CLI che desideri e fai clic su `Apply changes` per installare/disinstallare il diff in un unico passaggio. I CLI il cui binario viene rilevato su PATH sono pre-selezionati. - - Attiva o disattiva i singoli criteri con un singolo clic (scrive su `~/.failproofai/policies-config.json` — condiviso tra ogni CLI installato) - - Espandi un criterio per configurarne i parametri (per i criteri che supportano `policyParams`) - - Imposta un percorso file di criteri personalizzati + - Selezione multipla di quali CLI agenti failproofai protegge da un singolo pannello — Claude Code, OpenAI Codex, GitHub Copilot, Cursor Agent, OpenCode, Pi e Gemini CLI hanno tutti una riga con stato di installazione (`Active` / `Detected` / `Inactive`), il percorso delle impostazioni dell'ambito utente e un accento con colore del marchio. Seleziona o deseleziona i CLI che desideri e fai clic su `Apply changes` per installare/disinstallare il diff in un passaggio. I CLI il cui binario viene rilevato su PATH sono preselezionati. + - Attiva o disattiva le singole policy con un solo clic (scrive in `~/.failproofai/policies-config.json` — condiviso tra ogni CLI installato) + - Espandi una policy per configurare i suoi parametri (per policy che supportano `policyParams`) + - Imposta un percorso file di policy personalizzato - - Cronologia completa impaginata di ogni evento hook che si è attivato su tutte le sessioni - - Filtra per decisione, tipo di evento, CLI (Claude Code / OpenAI Codex / GitHub Copilot _(beta)_ / Cursor Agent _(beta)_ / OpenCode _(beta)_ / Pi _(beta)_ / Gemini CLI _(beta)_), nome del criterio o ID della sessione - - Ogni riga mostra: timestamp, nome del criterio, decisione, badge CLI (arancione = Claude Code, viola = OpenAI Codex, blu = GitHub Copilot, smeraldo = Cursor Agent, ambra = OpenCode, rosa = Pi, cielo = Gemini CLI), nome del tool, ID della sessione e il motivo delle decisioni deny/instruct - - Fai clic su un ID di sessione per aprirne la trascrizione — il visualizzatore rileva automaticamente quale CLI ha attivato l'hook (Claude `~/.claude/projects/…`, Codex `~/.codex/sessions/…`, Copilot CLI `~/.copilot/session-state//events.jsonl`, Cursor Agent `~/.cursor/agent-sessions//events.jsonl`, OpenCode `~/.local/share/opencode/opencode.db`, Pi `~/.pi/agent/sessions//.jsonl`, Gemini CLI `~/.gemini/tmp//chats/.jsonl`) e renderizza il badge CLI corrispondente nell'intestazione + - Storico completo impaginato di ogni evento hook che si è attivato in tutte le sessioni + - Filtra per decisione, tipo di evento, CLI (Claude Code / OpenAI Codex / GitHub Copilot _(beta)_ / Cursor Agent _(beta)_ / OpenCode _(beta)_ / Pi _(beta)_ / Gemini CLI _(beta)_), nome della policy o ID sessione + - Ogni riga mostra: timestamp, nome della policy, decisione, badge CLI (arancione = Claude Code, viola = OpenAI Codex, blu = GitHub Copilot, smeraldo = Cursor Agent, ambra = OpenCode, rosa = Pi, azzurro = Gemini CLI), nome del tool, ID sessione e il motivo per le decisioni deny/instruct + - Fai clic su un ID sessione per aprire la sua trascrizione — il visualizzatore rileva automaticamente quale CLI ha attivato l'hook (Claude `~/.claude/projects/…`, Codex `~/.codex/sessions/…`, Copilot CLI `~/.copilot/session-state//events.jsonl`, Cursor Agent `~/.cursor/agent-sessions//events.jsonl`, OpenCode `~/.local/share/opencode/opencode.db`, Pi `~/.pi/agent/sessions//.jsonl`, Gemini CLI `~/.gemini/tmp//chats/.jsonl`) e renderizza il badge CLI corrispondente nell'intestazione --- -## Auto-refresh +## Aggiornamento automatico -Il dashboard ha un interruttore di auto-refresh nella navigazione in alto. Quando abilitato, la pagina corrente si aggiorna periodicamente per mostrare nuove sessioni e attività di criteri man mano che appaiono. Essenziale per monitorare le sessioni di agenti autonomi di lunga durata. +La dashboard ha un interruttore di aggiornamento automatico nella navigazione in alto. Quando abilitato, la pagina corrente si aggiorna periodicamente per mostrare nuove sessioni e attività di policy man mano che appaiono. Essenziale per monitorare le sessioni di agenti autonomi a lunga esecuzione. --- -## Disabilitazione delle pagine +## Disabilitare pagine -Se hai bisogno solo di alcune parti del dashboard, imposta `FAILPROOFAI_DISABLE_PAGES` su un elenco separato da virgole dei nomi delle pagine: +Se hai bisogno solo di alcune parti della dashboard, imposta `FAILPROOFAI_DISABLE_PAGES` su un elenco di nomi di pagine separati da virgole: ```bash FAILPROOFAI_DISABLE_PAGES=policies failproofai @@ -108,9 +108,9 @@ Valori validi: `policies`, `projects`, `audit`. --- -## Configurazione del percorso dei progetti +## Configurare il percorso dei progetti -Per impostazione predefinita, il dashboard legge dalla directory dei progetti Claude Code standard. Sovrascrivilo per configurazioni personalizzate: +Per impostazione predefinita, la dashboard legge dalla directory standard dei progetti Claude Code. Sovrascrivilo per configurazioni personalizzate: ```bash CLAUDE_PROJECTS_PATH=/custom/path/to/projects failproofai @@ -120,13 +120,13 @@ CLAUDE_PROJECTS_PATH=/custom/path/to/projects failproofai ## Accesso da un host non-localhost -Quando esegui il dashboard in **dev mode** (`npm run dev`) e vi accedi da un nome host diverso da `localhost` - ad esempio, un dominio personalizzato, un IP remoto o un URL tunnelato - potresti vedere un avviso come: +Quando esegui la dashboard in **modalità dev** (`npm run dev`) e la accedi da un nome host diverso da `localhost` - ad esempio, un dominio personalizzato, un IP remoto o un URL tunnelato - potresti vedere un avviso come: ```text ⚠ Blocked cross-origin request to Next.js dev resource /_next/webpack-hmr from "dashboard.example.com". ``` -Questo è Next.js che blocca l'accesso cross-origin al suo websocket HMR (hot module reload), che è una funzionalità solo per sviluppatori. Per consentire il tuo host, usa il flag `--allowed-origins`: +Questo è Next.js che blocca l'accesso cross-origin al suo websocket HMR (hot module reload), che è una funzione solo per dev. Per consentire il tuo host, usa il flag `--allowed-origins`: ```bash npm run dev -- --allowed-origins dashboard.example.com @@ -138,12 +138,12 @@ Per più host o IP, passa un elenco separato da virgole: npm run dev -- --allowed-origins dashboard.example.com,192.168.1.5 ``` -Puoi anche impostare la variabile di ambiente `FAILPROOFAI_ALLOWED_DEV_ORIGINS`: +Puoi anche impostare la variabile d'ambiente `FAILPROOFAI_ALLOWED_DEV_ORIGINS` invece: ```bash FAILPROOFAI_ALLOWED_DEV_ORIGINS=dashboard.example.com npm run dev ``` -Questo si applica solo alla modalità sviluppatore. Quando esegui `failproofai` (modalità produzione), non c'è websocket HMR e nessun problema di risorsa dev cross-origin. +Questo si applica solo alla modalità dev. Quando esegui `failproofai` (modalità produzione), non c'è alcun websocket HMR e nessun problema di risorsa dev cross-origin. \ No newline at end of file diff --git a/docs/ja/cli/audit.mdx b/docs/ja/cli/audit.mdx index 0d980bbc0..62353c5c9 100644 --- a/docs/ja/cli/audit.mdx +++ b/docs/ja/cli/audit.mdx @@ -1,57 +1,88 @@ --- -title: 過去のセッションの監査(ベータ版) +title: 過去のセッションを監査する(ベータ版) description: "過去のトランスクリプト全体で、エージェントが無駄または危険な操作を行った頻度を集計します" --- - **ベータ機能。** この監査機能は、初期フィードバックを収集しながらベータ版として提供しています。 - 検出器カタログとレポート形式は、次の安定版リリース前に変更される可能性があります。 - 問題を発見した場合は、Issueを作成してください。 + **ベータ機能。** 初期フィードバックを収集している間、監査機能はベータ版として提供されます。 + 次の安定版リリース前に、検出器カタログとレポート形式が変更される可能性があります。 + 問題があればイシューを起票してください。 -監査機能は、CLIサブコマンドではなく **/audit ダッシュボードページ** として提供されています。ダッシュボードのナビゲーションバー(PoliciesとProjectsの間)から開くか、`failproofai` をローカルで実行している場合は `http://localhost:8020/audit` に直接アクセスしてください。 +監査機能は、過去のエージェントCLIトランスクリプトを failproofai のポリシーエンジンで再生し、**`/audit` ダッシュボードページ**に共有可能なビジュアルレポートを生成します。レポートにはエージェントのアーキタイプ、0〜100のスコア、そして各ポリシーが何を検出できたかが表示されます。 -```bash -failproofai # ダッシュボードを開き、"Audit" をクリック +## 実行方法 + +3つの方法があり、いずれも同じ `/audit` レポートにアクセスできます。 + + + +```bash npx (no install) +npx -y failproofai audit +``` + +```bash failproofai audit +failproofai audit ``` -ダッシュボードは、このマシン上にある過去のエージェントCLIトランスクリプト(Claude Code、Codex、Copilot、Cursor、OpenCode、Pi、Gemini)をスキャンし、failproofai が防ぐよう設計した操作(環境変数のチェック、強制プッシュ、冗長な `cd ` プレフィックス、スリープポーリングループ、編集直後のファイル再読み込みなど)がどれだけ行われたかを報告します。 +```bash failproofai (dashboard) +failproofai +``` + + + + + + `npx -y failproofai audit` は failproofai を取得してスキャンを実行し、ダッシュボードを自動的に開きます。事前インストールは不要です。 + + + `failproofai audit` はターミナルでスキャンを実行し、完了後に `localhost:8020/audit` を自動的に開きます。 + + + `failproofai` を実行してナビバーの **Audit**(PoliciesとProjectsの間)をクリックするか、`/audit` を直接開きます。 + + + + + 使い方を確認するには `failproofai audit -h`(または `--help`)を実行してください。監査は**完全オフライン**で動作し、アカウントやネットワーク接続は不要です。`Ctrl+C` で停止するまでダッシュボードはサービスを継続します。 + + +ダッシュボードはこのマシン上の過去のエージェントCLIトランスクリプト(Claude Code、Codex、Copilot、Cursor、OpenCode、Pi、Gemini)をスキャンし、failproofai が防止するように設計された操作(環境変数チェック、フォースプッシュ、冗長な `cd ` プレフィックス、スリープポーリングループ、編集直後のファイル再読み込みなど)の発生頻度を報告します。 -各トランスクリプトについて、すべてのツール使用イベントが39個の組み込みポリシーと、ランタイムポリシーではまだカバーされていないパターンを検出する8つの監査専用検出器を通じて再実行されます。カウントはすべてのセッションにわたって、ポリシー/検出器ごとに集計されます。 +各トランスクリプトについて、すべてのツール使用イベントが39の組み込みポリシー**および**ランタイムポリシーではまだカバーされていないパターンを検出する8つの監査専用検出器で再生されます。カウントはすべてのセッションにわたってポリシー/検出器ごとに集計されます。 -## 確認できる内容 +## 取得できる情報 -`/audit` ページは6つのセクションで構成されています。 +`/audit` ページは1画面で共有可能な**ポスター**と、スクロール下部の4つのセクションで構成されています: -1. **Identity** — 監査済みのすべてのトランスクリプトにわたる重み付きシグナルに基づいて、エージェントを8つのアーキタイプ(`optimist`、`cowboy`、`explorer`、`goldfish`、`paranoid architect`、`precision builder`、`hammer`、`ghost`)のいずれかに分類します。 -2. **Strengths** — スキャンから得られた実際の数値(クリーンコール率、「認証情報漏洩ゼロ」など)。関連するsanitizeポリシーが実際に機能していることが条件となります。 -3. **Score** — 0〜100のスコアにS/A/B/C/D/Fのバンドと、推奨ポリシーをすべて有効にした場合の予測改善値を表示します。 -4. **Findings** — ポリシーごとのカード。何が起きたか、コスト、取得済みの証拠、および検出できたであろうライブタイム組み込み機能を有効にする正確な `failproofai policy add ` コマンドを表示します。 -5. **Prescribed policies** — `failproofai policies --install` コマンド一発でインストールできるように集約されたリストです。 -6. **Re-audit reminder** — 「より良い状態で戻ってきてください」。APIサーバー経由で7日間のメールリマインダーを設定できます(サインインが必要。[`failproofai auth`](/ja/cli/auth) を参照)。 +1. **ポスター** — エージェントのプロファイルを一目で確認:**アーキタイプ**(8種類のうちの1つ — `optimist`、`cowboy`、`explorer`、`goldfish`、`paranoid architect`、`precision builder`、`hammer`、`ghost`)、ペルソナキーワード、そのアーキタイプの希少性、および階層バンド付きの**0〜100スコア**(`S` から `bottom tier` まで)。XやLinkedInへの投稿やPNGダウンロードに対応した共有向けデザインです。 +2. **`// strengths`** — エージェントがすでに得意とすること。スキャンの実際の数値として表示されます(例:クリーンなツールコール率、`0` 回のmainへのプッシュ試行)。関連ポリシーで問題が検出されなかった場合のみ表示されます。 +3. **`// quirks`** — 問題として検出されたもの:failproofai がキャッチできた可能性のある動作のランク付きテーブル。*いつ*最後に発生したか、*何が問題だったか*(およびブロックできた組み込みポリシー)、その*深刻度*、*確認頻度*(`new`/`recurring`/`N× seen`)が含まれます。 +4. **`// how to improve`** — 推奨される修正リスト:コピー貼り付け可能な `failproofai policy add ` を含むポリシーの行と、すべての推奨事項を一括で有効にする**すべてインストール**ボタン、および適用後の**予測スコア**が表示されます。 +5. **`// come back better`** — 習慣づくり:再監査の**リマインダー**メールを設定(`3d`/`7d`/`14d`/`30d`)するか、今すぐ再監査を実行し、**友人を招待**して自分自身の監査を実行してもらえます(failproof.ai から送信され、あなたにCCされます)。リマインダーと招待にはサインインが必要です。[`failproofai auth`](/ja/cli/auth) を参照してください。 ## 監査専用検出器 -これらは、リアルタイムでは(まだ)適用されていない「非効率な動作」パターンを検出します。監査中のみ実行され、ライブのツール呼び出しをブロックすることはありません。 +これらはリアルタイムでは(まだ)強制されていない「非効率な動作」パターンを検出します。監査中のみ実行され、ライブのツールコールをブロックすることはありません。 -| 検出器 | カウント対象 | +| 検出器 | 検出内容 | |---|---| -| `redundant-cd-cwd` | コマンドがすでに `cwd` で実行されているにもかかわらず、`cd && …` で始まるBashコマンド。 | -| `prefer-edit-over-read-cat` | 単一のソースファイルへの `cat`/`head`/`tail`/`less`/`more` 操作 — `Read` ツールを使用すべき。 | -| `prefer-edit-over-sed-awk` | `sed -i` / `awk … > file` によるインプレース編集 — `Edit` ツールを使用すべき。 | -| `prefer-write-over-heredoc` | ヒアドキュメントや複数行の `echo > file` によるファイル書き込み — `Write` ツールを使用すべき。 | -| `sleep-polling-loop` | 長い `sleep N`(30秒以上)や `while …; sleep …; done` によるポーリングループ。 | -| `find-from-root` | `find /`、`find /home`、`find /usr` などのルートからの検索 — `cwd` にスコープを絞るべき。 | +| `redundant-cd-cwd` | コマンドがすでに `cwd` で実行されているにもかかわらず、`cd && …` で始まる Bash コマンド。 | +| `prefer-edit-over-read-cat` | 単一のソースファイルに対する `cat`/`head`/`tail`/`less`/`more` — `Read` ツールを使用してください。 | +| `prefer-edit-over-sed-awk` | `sed -i` / `awk … > file` によるインプレース編集 — `Edit` ツールを使用してください。 | +| `prefer-write-over-heredoc` | ヒアドキュメントや複数行の `echo > file` によるファイル書き込み — `Write` ツールを使用してください。 | +| `sleep-polling-loop` | 長い `sleep N`(30秒以上)または `while …; sleep …; done` ポーリングループ。 | +| `find-from-root` | `find /`、`find /home`、`find /usr` など — 代わりに `cwd` をスコープとして使用してください。 | | `git-commit-no-verify` | `git commit … --no-verify` / `-n` によるフックのスキップ。 | -| `reread-after-edit` | 同一セッション内で `Edit`/`Write` した直後のファイルへの `Read` 操作。 | +| `reread-after-edit` | 同じセッション内で `Edit`/`Write` した直後のファイルへの `Read`。 | ## キャッシュ -- **トランスクリプトごとのキャッシュ** は `~/.failproofai/cache/audit/.json` に保存され、`(mtime, size, engineVersion, detectorVersion)` をキーとしています。トランスクリプトやポリシー/検出器のコードが変更されると自動的に無効化されます。各エントリには `cachedAt` タイムスタンプが **TTLメタデータ** として保存されます(キャッシュキーには含まれません)。**7日**以上経過したエントリは読み取り時に拒否されるため、長期間保持された結果が進化する検出器の意図と乖離することはありません。 -- **結果全体のキャッシュ** は `~/.failproofai/audit-dashboard.json`(モード0600)に保存されます。ナビゲーション時に再実行なしでダッシュボードを即座にレンダリングできます。こちらも **7日間のTTL** を超えると読み取り時に拒否されます — その場合 `/audit` は空の状態にフォールバックし、新たな実行を促します。レポート下部にある `[ re-audit now ]` をクリックして更新できます。再監査は `noCache: true` を送信するため、トランスクリプトごとのキャッシュをバイパスして、キャッシュ済みの結果を返さずすべてのトランスクリプトを再スキャンします。実行の進捗はページ上部のスティッキーストリップでストリーミング表示され、成功するとページのリロードなしに結果がその場で更新されます(再監査が失敗した場合は直前のレポートが維持されます)。 +- **トランスクリプトごとのキャッシュ**:`~/.failproofai/cache/audit/.json` に `(mtime, size, engineVersion, detectorVersion)` をキーとして保存されます。トランスクリプトまたはポリシー/検出器のコードが変更された場合、自動的に無効化されます。各エントリには `cachedAt` タイムスタンプが **TTLメタデータ**として保存されます(キャッシュキーには含まれません)。**7日**以上経過したエントリは読み取り時に拒否されるため、検出器の意図が進化しても古い結果が残り続けることはありません。 +- **結果全体のキャッシュ**:`~/.failproofai/audit-dashboard.json`(モード 0600)。ダッシュボードのナビゲーション時に再実行なしで即座にレンダリングできます。**7日間のTTL**を超えると読み取り時に拒否されます。その場合、`/audit` は空の状態にフォールバックして新規実行を促します。レポート下部の `[ re-audit now ]` をクリックすると更新できます。再監査は `noCache: true` を送信するため、トランスクリプトごとのキャッシュをバイパスしてキャッシュ結果を返す代わりにすべてのトランスクリプトを再スキャンします。実行状況は上部の固定ストリップでストリーミング表示され、成功時は結果がその場で更新されます(ページのリロードなし。再監査に失敗した場合は以前のレポートが保持されます)。 ## 注意事項 -- **変更なし。** 監査は読み取り専用モードで再実行されます。`warn-repeated-tool-calls` はスキップされます。これは、実行するとセッションごとのサイドカーが変更されてしまうためです。 -- **ワークフローポリシーはスキップ。** `require-*-before-stop` ポリシーは `Stop` イベント時にのみ機能し、ライブのgit状態に対して `execSync` を実行します。「2025年に何が起きていたか」という意味のある解釈ができないため、監査カウントには表示されません。 -- **カスタムポリシーはスキップ。** ユーザーが設定したカスタムフックは再実行されません(元のセッション以降に変更されている可能性があるため)。 \ No newline at end of file +- **変更なし。** 監査は読み取り専用モードで再生されます。`warn-repeated-tool-calls` は、セッションごとのサイドカーが変更されてしまうためスキップされます。 +- **ワークフローポリシーはスキップ。** `require-*-before-stop` ポリシーは `Stop` イベント時にのみ発火し、ライブのgit状態に対して `execSync` を実行します。これらは「2025年に何が起きたか」という意味のある解釈ができないため、監査カウントには含まれません。 +- **カスタムポリシーはスキップ。** ユーザーが定義したカスタムフックは再生されません(元のセッション以降に変更されている可能性があるため)。 \ No newline at end of file diff --git a/docs/ja/dashboard.mdx b/docs/ja/dashboard.mdx index 5364a5927..051ebea63 100644 --- a/docs/ja/dashboard.mdx +++ b/docs/ja/dashboard.mdx @@ -4,7 +4,7 @@ description: "エージェントセッションの監視、ツール呼び出し icon: chart-line --- -failproofai ダッシュボードは、AI エージェントセッションの監視とポリシー管理のためのローカル Web アプリケーションです。席を外している間にエージェントが何をしたかを確認できます。 +failproofai ダッシュボードは、AIエージェントセッションの監視とポリシー管理を行うローカルWebアプリケーションです。あなたが離れている間にエージェントが何をしていたかを確認できます。 --- @@ -16,22 +16,22 @@ failproofai `http://localhost:8020` で開きます。 -ダッシュボードはファイルシステムから直接読み込みます。Claude Code のプロジェクトフォルダーと failproofai の設定ファイルが対象です。リモートサービスへの書き込みは一切行われません。 +ダッシュボードはファイルシステムから直接読み取ります。Claude Code のプロジェクトフォルダーと failproofai の設定ファイルを参照しており、リモートサービスへの書き込みは一切行いません。 --- -## ページ +## ページ一覧 ### プロジェクト -マシン上で見つかった Claude Code、OpenAI Codex、GitHub Copilot CLI _(ベータ)_、Cursor Agent _(ベータ)_、OpenCode _(ベータ)_、Pi _(ベータ)_、Gemini CLI _(ベータ)_ のすべてのプロジェクトを一覧表示します。Claude プロジェクトは `~/.claude/projects/`(または `CLAUDE_PROJECTS_PATH` で設定したパス)から検出されます。Codex プロジェクトは `~/.codex/sessions///
/*.jsonl` 以下のすべてのトランスクリプトをスキャンし、各セッションの最初のレコードに記録された `cwd` でグループ化することで検出されます。Copilot CLI プロジェクトは各 `~/.copilot/session-state//workspace.yaml`(`COPILOT_HOME` で設定可能)をスキャンし、`cwd` フィールドでグループ化することで検出されます。Cursor Agent プロジェクトは `~/.cursor/agent-sessions//`(`CURSOR_HOME` で設定可能、`conversations/` および `sessions/` がフォールバックとして探索)以下のセッションごとのメタデータをスキャンし、`meta.json` / `session.json` / `workspace.yaml` の `cwd` スカラーから検出されます。OpenCode プロジェクトは `~/.local/share/opencode/opencode.db` の SQLite DB を `opencode db --format json` 経由でクエリし(`session` および `project` テーブルを読み取り `project_id` でグループ化)、検出されます。Pi プロジェクトは `~/.pi/agent/sessions//_.jsonl`(`PI_SESSIONS_DIR` で設定可能)以下のセッションごとの JSONL トランスクリプトをスキャンし、各セッションの最初のレコードから `cwd` を取得することで検出されます。Gemini CLI プロジェクトは `~/.gemini/tmp//chats/session--.jsonl`(`GEMINI_SESSIONS_DIR` で設定可能)をスキャンし、隣接する `.project_root` テキストマーカーから正規の cwd を復元することで検出されます。複数の CLI で使用されたプロジェクトは、該当するバッジをすべて表示した単一の行としてレンダリングされます。テーブル上部の **CLI** ドロップダウンで特定のエージェント CLI に絞り込めます。選択は `?cli=claude|codex|copilot|cursor|opencode|pi|gemini` として URL に保存されます。 +マシン上で見つかった Claude Code、OpenAI Codex、GitHub Copilot CLI _(ベータ)_、Cursor Agent _(ベータ)_、OpenCode _(ベータ)_、Pi _(ベータ)_、Gemini CLI _(ベータ)_ のすべてのプロジェクトを一覧表示します。Claudeプロジェクトは `~/.claude/projects/`(または `CLAUDE_PROJECTS_PATH` で設定されたパス)から検出されます。Codexプロジェクトは `~/.codex/sessions///
/*.jsonl` 以下のすべてのトランスクリプトをスキャンし、各セッションの最初のレコードに記録された `cwd` でグループ化して検出されます。Copilot CLI プロジェクトは各 `~/.copilot/session-state//workspace.yaml`(`COPILOT_HOME` で設定可能)をスキャンし、その `cwd` フィールドでグループ化して検出されます。Cursor Agent プロジェクトは `~/.cursor/agent-sessions//`(`CURSOR_HOME` で設定可能。フォールバックとして `conversations/` と `sessions/` も確認)以下のセッションごとのメタデータから `meta.json` / `session.json` / `workspace.yaml` の `cwd` スカラーを読み取って検出されます。OpenCode プロジェクトは `~/.local/share/opencode/opencode.db` の SQLite DB を `opencode db --format json` 経由でクエリし(`session` テーブルと `project` テーブルを読み取り `project_id` でグループ化)して検出されます。Pi プロジェクトは `~/.pi/agent/sessions//_.jsonl`(`PI_SESSIONS_DIR` で設定可能)以下のセッションごとの JSONL トランスクリプトをスキャンし、各セッションの最初のレコードから `cwd` を取得して検出されます。Gemini CLI プロジェクトは `~/.gemini/tmp//chats/session--.jsonl`(`GEMINI_SESSIONS_DIR` で設定可能)をスキャンし、隣接する `.project_root` テキストマーカーから正規の cwd を復元して検出されます。複数の CLI で使用されたプロジェクトは、すべての一致するバッジを持つ単一の行として表示されます。テーブル上部の **CLI** ドロップダウンで特定のエージェント CLI に絞り込めます。URLには選択内容が `?cli=claude|codex|copilot|cursor|opencode|pi|gemini` として保持されます。 各プロジェクトには以下が表示されます: - プロジェクト名(フォルダーパスから導出) - CLI バッジ — `Claude Code`(オレンジ)、`OpenAI Codex`(パープル)、`GitHub Copilot`(ブルー)、`Cursor Agent`(エメラルド)、`OpenCode`(アンバー)、`Pi`(ピンク)、`Gemini CLI`(スカイ) - 最新セッションアクティビティの日付 -プロジェクトをクリックするとそのセッションを確認できます。 +プロジェクトをクリックするとそのセッション一覧が表示されます。 ### セッション @@ -39,52 +39,52 @@ failproofai - セッション ID - 開始・終了タイムスタンプ - ツール呼び出し回数 -- フックアクティビティ数(発動したポリシー数) +- フックアクティビティ数(発火したポリシーの数) -日付範囲フィルターとセッション ID 検索でリストを絞り込めます。セッションはページネーションされます。 +日付範囲フィルターとセッション ID 検索で絞り込みができます。セッションはページネーションされています。 セッションをクリックするとセッションビューアーが開きます。 ### セッションビューアー -セッションビューアーは自律エージェントに対する重要な問いに答えます:エージェントは何をしたか、そして意図した動作をしていたか?ヘッダーの隣の CLI バッジは、セッションが Claude Code、OpenAI Codex、GitHub Copilot CLI、Cursor Agent、OpenCode、Pi、または Gemini CLI のトランスクリプトであることを示します。セッション内で起きたすべての出来事のタイムラインが表示されます: +セッションビューアーは、自律型エージェントにとって重要な問いに答えます:エージェントは何をしたのか、そして想定通りに動作していたのか?ヘッダーの横の CLI バッジが、セッションが Claude Code、OpenAI Codex、GitHub Copilot CLI、Cursor Agent、OpenCode、Pi、Gemini CLI のどのトランスクリプトかを示します。セッション内で起きたことのタイムラインが表示されます: -- **メッセージ** — Claude のテキストレスポンスとユーザープロンプト -- **ツール呼び出し** — Claude が呼び出したすべてのツール、その入力と出力 -- **ポリシーアクティビティ** — 各ツール呼び出しに対して、どのポリシーが発動し、どの決定を返したか +- **メッセージ** — Claudeのテキスト応答とユーザープロンプト +- **ツール呼び出し** — Claudeが呼び出したすべてのツールとその入力・出力 +- **ポリシーアクティビティ** — 各ツール呼び出しに対して、どのポリシーが発火しどの判断が返されたか -上部のステータスバーには、セッション時間、総ツール呼び出し回数、フック決定のサマリー(allow / deny / instruct の件数)が表示されます。 +上部のスタッツバーにはセッション時間、合計ツール呼び出し数、フック判断のサマリー(allow / deny / instruct の件数)が表示されます。 -**ログをダウンロード** ボタンをクリックするとセッションをエクスポートできます。Claude Code、Codex、Copilot、Cursor、Pi、Gemini のセッションではディスク上のオリジナル JSONL トランスクリプトがバイト単位でそのまま取得されます。OpenCode(セッションがディスクではなく SQLite に保存される)では、基盤となる `session` / `messages` / `parts` テーブルを反映した JSON ドキュメントが取得されます。 +**ログをダウンロード** ボタンをクリックするとセッションをエクスポートできます。Claude Code、Codex、Copilot、Cursor、Pi、Gemini のセッションはディスク上の元の JSONL トランスクリプトがバイト単位でそのまま取得されます。OpenCode(セッションがディスクではなく SQLite に保存される)では、`session` / `messages` / `parts` テーブルのデータを反映した JSON ドキュメントが取得されます。 ### 監査 -過去のセッション全体でエージェントが実際にどのような動作をしていたかを個性豊かなレポートで表示します。`failproofai audit` CLI と同じスキャンを実行しますが、単一画面で共有可能なポスター+4つの折りたたみセクションとしてレンダリングされます: +過去のセッション全体にわたるエージェントの実際の挙動を個性的なレポートとして表示します。`failproofai audit` CLI と同じスキャンを実行しますが、単一画面の共有可能なポスターと折り畳み以降の4つのセクションとしてレンダリングされます: -1. **ポスター** — 最初のビューポートを占有します。failproof_ai ワードマーク+監査ラベル・アーキタイプインデックス(`№ NN of 08`)+監査日・数値スコア(0〜100)+パーセンタイルランクのピル(`top 15%`)・アーキタイプ名(`the optimist`、`the cowboy`、`the explorer`、`the goldfish`、`the paranoid architect`、`the precision builder`、`the hammer`、`the ghost` のいずれか)+3キーワードストリップ・`// only N% of agents are this archetype` レアリティライン・8×8 ピクセルのシジルタイル・`audit yours → failproof.ai` フッターを含む自己完結型の PNG キャプチャ領域。キャプチャボックスの外側に3つのシェアボタンがあります:`post your archetype`(X インテント)、`share on linkedin`、`download poster`。キャプチャは `html-to-image` を通じて実行されるため、PNG は画面上のレンダリングとピクセル単位で一致します(破線の枠線、SVG ロゴマスク、グラデーション、フォントメトリクス — すべて保持)。 -2. **長所** — エージェントが既に正しく行っている動作を、落ち着いた ✓ 行リストで表示。ライブ監査データから導出(クリーンなツール呼び出し率、平均セッション長、クレデンシャルリークゼロ、リトライストームゼロ など)。 -3. **気になる点** — 問題を重大度順にランク付けしたテーブル:`時刻 · 問題の内容 + 対応するポリシー · 重大度ピル · 再発状況`(new / 今週N回 / 繰り返し)。 -4. **改善方法** — 推奨ポリシーごとに落ち着いた行リストで表示:白色のポリシー名、1行の説明、右側にインストールコマンド+コピーボタン。セクションヘッダーの `[すべてインストール]` ボタンで、すべての推奨ポリシーに対する `failproofai policy add a b c …` コマンドをまとめてコピーできます。 -5. **次回に向けて** — 2つの横並びカード。左:リマインダーの設定(`3d` / `7d` / `14d` / `30d` の間隔ピッカー;認証後 `/api/auth/reminder` で永続化)。右:failproof 特典のアンロック — `invite a friend` はカンマ・スペース・改行区切りの友人メールアドレスリスト(1回の送信で最大10件)を入力するモーダルを開き、`/api/audit/invite` に POST します。API サーバーは受信者1人ずつに `invite@failproof.ai` からメールを送信し、送信者を Cc に、`Reply-To` を設定します。受信者には招待した人が分かり、送信者は自分の受信箱にコピーが届きます。匿名ユーザーは招待送信前に送信者のメールアドレスを確認するため、まず `AuthDialog` にルーティングされます。エンタイトルメント / 特典の履行は今後対応予定です。 +1. **ポスター** — 最初のビューポートを埋めます。failproof_ai ワードマーク+監査ラベル・アーキタイプインデックス(`№ NN of 08`)+監査日・数値スコア(0〜100)+パーセンタイルランクピル(`top 15%`)・アーキタイプ名(`the optimist`、`the cowboy`、`the explorer`、`the goldfish`、`the paranoid architect`、`the precision builder`、`the hammer`、`the ghost` のいずれか)+3キーワードストリップ・`// only N% of agents are this archetype` レアリティ行・8×8ピクセルシジルタイル・`audit yours → failproof.ai` フッターを含む自己完結型 PNG キャプチャ領域。キャプチャボックスのすぐ外に3つのシェアボタンがあります:`post your archetype`(X インテント)、`share on linkedin`、`download poster`。キャプチャは `html-to-image` で実行されるため、PNG は画面表示とピクセル単位で一致します(破線ボーダー、SVG ロゴマスク、グラデーション、フォントメトリクスもすべて保持されます)。 +2. **強み** — 監査データから導出された、エージェントがすでに正しく行っている動作の落ち着いた ✓ 行リスト(クリーンなツール呼び出し率、メインへの直接プッシュなし、認証情報の漏洩なし、リトライストームなし)— 関連するポリシーが監査ウィンドウ全体でクリーンな記録を持つ場合にのみ表示されます。 +3. **クセ** — 深刻度順にランク付けされた問題点のテーブル:`いつ・何が漏れた+それを検知するはずのポリシー・深刻度ピル・検出回数`。再発回数は `new`(1回)、`N× seen`(2〜9回)、`recurring`(10回以上)と表示されます。 +4. **改善方法** — 推奨ポリシーごとの落ち着いた行リスト:ポリシー名を白文字で、1行の説明、右側にインストールコマンド+コピーボタン。セクションヘッダーには `enable all N → projected · `(すべての修正を適用した場合に到達するスコア)が表示され、`[install all]` ボタンは推奨されるすべてのポリシーをまとめた `failproofai policy add a b c …` コマンドをコピーします。 +5. **次回はもっとよく** — 2つの横並びカード。左:リマインダーの設定(`3d` / `7d` / `14d` / `30d` のケイデンスピッカー。認証後に `/api/auth/reminder` 経由で保存されます)。右:failproof の特典を解除 — `invite a friend` はカンマ・スペース・改行区切りの友人のメールアドレスリスト(1回の送信で最大10件)を入力するモーダルを開き、`/api/audit/invite` に POST します。api-server の `POST /v0/invite` に転送され、`invite@failproof.ai` から受信者1人ずつにメールが送信されます。送信者は CC され `Reply-To` が設定されるため、受信者は誰が招待したかがわかり、送信者も受信トレイにコピーが届きます。匿名ユーザーは先に `AuthDialog` を経由するため、招待送信前に送信者のメールアドレスが確認されます。エンタイトルメント/特典のフルフィルメントは今後対応予定です。 -`failproofai audit` ランタイムによって動作します。基盤となるスキャンエンジン、対応フラグ、トランスクリプトごとのキャッシュ不変条件については [Audit CLI](/ja/cli/audit) を参照してください。ダッシュボードは最新の結果を `~/.failproofai/audit-dashboard.json`(モード `0600`、単一スロット、新しい実行で上書き)にキャッシュするため、再訪問は即座に表示されます。**トランスクリプトごとのキャッシュおよび結果全体のキャッシュは、7日を超えると読み取り時に拒否されます**。ダッシュボードが古い結果を黙ってサービスすることはありません。TTL を過ぎると `/audit` は空の状態にフォールスルーし、新しい実行を促します。レポート下部の `[ re-audit now ]` をクリックすると、`noCache: true` を付けて `/api/audit/run` に POST されます。再監査はトランスクリプトごとのキャッシュをバイパスし、キャッシュ済み結果を黙って返すのではなく、すべてのトランスクリプトをゼロから再スキャンします。ダッシュボードは実行完了まで `/api/audit/status` を 1Hz でポーリングし、実行中はビューポート上部にスティッキーなピンクのプログレスストリップが経過タイマーとともに表示されます。成功すると新しい結果がページ全体のリロードなしにその場で差し替えられます。失敗すると、ストリップは `RerunError.kind`(`timeout` / `network` / `post_failed`)に応じたコピーとともに赤くなります。空の状態(キャッシュなしまたは期限切れ)とセッションゼロの状態(キャッシュは存在するがスキャンでトランスクリプトが見つからなかった)は別々に表示されます。 +`failproofai audit` ランタイムで動作します。基盤となるスキャンエンジン、サポートされるフラグ、トランスクリプトごとのキャッシュの動作については [Audit CLI](/ja/cli/audit) を参照してください。ダッシュボードは最新の結果を `~/.failproofai/audit-dashboard.json`(モード `0600`、単一スロット、新しい実行で上書き)にキャッシュするため、再訪問は即時に表示されます。**トランスクリプトごとのキャッシュと結果全体のキャッシュはいずれも、7日を超えると読み取り時に拒否されます**。そのため、ダッシュボードが1週間前の古い結果を無音で提供することはありません。TTL を過ぎると `/audit` は空の状態にフォールスルーして再実行を促します。レポート下部の `[ re-audit now ]` をクリックすると `noCache: true` で `/api/audit/run` に POST されます。再監査はトランスクリプトごとのキャッシュをバイパスし、キャッシュ結果を返すのではなくすべてのトランスクリプトを最初からスキャンし直します。ダッシュボードは実行が完了するまで 1Hz で `/api/audit/status` をポーリングし、実行中はビューポート上部にスティッキーなピンクの進行状況バーと経過タイマーが表示されます。成功すると新しい結果がその場で差し替えられます(フルページリロードなし。再監査が失敗した場合は以前のレポートがそのまま残ります)。失敗時はバーが赤くなり、`RerunError.kind`(`timeout` / `network` / `post_failed`)に応じたメッセージが表示されます。空の状態(キャッシュなしまたは期限切れ)とセッションなしの状態(キャッシュは存在するがスキャンでトランスクリプトが見つからなかった)は別々に表示されます。 ### ポリシー -ポリシーの管理とアクティビティの確認のための2タブページです。 +ポリシーの管理とアクティビティの確認を行う2タブのページです。 - - 単一パネルから failproofai が保護するエージェント CLI を複数選択 — Claude Code、OpenAI Codex、GitHub Copilot、Cursor Agent、OpenCode、Pi、Gemini CLI のすべてにインストール状況(`Active` / `Detected` / `Inactive`)、ユーザースコープの設定パス、ブランドカラーのアクセントを持つ行があります。必要な CLI にチェックを入れ、`Apply changes` をクリックすると差分のインストール/アンインストールを一括で実行できます。PATH 上でバイナリが検出された CLI はあらかじめチェックされます。 - - 個別ポリシーのオン/オフをワンクリックで切り替え(`~/.failproofai/policies-config.json` に書き込み — インストールされているすべての CLI で共有) - - ポリシーを展開してパラメーターを設定(`policyParams` をサポートするポリシーの場合) - - カスタムポリシーファイルのパスを設定 + - 単一のパネルから failproofai が保護するエージェント CLI を複数選択できます — Claude Code、OpenAI Codex、GitHub Copilot、Cursor Agent、OpenCode、Pi、Gemini CLI それぞれの行にインストール状態(`Active` / `Detected` / `Inactive`)、ユーザースコープの設定パス、ブランドカラーのアクセントが表示されます。有効にしたい CLI にチェックを入れ、`Apply changes` をクリックすると差分が一括でインストール/アンインストールされます。PATH 上でバイナリが検出された CLI は事前にチェックされています。 + - 個々のポリシーをクリック一つでオン/オフに切り替えられます(`~/.failproofai/policies-config.json` に書き込まれ、インストール済みのすべての CLI で共有されます) + - ポリシーを展開してパラメーターを設定できます(`policyParams` をサポートするポリシーのみ) + - カスタムポリシーファイルのパスを設定できます - - すべてのセッションにわたって発動したすべてのフックイベントのページネーション付き完全履歴 - - 決定、イベントタイプ、CLI(Claude Code / OpenAI Codex / GitHub Copilot _(ベータ)_ / Cursor Agent _(ベータ)_ / OpenCode _(ベータ)_ / Pi _(ベータ)_ / Gemini CLI _(ベータ)_)、ポリシー名、またはセッション ID でフィルタリング - - 各行に表示される内容:タイムスタンプ、ポリシー名、決定、CLI バッジ(オレンジ = Claude Code、パープル = OpenAI Codex、ブルー = GitHub Copilot、エメラルド = Cursor Agent、アンバー = OpenCode、ピンク = Pi、スカイ = Gemini CLI)、ツール名、セッション ID、deny/instruct 決定の理由 - - セッション ID をクリックするとそのトランスクリプトが開きます — ビューアーはフックを発動させた CLI を自動検出し(Claude `~/.claude/projects/…`、Codex `~/.codex/sessions/…`、Copilot CLI `~/.copilot/session-state//events.jsonl`、Cursor Agent `~/.cursor/agent-sessions//events.jsonl`、OpenCode `~/.local/share/opencode/opencode.db`、Pi `~/.pi/agent/sessions//.jsonl`、Gemini CLI `~/.gemini/tmp//chats/.jsonl`)、ヘッダーに対応する CLI バッジをレンダリングします + - すべてのセッションにわたって発火したすべてのフックイベントのフルページネーション履歴 + - 判断、イベントタイプ、CLI(Claude Code / OpenAI Codex / GitHub Copilot _(ベータ)_ / Cursor Agent _(ベータ)_ / OpenCode _(ベータ)_ / Pi _(ベータ)_ / Gemini CLI _(ベータ)_)、ポリシー名、セッション ID でフィルタリング可能 + - 各行には:タイムスタンプ、ポリシー名、判断、CLI バッジ(オレンジ = Claude Code、パープル = OpenAI Codex、ブルー = GitHub Copilot、エメラルド = Cursor Agent、アンバー = OpenCode、ピンク = Pi、スカイ = Gemini CLI)、ツール名、セッション ID、deny/instruct 判断の理由が表示されます + - セッション ID をクリックするとそのトランスクリプトが開きます — ビューアーはフックを発火した CLI(Claude `~/.claude/projects/…`、Codex `~/.codex/sessions/…`、Copilot CLI `~/.copilot/session-state//events.jsonl`、Cursor Agent `~/.cursor/agent-sessions//events.jsonl`、OpenCode `~/.local/share/opencode/opencode.db`、Pi `~/.pi/agent/sessions//.jsonl`、Gemini CLI `~/.gemini/tmp//chats/.jsonl`)を自動検出し、ヘッダーに対応する CLI バッジを表示します @@ -92,13 +92,13 @@ failproofai ## 自動更新 -ダッシュボードの上部ナビゲーションには自動更新のトグルがあります。有効にすると、現在のページが定期的に更新され、新しいセッションやポリシーアクティビティが表示されます。長時間実行される自律エージェントセッションの監視に欠かせません。 +ダッシュボードの上部ナビゲーションには自動更新トグルがあります。有効にすると、現在のページが定期的に更新され、新しいセッションやポリシーアクティビティが表示されます。長時間動作する自律型エージェントセッションの監視に不可欠です。 --- ## ページの無効化 -ダッシュボードの一部のみが必要な場合は、`FAILPROOFAI_DISABLE_PAGES` にページ名のカンマ区切りリストを設定します: +ダッシュボードの一部のみ必要な場合は、`FAILPROOFAI_DISABLE_PAGES` にカンマ区切りのページ名リストを設定します: ```bash FAILPROOFAI_DISABLE_PAGES=policies failproofai @@ -110,7 +110,7 @@ FAILPROOFAI_DISABLE_PAGES=policies failproofai ## プロジェクトパスの設定 -デフォルトでは、ダッシュボードは標準の Claude Code プロジェクトディレクトリから読み込みます。カスタム設定の場合は上書きできます: +デフォルトでは、ダッシュボードは標準の Claude Code プロジェクトディレクトリから読み取ります。カスタム設定の場合は上書きできます: ```bash CLAUDE_PROJECTS_PATH=/custom/path/to/projects failproofai @@ -120,19 +120,19 @@ CLAUDE_PROJECTS_PATH=/custom/path/to/projects failproofai ## localhost 以外のホストからのアクセス -**dev モード**(`npm run dev`)でダッシュボードを実行し、`localhost` 以外のホスト名(カスタムドメイン、リモート IP、トンネリングされた URL など)からアクセスすると、次のような警告が表示される場合があります: +**開発モード**(`npm run dev`)でダッシュボードを実行し、`localhost` 以外のホスト名(カスタムドメイン、リモート IP、トンネル URL など)からアクセスすると、次のような警告が表示されることがあります: ```text ⚠ Blocked cross-origin request to Next.js dev resource /_next/webpack-hmr from "dashboard.example.com". ``` -これは Next.js が HMR(ホットモジュールリロード)WebSocket へのクロスオリジンアクセスをブロックしている警告です。HMR は dev 専用の機能です。ホストを許可するには `--allowed-origins` フラグを使用します: +これは、開発専用機能である HMR(ホットモジュールリロード)WebSocket へのクロスオリジンアクセスを Next.js がブロックしているためです。ホストを許可するには `--allowed-origins` フラグを使用します: ```bash npm run dev -- --allowed-origins dashboard.example.com ``` -複数のホストや IP を指定する場合は、カンマ区切りリストで渡します: +複数のホストや IP を許可する場合は、カンマ区切りのリストで指定します: ```bash npm run dev -- --allowed-origins dashboard.example.com,192.168.1.5 @@ -145,5 +145,5 @@ FAILPROOFAI_ALLOWED_DEV_ORIGINS=dashboard.example.com npm run dev ``` -これは dev モードにのみ適用されます。`failproofai`(本番モード)を実行する場合は、HMR WebSocket もクロスオリジン dev リソースの問題も発生しません。 +これは開発モードにのみ適用されます。`failproofai`(本番モード)を実行する場合、HMR WebSocket は存在せず、クロスオリジン開発リソースの問題も発生しません。 \ No newline at end of file diff --git a/docs/ko/cli/audit.mdx b/docs/ko/cli/audit.mdx index 1765b4e9f..40bab9270 100644 --- a/docs/ko/cli/audit.mdx +++ b/docs/ko/cli/audit.mdx @@ -1,57 +1,90 @@ --- title: 과거 세션 감사 (베타) -description: "과거 트랜스크립트에서 에이전트가 낭비적이거나 위험한 작업을 수행한 빈도 집계" +description: "과거 트랜스크립트에서 에이전트가 낭비적이거나 위험한 행동을 얼마나 자주 했는지 집계" --- **베타 기능.** 초기 피드백을 수집하는 동안 감사 기능은 베타로 제공됩니다. - 다음 안정 버전 출시 전에 감지기 카탈로그와 보고서 형식이 변경될 수 있습니다. - 문제가 있으면 이슈를 열어 주세요. + 다음 안정 버전 출시 전까지 감지기 카탈로그와 리포트 형식이 변경될 수 있습니다. + 이상한 점이 있으면 이슈를 열어 주세요. -감사 기능은 이제 CLI 서브커맨드가 아닌 **/audit 대시보드 페이지**로 제공됩니다. 대시보드 내비게이션 바(Policies와 Projects 사이)에서 열거나, `failproofai`를 로컬에서 실행 중일 때 `http://localhost:8020/audit`을 직접 방문하세요. +감사 기능은 과거 에이전트 CLI 트랜스크립트를 failproofai의 정책 엔진으로 재실행하여, +**`/audit` 대시보드 페이지**에 공유 가능한 시각적 리포트를 렌더링합니다. +에이전트의 아키타입, 0~100점 점수, 그리고 어떤 정책이 무엇을 잡아냈을지 구체적으로 보여줍니다. -```bash -failproofai # 대시보드를 열고 "Audit"을 클릭하세요 +## 실행 방법 + +세 가지 방법이 있으며, 모두 동일한 `/audit` 리포트로 연결됩니다. + + + +```bash npx (no install) +npx -y failproofai audit +``` + +```bash failproofai audit +failproofai audit ``` -대시보드는 이 머신의 과거 에이전트 CLI 트랜스크립트(Claude Code, Codex, Copilot, Cursor, OpenCode, Pi, Gemini)를 스캔하고, failproofai가 차단하도록 설계된 작업들이 얼마나 자주 발생했는지 보고합니다. 예를 들어 환경 변수 확인, 강제 푸시, 불필요한 `cd ` 접두사, sleep 폴링 루프, 방금 편집한 파일 재읽기 등이 해당합니다. +```bash failproofai (dashboard) +failproofai +``` + + + + + + `npx -y failproofai audit`는 failproofai를 가져와 스캔을 실행하고 대시보드를 열어줍니다 — 사전 설치가 필요 없습니다. + + + `failproofai audit`는 터미널에서 스캔을 실행한 뒤, 완료되면 자동으로 `localhost:8020/audit`를 엽니다. + + + `failproofai`를 실행하고 내비게이션 바의 **Audit**을 클릭하거나(Policies와 Projects 사이), `/audit`을 직접 여세요. + + + + + `failproofai audit -h` (또는 `--help`)를 실행하면 사용법을 확인할 수 있습니다. 감사는 **완전히 오프라인**으로 실행되며 — 계정이나 네트워크가 필요 없습니다 — `Ctrl+C`로 중지할 때까지 대시보드가 계속 서비스됩니다. + + +대시보드는 이 머신에 있는 과거 에이전트 CLI 트랜스크립트(Claude Code, Codex, Copilot, Cursor, OpenCode, Pi, Gemini)를 스캔하여, failproofai가 차단하도록 설계된 행동들 — 환경 변수 확인, 강제 푸시, 불필요한 `cd ` 접두사, sleep 폴링 루프, 방금 편집한 파일 재읽기 등 — 이 얼마나 자주 발생했는지 보고합니다. -각 트랜스크립트에 대해 모든 도구 사용 이벤트는 39개의 내장 정책과 **함께** 런타임 정책이 아직 다루지 않는 패턴을 감지하는 8개의 감사 전용 감지기를 통해 재생됩니다. 모든 세션에 걸쳐 정책/감지기별 횟수가 집계됩니다. +각 트랜스크립트에서 모든 툴 사용 이벤트는 39개의 내장 정책과 런타임 정책으로 아직 다루지 않는 패턴을 잡아내는 8개의 감사 전용 감지기를 통해 재실행됩니다. 카운트는 모든 세션에 걸쳐 정책/감지기별로 집계됩니다. -## 제공 내용 +## 결과물 -`/audit` 페이지는 여섯 개의 섹션으로 구성됩니다: +`/audit` 페이지는 단일 화면의 공유 가능한 **포스터**와 그 아래 네 개의 섹션으로 구성됩니다. -1. **Identity** — 감사된 모든 트랜스크립트의 가중 신호를 기반으로 에이전트를 8가지 아키타입 중 하나(`optimist`, `cowboy`, `explorer`, `goldfish`, `paranoid architect`, `precision builder`, `hammer`, `ghost`)로 분류합니다. -2. **Strengths** — 스캔에서 도출된 실제 수치(클린 호출 비율, "자격 증명 유출 0건" 등)로, 관련 sanitize 정책이 실제로 발동된 경우에만 표시됩니다. -3. **Score** — 0-100점 척도로 S/A/B/C/D/F 등급이 매겨지며, 권장 정책을 모두 활성화했을 때의 예상 향상치도 표시됩니다. -4. **Findings** — 정책별 카드로 발생한 내용, 비용, 수집된 증거, 그리고 해당 문제를 실시간으로 잡을 수 있는 내장 기능을 활성화하기 위한 정확한 `failproofai policy add ` 명령을 제공합니다. -5. **Prescribed policies** — 원클릭 `failproofai policies --install` 명령과 함께 집계된 설치 목록을 제공합니다. -6. **Re-audit reminder** — "더 나아져서 돌아오세요." api-server를 통해 7일 이메일 리마인더를 설정하세요(로그인 필요; [`failproofai auth`](/ko/cli/auth) 참조). +1. **포스터** — 에이전트의 정체성을 한눈에: **아키타입**(8가지 중 하나 — `optimist`, `cowboy`, `explorer`, `goldfish`, `paranoid architect`, `precision builder`, `hammer`, `ghost`), 페르소나 키워드, 해당 아키타입의 희귀도, 그리고 등급 밴드(`S`부터 `bottom tier`)가 포함된 **0~100점 점수**. 공유용으로 제작 — X나 LinkedIn에 게시하거나 PNG로 다운로드하세요. +2. **`// strengths`** — 에이전트가 이미 잘하는 것들을 스캔의 실제 수치로 표시 (예: 클린 툴 호출 %, `0`회의 main 푸시 시도). 해당 정책이 깨끗한 기록을 가진 경우에만 표시됩니다. +3. **`// quirks`** — 놓친 것들: failproofai가 잡아냈을 행동의 순위 테이블 — *마지막 발생 시점*, *놓친 내용*(및 차단했을 내장 정책), *심각도*, 그리고 발생 빈도(`new` / `recurring` / `N× seen`). +4. **`// how to improve`** — 처방된 수정 목록: 복사-붙여넣기 가능한 `failproofai policy add `가 포함된 정책별 행, 모든 권장 사항을 한 번에 활성화하는 **install all** 버튼, 그리고 실행 시의 **예상 점수**. +5. **`// come back better`** — 습관 만들기: 재감사 이메일 **알림** 설정(`3d` / `7d` / `14d` / `30d`) 또는 즉시 재감사, **친구 초대**로 본인의 감사 실행 유도 (failproof.ai에서 발송, 수신자 참조로 귀하에게 전달). 알림 및 초대는 로그인이 필요합니다 — [`failproofai auth`](/ko/cli/auth)를 참조하세요. ## 감사 전용 감지기 -이 감지기들은 실시간으로 (아직) 강제되지 않는 "비효율적인 동작" 패턴을 감지합니다. 감사 중에만 실행되며 실제 도구 호출을 절대 차단하지 않습니다. +이는 실시간으로 (아직) 적용되지 않는 "비효율적 행동" 패턴을 감지합니다. 감사 중에만 실행되며 라이브 툴 호출을 절대 차단하지 않습니다. -| 감지기 | 집계 대상 | +| 감지기 | 집계 내용 | |---|---| -| `redundant-cd-cwd` | 명령이 이미 `cwd`에서 실행됨에도 `cd && …`으로 시작하는 Bash 명령 | -| `prefer-edit-over-read-cat` | 단일 소스 파일에 대한 `cat`/`head`/`tail`/`less`/`more` 사용 — `Read` 도구를 사용하세요 | -| `prefer-edit-over-sed-awk` | `sed -i` / `awk … > file` 인플레이스 편집 — `Edit` 도구를 사용하세요 | -| `prefer-write-over-heredoc` | 히어독 / 멀티라인 `echo > file` 파일 쓰기 — `Write` 도구를 사용하세요 | -| `sleep-polling-loop` | 긴 `sleep N` (≥ 30초) 또는 `while …; sleep …; done` 폴링 루프 | -| `find-from-root` | `find /`, `find /home`, `find /usr` 등 — `cwd`로 범위를 제한하세요 | -| `git-commit-no-verify` | `git commit … --no-verify` / `-n` 으로 훅을 건너뜀 | -| `reread-after-edit` | 같은 세션에서 `Edit`/`Write`한 직후 해당 파일을 `Read`하는 경우 | +| `redundant-cd-cwd` | 명령이 이미 `cwd`에서 실행되는데도 `cd && …`로 시작하는 Bash 명령. | +| `prefer-edit-over-read-cat` | 단일 소스 파일에 대한 `cat`/`head`/`tail`/`less`/`more` — `Read` 툴을 사용하세요. | +| `prefer-edit-over-sed-awk` | `sed -i` / `awk … > file` 인플레이스 편집 — `Edit` 툴을 사용하세요. | +| `prefer-write-over-heredoc` | 파일을 작성하는 Heredoc / 멀티라인 `echo > file` — `Write` 툴을 사용하세요. | +| `sleep-polling-loop` | 긴 `sleep N` (≥ 30초) 또는 `while …; sleep …; done` 폴링 루프. | +| `find-from-root` | `find /`, `find /home`, `find /usr` 등 — `cwd`로 범위를 좁히세요. | +| `git-commit-no-verify` | 훅을 건너뛰는 `git commit … --no-verify` / `-n`. | +| `reread-after-edit` | 같은 세션에서 `Edit`/`Write`된 직후 파일을 `Read`하는 경우. | ## 캐시 -- **트랜스크립트별 캐시** — `~/.failproofai/cache/audit/.json`에 `(mtime, size, engineVersion, detectorVersion)`을 키로 저장됩니다. 트랜스크립트나 정책/감지기 코드가 변경되면 자동으로 무효화됩니다. 각 항목에는 **TTL 메타데이터**로 `cachedAt` 타임스탬프도 저장됩니다(캐시 키의 일부가 아님). **7일**이 지난 항목은 읽기 시 거부되어, 오래된 결과가 진화하는 감지기 의도를 넘어서지 않도록 합니다. -- **전체 결과 캐시** — `~/.failproofai/audit-dashboard.json` (모드 0600). 대시보드가 탐색 시 재실행 없이 즉시 렌더링될 수 있게 합니다. 마찬가지로 **7일 TTL**이 지나면 읽기 시 거부되며, `/audit`은 빈 상태로 폴백되어 새로운 실행을 요청합니다. 보고서 하단의 `[ re-audit now ]`를 클릭하여 새로고침하세요. 재감사는 `noCache: true`를 전송하므로 트랜스크립트별 캐시를 우회하고 캐시된 결과를 반환하는 대신 모든 트랜스크립트를 다시 스캔합니다. 실행 진행 상황은 상단 고정 스트립을 통해 스트리밍되며, 성공 시 결과가 제자리에서 교체됩니다(페이지 새로고침 없음; 재감사 실패 시 이전 보고서가 유지됨). +- `~/.failproofai/cache/audit/.json`의 **트랜스크립트별 캐시** — `(mtime, size, engineVersion, detectorVersion)`을 키로 하며, 트랜스크립트나 정책/감지기 코드가 변경되면 자동으로 무효화됩니다. 각 항목에는 **TTL 메타데이터**로 `cachedAt` 타임스탬프가 저장됩니다(캐시 키의 일부가 아님). **7일**이 지난 항목은 읽기 시 거부되어 오래된 결과가 진화하는 감지기 의도를 벗어나지 않도록 합니다. +- `~/.failproofai/audit-dashboard.json`의 **전체 결과 캐시** (모드 0600). 내비게이션 시 재실행 없이 대시보드를 즉시 렌더링할 수 있게 해줍니다. **7일 TTL**이 지나면 읽기 시 거부되며, `/audit`는 빈 상태로 돌아가 새 실행을 안내합니다. 리포트 하단의 `[ re-audit now ]`를 클릭하면 새로고침됩니다 — 재감사는 `noCache: true`를 전송하여 트랜스크립트별 캐시를 우회하고 캐시된 결과 대신 모든 트랜스크립트를 재스캔합니다. 실행은 상단 고정 스트립을 통해 진행 상황을 스트리밍하고, 성공 시 결과를 제자리에서 교체합니다(페이지 새로고침 없음; 재감사 실패 시 이전 리포트 유지). ## 참고 사항 -- **변경 없음.** 감사는 읽기 전용 모드로 재생됩니다. `warn-repeated-tool-calls`는 세션별 사이드카가 수정될 수 있으므로 건너뜁니다. -- **워크플로 정책 제외.** `require-*-before-stop` 정책은 `Stop` 이벤트에서만 발동되고 실제 git 상태에 대해 `execSync`를 실행합니다. "2025년에 어떤 일이 있었을까"에 대한 유의미한 해석이 없으므로 감사 집계에 나타나지 않습니다. -- **커스텀 정책 제외.** 사용자가 제공한 커스텀 훅은 재생되지 않습니다(원래 세션 이후 변경되었을 수 있습니다). \ No newline at end of file +- **변경 없음.** 감사는 읽기 전용 모드로 재실행됩니다. `warn-repeated-tool-calls`는 세션별 사이드카가 수정될 수 있으므로 건너뜁니다. +- **워크플로 정책 건너뜀.** `require-*-before-stop` 정책은 `Stop` 이벤트에서만 실행되고 라이브 git 상태에 대해 `execSync`를 수행합니다 — "2025년에 어떤 일이 일어났을까"에 대한 의미 있는 해석이 없으므로 감사 카운트에 나타나지 않습니다. +- **커스텀 정책 건너뜀.** 사용자가 제공한 커스텀 훅은 재실행되지 않습니다(원래 세션 이후 변경되었을 수 있음). \ No newline at end of file diff --git a/docs/ko/dashboard.mdx b/docs/ko/dashboard.mdx index 0431778bb..a7e0b3191 100644 --- a/docs/ko/dashboard.mdx +++ b/docs/ko/dashboard.mdx @@ -4,7 +4,7 @@ description: "에이전트 세션 모니터링, 도구 호출 검토 및 정책 icon: chart-line --- -failproofai 대시보드는 AI 에이전트 세션을 모니터링하고 정책을 관리하기 위한 로컬 웹 애플리케이션입니다. 자리를 비운 동안 에이전트가 무엇을 했는지 확인하세요. +failproofai 대시보드는 AI 에이전트 세션을 모니터링하고 정책을 관리하기 위한 로컬 웹 애플리케이션입니다. 자리를 비운 사이 에이전트가 무엇을 했는지 확인해 보세요. --- @@ -16,7 +16,7 @@ failproofai `http://localhost:8020`에서 열립니다. -대시보드는 파일시스템에서 직접 읽어옵니다 — Claude Code 프로젝트 폴더와 failproofai 설정 파일을 사용합니다. 원격 서비스에는 아무것도 기록되지 않습니다. +대시보드는 파일 시스템에서 직접 읽습니다 — Claude Code 프로젝트 폴더와 failproofai 설정 파일을 참조합니다. 원격 서비스에는 아무것도 기록되지 않습니다. --- @@ -24,67 +24,67 @@ failproofai ### 프로젝트 -컴퓨터에서 발견된 모든 Claude Code, OpenAI Codex, GitHub Copilot CLI _(베타)_, Cursor Agent _(베타)_, OpenCode _(베타)_, Pi _(베타)_, Gemini CLI _(베타)_ 프로젝트를 나열합니다. Claude 프로젝트는 `~/.claude/projects/`(또는 `CLAUDE_PROJECTS_PATH`로 설정된 경로)에서 검색됩니다. Codex 프로젝트는 `~/.codex/sessions///
/*.jsonl` 아래의 모든 트랜스크립트를 스캔하고 각 세션의 첫 번째 레코드에 기록된 `cwd`로 그룹화하여 검색됩니다. Copilot CLI 프로젝트는 각 `~/.copilot/session-state//workspace.yaml`을 스캔하고(`COPILOT_HOME`으로 설정 가능) `cwd` 필드로 그룹화하여 검색됩니다. Cursor Agent 프로젝트는 `~/.cursor/agent-sessions//`(`CURSOR_HOME`으로 설정 가능, 폴백으로 `conversations/` 및 `sessions/` 탐색) 아래의 세션별 메타데이터를 스캔하여 `meta.json` / `session.json` / `workspace.yaml`에서 `cwd` 스칼라를 찾아 검색됩니다. OpenCode 프로젝트는 `opencode db --format json`을 통해 `~/.local/share/opencode/opencode.db`의 SQLite DB를 쿼리하여(우리는 `session` 및 `project` 테이블을 읽고 `project_id`로 그룹화) 검색됩니다. Pi 프로젝트는 `~/.pi/agent/sessions//_.jsonl`(`PI_SESSIONS_DIR`으로 설정 가능) 아래의 세션별 JSONL 트랜스크립트를 스캔하고 각 세션의 첫 번째 레코드에서 `cwd`를 추출하여 검색됩니다. Gemini CLI 프로젝트는 `~/.gemini/tmp//chats/session--.jsonl`(`GEMINI_SESSIONS_DIR`으로 설정 가능)을 스캔하고 인접한 `.project_root` 텍스트 마커에서 정규 cwd를 복구하여 검색됩니다. 여러 CLI에서 사용된 프로젝트는 일치하는 모든 배지를 포함한 단일 행으로 표시됩니다. 표 위의 **CLI** 드롭다운을 사용하여 특정 에이전트 CLI로 필터링하세요. URL에는 선택 항목이 `?cli=claude|codex|copilot|cursor|opencode|pi|gemini`로 유지됩니다. +머신에서 발견된 모든 Claude Code, OpenAI Codex, GitHub Copilot CLI _(베타)_, Cursor Agent _(베타)_, OpenCode _(베타)_, Pi _(베타)_, Gemini CLI _(베타)_ 프로젝트를 나열합니다. Claude 프로젝트는 `~/.claude/projects/`(또는 `CLAUDE_PROJECTS_PATH`로 설정된 경로)에서 검색됩니다. Codex 프로젝트는 `~/.codex/sessions///
/*.jsonl` 아래의 모든 트랜스크립트를 스캔하고 각 세션의 첫 번째 레코드에 기록된 `cwd`로 그룹화하여 검색됩니다. Copilot CLI 프로젝트는 각 `~/.copilot/session-state//workspace.yaml`을 스캔(`COPILOT_HOME`으로 설정 가능)하고 해당 `cwd` 필드로 그룹화하여 검색됩니다. Cursor Agent 프로젝트는 `~/.cursor/agent-sessions//`(폴백으로 `conversations/` 및 `sessions/`를 탐색하며 `CURSOR_HOME`으로 설정 가능) 아래의 세션별 메타데이터를 스캔하여 `meta.json` / `session.json` / `workspace.yaml`에서 `cwd` 스칼라를 찾아 검색됩니다. OpenCode 프로젝트는 `opencode db --format json`을 통해 `~/.local/share/opencode/opencode.db`의 SQLite DB를 쿼리하여(우리는 `session` 및 `project` 테이블을 읽고 `project_id`로 그룹화) 검색됩니다. Pi 프로젝트는 `~/.pi/agent/sessions//_.jsonl`(`PI_SESSIONS_DIR`로 설정 가능) 아래의 세션별 JSONL 트랜스크립트를 스캔하고 각 세션의 첫 번째 레코드에서 `cwd`를 가져와 검색됩니다. Gemini CLI 프로젝트는 `~/.gemini/tmp//chats/session--.jsonl`(`GEMINI_SESSIONS_DIR`로 설정 가능)을 스캔하고 인접한 `.project_root` 텍스트 마커에서 정규 cwd를 복원하여 검색됩니다. 여러 CLI에서 사용된 프로젝트는 일치하는 모든 배지와 함께 단일 행으로 표시됩니다. 테이블 위의 **CLI** 드롭다운을 사용하여 특정 에이전트 CLI로 필터링할 수 있으며, URL은 선택 항목을 `?cli=claude|codex|copilot|cursor|opencode|pi|gemini`로 보존합니다. 각 프로젝트에는 다음이 표시됩니다: - 프로젝트 이름 (폴더 경로에서 파생) -- CLI 배지 — `Claude Code` (주황색), `OpenAI Codex` (보라색), `GitHub Copilot` (파란색), `Cursor Agent` (에메랄드색), `OpenCode` (앰버색), `Pi` (분홍색), `Gemini CLI` (하늘색) +- CLI 배지 — `Claude Code` (주황색), `OpenAI Codex` (보라색), `GitHub Copilot` (파란색), `Cursor Agent` (에메랄드), `OpenCode` (황갈색), `Pi` (분홍색), 그리고/또는 `Gemini CLI` (하늘색) - 가장 최근 세션 활동 날짜 -프로젝트를 클릭하면 해당 세션을 볼 수 있습니다. +프로젝트를 클릭하면 해당 세션을 확인할 수 있습니다. ### 세션 프로젝트 내의 모든 세션을 나열합니다. 각 세션에는 다음이 표시됩니다: - 세션 ID - 시작 및 종료 타임스탬프 -- 도구 호출 횟수 +- 도구 호출 수 - 훅 활동 횟수 (실행된 정책) -날짜 범위 필터와 세션 ID 검색을 사용하여 목록을 좁힐 수 있습니다. 세션은 페이지네이션으로 표시됩니다. +날짜 범위 필터와 세션 ID 검색을 사용하여 목록을 좁힐 수 있습니다. 세션은 페이지로 나뉩니다. 세션을 클릭하면 세션 뷰어가 열립니다. ### 세션 뷰어 -세션 뷰어는 자율 에이전트에 대한 핵심 질문에 답합니다: 에이전트가 무엇을 했으며, 올바른 방향을 유지했는가? 헤더 옆의 CLI 배지는 해당 세션이 Claude Code, OpenAI Codex, GitHub Copilot CLI, Cursor Agent, OpenCode, Pi, Gemini CLI 트랜스크립트 중 어느 것인지 나타냅니다. 세션에서 발생한 모든 일의 타임라인이 표시됩니다: +세션 뷰어는 자율 에이전트에 대한 핵심 질문에 답합니다: 에이전트가 무엇을 했고, 올바른 방향을 유지했는가? 헤더 옆의 CLI 배지는 세션이 Claude Code, OpenAI Codex, GitHub Copilot CLI, Cursor Agent, OpenCode, Pi, 또는 Gemini CLI 트랜스크립트인지를 나타냅니다. 세션에서 발생한 모든 일의 타임라인이 표시됩니다: - **메시지** - Claude의 텍스트 응답 및 사용자 프롬프트 -- **도구 호출** - Claude가 호출한 모든 도구(입력 및 출력 포함) -- **정책 활동** - 각 도구 호출에 대해 어떤 정책이 실행되었고 어떤 결정을 내렸는지 +- **도구 호출** - Claude가 호출한 모든 도구, 입력 및 출력 포함 +- **정책 활동** - 각 도구 호출에 대해 어떤 정책이 실행되었고 어떤 결정을 반환했는지 -상단의 통계 바에는 세션 지속 시간, 총 도구 호출 횟수, 훅 결정 요약(allow / deny / instruct 횟수)이 표시됩니다. +상단의 통계 바는 세션 지속 시간, 총 도구 호출 수, 훅 결정 요약 (allow / deny / instruct 횟수)을 표시합니다. -**로그 다운로드** 버튼을 클릭하여 세션을 내보낼 수 있습니다. Claude Code, Codex, Copilot, Cursor, Pi, Gemini 세션의 경우 디스크에 저장된 원본 JSONL 트랜스크립트를 바이트 단위로 그대로 받을 수 있습니다. OpenCode(세션이 디스크가 아닌 SQLite에 저장)의 경우 기본 `session` / `messages` / `parts` 테이블을 반영한 JSON 문서를 받을 수 있습니다. +**로그 다운로드** 버튼을 클릭하면 세션을 내보낼 수 있습니다. Claude Code, Codex, Copilot, Cursor, Pi, Gemini 세션의 경우 디스크에 저장된 원본 JSONL 트랜스크립트를 바이트 단위로 그대로 받을 수 있으며, OpenCode(세션이 디스크가 아닌 SQLite에 저장됨)의 경우 기본 `session` / `messages` / `parts` 테이블을 반영하는 JSON 문서를 받게 됩니다. ### 감사 -과거 세션 전반에 걸쳐 에이전트가 실제로 어떻게 행동해왔는지에 대한 개성 있는 보고서입니다. `failproofai audit` CLI와 동일한 스캔을 실행하지만 단일 화면의 공유 가능한 포스터와 아래 4개 섹션으로 렌더링됩니다: +과거 세션 전반에 걸쳐 에이전트가 실제로 어떻게 행동했는지에 대한 개성 있는 보고서입니다. `failproofai audit` CLI와 동일한 스캔을 실행하지만 단일 화면 공유 가능한 포스터 + 화면 아래의 네 섹션으로 렌더링됩니다: -1. **포스터** — 첫 번째 뷰포트를 채웁니다. failproof_ai 워드마크 + 감사 레이블 · 아키타입 인덱스(`№ NN of 08`) + 감사 날짜 · 수치 점수 (0–100) + 백분위 랭크 필(`top 15%`) · 아키타입 이름(`the optimist`, `the cowboy`, `the explorer`, `the goldfish`, `the paranoid architect`, `the precision builder`, `the hammer`, `the ghost` 중 하나) + 3개 키워드 스트립 · `// only N% of agents are this archetype` 희귀도 라인 · 8×8 픽셀 시질 타일 · `audit yours → failproof.ai` 푸터를 포함하는 독립적인 PNG 캡처 영역입니다. 캡처 박스 바로 바깥에 세 개의 공유 버튼이 있습니다: `post your archetype` (X intent), `share on linkedin`, `download poster`. 캡처는 `html-to-image`를 통해 실행되어 PNG가 화면 렌더와 픽셀 단위로 일치합니다(점선 테두리, SVG 로고 마스크, 그라디언트, 글꼴 메트릭 — 모두 보존). -2. **강점** — 에이전트가 이미 올바르게 수행하는 동작들의 차분한 ✓ 목록으로, 실시간 감사 데이터(깔끔한 도구 호출 비율, 평균 세션 길이, 자격 증명 유출 없음, 재시도 폭풍 없음 등)에서 도출됩니다. -3. **특이점** — 영향도별로 순위가 매겨진 문제 사항 표: `시간 · 발생한 문제 + 감지했을 정책 · 심각도 필 · 재발 여부` (신규 / 이번 주 N회 / 반복). -4. **개선 방법** — 각 권장 정책에 대한 차분한 목록: 왼쪽에 정책 이름(흰색), 한 줄 설명, 오른쪽에 설치 명령 + 복사 버튼. 섹션 헤더의 `[install all]` 버튼은 권장된 모든 정책에 대한 `failproofai policy add a b c …` 명령을 복사합니다. -5. **더 나아지기** — 나란히 배치된 두 카드. 왼쪽: 알림 설정(`3d` / `7d` / `14d` / `30d` 주기 선택기; 인증 후 `/api/auth/reminder`를 통해 유지). 오른쪽: failproof 혜택 잠금 해제 — `invite a friend`는 쉼표/공백/줄바꿈으로 구분된 친구 이메일 목록(전송당 최대 10개)을 받는 모달을 열고, `/api/audit/invite`에 POST하며 api-server의 `POST /v0/invite`로 전달합니다. api-server는 `invite@failproof.ai`에서 수신자당 이메일을 발송하며 발신자를 Cc에 추가하고 `Reply-To`를 설정하여, 수신자는 누가 초대했는지 알 수 있고 발신자는 받은 편지함에 사본을 받습니다. 익명 사용자는 초대 전 발신자 이메일을 확인하기 위해 먼저 `AuthDialog`로 안내됩니다. 혜택 이행은 추후 지원될 예정입니다. +1. **포스터** — 첫 번째 뷰포트를 채웁니다. failproof_ai 워드마크 + 감사 레이블 · 원형 지수 (`№ NN of 08`) + 감사 날짜 · 수치 점수 (0–100) + 백분위 순위 필 (`top 15%`) · 원형 이름 (`the optimist`, `the cowboy`, `the explorer`, `the goldfish`, `the paranoid architect`, `the precision builder`, `the hammer`, `the ghost` 중 하나) + 3개 키워드 스트립 · `// only N% of agents are this archetype` 희귀도 줄 · 8×8 픽셀 시길 타일 · `audit yours → failproof.ai` 푸터가 포함된 독립적인 PNG 캡처 영역. 캡처 박스 바로 바깥에 세 개의 공유 버튼이 있습니다: `post your archetype` (X 인텐트), `share on linkedin`, `download poster`. 캡처는 `html-to-image`를 통해 실행되므로 PNG는 화면 렌더링과 픽셀 단위로 일치합니다 (점선 테두리, SVG 로고 마스크, 그라디언트, 폰트 메트릭 — 모두 보존). +2. **강점** — 에이전트가 이미 잘 하고 있는 동작의 차분한 ✓ 행 목록으로, 라이브 감사 데이터(깨끗한 도구 호출 비율, 메인 브랜치에 직접 푸시 없음, 자격 증명 누출 없음, 재시도 폭풍 없음)에서 파생됩니다 — 감사 기간 동안 관련 정책이 깨끗한 기록을 가진 경우에만 표시됩니다. +3. **특이점** — 심각도별로 순위가 매겨진 누락된 사항의 테이블: `when · what slipped + the policy that would've caught it · severity pill · seen`, 여기서 재발 횟수는 `new` (한 번), `N× seen` (2–9회), 또는 `recurring` (10회 이상)으로 표시됩니다. +4. **개선 방법** — 권장 정책당 하나씩 차분한 행 목록: 흰색으로 표시된 정책 이름, 한 줄 설명, 오른쪽의 설치 명령 + 복사 버튼. 섹션 헤더는 `enable all N → projected · ` (모든 수정 사항 적용 시 도달할 점수)로 표시되며, `[install all]` 버튼은 모든 권장 정책에 대한 결합된 `failproofai policy add a b c …` 명령을 복사합니다. +5. **더 나아지기** — 나란히 배치된 두 개의 카드. 왼쪽: 알림 설정 (`3d` / `7d` / `14d` / `30d` 주기 선택기; 인증 후 `/api/auth/reminder`를 통해 유지). 오른쪽: failproof 혜택 잠금 해제 — `invite a friend`는 쉼표/공백/줄바꿈으로 구분된 친구 이메일 목록(전송당 최대 10개)을 입력하는 모달을 열고, `/api/audit/invite`에 POST하며, 이는 api-server의 `POST /v0/invite`로 전달됩니다. api-server는 수신자에게 `invite@failproof.ai`에서 발신자를 Cc에 포함하고 `Reply-To`를 설정하여 이메일을 전송하므로 수신자는 누가 초대했는지 알 수 있고 발신자는 받은 편지함에 사본을 받습니다. 익명 사용자는 초대가 발송되기 전에 발신자의 이메일을 알 수 있도록 먼저 `AuthDialog`로 라우팅됩니다. 권한/혜택 이행은 후속 작업입니다. -`failproofai audit` 런타임에 의해 구동됩니다 — 기본 스캔 엔진, 지원 플래그 및 트랜스크립트별 캐시 불변성에 대해서는 [감사 CLI](/ko/cli/audit)를 참조하세요. 대시보드는 최신 결과를 `~/.failproofai/audit-dashboard.json`(모드 `0600`, 단일 슬롯, 새 실행 시 덮어쓰기)에 캐시하여 재방문 시 즉시 로드됩니다. **트랜스크립트별 캐시와 전체 결과 캐시 모두 7일이 지나면 읽기 시 거부됩니다.** 따라서 대시보드가 일주일 된 결과를 조용히 제공하는 일이 없습니다 — TTL이 지나면 `/audit`는 빈 상태로 전환되어 새로운 실행을 요청합니다. 보고서 하단의 `[ re-audit now ]`를 클릭하면 `noCache: true`로 `/api/audit/run`에 POST됩니다 — 재감사는 트랜스크립트별 캐시를 무시하고 캐시된 결과를 조용히 반환하지 않고 모든 트랜스크립트를 처음부터 다시 스캔합니다 — 대시보드는 실행이 완료될 때까지 1Hz로 `/api/audit/status`를 폴링합니다. 실행 중에는 경과 타이머가 포함된 분홍색 진행 표시줄이 뷰포트 상단에 고정되며, 성공 시 전체 페이지를 새로고침하지 않고 새로운 결과가 즉시 교체됩니다. 실패 시 표시줄이 빨간색으로 바뀌며 `RerunError.kind`(`timeout` / `network` / `post_failed`)에 맞는 메시지가 표시됩니다. 빈 상태(캐시 없음 또는 만료)와 세션 없음 상태(캐시는 있지만 스캔에서 트랜스크립트가 없음)는 별도로 구분하여 표시됩니다. +`failproofai audit` 런타임에 의해 구동됩니다 — 기본 스캔 엔진, 지원 플래그, 트랜스크립트별 캐시 불변 조건에 대해서는 [감사 CLI](/ko/cli/audit)를 참조하세요. 대시보드는 최신 결과를 `~/.failproofai/audit-dashboard.json`(모드 `0600`, 단일 슬롯, 새 실행 시 덮어쓰기)에 캐시하여 재방문 시 즉시 표시됩니다. **트랜스크립트별 캐시와 전체 결과 캐시 모두 7일이 지나면 읽기 시 거부**되므로 대시보드는 일주일 된 결과를 조용히 제공하지 않습니다 — TTL이 지나면 `/audit`는 빈 상태로 넘어가고 새로운 실행을 요청합니다. 보고서 하단 근처의 `[ re-audit now ]`를 클릭하면 `noCache: true`와 함께 `/api/audit/run`에 POST됩니다 — 재감사는 트랜스크립트별 캐시를 우회하고 캐시된 결과를 조용히 반환하는 대신 모든 트랜스크립트를 처음부터 다시 스캔합니다 — 대시보드는 실행이 완료될 때까지 1Hz로 `/api/audit/status`를 폴링합니다. 실행 중에는 경과 타이머와 함께 끈적한 분홍색 진행 스트립이 뷰포트 상단에 고정되며, 성공 시 새 결과가 제자리에 교체됩니다 (전체 페이지 새로고침 없음; 재감사 실패 시 이전 보고서는 그대로 유지). 실패 시 스트립은 `RerunError.kind`(`timeout` / `network` / `post_failed`)에 따른 문구와 함께 빨간색으로 변합니다. 빈 상태 (캐시 없음 또는 만료)와 세션 없음 상태 (캐시는 있지만 스캔에서 트랜스크립트를 찾지 못함)는 별도로 표시됩니다. ### 정책 -정책 관리 및 활동 검토를 위한 두 탭 페이지입니다. +정책 관리 및 활동 검토를 위한 두 개의 탭 페이지입니다. - - 단일 패널에서 failproofai가 보호할 에이전트 CLI를 다중 선택 — Claude Code, OpenAI Codex, GitHub Copilot, Cursor Agent, OpenCode, Pi, Gemini CLI 모두 설치 상태(`Active` / `Detected` / `Inactive`), 사용자 범위 설정 경로, 브랜드 색상 강조와 함께 행으로 표시됩니다. 원하는 CLI를 체크/언체크하고 `Apply changes`를 클릭하면 변경 사항을 한 번에 설치/제거합니다. PATH에서 바이너리가 감지된 CLI는 미리 체크됩니다. - - 개별 정책을 한 번의 클릭으로 켜거나 끌 수 있습니다(`~/.failproofai/policies-config.json`에 저장 — 모든 설치된 CLI에서 공유) - - 정책을 확장하여 매개변수를 설정합니다(`policyParams`를 지원하는 정책의 경우) + - 단일 패널에서 failproofai가 보호하는 에이전트 CLI를 다중 선택합니다 — Claude Code, OpenAI Codex, GitHub Copilot, Cursor Agent, OpenCode, Pi, Gemini CLI 모두 설치 상태 (`Active` / `Detected` / `Inactive`), 사용자 범위 설정 경로, 브랜드 컬러 강조가 포함된 행이 있습니다. 원하는 CLI를 체크 또는 체크 해제하고 `Apply changes`를 클릭하면 차이점이 한 번에 설치/제거됩니다. PATH에서 바이너리가 감지된 CLI는 미리 체크됩니다. + - 클릭 한 번으로 개별 정책을 켜거나 끌 수 있습니다 (`~/.failproofai/policies-config.json`에 기록 — 모든 설치된 CLI에서 공유) + - 정책을 확장하여 매개변수를 구성합니다 (`policyParams`를 지원하는 정책의 경우) - 사용자 정의 정책 파일 경로 설정 - - 모든 세션에서 실행된 모든 훅 이벤트의 전체 페이지네이션 기록 - - 결정, 이벤트 유형, CLI (Claude Code / OpenAI Codex / GitHub Copilot _(베타)_ / Cursor Agent _(베타)_ / OpenCode _(베타)_ / Pi _(베타)_ / Gemini CLI _(베타)_), 정책 이름, 또는 세션 ID로 필터링 - - 각 행에는 다음이 표시됩니다: 타임스탬프, 정책 이름, 결정, CLI 배지 (주황색 = Claude Code, 보라색 = OpenAI Codex, 파란색 = GitHub Copilot, 에메랄드색 = Cursor Agent, 앰버색 = OpenCode, 분홍색 = Pi, 하늘색 = Gemini CLI), 도구 이름, 세션 ID, deny/instruct 결정의 이유 - - 세션 ID를 클릭하면 해당 트랜스크립트가 열립니다 — 뷰어는 훅을 실행한 CLI를 자동으로 감지하고(Claude `~/.claude/projects/…`, Codex `~/.codex/sessions/…`, Copilot CLI `~/.copilot/session-state//events.jsonl`, Cursor Agent `~/.cursor/agent-sessions//events.jsonl`, OpenCode `~/.local/share/opencode/opencode.db`, Pi `~/.pi/agent/sessions//.jsonl`, Gemini CLI `~/.gemini/tmp//chats/.jsonl`) 헤더에 일치하는 CLI 배지를 렌더링합니다 + - 모든 세션에 걸쳐 실행된 모든 훅 이벤트의 완전한 페이지 분할 기록 + - 결정, 이벤트 유형, CLI (Claude Code / OpenAI Codex / GitHub Copilot _(베타)_ / Cursor Agent _(베타)_ / OpenCode _(베타)_ / Pi _(베타)_ / Gemini CLI _(베타)_), 정책 이름 또는 세션 ID로 필터링 + - 각 행에는 타임스탬프, 정책 이름, 결정, CLI 배지 (주황색 = Claude Code, 보라색 = OpenAI Codex, 파란색 = GitHub Copilot, 에메랄드 = Cursor Agent, 황갈색 = OpenCode, 분홍색 = Pi, 하늘색 = Gemini CLI), 도구 이름, 세션 ID, deny/instruct 결정의 이유가 표시됩니다 + - 세션 ID를 클릭하면 해당 트랜스크립트가 열립니다 — 뷰어는 어떤 CLI가 훅을 실행했는지 자동 감지(Claude `~/.claude/projects/…`, Codex `~/.codex/sessions/…`, Copilot CLI `~/.copilot/session-state//events.jsonl`, Cursor Agent `~/.cursor/agent-sessions//events.jsonl`, OpenCode `~/.local/share/opencode/opencode.db`, Pi `~/.pi/agent/sessions//.jsonl`, Gemini CLI `~/.gemini/tmp//chats/.jsonl`)하고 헤더에 일치하는 CLI 배지를 렌더링합니다 @@ -92,13 +92,13 @@ failproofai ## 자동 새로고침 -대시보드의 상단 내비게이션에는 자동 새로고침 토글이 있습니다. 활성화하면 현재 페이지가 주기적으로 새로고침되어 새로운 세션과 정책 활동이 나타나는 대로 표시됩니다. 장시간 실행되는 자율 에이전트 세션을 모니터링할 때 필수적입니다. +대시보드 상단 탐색에 자동 새로고침 토글이 있습니다. 활성화되면 현재 페이지가 주기적으로 새로고침되어 새 세션과 정책 활동이 나타나는 대로 표시됩니다. 장시간 실행되는 자율 에이전트 세션을 모니터링할 때 필수적입니다. --- ## 페이지 비활성화 -대시보드의 일부 기능만 필요한 경우, `FAILPROOFAI_DISABLE_PAGES`를 쉼표로 구분된 페이지 이름 목록으로 설정하세요: +대시보드의 일부만 필요한 경우, `FAILPROOFAI_DISABLE_PAGES`를 쉼표로 구분된 페이지 이름 목록으로 설정하세요: ```bash FAILPROOFAI_DISABLE_PAGES=policies failproofai @@ -108,9 +108,9 @@ FAILPROOFAI_DISABLE_PAGES=policies failproofai --- -## 프로젝트 경로 설정 +## 프로젝트 경로 구성 -기본적으로 대시보드는 표준 Claude Code 프로젝트 디렉토리에서 읽어옵니다. 사용자 정의 설정을 위해 재정의할 수 있습니다: +기본적으로 대시보드는 표준 Claude Code 프로젝트 디렉터리에서 읽습니다. 사용자 정의 설정을 위해 재정의하세요: ```bash CLAUDE_PROJECTS_PATH=/custom/path/to/projects failproofai @@ -118,32 +118,32 @@ CLAUDE_PROJECTS_PATH=/custom/path/to/projects failproofai --- -## localhost 이외의 호스트에서 접근 +## localhost가 아닌 호스트에서 접근하기 -**개발 모드**(`npm run dev`)로 대시보드를 실행하면서 `localhost`가 아닌 다른 호스트명으로 접근할 때 — 예를 들어 사용자 정의 도메인, 원격 IP, 또는 터널링된 URL — 다음과 같은 경고가 표시될 수 있습니다: +**개발 모드** (`npm run dev`)에서 대시보드를 실행하고 `localhost`가 아닌 호스트 이름(예: 사용자 정의 도메인, 원격 IP, 터널된 URL)에서 접근할 때 다음과 같은 경고가 표시될 수 있습니다: ```text ⚠ Blocked cross-origin request to Next.js dev resource /_next/webpack-hmr from "dashboard.example.com". ``` -이는 Next.js가 개발 전용 기능인 HMR(핫 모듈 리로드) 웹소켓에 대한 크로스 오리진 접근을 차단하는 것입니다. 호스트를 허용하려면 `--allowed-origins` 플래그를 사용하세요: +이는 Next.js가 개발 전용 기능인 HMR(핫 모듈 리로드) 웹소켓에 대한 교차 출처 접근을 차단하는 것입니다. 호스트를 허용하려면 `--allowed-origins` 플래그를 사용하세요: ```bash npm run dev -- --allowed-origins dashboard.example.com ``` -여러 호스트 또는 IP의 경우 쉼표로 구분된 목록을 전달하세요: +여러 호스트나 IP의 경우 쉼표로 구분된 목록을 전달하세요: ```bash npm run dev -- --allowed-origins dashboard.example.com,192.168.1.5 ``` -대신 `FAILPROOFAI_ALLOWED_DEV_ORIGINS` 환경 변수를 설정할 수도 있습니다: +`FAILPROOFAI_ALLOWED_DEV_ORIGINS` 환경 변수를 대신 설정할 수도 있습니다: ```bash FAILPROOFAI_ALLOWED_DEV_ORIGINS=dashboard.example.com npm run dev ``` -이는 개발 모드에만 적용됩니다. `failproofai`(프로덕션 모드)를 실행할 때는 HMR 웹소켓이 없으므로 크로스 오리진 개발 리소스 문제가 발생하지 않습니다. +이는 개발 모드에만 적용됩니다. `failproofai`(프로덕션 모드)를 실행할 때는 HMR 웹소켓과 교차 출처 개발 리소스 문제가 없습니다. \ No newline at end of file diff --git a/docs/pt-br/cli/audit.mdx b/docs/pt-br/cli/audit.mdx index a59ad399c..4c5db1931 100644 --- a/docs/pt-br/cli/audit.mdx +++ b/docs/pt-br/cli/audit.mdx @@ -1,34 +1,73 @@ --- title: Auditar sessões anteriores (beta) -description: "Conte com que frequência o agente fez coisas desnecessárias ou arriscadas em transcrições anteriores" +description: "Conte quantas vezes o agente fez coisas desnecessárias ou arriscadas em transcrições passadas" --- - **Recurso beta.** A auditoria é disponibilizada como beta enquanto coletamos - feedback inicial. O catálogo de detectores e o formato do relatório podem - mudar antes da próxima versão estável. Abra uma issue se algo parecer errado. + **Recurso beta.** A auditoria é lançada como beta enquanto coletamos feedback + inicial. O catálogo de detectores e o formato do relatório podem mudar antes + do próximo corte estável. Abra uma issue se algo parecer errado. -A auditoria agora está disponível como a **página de dashboard /audit**, não como um subcomando de CLI. Acesse pelo navbar do dashboard (entre Policies e Projects) ou visite `http://localhost:8020/audit` diretamente ao executar o `failproofai` localmente. +A auditoria reproduz suas transcrições passadas do agente-CLI pelo motor de +políticas do failproofai e gera um relatório visual e compartilhável na **página +do dashboard `/audit`** — o arquétipo do seu agente, uma pontuação de 0 a 100 e +exatamente quais políticas teriam detectado o quê. -```bash -failproofai # abra o dashboard, depois clique em "Audit" +## Execute + +Três formas de entrar — todas levam ao mesmo relatório `/audit`. + + + +```bash npx (sem instalação) +npx -y failproofai audit +``` + +```bash failproofai audit +failproofai audit ``` -O dashboard escaneia transcrições anteriores do CLI do agente nesta máquina (Claude Code, Codex, Copilot, Cursor, OpenCode, Pi, Gemini) e reporta com que frequência o agente fez coisas que o failproofai foi criado para impedir — verificações de variáveis de ambiente, force pushes, prefixos redundantes `cd `, loops de polling com sleep, releitura de arquivos recém-editados, entre outros. +```bash failproofai (dashboard) +failproofai +``` + + + + + + `npx -y failproofai audit` baixa o failproofai, executa a varredura e abre o + dashboard para você — sem nada para instalar antes. + + + `failproofai audit` executa a varredura no seu terminal e abre + `localhost:8020/audit` automaticamente ao terminar. + + + Execute `failproofai` e clique em **Audit** na barra de navegação (entre + Policies e Projects), ou abra `/audit` diretamente. + + + + + Execute `failproofai audit -h` (ou `--help`) para ver o uso. A auditoria roda + **totalmente offline** — sem necessidade de conta ou rede — e o dashboard + continua servindo até você encerrá-lo com `Ctrl+C`. + + +O dashboard varre transcrições passadas do agente CLI nesta máquina (Claude Code, Codex, Copilot, Cursor, OpenCode, Pi, Gemini) e reporta com que frequência o agente fez coisas que o failproofai foi criado para impedir — verificações de variáveis de ambiente, force pushes, prefixos redundantes `cd `, loops de sleep-polling, releitura de arquivos recém-editados e mais. -Para cada transcrição, todo evento de uso de ferramenta é reproduzido através das 39 políticas integradas **e** de 8 detectores exclusivos de auditoria que identificam padrões ainda não cobertos pelas políticas em tempo de execução. As contagens são agregadas por política/detector em todas as sessões. +Para cada transcrição, cada evento de uso de ferramenta é reproduzido pelas 39 políticas embutidas **e** por 8 detectores exclusivos de auditoria que capturam padrões ainda não cobertos pelas políticas em tempo de execução. As contagens são agregadas por política/detector em todas as sessões. ## O que você obtém -A página `/audit` é composta por seis seções: +A página `/audit` é um **pôster** de tela única e compartilhável seguido de quatro seções abaixo da dobra: -1. **Identity** — seu agente classificado em um dos 8 arquétipos (`optimist`, `cowboy`, `explorer`, `goldfish`, `paranoid architect`, `precision builder`, `hammer`, `ghost`) com base no sinal ponderado de todas as transcrições auditadas. -2. **Strengths** — números reais derivados do escaneamento (% de chamadas limpas, "0 vazamentos de credenciais", etc.) condicionados ao acionamento real das políticas de sanitização relevantes. -3. **Score** — de 0 a 100 com faixas S/A/B/C/D/F e uma projeção de melhoria caso todas as políticas recomendadas fossem habilitadas. -4. **Findings** — cards por política com o que aconteceu, custo, evidências capturadas e o comando exato `failproofai policy add ` para ativar a política integrada em tempo real que teria detectado o problema. -5. **Prescribed policies** — lista de instalação consolidada com um comando único `failproofai policies --install`. -6. **Re-audit reminder** — "volte melhor". Configure um lembrete por e-mail de 7 dias via api-server (requer login; veja [`failproofai auth`](/pt-br/cli/auth)). +1. **Pôster** — a identidade do seu agente de relance: seu **arquétipo** (um de 8 — `optimist`, `cowboy`, `explorer`, `goldfish`, `paranoid architect`, `precision builder`, `hammer`, `ghost`), suas palavras-chave de persona, quão raro é esse arquétipo e uma **pontuação de 0 a 100** com uma faixa de nível (de `S` até `bottom tier`). Feito para compartilhar — poste no X ou LinkedIn, ou baixe como PNG. +2. **`// strengths`** — o que seu agente já faz bem, com números reais da varredura (ex.: % de chamadas de ferramentas limpas, `0` tentativas de push-to-main), exibido apenas onde a política relevante tem um histórico limpo. +3. **`// quirks`** — o que escapou: uma tabela classificada de comportamentos que o failproofai teria detectado — *quando* ocorreu pela última vez, *o que escapou* (e o embutido que teria bloqueado), sua *gravidade* e com que frequência foi *visto* (`new` / `recurring` / `N× seen`). +4. **`// how to improve`** — a lista de correções prescritas: uma linha por política com um `failproofai policy add ` para copiar e colar, além de um botão **install all** que ativa todas as recomendações de uma vez e mostra sua **pontuação projetada** caso você o faça. +5. **`// come back better`** — crie o hábito: configure um **lembrete** de reauditoria por e-mail (`3d` / `7d` / `14d` / `30d`) ou faça uma reauditoria agora, e **convide um amigo** para executar sua própria auditoria (enviado pelo failproof.ai, com cópia para você). Lembretes e convites exigem login — veja [`failproofai auth`](/pt-br/cli/auth). ## Detectores exclusivos de auditoria @@ -36,22 +75,22 @@ Estes detectam padrões de "comportamento ineficiente" que ainda não são aplic | Detector | O que conta | |---|---| -| `redundant-cd-cwd` | Comandos Bash que começam com `cd && …` mesmo que os comandos já rodem em `cwd`. | -| `prefer-edit-over-read-cat` | `cat`/`head`/`tail`/`less`/`more` em um único arquivo fonte — use a ferramenta `Read`. | -| `prefer-edit-over-sed-awk` | Edições in-place com `sed -i` / `awk … > file` — use a ferramenta `Edit`. | -| `prefer-write-over-heredoc` | Escrita de arquivos com heredoc / `echo > file` multilinha — use a ferramenta `Write`. | +| `redundant-cd-cwd` | Comandos Bash começando com `cd && …` mesmo que os comandos já rodem em `cwd`. | +| `prefer-edit-over-read-cat` | `cat`/`head`/`tail`/`less`/`more` em um único arquivo-fonte — use a ferramenta `Read`. | +| `prefer-edit-over-sed-awk` | Edições no lugar com `sed -i` / `awk … > file` — use a ferramenta `Edit`. | +| `prefer-write-over-heredoc` | Heredoc / `echo > file` multilinha para escrever arquivos — use a ferramenta `Write`. | | `sleep-polling-loop` | `sleep N` longo (≥ 30s) ou loops de polling `while …; sleep …; done`. | | `find-from-root` | `find /`, `find /home`, `find /usr`, etc. — limite ao `cwd`. | | `git-commit-no-verify` | `git commit … --no-verify` / `-n`, ignorando hooks. | -| `reread-after-edit` | `Read` de um arquivo que foi recentemente modificado por `Edit`/`Write` na mesma sessão. | +| `reread-after-edit` | `Read` de um arquivo que acabou de ser `Edit`/`Write` na mesma sessão. | ## Caches -- **Cache por transcrição** em `~/.failproofai/cache/audit/.json`, indexado por `(mtime, size, engineVersion, detectorVersion)` — invalidado automaticamente quando a transcrição ou o código de política/detector muda. Cada entrada também armazena um timestamp `cachedAt` como **metadado de TTL** (não parte da chave de cache); entradas com mais de **7 dias** são rejeitadas na leitura para que resultados antigos não sobrevivam à evolução dos detectores. -- **Cache do resultado completo** em `~/.failproofai/audit-dashboard.json` (modo 0600). Permite que o dashboard renderize instantaneamente na navegação sem precisar executar novamente. Também rejeitado na leitura após o **TTL de 7 dias** — o `/audit` cai no estado vazio e solicita uma nova execução. Clique em `[ re-audit now ]` próximo ao final do relatório para atualizar — a re-auditoria envia `noCache: true`, ignorando o cache por transcrição e re-escaneando todas as transcrições em vez de retornar o resultado em cache; a execução transmite o progresso via uma faixa fixa no topo e substitui o resultado no lugar ao concluir com sucesso (sem recarregar a página; uma re-auditoria com falha mantém o relatório anterior). +- **Cache por transcrição** em `~/.failproofai/cache/audit/.json` com chave por `(mtime, size, engineVersion, detectorVersion)` — invalida automaticamente quando a transcrição ou o código de política/detector muda. Cada entrada também armazena um timestamp `cachedAt` como **metadado TTL** (não faz parte da chave de cache); entradas mais antigas que **7 dias** são rejeitadas na leitura para que resultados de longa data não sobrevivam à evolução da intenção dos detectores. +- **Cache de resultado completo** em `~/.failproofai/audit-dashboard.json` (modo 0600). Permite que o dashboard renderize instantaneamente na navegação sem re-executar. Também rejeitado na leitura após o **TTL de 7 dias** — `/audit` então cai em seu estado vazio e solicita uma nova execução. Clique em `[ re-audit now ]` perto do final do relatório para atualizar — a reauditoria envia `noCache: true`, ignorando o cache por transcrição e revarrendo todas as transcrições em vez de retornar o resultado em cache; a execução transmite o progresso via uma faixa fixa no topo e substitui o resultado no lugar ao terminar com sucesso (sem recarregamento de página; uma reauditoria com falha mantém o relatório anterior). ## Observações - **Sem mutação.** A auditoria é reproduzida em modo somente leitura. `warn-repeated-tool-calls` é ignorado porque seu sidecar por sessão seria modificado de outra forma. -- **Políticas de fluxo de trabalho ignoradas.** As políticas `require-*-before-stop` só são acionadas em eventos `Stop` e executam `execSync` contra o estado git ao vivo — elas não têm uma interpretação significativa para "o que teria acontecido em 2025", portanto não aparecem nas contagens de auditoria. +- **Políticas de fluxo de trabalho ignoradas.** As políticas `require-*-before-stop` disparam apenas em eventos `Stop` e `execSync` contra o estado git ao vivo — elas não têm uma interpretação significativa de "o que teria acontecido em 2025", portanto não aparecem nas contagens de auditoria. - **Políticas personalizadas ignoradas.** Hooks personalizados fornecidos pelo usuário não são reproduzidos (eles podem ter mudado desde a sessão original). \ No newline at end of file diff --git a/docs/pt-br/dashboard.mdx b/docs/pt-br/dashboard.mdx index 8a8d3ecc3..2c118ddb8 100644 --- a/docs/pt-br/dashboard.mdx +++ b/docs/pt-br/dashboard.mdx @@ -16,7 +16,7 @@ failproofai Abre em `http://localhost:8020`. -O dashboard lê diretamente do sistema de arquivos — suas pastas de projetos do Claude Code e os arquivos de configuração do failproofai. Nada é enviado para um serviço remoto. +O dashboard lê diretamente do sistema de arquivos — suas pastas de projeto do Claude Code e os arquivos de configuração do failproofai. Nada é gravado em um serviço remoto. --- @@ -24,12 +24,12 @@ O dashboard lê diretamente do sistema de arquivos — suas pastas de projetos d ### Projetos -Lista todos os projetos do Claude Code, OpenAI Codex, GitHub Copilot CLI _(beta)_, Cursor Agent _(beta)_, OpenCode _(beta)_, Pi _(beta)_ e Gemini CLI _(beta)_ encontrados em sua máquina. Projetos do Claude são descobertos a partir de `~/.claude/projects/` (ou o caminho definido por `CLAUDE_PROJECTS_PATH`); projetos do Codex são descobertos escaneando cada transcrição em `~/.codex/sessions///
/*.jsonl` e agrupando pelo `cwd` registrado no primeiro registro de cada sessão; projetos do Copilot CLI são descobertos escaneando cada `~/.copilot/session-state//workspace.yaml` (configurável via `COPILOT_HOME`) e agrupando pelo campo `cwd`; projetos do Cursor Agent são descobertos escaneando metadados por sessão em `~/.cursor/agent-sessions//` (configurável via `CURSOR_HOME`, com `conversations/` e `sessions/` verificados como alternativas) buscando um escalar `cwd` em `meta.json` / `session.json` / `workspace.yaml`; projetos do OpenCode são descobertos consultando seu banco SQLite em `~/.local/share/opencode/opencode.db` via `opencode db --format json` (lemos as tabelas `session` e `project` e agrupamos por `project_id`); projetos do Pi são descobertos escaneando transcrições JSONL por sessão em `~/.pi/agent/sessions//_.jsonl` (configurável via `PI_SESSIONS_DIR`) e extraindo o `cwd` do primeiro registro de cada sessão; projetos do Gemini CLI são descobertos escaneando `~/.gemini/tmp//chats/session--.jsonl` (configurável via `GEMINI_SESSIONS_DIR`) e recuperando o cwd canônico a partir do marcador de texto `.project_root` adjacente. Um projeto utilizado por múltiplos CLIs é exibido como uma única linha com todos os badges correspondentes. Use o menu suspenso **CLI** acima da tabela para filtrar por um agente CLI específico; a URL preserva sua seleção como `?cli=claude|codex|copilot|cursor|opencode|pi|gemini`. +Lista todos os projetos Claude Code, OpenAI Codex, GitHub Copilot CLI _(beta)_, Cursor Agent _(beta)_, OpenCode _(beta)_, Pi _(beta)_ e Gemini CLI _(beta)_ encontrados na sua máquina. Os projetos Claude são descobertos a partir de `~/.claude/projects/` (ou do caminho definido por `CLAUDE_PROJECTS_PATH`); os projetos Codex são descobertos escaneando todos os transcritos em `~/.codex/sessions///
/*.jsonl` e agrupando pelo `cwd` registrado no primeiro registro de cada sessão; os projetos Copilot CLI são descobertos escaneando cada `~/.copilot/session-state//workspace.yaml` (configurável via `COPILOT_HOME`) e agrupando pelo campo `cwd`; os projetos Cursor Agent são descobertos escaneando os metadados por sessão em `~/.cursor/agent-sessions//` (configurável via `CURSOR_HOME`, com `conversations/` e `sessions/` verificados como fallbacks) para um escalar `cwd` em `meta.json` / `session.json` / `workspace.yaml`; os projetos OpenCode são descobertos consultando seu banco SQLite em `~/.local/share/opencode/opencode.db` via `opencode db --format json` (lemos as tabelas `session` e `project` e agrupamos por `project_id`); os projetos Pi são descobertos escaneando transcritos JSONL por sessão em `~/.pi/agent/sessions//_.jsonl` (configurável via `PI_SESSIONS_DIR`) e extraindo o `cwd` do primeiro registro de cada sessão; os projetos Gemini CLI são descobertos escaneando `~/.gemini/tmp//chats/session--.jsonl` (configurável via `GEMINI_SESSIONS_DIR`) e recuperando o cwd canônico a partir do marcador de texto `.project_root` irmão. Um projeto que foi utilizado por múltiplos CLIs é exibido como uma única linha com todos os badges correspondentes. Use o menu suspenso **CLI** acima da tabela para filtrar por um agente CLI específico; a URL preserva sua seleção como `?cli=claude|codex|copilot|cursor|opencode|pi|gemini`. Cada projeto exibe: - Nome do projeto (derivado do caminho da pasta) - Um badge de CLI — `Claude Code` (laranja), `OpenAI Codex` (roxo), `GitHub Copilot` (azul), `Cursor Agent` (esmeralda), `OpenCode` (âmbar), `Pi` (rosa) e/ou `Gemini CLI` (azul-céu) -- Data da atividade de sessão mais recente +- Data da atividade mais recente da sessão Clique em um projeto para ver suas sessões. @@ -39,7 +39,7 @@ Lista todas as sessões dentro de um projeto. Cada sessão exibe: - ID da sessão - Timestamps de início e fim - Número de chamadas de ferramentas -- Contagem de atividade de hook (políticas que foram acionadas) +- Contagem de atividade de hooks (políticas que foram acionadas) Use o filtro de intervalo de datas e a busca por ID de sessão para refinar a lista. As sessões são paginadas. @@ -47,44 +47,44 @@ Clique em uma sessão para abrir o visualizador de sessão. ### Visualizador de sessão -O visualizador de sessão responde à pergunta central sobre agentes autônomos: o que o agente fez e ele permaneceu no caminho certo? Um badge de CLI ao lado do cabeçalho indica se a sessão é uma transcrição do Claude Code, OpenAI Codex, GitHub Copilot CLI, Cursor Agent, OpenCode, Pi ou Gemini CLI. Ele exibe uma linha do tempo de tudo que aconteceu em uma sessão: +O visualizador de sessão responde à principal pergunta sobre agentes autônomos: o que o agente fez e ele permaneceu no caminho certo? Um badge de CLI ao lado do cabeçalho indica se a sessão é um transcrito do Claude Code, OpenAI Codex, GitHub Copilot CLI, Cursor Agent, OpenCode, Pi ou Gemini CLI. Ele exibe uma linha do tempo de tudo o que aconteceu em uma sessão: -- **Mensagens** - Respostas de texto do Claude e prompts do usuário -- **Chamadas de ferramentas** - Cada ferramenta que o Claude invocou, com sua entrada e saída -- **Atividade de políticas** - Para cada chamada de ferramenta, quais políticas foram acionadas e qual decisão elas retornaram +- **Mensagens** — Respostas de texto do Claude e prompts do usuário +- **Chamadas de ferramentas** — Cada ferramenta que o Claude invocou, com sua entrada e saída +- **Atividade de políticas** — Para cada chamada de ferramenta, quais políticas foram acionadas e qual decisão elas retornaram -A barra de estatísticas no topo exibe a duração da sessão, total de chamadas de ferramentas e um resumo das decisões de hook (contagens de allow / deny / instruct). +A barra de estatísticas no topo exibe a duração da sessão, o total de chamadas de ferramentas e um resumo das decisões de hook (contagens de allow / deny / instruct). -Clique no botão **Download Logs** para exportar a sessão. Para sessões do Claude Code, Codex, Copilot, Cursor, Pi e Gemini você obtém a transcrição JSONL original em disco byte a byte; para o OpenCode (cujas sessões ficam no SQLite, não em disco) você obtém um documento JSON espelhando as tabelas subjacentes `session` / `messages` / `parts`. +Clique no botão **Download Logs** para exportar a sessão. Para sessões do Claude Code, Codex, Copilot, Cursor, Pi e Gemini, você recebe o transcrito JSONL original em disco byte a byte; para o OpenCode (cujas sessões ficam no SQLite, não em disco) você recebe um documento JSON espelhando as tabelas subjacentes `session` / `messages` / `parts`. ### Auditoria -Um relatório com personalidade sobre como seu agente realmente se comportou ao longo de sessões passadas. Executa o mesmo escaneamento que o CLI `failproofai audit`, mas renderiza como um pôster compartilhável de tela única + quatro seções abaixo da dobra: +Um relatório orientado por personalidade de como seu agente tem se comportado de fato ao longo de sessões passadas. Executa o mesmo escaneamento que o CLI `failproofai audit`, mas renderiza como um pôster de tela única compartilhável + quatro seções abaixo da dobra: -1. **Pôster** — preenche o primeiro viewport. Região de captura PNG autossuficiente com o logotipo failproof_ai + rótulo de auditoria · índice de arquétipo (`№ NN de 08`) + data de auditoria · pontuação numérica (0–100) + pílula de percentil (`top 15%`) · o nome do arquétipo (um dentre `the optimist`, `the cowboy`, `the explorer`, `the goldfish`, `the paranoid architect`, `the precision builder`, `the hammer`, `the ghost`) + tira de 3 palavras-chave · linha de raridade `// only N% of agents are this archetype` · tile de símbolo 8×8 pixels · rodapé `audit yours → failproof.ai`. Três botões de compartilhamento ficam logo fora da caixa de captura: `post your archetype` (X intent), `share on linkedin`, `download poster`. A captura é feita via `html-to-image`, portanto o PNG corresponde ao render em tela pixel a pixel (bordas tracejadas, máscara SVG do logo, gradientes, métricas de fonte — todos preservados). -2. **Pontos fortes** — lista de comportamentos que seu agente já faz corretamente, derivados dos dados de auditoria ao vivo (taxa de chamadas de ferramentas limpas, duração média de sessão, zero vazamentos de credenciais, zero tempestades de retry, etc.). -3. **Quirks** — tabela do que escapou, ordenada por impacto: `hora · o que escapou + política que teria capturado · pílula de severidade · recorrência` (novo / Nx esta semana / recorrente). -4. **Como melhorar** — lista de linhas, uma por política prescrita: nome da política em branco, descrição em uma linha, comando de instalação + botão de copiar no lado direito. Um botão `[install all]` no cabeçalho da seção copia o comando combinado `failproofai policy add a b c …` para todas as políticas prescritas. -5. **Volte melhor** — dois cards lado a lado. Esquerdo: definir um lembrete (seletor de cadência `3d` / `7d` / `14d` / `30d`; persiste via `/api/auth/reminder` após autenticação). Direito: desbloquear benefícios failproof — `invite a friend` abre um modal que aceita uma lista de e-mails de amigos separados por vírgula/espaço/nova linha (máximo 10 por envio), faz POST para `/api/audit/invite`, que encaminha para o `POST /v0/invite` do api-server. O api-server envia um e-mail por destinatário a partir de `invite@failproof.ai` com o remetente em Cc e `Reply-To` definido, para que o destinatário saiba quem o convidou e o remetente receba uma cópia em sua caixa de entrada. Usuários anônimos são direcionados pelo `AuthDialog` primeiro, para que o e-mail do remetente seja conhecido antes que os convites sejam enviados. Direitos e cumprimento de benefícios são uma etapa futura. +1. **Pôster** — preenche o primeiro viewport. Região de captura PNG independente com o logotipo failproof_ai + rótulo de auditoria · índice de arquétipo (`№ NN of 08`) + data da auditoria · pontuação numérica (0–100) + pílula de percentil (`top 15%`) · o nome do arquétipo (um dentre `the optimist`, `the cowboy`, `the explorer`, `the goldfish`, `the paranoid architect`, `the precision builder`, `the hammer`, `the ghost`) + faixa de 3 palavras-chave · linha de raridade `// only N% of agents are this archetype` · bloco de símbolo pixel 8×8 · rodapé `audit yours → failproof.ai`. Três botões de compartilhamento ficam logo fora da caixa de captura: `post your archetype` (X intent), `share on linkedin`, `download poster`. A captura é feita via `html-to-image`, portanto o PNG corresponde pixel a pixel à renderização em tela (bordas tracejadas, máscara de logo SVG, gradientes, métricas de fonte — tudo preservado). +2. **Pontos fortes** — lista de linhas com ✓ destacando comportamentos que seu agente já faz corretamente, derivados dos dados de auditoria em tempo real (taxa limpa de chamadas de ferramentas, sem pushes diretos para main, zero vazamentos de credenciais, zero tempestades de retry) — cada item exibido apenas quando a política relevante tem um histórico limpo ao longo da janela de auditoria. +3. **Peculiaridades** — tabela do que passou despercebido, classificado por severidade: `quando · o que escapou + a política que teria detectado · pílula de severidade · visto`, onde a recorrência é exibida como `new` (uma vez), `N× seen` (2–9 vezes) ou `recurring` (10+). +4. **Como melhorar** — lista de linhas tranquilas, uma por política prescrita: nome da política em branco, descrição em uma linha, comando de instalação + botão de cópia à direita. O cabeçalho da seção exibe `enable all N → projected · ` (a pontuação que você alcançaria com todas as correções aplicadas), e seu botão `[install all]` copia o comando combinado `failproofai policy add a b c …` para cada política prescrita. +5. **Volte melhor** — dois cards lado a lado. Esquerda: definir um lembrete (seletor de cadência `3d` / `7d` / `14d` / `30d`; persiste via `/api/auth/reminder` após autenticação). Direita: desbloquear vantagens failproof — `invite a friend` abre um modal que aceita uma lista de e-mails de amigos separados por vírgula/espaço/nova linha (máximo 10 por envio), faz POST para `/api/audit/invite`, que encaminha para o `POST /v0/invite` do api-server. O api-server envia um e-mail por destinatário a partir de `invite@failproof.ai` com o remetente em Cc e `Reply-To` definido, para que o destinatário saiba quem o convidou e o remetente receba uma cópia em sua caixa de entrada. Usuários anônimos são direcionados pelo `AuthDialog` primeiro para que o e-mail do remetente seja conhecido antes dos convites serem enviados. Direitos e benefícios serão implementados em uma etapa futura. -Alimentado pelo runtime `failproofai audit` — consulte [Audit CLI](/pt-br/cli/audit) para o mecanismo de escaneamento subjacente, flags suportadas e invariantes de cache por transcrição. O dashboard armazena em cache o resultado mais recente em `~/.failproofai/audit-dashboard.json` (modo `0600`, slot único, novas execuções sobrescrevem) para que revisitas sejam instantâneas; **tanto os caches por transcrição quanto o de resultado completo são rejeitados na leitura após 7 dias** para que o dashboard nunca sirva silenciosamente um resultado com uma semana de idade — após o TTL, `/audit` cai para seu estado vazio e solicita uma nova execução. Clicar em `[ re-audit now ]` próximo ao final do relatório faz POST em `/api/audit/run` com `noCache: true` — a re-auditoria ignora o cache por transcrição e reescaneia cada transcrição do zero em vez de retornar silenciosamente o resultado em cache — e o dashboard consulta `/api/audit/status` a 1Hz até que a execução termine; uma faixa de progresso rosa fixada ao topo do viewport é exibida durante a execução com um cronômetro decorrido, e o resultado atualizado é inserido no lugar ao concluir com sucesso (sem recarregamento de página completo; uma re-auditoria com falha mantém o relatório anterior intacto). Em caso de falha, a faixa fica vermelha com texto baseado no `RerunError.kind` (`timeout` / `network` / `post_failed`). O estado vazio (sem cache ou expirado) e o estado de zero sessões (cache existe, mas o escaneamento não encontrou transcrições) são apresentados separadamente. +Alimentado pelo runtime `failproofai audit` — veja [Audit CLI](/pt-br/cli/audit) para o motor de escaneamento subjacente, flags suportadas e invariantes de cache por transcrito. O dashboard armazena em cache o resultado mais recente em `~/.failproofai/audit-dashboard.json` (modo `0600`, slot único, novas execuções sobrescrevem) para que revisitas sejam instantâneas; **tanto o cache por transcrito quanto o cache do resultado completo são rejeitados na leitura quando têm mais de 7 dias**, portanto o dashboard nunca serve silenciosamente um resultado de uma semana atrás — após o TTL, `/audit` cai em seu estado vazio e solicita uma nova execução. Clicar em `[ re-audit now ]` perto da parte inferior do relatório faz POST em `/api/audit/run` com `noCache: true` — a re-auditoria ignora o cache por transcrito e reescanieia todos os transcritos do zero em vez de retornar silenciosamente o resultado em cache — e o dashboard verifica `/api/audit/status` a 1Hz até a execução terminar; uma faixa de progresso rosa fixa é fixada ao topo do viewport durante a execução com um timer de tempo decorrido, e o resultado atualizado substitui o anterior no lugar em caso de sucesso (sem recarregamento completo da página; uma re-auditoria com falha mantém o relatório anterior intacto). Em caso de falha, a faixa fica vermelha com texto baseado no `RerunError.kind` (`timeout` / `network` / `post_failed`). Estado vazio (sem cache ou expirado) e estado de zero sessões (cache existe mas o escaneamento não encontrou transcritos) são exibidos separadamente. ### Políticas Uma página com duas abas para gerenciar políticas e revisar atividades. - - - Selecione múltiplos CLIs de agentes que o failproofai protege a partir de um único painel — Claude Code, OpenAI Codex, GitHub Copilot, Cursor Agent, OpenCode, Pi e Gemini CLI têm uma linha com status de instalação (`Active` / `Detected` / `Inactive`), o caminho de configurações do escopo do usuário e um destaque com a cor da marca. Marque ou desmarque os CLIs desejados e clique em `Apply changes` para instalar/desinstalar a diferença em um único passo. CLIs cujo binário é detectado no PATH são pré-selecionados. - - Ative ou desative políticas individuais com um único clique (escreve em `~/.failproofai/policies-config.json` — compartilhado entre todos os CLIs instalados) + + - Selecione múltiplos CLIs de agentes que o failproofai protege a partir de um único painel — Claude Code, OpenAI Codex, GitHub Copilot, Cursor Agent, OpenCode, Pi e Gemini CLI têm uma linha com status de instalação (`Active` / `Detected` / `Inactive`), o caminho de configurações de escopo do usuário e um destaque colorido pela marca. Marque ou desmarque os CLIs desejados e clique em `Apply changes` para instalar/desinstalar a diferença em uma única etapa. CLIs cujo binário é detectado no PATH são pré-marcados. + - Ative ou desative políticas individuais com um único clique (grava em `~/.failproofai/policies-config.json` — compartilhado entre todos os CLIs instalados) - Expanda uma política para configurar seus parâmetros (para políticas que suportam `policyParams`) - - Defina um caminho de arquivo de políticas personalizado + - Defina um caminho personalizado para o arquivo de políticas - - - Histórico paginado completo de cada evento de hook que foi acionado em todas as sessões + + - Histórico paginado completo de todos os eventos de hook disparados em todas as sessões - Filtre por decisão, tipo de evento, CLI (Claude Code / OpenAI Codex / GitHub Copilot _(beta)_ / Cursor Agent _(beta)_ / OpenCode _(beta)_ / Pi _(beta)_ / Gemini CLI _(beta)_), nome da política ou ID de sessão - Cada linha exibe: timestamp, nome da política, decisão, badge de CLI (laranja = Claude Code, roxo = OpenAI Codex, azul = GitHub Copilot, esmeralda = Cursor Agent, âmbar = OpenCode, rosa = Pi, azul-céu = Gemini CLI), nome da ferramenta, ID de sessão e o motivo para decisões deny/instruct - - Clique em um ID de sessão para abrir sua transcrição — o visualizador detecta automaticamente qual CLI acionou o hook (Claude `~/.claude/projects/…`, Codex `~/.codex/sessions/…`, Copilot CLI `~/.copilot/session-state//events.jsonl`, Cursor Agent `~/.cursor/agent-sessions//events.jsonl`, OpenCode `~/.local/share/opencode/opencode.db`, Pi `~/.pi/agent/sessions//.jsonl`, Gemini CLI `~/.gemini/tmp//chats/.jsonl`) e exibe o badge de CLI correspondente no cabeçalho + - Clique em um ID de sessão para abrir seu transcrito — o visualizador detecta automaticamente qual CLI disparou o hook (Claude `~/.claude/projects/…`, Codex `~/.codex/sessions/…`, Copilot CLI `~/.copilot/session-state//events.jsonl`, Cursor Agent `~/.cursor/agent-sessions//events.jsonl`, OpenCode `~/.local/share/opencode/opencode.db`, Pi `~/.pi/agent/sessions//.jsonl`, Gemini CLI `~/.gemini/tmp//chats/.jsonl`) e renderiza o badge de CLI correspondente no cabeçalho @@ -92,11 +92,11 @@ Uma página com duas abas para gerenciar políticas e revisar atividades. ## Atualização automática -O dashboard possui uma opção de atualização automática na navegação superior. Quando ativada, a página atual é atualizada periodicamente para exibir novas sessões e atividades de políticas conforme aparecem. Essencial para monitorar sessões de agentes autônomos de longa duração. +O dashboard possui um botão de atualização automática na navegação superior. Quando ativado, a página atual é atualizada periodicamente para exibir novas sessões e atividades de políticas conforme aparecem. Essencial para monitorar sessões de agentes autônomos de longa duração. --- -## Desativando páginas +## Desabilitando páginas Se você precisar apenas de algumas partes do dashboard, defina `FAILPROOFAI_DISABLE_PAGES` como uma lista separada por vírgulas de nomes de páginas: @@ -118,15 +118,15 @@ CLAUDE_PROJECTS_PATH=/custom/path/to/projects failproofai --- -## Acessando a partir de um host diferente de localhost +## Acessando de um host não-localhost -Ao executar o dashboard em **modo de desenvolvimento** (`npm run dev`) e acessá-lo a partir de um hostname diferente de `localhost` — por exemplo, um domínio personalizado, um IP remoto ou uma URL tunelada — você pode ver um aviso como: +Ao executar o dashboard em **modo dev** (`npm run dev`) e acessá-lo a partir de um hostname diferente de `localhost` — por exemplo, um domínio personalizado, um IP remoto ou uma URL tunelada — você pode ver um aviso como: ```text ⚠ Blocked cross-origin request to Next.js dev resource /_next/webpack-hmr from "dashboard.example.com". ``` -Isso é o Next.js bloqueando acesso cross-origin ao seu websocket HMR (hot module reload), que é um recurso exclusivo de desenvolvimento. Para permitir seu host, use a flag `--allowed-origins`: +Isso é o Next.js bloqueando acesso cross-origin ao websocket de HMR (hot module reload), que é um recurso exclusivo de desenvolvimento. Para permitir seu host, use a flag `--allowed-origins`: ```bash npm run dev -- --allowed-origins dashboard.example.com @@ -145,5 +145,5 @@ FAILPROOFAI_ALLOWED_DEV_ORIGINS=dashboard.example.com npm run dev ``` -Isso se aplica apenas ao modo de desenvolvimento. Ao executar `failproofai` (modo de produção), não há websocket HMR nem problema de recurso de desenvolvimento cross-origin. +Isso se aplica apenas ao modo dev. Ao executar `failproofai` (modo de produção), não há websocket de HMR nem problema de recurso dev cross-origin. \ No newline at end of file diff --git a/docs/ru/cli/audit.mdx b/docs/ru/cli/audit.mdx index c73cb8eff..a9e63e98c 100644 --- a/docs/ru/cli/audit.mdx +++ b/docs/ru/cli/audit.mdx @@ -1,57 +1,93 @@ --- -title: Аудит прошлых сессий (beta) -description: "Подсчет того, как часто агент выполнял пустые или рискованные операции в прошлых транскриптах" +title: Аудит прошлых сеансов (beta) +description: "Подсчитайте, как часто агент совершал неэффективные или рискованные действия в прошлых транскриптах" --- - **Функция в стадии beta.** Аудит поставляется как beta, пока мы собираем ранние отзывы. - Каталог детекторов и формат отчета могут измениться перед следующим стабильным релизом. - Пожалуйста, откройте issue, если что-то покажется вам неправильным. + **Бета-функция.** Аудит поставляется в виде бета-версии, пока мы собираем первоначальные отзывы. + Каталог детекторов и формат отчета могут измениться перед следующим стабильным выпуском. + Пожалуйста, откройте issue, если что-то выглядит неправильно. -Аудит теперь доступен как страница **/audit dashboard**, а не как подкоманда CLI. Откройте его из навигационной панели dashboard (между Policies и Projects), или посетите `http://localhost:8020/audit` напрямую при запуске `failproofai` локально. +Аудит повторно воспроизводит ваши прошлые транскрипты agent-CLI через механизм политик failproofai и создает удобный для совместного использования визуальный отчет на странице **`/audit` dashboard** — архетип вашего агента, оценка от 0 до 100 и точно то, какие политики могли бы поймать что-либо. -```bash -failproofai # откройте dashboard, затем нажмите "Audit" +## Запустите его + +Три способа — все ведут к одному отчету `/audit`. + + + +```bash npx (без установки) +npx -y failproofai audit +``` + +```bash failproofai audit +failproofai audit ``` -Dashboard сканирует прошлые транскрипты CLI агента на этом компьютере (Claude Code, Codex, Copilot, Cursor, OpenCode, Pi, Gemini) и отчитывается о том, как часто агент выполнял операции, которые failproofai построен, чтобы предотвратить — проверки переменных окружения, force push, избыточные префиксы `cd `, циклы опроса с sleep, повторное чтение только что отредактированных файлов и многое другое. +```bash failproofai (dashboard) +failproofai +``` + + + + + + `npx -y failproofai audit` загружает failproofai, запускает сканирование и открывает + дашборд для вас — ничего не нужно устанавливать заранее. + + + `failproofai audit` запускает сканирование в вашем терминале, затем + автоматически открывает `localhost:8020/audit` по завершении. + + + Запустите `failproofai` и нажмите **Audit** в навигационной панели (между Policies и + Projects) или откройте `/audit` напрямую. + + + + + Запустите `failproofai audit -h` (или `--help`) чтобы увидеть справку по использованию. Аудит работает **полностью + офлайн** — не требуется аккаунт или сетевое соединение — и дашборд продолжает работать + до тех пор, пока вы не остановите его с помощью `Ctrl+C`. + + +Дашборд сканирует прошлые транскрипты agent CLI на этой машине (Claude Code, Codex, Copilot, Cursor, OpenCode, Pi, Gemini) и отчитывается о том, как часто агент совершал действия, которые failproofai предназначена остановить — проверки переменных окружения, force push, избыточные префиксы `cd `, sleep-polling циклы, повторное чтение файлов, только что отредактированных, и многое другое. -Для каждого транскрипта все события использования инструментов проигрываются через 39 встроенных политик **и** через 8 детекторов, предназначенных только для аудита, которые ловят паттерны, не охватываемые пока политиками реального времени. Счетчики агрегируются по политикам / детекторам для всех сессий. +Для каждого транскрипта каждое событие tool-use повторно воспроизводится через 39 встроенных политик **и** через 8 детекторов только для аудита, которые ловят паттерны, еще не охватанные политиками времени выполнения. Подсчеты агрегируются по политикам / детекторам во всех сеансах. -## Что вы получаете +## Что вы получите -Страница `/audit` состоит из шести разделов: +Страница `/audit` — это один экран, общедоступный **постер**, за которым следуют четыре раздела ниже складки: -1. **Identity** — ваш агент классифицируется в один из 8 архетипов (`optimist`, `cowboy`, `explorer`, `goldfish`, `paranoid architect`, `precision builder`, `hammer`, `ghost`) на основе взвешенного сигнала для каждого проверенного транскрипта. -2. **Strengths** — реальные цифры, полученные из сканирования (процент чистых вызовов, "0 утечек учетных данных" и т. д.), учитывая факт срабатывания соответствующих политик sanitize. -3. **Score** — 0-100 с полосами S/A/B/C/D/F и прогнозируемым улучшением, если будет включена каждая рекомендуемая политика. -4. **Findings** — карточки по каждой политике с информацией о том, что произошло, стоимостью, собранными доказательствами и точной командой `failproofai policy add ` для включения встроенной политики реального времени, которая бы это поймала. -5. **Prescribed policies** — агрегированный список установки с одной командой `failproofai policies --install`. -6. **Re-audit reminder** — "вернитесь лучше подготовленными." Установите напоминание по электронной почте на 7 дней через api-server (требуется вход; см. [`failproofai auth`](/ru/cli/auth)). +1. **Постер** — идентичность вашего агента с первого взгляда: его **архетип** (один из 8 — `optimist`, `cowboy`, `explorer`, `goldfish`, `paranoid architect`, `precision builder`, `hammer`, `ghost`), ключевые слова его персоны, насколько редкий этот архетип и **оценка от 0 до 100** с полосой уровня (`S` вниз до `bottom tier`). Создано для совместного использования — публикуйте в X или LinkedIn или загружайте как PNG. +2. **`// strengths`** — то, что ваш агент уже делает хорошо, как реальные цифры из сканирования (например, чистый процент tool-call, `0` попыток push-to-main), показывается только там, где соответствующая политика имеет чистую запись. +3. **`// quirks`** — то, что прошло мимо: ранжированная таблица поведений, которые failproofai перехватила бы — *когда* это последний раз произошло, *что прошло* (и встроенная функция, которая это заблокировала бы), его *серьезность* и как часто это было *замечено* (`new` / `recurring` / `N× seen`). +4. **`// how to improve`** — рекомендуемый список исправлений: одна строка на политику с копируемой `failproofai policy add `, плюс кнопка **install all**, которая включает все рекомендации сразу и показывает вашу **прогнозируемую оценку**, если бы вы это сделали. +5. **`// come back better`** — выработайте привычку: установите напоминание по электронной почте о повторном аудите **reminder** (`3d` / `7d` / `14d` / `30d`) или проведите повторный аудит сейчас, и **пригласите друга** запустить свой собственный аудит (отправляется с failproof.ai, скопировано вам). Напоминания и приглашения требуют входа — см. [`failproofai auth`](/ru/cli/auth). -## Детекторы, предназначенные только для аудита +## Детекторы только для аудита -Эти детекторы выявляют паттерны "глупого поведения", не (пока) применяемые в реальном времени. Они работают только во время аудита и никогда не блокируют вызов инструмента в реальном времени. +Они обнаруживают паттерны "глупого поведения", которые (еще) не применяются в реальном времени. Они работают только во время аудита и никогда не блокируют живой вызов tool. -| Детектор | Что подсчитывается | +| Детектор | Что считается | |---|---| -| `redundant-cd-cwd` | Bash-команды, начинающиеся с `cd && …`, даже если команды уже выполняются в `cwd`. | +| `redundant-cd-cwd` | Bash команды, начинающиеся с `cd && …`, даже если команды уже работают в `cwd`. | | `prefer-edit-over-read-cat` | `cat`/`head`/`tail`/`less`/`more` на одном исходном файле — используйте инструмент `Read`. | -| `prefer-edit-over-sed-awk` | `sed -i` / `awk … > file` in-place правки — используйте инструмент `Edit`. | -| `prefer-write-over-heredoc` | Heredoc / многострочный `echo > file` для записи файлов — используйте инструмент `Write`. | -| `sleep-polling-loop` | Длительные `sleep N` (≥ 30s) или `while …; sleep …; done` циклы опроса. | -| `find-from-root` | `find /`, `find /home`, `find /usr` и т. д. — ограничьте до `cwd`. | +| `prefer-edit-over-sed-awk` | `sed -i` / `awk … > file` встроенные редактирования — используйте инструмент `Edit`. | +| `prefer-write-over-heredoc` | Heredoc / многострочная `echo > file` запись файлов — используйте инструмент `Write`. | +| `sleep-polling-loop` | Длинный `sleep N` (≥ 30s) или `while …; sleep …; done` polling циклы. | +| `find-from-root` | `find /`, `find /home`, `find /usr` и т.д. — ограничьте `cwd` вместо этого. | | `git-commit-no-verify` | `git commit … --no-verify` / `-n`, пропуск хуков. | -| `reread-after-edit` | `Read` файла, который был только что `Edit`/`Write` в той же сессии. | +| `reread-after-edit` | `Read` файла, который был только что `Edit`/`Write` в том же сеансе. | ## Кэши -- **Кэш для каждого транскрипта** по адресу `~/.failproofai/cache/audit/.json` с ключом `(mtime, size, engineVersion, detectorVersion)` — автоматически инвалидируется при изменении транскрипта или кода политик/детекторов. Каждая запись также хранит временную метку `cachedAt` как **TTL метаданные** (не являются частью ключа кэша); записи старше **7 дней** отклоняются при чтении, чтобы долгоживущие результаты не пережили эволюцию намерений детектора. -- **Кэш полного результата** по адресу `~/.failproofai/audit-dashboard.json` (режим 0600). Позволяет dashboard визуализироваться мгновенно при навигации без повторного запуска. Также отклоняется при чтении после **7-дневного TTL** — `/audit` затем переходит в пустое состояние и предлагает свежий запуск. Нажмите `[ re-audit now ]` близко к низу отчета для обновления — повторный аудит отправляет `noCache: true`, поэтому он обходит кэш для каждого транскрипта и пересканирует каждый транскрипт вместо возврата кэшированного результата; запуск выполняется с отображением прогресса через липкую верхнюю полосу и заменяет результат на месте при успехе (без перезагрузки страницы; неудачный повторный аудит сохраняет предыдущий отчет). +- **Кэш на транскрипт** по `~/.failproofai/cache/audit/.json`, индексируемый по `(mtime, size, engineVersion, detectorVersion)` — автоматически инвалидируется, когда транскрипт или код политики/детектора изменяются. Каждая запись также хранит временную метку `cachedAt` как **метаданные TTL** (не являющиеся частью ключа кэша); записи старше **7 дней** отклоняются при чтении, чтобы долгоживущие результаты не переживали развивающееся намерение детектора. +- **Кэш полного результата** по `~/.failproofai/audit-dashboard.json` (режим 0600). Позволяет дашборду отображаться мгновенно при навигации без переквапуска. Также отклоняется при чтении после **7-дневного TTL** — `/audit` затем переходит в пустое состояние и предлагает свежий запуск. Нажмите `[ re-audit now ]` рядом с нижней частью отчета, чтобы обновить — повторный аудит отправляет `noCache: true`, поэтому он обходит кэш на транскрипт и повторно сканирует каждый транскрипт вместо возврата кэшированного результата; запуск отправляет прогресс через липкую верхнюю полосу и заменяет результат на месте при успехе (без перезагрузки страницы; неудачный повторный аудит сохраняет предыдущий отчет). -## Примечания +## Заметки -- **Без изменений.** Аудит проигрывается в режиме только для чтения. `warn-repeated-tool-calls` пропускается, потому что его побочный файл для каждой сессии в противном случае был бы изменен. -- **Политики рабочего процесса пропущены.** Политики `require-*-before-stop` срабатывают только на события `Stop` и `execSync` против живого состояния git — они не имеют значимой интерпретации "что бы произошло в 2025", поэтому они не появляются в счетчиках аудита. -- **Пользовательские политики пропущены.** Пользовательские хуки не проигрываются (они могли измениться с момента исходной сессии). \ No newline at end of file +- **Без изменений.** Аудит повторно воспроизводится в режиме только для чтения. `warn-repeated-tool-calls` пропускается, потому что его боковой сопровождающий сеанс в противном случае был бы изменен. +- **Политики рабочего процесса пропущены.** Политики `require-*-before-stop` срабатывают только на событиях `Stop` и `execSync` в соответствии с живым состоянием git — они не имеют значимой интерпретации "что бы произошло в 2025", поэтому они не отображаются в подсчетах аудита. +- **Пользовательские политики пропущены.** Пользовательские хуки, предоставленные пользователем, не воспроизводятся (они могли измениться с момента исходного сеанса). \ No newline at end of file diff --git a/docs/ru/dashboard.mdx b/docs/ru/dashboard.mdx index 843033f56..5b60a7b00 100644 --- a/docs/ru/dashboard.mdx +++ b/docs/ru/dashboard.mdx @@ -1,10 +1,11 @@ --- -title: Dashboard -description: "Мониторьте сессии агентов, просматривайте вызовы инструментов и управляйте политиками" +--- +title: Панель управления +description: "Мониторинг сеансов агентов, просмотр вызовов инструментов и управление политиками" icon: chart-line --- -Панель управления failproofai — это локальное веб-приложение для мониторинга сессий ваших AI-агентов и управления политиками. Посмотрите, что делали ваши агенты, пока вас не было. +Панель управления failproofai — это локальное веб-приложение для мониторинга сеансов вашего ИИ-агента и управления политиками. Узнайте, что делали ваши агенты, пока вас не было. --- @@ -14,9 +15,9 @@ icon: chart-line failproofai ``` -Открывается по адресу `http://localhost:8020`. +Открывается на `http://localhost:8020`. -Панель управления читает данные непосредственно из файловой системы — из папок проектов Claude Code и файлов конфигурации failproofai. Ничего не отправляется в удалённый сервис. +Панель управления читает данные непосредственно из файловой системы — из папок вашего проекта Claude Code и файлов конфигурации failproofai. Ничего не записывается в удалённый сервис. --- @@ -24,67 +25,67 @@ failproofai ### Projects -Список всех проектов Claude Code, OpenAI Codex, GitHub Copilot CLI _(бета)_, Cursor Agent _(бета)_, OpenCode _(бета)_, Pi _(бета)_ и Gemini CLI _(бета)_, найденных на вашем компьютере. Проекты Claude обнаруживаются в `~/.claude/projects/` (или по пути, установленному в `CLAUDE_PROJECTS_PATH`); проекты Codex обнаруживаются путём сканирования всех транскриптов в `~/.codex/sessions///
/*.jsonl` и группировки по `cwd`, записанному в первом записи каждой сессии; проекты Copilot CLI обнаруживаются путём сканирования каждого `~/.copilot/session-state//workspace.yaml` (настраивается через `COPILOT_HOME`) и группировки по полю `cwd`; проекты Cursor Agent обнаруживаются путём сканирования метаданных сессий в `~/.cursor/agent-sessions//` (настраивается через `CURSOR_HOME`, с резервными вариантами `conversations/` и `sessions/`) для скалярного `cwd` в `meta.json` / `session.json` / `workspace.yaml`; проекты OpenCode обнаруживаются путём запроса к своей базе данных SQLite в `~/.local/share/opencode/opencode.db` через `opencode db --format json` (мы читаем таблицы `session` и `project` и группируем по `project_id`); проекты Pi обнаруживаются путём сканирования JSONL-транскриптов сессий в `~/.pi/agent/sessions//_.jsonl` (настраивается через `PI_SESSIONS_DIR`) и извлечения `cwd` из первой записи каждой сессии; проекты Gemini CLI обнаруживаются путём сканирования `~/.gemini/tmp//chats/session--.jsonl` (настраивается через `GEMINI_SESSIONS_DIR`) и восстановления канонического cwd из соседнего текстового маркера `.project_root`. Проект, использованный несколькими CLI, отображается одной строкой со всеми соответствующими значками. Используйте раскрывающееся меню **CLI** над таблицей для фильтрации по определённому CLI агента; URL сохраняет ваш выбор как `?cli=claude|codex|copilot|cursor|opencode|pi|gemini`. +Отображает все проекты Claude Code, OpenAI Codex, GitHub Copilot CLI _(бета)_, Cursor Agent _(бета)_, OpenCode _(бета)_, Pi _(бета)_ и Gemini CLI _(бета)_, найденные на вашем компьютере. Проекты Claude обнаруживаются из `~/.claude/projects/` (или пути, заданного переменной `CLAUDE_PROJECTS_PATH`); проекты Codex обнаруживаются путём сканирования каждой транскрипции в `~/.codex/sessions///
/*.jsonl` и группировки по `cwd`, записанному в первой записи сеанса; проекты Copilot CLI обнаруживаются путём сканирования каждого файла `~/.copilot/session-state//workspace.yaml` (настраивается через `COPILOT_HOME`) и группировки по полю `cwd`; проекты Cursor Agent обнаруживаются путём сканирования метаданных для каждого сеанса в `~/.cursor/agent-sessions//` (настраивается через `CURSOR_HOME`, с резервными вариантами `conversations/` и `sessions/`) для скалярного значения `cwd` в `meta.json` / `session.json` / `workspace.yaml`; проекты OpenCode обнаруживаются путём запроса к его БД SQLite в `~/.local/share/opencode/opencode.db` через `opencode db --format json` (мы читаем таблицы `session` и `project` и группируем по `project_id`); проекты Pi обнаруживаются путём сканирования транскрипций JSONL для каждого сеанса в `~/.pi/agent/sessions//_.jsonl` (настраивается через `PI_SESSIONS_DIR`) и извлечения `cwd` из первой записи каждого сеанса; проекты Gemini CLI обнаруживаются путём сканирования `~/.gemini/tmp//chats/session--.jsonl` (настраивается через `GEMINI_SESSIONS_DIR`) и восстановления канонического cwd из соседнего текстового маркера `.project_root`. Проект, используемый несколькими CLI, отображается как одна строка со всеми соответствующими значками. Используйте раскрывающееся меню **CLI** над таблицей для фильтрации по определённому агенту CLI; URL сохраняет ваш выбор как `?cli=claude|codex|copilot|cursor|opencode|pi|gemini`. -Для каждого проекта отображаются: -- Имя проекта (производное от пути папки) -- Значок CLI — `Claude Code` (оранжевый), `OpenAI Codex` (фиолетовый), `GitHub Copilot` (синий), `Cursor Agent` (изумруд), `OpenCode` (янтарь), `Pi` (розовый) и/или `Gemini CLI` (небесный) -- Дата последней активности сессии +Каждый проект показывает: +- Имя проекта (производная от пути папки) +- Значок CLI — `Claude Code` (оранжевый), `OpenAI Codex` (фиолетовый), `GitHub Copilot` (синий), `Cursor Agent` (изумрудный), `OpenCode` (янтарный), `Pi` (розовый) и/или `Gemini CLI` (светло-голубой) +- Дата последней активности сеанса -Нажмите на проект, чтобы увидеть его сессии. +Нажмите на проект, чтобы посмотреть его сеансы. ### Sessions -Список всех сессий в проекте. Каждая сессия показывает: -- ID сессии -- Временные метки начала и окончания +Список всех сеансов в проекте. Каждый сеанс показывает: +- ID сеанса +- Временные метки начала и завершения - Количество вызовов инструментов -- Количество активности хуков (политик, которые были срабатываны) +- Количество активностей хука (срабатывания политик) -Используйте фильтр диапазона дат и поиск по ID сессии для сужения списка. Сессии разбиты на страницы. +Используйте фильтр диапазона дат и поиск по ID сеанса, чтобы сузить список. Сеансы отображаются постранично. -Нажмите на сессию, чтобы открыть просмотр сессии. +Нажмите на сеанс, чтобы открыть средство просмотра сеанса. ### Session viewer -Просмотр сессии отвечает на ключевой вопрос для автономных агентов: что сделал агент и оставался ли он на правильном пути? Значок CLI рядом с заголовком указывает, является ли сессия транскриптом Claude Code, OpenAI Codex, GitHub Copilot CLI, Cursor Agent, OpenCode, Pi или Gemini CLI. Он показывает временную шкалу всего, что произошло в сессии: +Средство просмотра сеанса отвечает на ключевой вопрос для автономных агентов: что делал агент и остался ли он на правильном пути? Значок CLI рядом с заголовком указывает, является ли сеанс транскрипцией Claude Code, OpenAI Codex, GitHub Copilot CLI, Cursor Agent, OpenCode, Pi или Gemini CLI. Он показывает временную шкалу всех событий в сеансе: -- **Messages** — текстовые ответы Claude и запросы пользователя -- **Tool calls** — каждый инструмент, вызванный Claude, с его входом и выходом -- **Policy activity** — для каждого вызова инструмента, какие политики были срабатываны и какое решение они вернули +- **Messages** — текстовые ответы Claude и подсказки пользователя +- **Tool calls** — каждый инструмент, который вызвал Claude, с его входными и выходными данными +- **Policy activity** — для каждого вызова инструмента, какие политики сработали и какое решение они вернули -Полоса статистики в верхней части показывает длительность сессии, общее количество вызовов инструментов и сводку решений хуков (количество allow / deny / instruct). +Панель статистики в верхней части показывает продолжительность сеанса, общее количество вызовов инструментов и сводку решений хука (количество allow / deny / instruct). -Нажмите кнопку **Download Logs** для экспорта сессии. Для сессий Claude Code, Codex, Copilot, Cursor, Pi и Gemini вы получаете исходный JSONL-транскрипт на диске с точностью до байта; для OpenCode (сессии которого находятся в SQLite, а не на диске) вы получаете JSON-документ, отражающий лежащие в основе таблицы `session` / `messages` / `parts`. +Нажмите кнопку **Download Logs**, чтобы экспортировать сеанс. Для сеансов Claude Code, Codex, Copilot, Cursor, Pi и Gemini вы получите исходную транскрипцию JSONL на диске побайтово; для OpenCode (чьи сеансы находятся в SQLite, а не на диске) вы получите JSON-документ, отражающий основные таблицы `session` / `messages` / `parts`. ### Audit -Отчёт, основанный на архетипе, о том, как ваш агент фактически вёл себя в прошлых сессиях. Запускает то же сканирование, что и CLI `failproofai audit`, но представляет его как постер на одном экране + четыре раздела ниже: +Персонифицированный отчёт о том, как ваш агент фактически себя вёл во всех прошлых сеансах. Запускает то же сканирование, что и CLI `failproofai audit`, но отображает его как одноэкранный общий постер + четыре раздела ниже линии сгиба: -1. **Poster** — заполняет первый видимый область. Самодостаточный регион для захвата PNG с логотипом failproof_ai + ярлык аудита · индекс архетипа (`№ NN из 08`) + дата аудита · числовая оценка (0–100) + таблетка процентиля (`топ 15%`) · имя архетипа (один из `the optimist`, `the cowboy`, `the explorer`, `the goldfish`, `the paranoid architect`, `the precision builder`, `the hammer`, `the ghost`) + полоса из 3 ключевых слов · строка редкости `// только N% агентов имеют такой архетип` · плитка сигилов 8×8 пикселей · нижний колонтитул `audit yours → failproof.ai`. Три кнопки поделиться расположены за пределами окна захвата: `post your archetype` (X intent), `share on linkedin`, `download poster`. Захват проходит через `html-to-image`, поэтому PNG соответствует на экране пиксель за пикселем (пунктирные границы, маска логотипа SVG, градиенты, метрики шрифтов — всё сохраняется). -2. **Strengths** — спокойный список ✓ поведений, которые ваш агент уже делает правильно, полученных из данных живого аудита (чистая скорость вызовов инструментов, средняя длина сессии, нулевые утечки учётных данных, нулевые шторм повторных попыток и т.д.). -3. **Quirks** — таблица того, что прошло, ранжированная по влиянию: `время · что прошло + политика, которая это бы перехватила · таблетка серьёзности · повторяемость` (новое / Nx эту неделю / постоянно). -4. **How to improve** — спокойный список строк, по одной на рекомендованную политику: имя политики белым, описание в одну строку, команда установки + кнопка копирования с правой стороны. Кнопка `[install all]` в заголовке раздела копирует объединённую команду `failproofai policy add a b c …` для каждой рекомендованной политики. -5. **Come back better** — две карточки рядом. Слева: установите напоминание (выбор темпа `3d` / `7d` / `14d` / `30d`; сохраняется через `/api/auth/reminder` после аутентификации). Справа: получите преимущества failproof — `invite a friend` открывает модальное окно, которое принимает список электронных адресов друзей, разделённых запятыми/пробелом/новой строкой (максимум 10 за раз), POSTs их на `/api/audit/invite`, которая перенаправляется на `POST /v0/invite` сервера api. API-сервер отправляет одно письмо на каждого получателя с адреса `invite@failproof.ai` с копией отправителя и `Reply-To` установленным, поэтому получатель видит, кто их пригласил, а отправитель получает копию в своём почтовом ящике. Анонимные пользователи маршрутизируются через `AuthDialog` сначала, поэтому электронная почта отправителя известна до отправки приглашений. Выполнение прав доступа / преимуществ — это следующий шаг. +1. **Poster** — заполняет первый видимый элемент. Самодостаточный регион захвата PNG с логотипом failproof_ai + метка аудита · индекс архетипа (`№ NN из 08`) + дата аудита · числовой балл (0–100) + таблетка рейтинга процентилей (`top 15%`) · название архетипа (один из `the optimist`, `the cowboy`, `the explorer`, `the goldfish`, `the paranoid architect`, `the precision builder`, `the hammer`, `the ghost`) + полоса из 3 ключевых слов · строка редкости `// только N% агентов имеют этот архетип` · плитка сигилы 8×8 пикселей · подвал `audit yours → failproof.ai`. Три кнопки общего доступа находятся сразу за границей поля захвата: `post your archetype` (интент X), `share on linkedin`, `download poster`. Захват выполняется через `html-to-image`, поэтому PNG совпадает с отображением на экране пиксель в пиксель (пунктирные границы, маска логотипа SVG, градиенты, метрики шрифтов — всё сохраняется). +2. **Strengths** — спокойный список ✓ поведений, которые ваш агент уже выполняет правильно, полученные из данных живого аудита (чистая скорость вызовов инструментов, без прямых толчков в main, нулевые утечки учётных данных, нулевые штормы повторных попыток) — каждая поверхность отображается только при наличии чистого записи политики во всё время окна аудита. +3. **Quirks** — таблица того, что проскользнуло, ранжированная по серьёзности: `when · что проскользнуло + политика, которая бы это поймала · таблетка серьёзности · seen`, где повторяемость читается `new` (один раз), `N× seen` (2–9 раз) или `recurring` (10+). +4. **How to improve** — спокойный список строк, по одной за каждую рекомендуемую политику: имя политики белым, однострочное описание, команда установки + кнопка копирования справа. Заголовок раздела звучит как `enable all N → projected · ` (балл, который вы получите со всеми применёнными исправлениями), а его кнопка `[install all]` копирует объединённую команду `failproofai policy add a b c …` для каждой рекомендуемой политики. +5. **Come back better** — две карточки рядом. Слева: установить напоминание (выбиратель кадма `3d` / `7d` / `14d` / `30d`; сохраняется через `/api/auth/reminder` после аутентификации). Справа: откройте льготы failproof — `invite a friend` открывает модальное окно, которое принимает список электронных адресов друзей, разделённых запятыми/пробелами/переводом строки (максимум 10 за отправку), отправляет их на `/api/audit/invite`, который перенаправляет на `POST /v0/invite` сервера API. API-сервер отправляет по одному письму для каждого получателя с адреса `invite@failproof.ai` с копией отправителю и установкой `Reply-To`, чтобы получатель видел, кто его пригласил, и отправитель получал копию в своем почтовом ящике. Анонимные пользователи перенаправляются через `AuthDialog` первыми, чтобы электронная почта отправителя была известна до отправки приглашений. Выполнение прав и привилегий — это последующее действие. -Управляется выполнением `failproofai audit` — см. [Audit CLI](/ru/cli/audit) для основного механизма сканирования, поддерживаемых флагов и инвариантов кэша для каждого транскрипта. Панель управления кэширует последний результат в `~/.failproofai/audit-dashboard.json` (режим `0600`, одноячеечный слот, новые запуски перезаписывают), поэтому повторные посещения мгновенны; **оба кэши (для каждого транскрипта и результата в целом) отклоняются при чтении, когда они старше 7 дней**, поэтому панель управления никогда не молчаливо не обслуживает неделю-старый результат — прошлый TTL `/audit` переходит в состояние пусто и предлагает свежий запуск. Щелчок `[ re-audit now ]` рядом с дном отчёта POST `/api/audit/run` с `noCache: true` — повторный аудит обходит кэш для каждого транскрипта и пересканирует каждый транскрипт с нуля, а не молчаливо возвращает кэшированный результат — и панель управления опрашивает `/api/audit/status` на 1Hz до завершения запуска; липкая розовая полоса прогресса прижимается к верхней части видимой области во время запуска с таймером истекшего времени, и свежий результат встаёт на месте при успехе (без полной перезагрузки страницы; неудачный повторный аудит оставляет предыдущий отчёт нетронутым). При отказе полоса становится красной с текстом на основе `RerunError.kind` (`timeout` / `network` / `post_failed`). Пустое состояние (без кэша или истёкшее) и состояние без сессий (кэш существует, но сканирование не нашло транскриптов) отображаются отдельно. +Управляется модулем выполнения `failproofai audit` — см. раздел [Audit CLI](/ru/cli/audit) для базовой системы сканирования, поддерживаемых флагов и инвариантов кэша для каждой транскрипции. Панель управления кэширует последний результат в `~/.failproofai/audit-dashboard.json` (режим `0600`, одиночный слот, новые запуски перезаписывают) так что повторные посещения мгновенны; **как кэш для каждой транскрипции, так и кэш полного результата отклоняются при чтении, когда им больше 7 дней**, поэтому панель управления никогда молча не доставляет результат неделей давности — после истечения TTL `/audit` переходит в пустое состояние и запрашивает свежий запуск. Нажатие `[ re-audit now ]` рядом с нижней частью отчёта отправляет `POST /api/audit/run` с `noCache: true` — повторный аудит обходит кэш для каждой транскрипции и пересканирует каждую транскрипцию с нуля вместо молчаливого возврата кэшированного результата — и панель управления опрашивает `/api/audit/status` с частотой 1 Гц до завершения запуска; во время запуска к верхней части окна приклеивается прилипчивая розовая полоса прогресса с прошедшим таймером, и свежий результат меняется местами на месте при успехе (без полной перезагрузки страницы; неудачный повторный аудит оставляет предыдущий отчёт неповреждённым). При ошибке полоса становится красной с текстом, зависящим от `RerunError.kind` (`timeout` / `network` / `post_failed`). Пустое состояние (нет кэша или истекло) и состояние нулевых сеансов (кэш существует, но сканирование не нашло транскрипции) отображаются отдельно. ### Policies -Страница с двумя вкладками для управления политиками и проверки активности. +Двухвкладочная страница для управления политиками и просмотра активности. - - - Выберите несколько агентов CLI, которых failproofai защищает из одной панели — Claude Code, OpenAI Codex, GitHub Copilot, Cursor Agent, OpenCode, Pi и Gemini CLI имеют каждый строку со статусом установки (`Active` / `Detected` / `Inactive`), пути параметров области пользователя и фирменным акцентом. Установите или снимите флажок для CLI, которые вы хотите, и нажмите `Apply changes`, чтобы установить/удалить разницу в один шаг. CLI, чьи бинарные файлы обнаружены в PATH, предварительно отмечены. - - Включайте или отключайте отдельные политики одним щелчком (записывает в `~/.failproofai/policies-config.json` — общий для каждого установленного CLI) - - Разверните политику для настройки её параметров (для политик, поддерживающих `policyParams`) + + - Множественный выбор того, какие агенты CLI защищает failproofai, в одной панели — Claude Code, OpenAI Codex, GitHub Copilot, Cursor Agent, OpenCode, Pi и Gemini CLI все имеют строку со статусом установки (`Active` / `Detected` / `Inactive`), пути параметров области пользователя и акцентом цвета бренда. Установите или снимите флажок с CLI, которые вы хотите, и нажмите `Apply changes`, чтобы установить/удалить разницу в один шаг. CLI, чьи двоичные файлы обнаружены в PATH, предварительно отмечены. + - Включайте или отключайте отдельные политики одним щелчком (записывает в `~/.failproofai/policies-config.json` — общей для всех установленных CLI) + - Разверните политику, чтобы настроить её параметры (для политик, поддерживающих `policyParams`) - Установите пользовательский путь файла политик - - - Полная разбитая на страницы история каждого события хука, которое было срабатываны во всех сессиях - - Фильтруйте по решению, типу события, CLI (Claude Code / OpenAI Codex / GitHub Copilot _(бета)_ / Cursor Agent _(бета)_ / OpenCode _(бета)_ / Pi _(бета)_ / Gemini CLI _(бета)_), имени политики или ID сессии - - Каждая строка показывает: временную метку, имя политики, решение, значок CLI (оранжевый = Claude Code, фиолетовый = OpenAI Codex, синий = GitHub Copilot, изумруд = Cursor Agent, янтарь = OpenCode, розовый = Pi, небесный = Gemini CLI), имя инструмента, ID сессии и причину для решений deny/instruct - - Щелкните ID сессии, чтобы открыть её транскрипт — просмотр автоматически определяет, какой CLI срабатывал хук (Claude `~/.claude/projects/…`, Codex `~/.codex/sessions/…`, Copilot CLI `~/.copilot/session-state//events.jsonl`, Cursor Agent `~/.cursor/agent-sessions//events.jsonl`, OpenCode `~/.local/share/opencode/opencode.db`, Pi `~/.pi/agent/sessions//.jsonl`, Gemini CLI `~/.gemini/tmp//chats/.jsonl`) и отображает соответствующий значок CLI в заголовке + + - Полная постраничная история каждого события хука, которое срабатывало во всех сеансах + - Фильтруйте по решению, типу события, CLI (Claude Code / OpenAI Codex / GitHub Copilot _(бета)_ / Cursor Agent _(бета)_ / OpenCode _(бета)_ / Pi _(бета)_ / Gemini CLI _(бета)_), имени политики или ID сеанса + - Каждая строка показывает: временную метку, имя политики, решение, значок CLI (оранжевый = Claude Code, фиолетовый = OpenAI Codex, синий = GitHub Copilot, изумрудный = Cursor Agent, янтарный = OpenCode, розовый = Pi, светло-голубой = Gemini CLI), имя инструмента, ID сеанса и причину решений deny/instruct + - Нажмите ID сеанса, чтобы открыть его транскрипцию — средство просмотра автоматически определяет, какой CLI срабатил хук (Claude `~/.claude/projects/…`, Codex `~/.codex/sessions/…`, Copilot CLI `~/.copilot/session-state//events.jsonl`, Cursor Agent `~/.cursor/agent-sessions//events.jsonl`, OpenCode `~/.local/share/opencode/opencode.db`, Pi `~/.pi/agent/sessions//.jsonl`, Gemini CLI `~/.gemini/tmp//chats/.jsonl`) и отображает соответствующий значок CLI в заголовке @@ -92,13 +93,13 @@ failproofai ## Auto-refresh -Панель управления имеет переключатель автообновления в верхней навигации. При включении текущая страница периодически обновляется для отображения новых сессий и активности политик по мере их появления. Необходимо для мониторинга долго работающих автономных сессий агентов. +Панель управления имеет переключатель автоматического обновления в верхней навигации. При включении текущая страница периодически обновляется, чтобы показать новые сеансы и активность политик по мере их появления. Необходимо для мониторинга долгоживущих сеансов автономных агентов. --- ## Отключение страниц -Если вам нужны только некоторые части панели управления, установите `FAILPROOFAI_DISABLE_PAGES` в разделённый запятыми список имён страниц: +Если вам нужны только некоторые части панели управления, установите `FAILPROOFAI_DISABLE_PAGES` в список имён страниц, разделённый запятыми: ```bash FAILPROOFAI_DISABLE_PAGES=policies failproofai @@ -108,9 +109,9 @@ FAILPROOFAI_DISABLE_PAGES=policies failproofai --- -## Настройка пути к проектам +## Настройка пути проектов -По умолчанию панель управления читает из стандартного каталога проектов Claude Code. Переопределите его для пользовательских настроек: +По умолчанию панель управления читает из стандартного каталога проектов Claude Code. Переопределите его для пользовательских конфигураций: ```bash CLAUDE_PROJECTS_PATH=/custom/path/to/projects failproofai @@ -118,21 +119,21 @@ CLAUDE_PROJECTS_PATH=/custom/path/to/projects failproofai --- -## Доступ с хоста без localhost +## Доступ с не-localhost хоста -При запуске панели управления в **режиме разработки** (`npm run dev`) и доступе к ней с имени хоста, отличного от `localhost` — например, пользовательского домена, удалённого IP или туннелированного URL — вы можете увидеть предупреждение следующего вида: +При запуске панели управления в **режиме разработки** (`npm run dev`) и её доступе с имени хоста, отличного от `localhost` — например, пользовательского домена, удалённого IP или туннелированного URL — вы можете увидеть предупреждение вроде: ```text ⚠ Blocked cross-origin request to Next.js dev resource /_next/webpack-hmr from "dashboard.example.com". ``` -Это Next.js, блокирующий кроссориджинальный доступ к его HMR (горячей перезагрузке модулей) веб-сокету, который является функцией только для разработки. Чтобы разрешить вашему хосту, используйте флаг `--allowed-origins`: +Это Next.js, блокирующий кросс-ориджинальный доступ к своему вебсокету HMR (горячей перезагрузки модулей), который является функцией только для разработки. Чтобы разрешить ваш хост, используйте флаг `--allowed-origins`: ```bash npm run dev -- --allowed-origins dashboard.example.com ``` -Для нескольких хостов или IP передайте разделённый запятыми список: +Для нескольких хостов или IP-адресов передайте список, разделённый запятыми: ```bash npm run dev -- --allowed-origins dashboard.example.com,192.168.1.5 @@ -145,5 +146,5 @@ FAILPROOFAI_ALLOWED_DEV_ORIGINS=dashboard.example.com npm run dev ``` -Это применяется только в режиме разработки. При запуске `failproofai` (режиме производства) нет HMR веб-сокета и нет проблемы с кроссориджинальными ресурсами разработки. +Это применяется только к режиму разработки. При запуске `failproofai` (режиме производства) нет вебсокета HMR и нет проблем с кросс-ориджинальными ресурсами разработки. \ No newline at end of file diff --git a/docs/tr/cli/audit.mdx b/docs/tr/cli/audit.mdx index cf756b753..4beb80478 100644 --- a/docs/tr/cli/audit.mdx +++ b/docs/tr/cli/audit.mdx @@ -1,57 +1,88 @@ --- -title: Geçmiş oturumları denetle (beta) -description: "Ajanın geçmiş dökümlerde ne sıklıkta boşa harcama veya riskli şeyler yaptığını say" +title: Geçmiş oturumları denetleme (beta) +description: "Aracının geçmiş transkriptlerde ne sıklıkta israf edici veya riskli şeyler yaptığını say" --- - **Beta özelliği.** Denetim erken geri bildirim toplarken beta olarak sunulmaktadır. - Dedektör kataloğu ve rapor formatı bir sonraki kararlı sürümden önce değişebilir. - Herhangi bir şey yanlış görünürse bir sorun açınız. + **Beta özelliği.** Denetim, erken geri bildirim toplarken beta olarak sunulmaktadır. + Dedektör kataloğu ve rapor biçimi sonraki kararlı sürümden önce değişebilir. + Herhangi bir sorun görürseniz lütfen bir sorun açın. -Denetim artık CLI alt komutu değil **/audit pano sayfası** olarak sunulmaktadır. Bunu pano gezinti çubuğundan açın (Policies ve Projects arasında) veya `failproofai` yerel olarak çalışırken doğrudan `http://localhost:8020/audit` adresini ziyaret edin. +Denetim, geçmiş agent-CLI transkriptlerinizi failproofai'nin politika motorundan geçirerek paylaşılabilir bir görsel rapor oluşturur — aracının arketipi, 0–100 puanı ve hangi politikaların tam olarak neyi yakalayacağını **`/audit` dashboard sayfasında** gösterir. -```bash -failproofai # panoyu aç, ardından "Audit"a tıkla +## Çalıştırın + +Üç yol — hepsi aynı `/audit` raporuna gider. + + + +```bash npx (kurulum yok) +npx -y failproofai audit +``` + +```bash failproofai audit +failproofai audit ``` -Pano, bu makinedeki geçmiş ajan CLI dökümleri tarar (Claude Code, Codex, Copilot, Cursor, OpenCode, Pi, Gemini) ve ajanın failproofai'nin durdurmak için inşa edildiği şeyleri ne sıklıkta yaptığını bildirir — ortam değişkeni kontrolleri, zorla itme işlemleri, gereksiz `cd ` önekleri, uyku-yoklama döngüleri, yeni düzenlenmiş dosyaları yeniden okuma ve daha fazlası. +```bash failproofai (dashboard) +failproofai +``` + + + + + + `npx -y failproofai audit` failproofai'yi getirir, taramayı çalıştırır ve önce hiçbir şey kurmanıza gerek kalmadan dashboard'u açar. + + + `failproofai audit` taramayı terminalinizde çalıştırır, ardından bittiğinde `localhost:8020/audit` adresini otomatik olarak açar. + + + `failproofai` çalıştırın ve navbar'da **Audit** düğmesine tıklayın (Policies ve Projects arasında), veya `/audit` adresini doğrudan açın. + + + + + Kullanımı görmek için `failproofai audit -h` (veya `--help`) komutunu çalıştırın. Denetim **tamamen çevrimdışı** çalışır — hesap veya ağ gerekmez — ve dashboard `Ctrl+C` ile durduruncaya kadar hizmet vermeye devam eder. + + +Dashboard, bu makinedeki geçmiş agent CLI transkriptlerini tarar (Claude Code, Codex, Copilot, Cursor, OpenCode, Pi, Gemini) ve aracının failproofai'nin durdurması için inşa edilen şeyleri ne sıklıkta yaptığını raporlar — ortam değişkeni kontrolleri, kuvvet itişleri, gereksiz `cd ` önekleri, sleep-polling döngüleri, yeni düzenlenen dosyaları yeniden okuma ve daha fazlası. -Her döküm için, her araç kullanımı olayı 39 yerleşik politika **ve** çalışma zamanı politikaları tarafından henüz kapsanmayan desenleri yakalayan 8 denetim-yalnızca dedektörden geçiyor. Sayılar, tüm oturumlar arasında politika / dedektör başına toplandı. +Her transkript için, her araç kullanım olayı 39 yerleşik politika **ve** zaman çalışma politikalarında henüz kapsanmayan desenleri yakalayan 8 salt denetim dedektöründen geçirilir. Sayımlar tüm oturumlar arasında politika / dedektör başına toplanır. ## Ne elde edersiniz -`/audit` sayfası altı bölümden oluşur: +`/audit` sayfası, tek ekranlı, paylaşılabilir bir **poster** ve ardından katlanmış dört bölümü içerir: -1. **Kimlik** — ajanınız, denetlenen her döküm arasındaki ağırlıklı sinyale göre 8 arketipin biri olarak sınıflandırılmıştır (`iyimser`, `kovboy`, `keşfetçi`, `balık`, `paranoid mimar`, `hassas yapıcı`, `çekiç`, `hayalet`). -2. **Güçlü Yönler** — taramadan türetilen gerçek sayılar (temiz çağrı %, "0 kimlik bilgisi sızıntısı" vb.) ilgili sanitizasyon politikaları gerçekten çalıştığında açılanır. -3. **Puan** — 0-100 aralığında S/A/B/C/D/F bandları ve önerilen her politika etkinleştirilirse öngörülen iyileştirme. -4. **Bulgular** — politika başına kartlar neler olduğunu, maliyeti, yakalanmış kanıtı ve canlı olarak yakalamış olacak yerleşik `failproofai policy add ` komutunu gösterir. -5. **Önerilen Politikalar** — tek atışlı `failproofai policies --install` komutuyla toplu kurulum listesi. -6. **Yeniden Denetleme Hatırlatması** — "daha iyi geri dön." api-server aracılığıyla 7 günlük bir e-posta hatırlatması ayarlayın (oturum açmayı gerektirir; bkz. [`failproofai auth`](/tr/cli/auth)). +1. **Poster** — aracının kimliği bir bakışta: **arketipi** (8'den biri — `iyimser`, `kovboy`, `kaşif`, `balık hafızası`, `paranoid mimar`, `hassas inşaatçı`, `çekiç`, `hayalet`), kişiliği anahtar kelimeler, bu arketipin ne kadar nadir olduğu ve bir kademe grubu (`S` ile `alt kademeye`) bir **0–100 puanı**. Paylaşım için tasarlanmış — X veya LinkedIn'e gönderin veya PNG olarak indirin. +2. **`// strengths`** — aracınızın zaten iyi yaptığı şeyler, taramadan gerçek numaralar olarak (örn. temiz araç çağrısı %, `0` ana dalına itme denemeleri), yalnızca ilgili politika temiz bir kayda sahipse gösterilir. +3. **`// quirks`** — sızan şeyler: failproofai'nin yakalayacağı davranışların sıralanmış tablosu — *son ne zaman* oldu, *ne sızdı* (ve bunu engellemiş olacak yerleşik), *ciddiyeti* ve ne sıklıkta *görüldüğü* (`yeni` / `tekrarlayan` / `N× görüldü`). +4. **`// nasıl geliştirilir** — önerilen düzeltme listesi: politika başına bir satır kopyala-yapıştır `failproofai policy add ` ile, artı **tümünü kur** düğmesi her öneriyi aynı anda etkinleştiriyor ve yaparsanız **öngörülen puanınızı** gösteriyor. +5. **`// daha iyi geri dön`** — alışkanlığı oluştur: bir denetim yenileme **hatırlatıcısı** (`3d` / `7d` / `14d` / `30d`) ayarla veya şimdi yeniden denetle, ve **bir arkadaşı davet et** kendi denetimini çalıştırmak için (failproof.ai'den gönderilir, Cc siz). Hatırlatıcılar ve davetler oturum açmayı gerektirir — bkz. [`failproofai auth`](/tr/cli/auth). -## Denetim-yalnızca dedektörler +## Salt denetim dedektörleri -Bunlar canlı olarak (henüz) uygulanmayan "aptalca davranış" desenlerini dedektör eder. Yalnızca denetim sırasında çalıştırılırlar ve canlı bir araç çağrısını hiçbir zaman engellememezler. +Bunlar gerçek zamanlı olarak (henüz) uygulanmayan "aptal davranış" desenleri algılar. Bunlar sadece denetim sırasında çalışır ve canlı bir araç çağrısını asla engelleme. -| Dedektör | Ne sayar | +| Dedektör | Neyi sayar | |---|---| -| `redundant-cd-cwd` | `cd && …` ile başlayan Bash komutları, hatta komutlar zaten `cwd` içinde çalışsa da. | -| `prefer-edit-over-read-cat` | Tek bir kaynak dosyada `cat`/`head`/`tail`/`less`/`more` — `Read` aracını kullanın. | -| `prefer-edit-over-sed-awk` | `sed -i` / `awk … > file` yerinde düzenlemeler — `Edit` aracını kullanın. | -| `prefer-write-over-heredoc` | Heredoc / çok satırlı `echo > file` dosya yazmaları — `Write` aracını kullanın. | -| `sleep-polling-loop` | Uzun `sleep N` (≥ 30s) veya `while …; sleep …; done` yoklama döngüleri. | -| `find-from-root` | `find /`, `find /home`, `find /usr` vb. — yerine `cwd` kapsamına alın. | -| `git-commit-no-verify` | `git commit … --no-verify` / `-n`, kancaları atlayan. | -| `reread-after-edit` | Aynı oturumda yeni `Edit`/`Write` yapılan bir dosyanın `Read` işlemi. | +| `redundant-cd-cwd` | `cd && …` ile başlayan Bash komutları komutlar zaten `cwd` içinde çalışmakta olsa bile. | +| `prefer-edit-over-read-cat` | Tek bir kaynak dosyasında `cat`/`head`/`tail`/`less`/`more` — Read aracını kullanın. | +| `prefer-edit-over-sed-awk` | `sed -i` / `awk … > dosya` yerinde düzenlemeler — Edit aracını kullanın. | +| `prefer-write-over-heredoc` | Heredoc / çok satırlı `echo > dosya` dosyaları yazma — Write aracını kullanın. | +| `sleep-polling-loop` | Uzun `sleep N` (≥ 30s) veya `while …; sleep …; done` polling döngüleri. | +| `find-from-root` | `find /`, `find /home`, `find /usr`, vb. — bunun yerine `cwd` kapsamını belirleyin. | +| `git-commit-no-verify` | `git commit … --no-verify` / `-n`, kancaları atlayarak. | +| `reread-after-edit` | Aynı oturumda yeni `Edit`/`Write` olan dosyanın `Read`'i. | ## Önbellekler -- **Döküm başına önbellek** `~/.failproofai/cache/audit/.json` adresinde `(mtime, size, engineVersion, detectorVersion)` ile anahtarlanmış — döküm veya politika/dedektör kodu değiştiğinde otomatik olarak geçersiz kılınır. Her giriş ayrıca **TTL metadata** olarak bir `cachedAt` zaman damgası depolar (önbellek anahtarının parçası değildir); **7 günden** eski girdiler okumada reddedilir, böylece uzun süreli sonuçlar gelişen dedektör niyetini aşmaz. -- **Tam sonuç önbelleği** `~/.failproofai/audit-dashboard.json` adresinde (mod 0600). Pano gezintisinde anında render edilmesini sağlar ve yeniden çalıştırmaya gerek kalmaz. Ayrıca **7 günlük TTL** geçildikten sonra okumada reddedilir — `/audit` daha sonra boş durumuna düşer ve yeni bir çalıştırma istemi verir. Rapor sayfasının alt kısmında `[ şimdi yeniden denetle ]` seçeneğine tıklayın — yeniden denetleme `noCache: true` gönderir, böylece döküm başına önbelleği atlar ve önbelleğe alınan sonuç yerine her dökümanı yeniden tarar; çalıştırma yapışkan bir üst şeride ilerlemeyi aktarır ve başarı sırasında sonucu yerinde değiştirir (sayfa yenileme yok; başarısız yeniden denetleme önceki raporu tutar). +- **Transkript başına önbellek** `~/.failproofai/cache/audit/.json` adresinde `(mtime, size, engineVersion, detectorVersion)` ile anahtarlanmış — transkript veya politika/dedektör kodu değiştiğinde otomatik olarak geçersiz kılınır. Her giriş ayrıca **TTL meta verileri** olarak bir `cachedAt` zaman damgası depolar (önbellek anahtarının parçası değil); **7 günden** daha eski girdiler okunurken reddedilir, böylece uzun ömürlü sonuçlar gelişen dedektör niyetinin ötesine geçmez. +- **Tüm sonuç önbelleği** `~/.failproofai/audit-dashboard.json` adresinde (mod 0600). Dashboard'un gezinme sırasında anında oluşturulmasını sağlar, yeniden çalıştırmaya gerek kalmaz. Ayrıca **7 günlük TTL** geçtikten sonra okunurken reddedilir — `/audit` daha sonra boş durumuna geri döner ve taze bir çalıştırmayı ister. Raporu öğelerinin yanında `[ şimdi yeniden denetle ]` düğmesine tıklayarak yenilemek için — yeniden denetim `noCache: true` gönderir, böylece transkript başına önbelleği atlar ve önbelleğe alınan sonucu dönüştürmek yerine her transkripti yeniden tarar; çalıştırma ilerlemek için yapışkan üst şerit aracılığıyla akıntı gösterir ve başarı sırasında sonucu yerinde değiştirir (sayfa yükleme yok; başarısız yeniden denetim önceki raporu tutar). ## Notlar -- **Mutasyon yok.** Denetim salt okunur modda çalıştırılır. `warn-repeated-tool-calls`, oturum başına yan araç aksi takdirde değiştirildiği için atlanır. -- **İş akışı politikaları atlandı.** `require-*-before-stop` politikaları yalnızca `Stop` olaylarında ve canlı git durumuna karşı `execSync` üzerinde çalışır — "2025'te ne olmuş olurdu" başarısız bir yorumlamaya sahip değildir, bu nedenle denetim sayılarında görünmez. -- **Özel politikalar atlandı.** Kullanıcı tarafından sağlanan özel kancalar çalıştırılmaz (özgün oturumdan bu yana değişmiş olabilirler). \ No newline at end of file +- **Mutation yok.** Denetim salt okunur modda oynatılır. `warn-repeated-tool-calls` atlanır, çünkü oturum başına yan arabası aksi takdirde değiştirilir. +- **İş akışı politikaları atlanmış.** `require-*-before-stop` politikaları sadece `Stop` olaylarında ve canlı git durumuna karşı `execSync` ateşlenir — "2025'te ne olurdu" gibi anlamlı bir yorumu yoktur, bu nedenle denetim sayımlarında görünmezler. +- **Özel politikalar atlanmış.** Kullanıcı tarafından sağlanan özel kancalar yeniden oynatılmaz (orijinal oturum bu yana değişmiş olabilirler). \ No newline at end of file diff --git a/docs/tr/dashboard.mdx b/docs/tr/dashboard.mdx index 1bc6c9722..b0ffe411b 100644 --- a/docs/tr/dashboard.mdx +++ b/docs/tr/dashboard.mdx @@ -1,10 +1,10 @@ --- title: Dashboard -description: "Agent oturumlarını izleyin, araç çağrılarını gözden geçirin ve politikaları yönetin" +description: "Ajan oturumlarını izleyin, araç çağrılarını gözden geçirin ve politikaları yönetin" icon: chart-line --- -failproofai dashboard, AI agent oturumlarınızı izlemek ve politikaları yönetmek için yerel bir web uygulamasıdır. Agenleriniz sizin yokken ne yaptığını görebilirsiniz. +failproofai dashboard, AI ajan oturumlarınızı izlemek ve politikaları yönetmek için tasarlanmış yerel bir web uygulamasıdır. Ajanlarınız yokken neler yaptığını öğrenin. --- @@ -16,7 +16,7 @@ failproofai `http://localhost:8020` adresinde açılır. -Dashboard doğrudan dosya sisteminden okur - Claude Code proje klasörleriniz ve failproofai config dosyalarınız. Hiçbir şey uzak bir servise yazılmaz. +Dashboard, dosya sisteminden doğrudan okuma yapıyor - Claude Code proje klasörleriniz ve failproofai yapılandırma dosyaları. Hiçbir veri uzak bir servise yazılmıyor. --- @@ -24,67 +24,67 @@ Dashboard doğrudan dosya sisteminden okur - Claude Code proje klasörleriniz ve ### Projeler -Makinenizde bulunan tüm Claude Code, OpenAI Codex, GitHub Copilot CLI _(beta)_, Cursor Agent _(beta)_, OpenCode _(beta)_, Pi _(beta)_ ve Gemini CLI _(beta)_ projelerini listeler. Claude projeleri `~/.claude/projects/` dizininden bulunur (veya `CLAUDE_PROJECTS_PATH` tarafından belirlenen yoldan); Codex projeleri `~/.codex/sessions///
/*.jsonl` altındaki tüm transkriptleri tarayarak ve her oturumun ilk kaydında kayıtlı `cwd` öğesine göre gruplandırılır; Copilot CLI projeleri `~/.copilot/session-state//workspace.yaml` dosyalarını tarayarak (`COPILOT_HOME` aracılığıyla yapılandırılabilir) ve `cwd` alanına göre gruplandırılır; Cursor Agent projeleri `~/.cursor/agent-sessions//` (`CURSOR_HOME` aracılığıyla yapılandırılabilir, `conversations/` ve `sessions/` geri dönüş olarak taranır) altında `meta.json` / `session.json` / `workspace.yaml` dosyalarındaki `cwd` skaleri aranarak bulunur; OpenCode projeleri `~/.local/share/opencode/opencode.db` adresindeki SQLite DB'yi `opencode db --format json` aracılığıyla sorgulayarak bulunur (biz `session` ve `project` tablolarını okuyoruz ve `project_id`'ye göre gruplandırıyoruz); Pi projeleri `~/.pi/agent/sessions//_.jsonl` (`PI_SESSIONS_DIR` aracılığıyla yapılandırılabilir) altında oturum başına JSONL transkriptlerini tarayarak ve her oturumun ilk kaydından `cwd`'yi çıkartarak bulunur; Gemini CLI projeleri `~/.gemini/tmp//chats/session--.jsonl` (`GEMINI_SESSIONS_DIR` aracılığıyla yapılandırılabilir) dosyalarını tarayarak ve yanındaki `.project_root` metin işaretçisinden kanonik cwd'yi kurtararak bulunur. Birden fazla CLI tarafından kullanılan bir proje, tüm eşleşen rozetlerle tek bir satır olarak görüntülenir. Tablonun üzerindeki **CLI** açılır menüsünü kullanarak belirli bir agent CLI'ye göre filtreleyebilirsiniz; URL seçiminizi `?cli=claude|codex|copilot|cursor|opencode|pi|gemini` olarak tutar. +Makinenizde bulunan tüm Claude Code, OpenAI Codex, GitHub Copilot CLI _(beta)_, Cursor Agent _(beta)_, OpenCode _(beta)_, Pi _(beta)_ ve Gemini CLI _(beta)_ projelerini listeler. Claude projeleri `~/.claude/projects/` adresinden (veya `CLAUDE_PROJECTS_PATH` tarafından belirtilen yoldan) keşfedilir; Codex projeleri `~/.codex/sessions///
/*.jsonl` altındaki her transkripton taranarak ve her oturumun ilk kaydında kaydedilen `cwd` ile gruplandırılarak keşfedilir; Copilot CLI projeleri her `~/.copilot/session-state//workspace.yaml` taranarak keşfedilir (`COPILOT_HOME` aracılığıyla yapılandırılabilir) ve `cwd` alanına göre gruplandırılır; Cursor Agent projeleri `~/.cursor/agent-sessions//` altındaki oturum başına metaveri taranarak keşfedilir (`CURSOR_HOME` aracılığıyla yapılandırılabilir, `conversations/` ve `sessions/` fallback olarak araştırılır) ve `meta.json` / `session.json` / `workspace.yaml` içindeki `cwd` skaları için; OpenCode projeleri `opencode db --format json` aracılığıyla `~/.local/share/opencode/opencode.db` adresindeki SQLite veritabanı sorgulanarak keşfedilir (`session` ve `project` tablolarını okuruz ve `project_id` ile gruplandırırız); Pi projeleri `~/.pi/agent/sessions//_.jsonl` altındaki oturum başına JSONL transkriptleri taranarak keşfedilir (`PI_SESSIONS_DIR` aracılığıyla yapılandırılabilir) ve her oturumun ilk kaydından `cwd` çekilir; Gemini CLI projeleri `~/.gemini/tmp//chats/session--.jsonl` taranarak keşfedilir (`GEMINI_SESSIONS_DIR` aracılığıyla yapılandırılabilir) ve komşu `.project_root` metin işaretçisinden kurallı cwd kurtarılır. Birden fazla CLI tarafından kullanılan bir proje, eşleşen tüm rozetlerle tek bir satır olarak görüntülenir. Belirli bir ajan CLI'ye göre filtrelemek için tablonun üzerindeki **CLI** açılır menüsünü kullanın; URL seçiminizi `?cli=claude|codex|copilot|cursor|opencode|pi|gemini` olarak saklar. Her proje şunları gösterir: -- Proje adı (klasör yolundan türetilir) -- Bir CLI rozeti — `Claude Code` (turuncu), `OpenAI Codex` (mor), `GitHub Copilot` (mavi), `Cursor Agent` (zümrüt), `OpenCode` (kehribar), `Pi` (pembe) ve/veya `Gemini CLI` (gökyüzü) -- En son oturum aktivitesinin tarihi +- Proje adı (klasör yolundan türetilmiş) +- CLI rozetleri — `Claude Code` (turuncu), `OpenAI Codex` (mor), `GitHub Copilot` (mavi), `Cursor Agent` (zümrüt), `OpenCode` (kehribar), `Pi` (pembe) ve/veya `Gemini CLI` (gökyüzü) +- En son oturum etkinliğinin tarihi -Oturumlarını görmek için bir projeye tıklayın. +Oturumlarını görmek için bir projeyi tıklayın. ### Oturumlar Bir proje içindeki tüm oturumları listeler. Her oturum şunları gösterir: -- Oturum ID'si +- Oturum kimliği - Başlangıç ve bitiş zaman damgaları -- Araç çağrısı sayısı -- Hook aktivite sayısı (ateşlenen politikalar) +- Araç çağrılarının sayısı +- Hook etkinlik sayısı (harekete geçen politikalar) -Listeyi daraltmak için tarih aralığı filtresini ve oturum ID aramasını kullanın. Oturumlar sayfalanır. +Listeyi daraltmak için tarih aralığı filtresini ve oturum kimliği aramasını kullanın. Oturumlar sayfalandırılmıştır. -Oturum görüntüleyicisini açmak için bir oturuma tıklayın. +Oturum görüntüleyicisini açmak için bir oturumu tıklayın. ### Oturum görüntüleyici -Oturum görüntüleyici, özerk agenler için temel soruyu yanıtlar: agent ne yaptı ve yolunda kaldı mı? Başlığın yanındaki bir CLI rozeti, oturumun Claude Code, OpenAI Codex, GitHub Copilot CLI, Cursor Agent, OpenCode, Pi veya Gemini CLI transkripti olup olmadığını gösterir. Oturumdaki her şeyin bir zaman çizelgesini gösterir: +Oturum görüntüleyici, özerk ajanlar için kilit soruyu yanıtlar: ajan ne yaptı ve doğru yolda kaldı mı? Başlık yanındaki CLI rozeti, oturumun Claude Code, OpenAI Codex, GitHub Copilot CLI, Cursor Agent, OpenCode, Pi veya Gemini CLI transkripi olup olmadığını gösterir. Oturumda meydana gelen her şeyin bir zaman çizelgesini gösterir: -- **Mesajlar** - Claude'un metin yanıtları ve kullanıcı istekleri -- **Araç çağrıları** - Claude'un çağırdığı her araç, girdisi ve çıktısıyla birlikte -- **Politika aktivitesi** - Her araç çağrısı için hangi politikaların ateşlendiği ve hangi kararı döndürdüğü +- **Mesajlar** - Claude'ın metin yanıtları ve kullanıcı istemleri +- **Araç çağrıları** - Claude'ın çağırdığı her araç, giriş ve çıkışı ile birlikte +- **Politika etkinliği** - Her araç çağrısı için hangi politikaların harekete geçtiği ve hangi kararı döndürdüğü -Üstteki istatistik çubuğu oturum süresini, toplam araç çağrı sayısını ve hook kararlarının bir özetini (allow / deny / instruct sayıları) gösterir. +Üstteki istatistik çubuğu, oturum süresi, toplam araç çağrıları ve kanca kararlarının bir özetini (izin ver / reddet / talimat say) gösterir. -Oturumu dışa aktarmak için **İndir Günlükleri** düğmesine tıklayın. Claude Code, Codex, Copilot, Cursor, Pi ve Gemini oturumları için, diskteki orijinal JSONL transkriptini byte-for-byte alırsınız; OpenCode oturumları (oturumları disk yerine SQLite'de yaşayan) için, temel `session` / `messages` / `parts` tablolarını yansıtan bir JSON belgesi alırsınız. +Oturumu dışa aktarmak için **İndirme Günlükleri** düğmesini tıklayın. Claude Code, Codex, Copilot, Cursor, Pi ve Gemini oturumları için orijinal disk üzerindeki JSONL transkripi byte-for-byte alırsınız; OpenCode (oturumları diskte değil SQLite'de yaşayan) için altta yatan `session` / `messages` / `parts` tablolarını yansıtan bir JSON belgesini alırsınız. ### Denetim -Agenlerinizin geçmiş oturumlar arasında gerçekten nasıl davrandığına dair bir kişilik odaklı rapor. `failproofai audit` CLI ile aynı taramayı çalıştırır ancak tek ekranlı paylaşılabilir bir poster + dört aşağı katlanmış bölüm olarak gösterir: +Ajan'ın geçmiş oturumlar boyunca gerçekten nasıl davrandığına dair kişilik taşıyan bir rapor. `failproofai audit` CLI ile aynı taramayı çalıştırır ancak bunu tek ekranlı paylaşılabilir bir poster + dört geri planda bölüm olarak gösterir: -1. **Poster** — ilk görünümü doldurur. failproof_ai sözcüğü işareti + denetim etiketi · arketipi indeksi (`№ NN of 08`) + denetim tarihi · sayısal skor (0–100) + yüzdelik sıra rozeti (`top 15%`) · arketipi adı (biri: `the optimist`, `the cowboy`, `the explorer`, `the goldfish`, `the paranoid architect`, `the precision builder`, `the hammer`, `the ghost`) + 3 anahtar kelime şeridi · `// only N% of agents are this archetype` nadirlik satırı · 8×8 piksel sigil döşemesi · `audit yours → failproof.ai` altbilgisi içeren kendi kendine yetebilir PNG yakalama bölgesi. Üç paylaş düğmesi yakalama kutusunun dışında yer alır: `post your archetype` (X niyeti), `share on linkedin`, `download poster`. Yakalama `html-to-image` aracılığıyla çalışır, bu nedenle PNG ekrandaki görünümle piksele piksele eşleşir (kesikli sınırlar, SVG logo maskesi, degradeler, yazı tipi metrikleri — tümü korunur). -2. **Güçlü Yönler** — sakin ✓ satır listesi, agenlerinizin zaten doğru yaptığı davranışlar, canlı denetim verilerinden türetilmiş (temiz araç çağrısı hızı, ortalama oturum uzunluğu, sıfır kimlik bilgisi sızıntısı, sıfır yeniden deneme fırtınası, vb.). -3. **Özellikler** — etki sırasına göre sıralanan ne kaydırıldığının tablosu: `time · what slipped + policy that would've caught it · severity pill · recurrence` (yeni / Nx this wk / tekrarlayan). -4. **Nasıl iyileştirilir** — sakin satır listesi, önerilen her politika için bir tane: politika adı beyazda, tek satırlık açıklama, sağ tarafta install komutu + kopyala düğmesi. Bölüm başlığında bir `[install all]` düğmesi, önerilen her politika için birleştirilmiş `failproofai policy add a b c …` komutunu kopyalar. -5. **Daha İyi Dönerek Gel** — yan yana iki kart. Sol: hatırlatıcı belirleyin (`3d` / `7d` / `14d` / `30d` kadans seçici; `/api/auth/reminder` aracılığıyla kimlik doğrulandıktan sonra kalıcı hale gelir). Sağ: failproof ayrıcalıklarının kilidini aç — `invite a friend` virgül/boşluk/yeni satır ayrılmış bir arkadaş e-postaları listesini alan bir modal açar (gönderim başına maksimum 10), bunları `/api/audit/invite` adresine POSTler, bu da api-sunucusunun `POST /v0/invite` adresine iletir. Api-sunucu, `invite@failproof.ai` adresinden her alıcıya bir e-posta gönderir, gönderici Cc'lenir ve `Reply-To` ayarlanır, böylece alıcı onları davet eden kişiyi görür ve gönderici gelen kutusunda bir kopya alır. Anonim kullanıcılar, davetlerin gönderilmesinden önce gönderenin e-postasının bilinmesi için ilk olarak `AuthDialog` aracılığıyla yönlendirilir. Yetkilendirme / ayrıcalık karşılanması bir takip işidir. +1. **Poster** — ilk görünüm alanını doldurur. failproof_ai sözcüğü işareti + denetim etiketi içeren kendi içinde PNG yakalama bölgesi · arketip dizini (`№ NN of 08`) + denetim tarihi · sayısal puan (0–100) + yüzdelik sıralama rozeti (`top 15%`) · arketip adı (`the optimist`, `the cowboy`, `the explorer`, `the goldfish`, `the paranoid architect`, `the precision builder`, `the hammer`, `the ghost` adlarından biri) + 3 anahtar kelime şeridi · `// only N% of agents are this archetype` nadir olma satırı · 8×8 piksel sigil döşeme · `audit yours → failproof.ai` altbilgisi. Yakalama kutusunun hemen dışında üç paylaşma düğmesi bulunur: `post your archetype` (X niyeti), `share on linkedin`, `download poster`. Yakalama `html-to-image` aracılığıyla çalışır, böylece PNG ekran üzerindeki render ile piksel-to-piksel eşleşir (kesikli kenarlıklar, SVG logo maskesi, degradeler, yazı tipi metrikleri — tümü korunur). +2. **Güçlü Yönler** — sakin ✓ satır listeleme, ajanınızın zaten doğru yaptığı davranışlar, canlı denetim verilerinden türetilmiş (temiz araç çağrı oranı, ana dalına doğrudan itme yok, sıfır kimlik bilgisi sızıntısı, sıfır yeniden deneme fırtınası) — her biri yalnızca ilgili politika denetim penceresinde temiz bir kayda sahip olduğunda sunulur. +3. **Tuhaflıklar** — sıkışıp kalıp tablosu, ciddiyete göre sıralandı: `when · what slipped + the policy that would've caught it · severity pill · seen`, yinelenme `new` (bir kez), `N× seen` (2–9 kez) veya `recurring` (10+) olarak okunur. +4. **Nasıl iyileştirilir** — sakin satır listeleme, önerilen her politika için bir tane: politika adı beyaz, tek satırda açıklama, sağ tarafında yükleme komutu + kopyala düğmesi. Bölüm başlığı `enable all N → projected · ` (her bir onarımın uygulanması ile ulaşacağınız puan) olarak okunur ve `[install all]` düğmesi her önerilen politika için birleştirilmiş `failproofai policy add a b c …` komutunu kopyalar. +5. **Daha iyi dön** — yan yana iki kart. Sol: hatırlatıcı ayarla (`3d` / `7d` / `14d` / `30d` kadans seçici; `/api/auth/reminder` aracılığıyla kimlik doğrulandıktan sonra devam eder). Sağ: failproof avantajlarının kilidini açın — `invite a friend` virgül/boşluk/yeni satır ile ayrılmış bir arkadaş e-posta listesini (gönderi başına maks. 10) alan ve `POST /v0/invite` adresine POSTlayan bir modal açar. API sunucusu `invite@failproof.ai` adresinden her alıcı için bir e-posta gönderir, gönderici Cc'ye alınır ve `Reply-To` ayarlanır, böylece alıcı onları kimin davet ettiğini ve gönderici gelen kutusunda bir kopya alır. Anonim kullanıcılar, davetler çıkmazdan önce gönderenin e-postası bilinecek şekilde `AuthDialog` aracılığıyla yönlendirilir. Yetkilendirme / avantajlar yerine getirilmesi sonraki adım. -`failproofai audit` çalışma zamanı tarafından yapılır — temel tarama motoru, desteklenen bayraklar ve transkript başına önbellek değişkenleri için [Audit CLI](/tr/cli/audit) adresini inceleyin. Dashboard en son sonucu `~/.failproofai/audit-dashboard.json` adresinde önbelleğe alır (mod `0600`, tek yuva, yeni çalıştırmalar üzerine yazar), bu nedenle yeniden ziyaretler anında gerçekleşir; **hem transkript başına hem de bütün sonuç önbellekleri, 7 günden eski olduğunda okunduğunda reddedilir**, bu nedenle dashboard hiçbir zaman sessizce bir hafta eski bir sonucu sunmaz — TTL geçtikten sonra `/audit` boş durumuna düşer ve taze bir çalıştırma istemini gösterir. Raporun altının yanında `[ re-audit now ]` öğesine tıklanması `/api/audit/run` adresine `noCache: true` ile POSTler — yeniden denetim, transkript başına önbelleği atlar ve sessizce önbelleğe alınmış sonucu döndürmek yerine her transkripti sıfırdan yeniden tarar — ve dashboard çalıştırma bitene kadar `/api/audit/status` adresini 1Hz'de yoklar; yapışkan pembe ilerleme şeridi çalıştırma sırasında görünümün tepesine yapışır ve geçen süreyi gösterir, taze sonuç başarılı olduğunda yerine geçer (tam sayfa yeniden yükleme yok; başarısız yeniden denetim önceki raporu değişmez bırakır). Başarısızlık durumunda şerit `RerunError.kind` (`timeout` / `network` / `post_failed`) kapalı kopyayla kırmızı döner. Boş durum (önbellek yok veya süresi dolmuş) ve sıfır oturum durumu (önbellek var ancak tarama transkript bulamadı) ayrı olarak gösterilir. +`failproofai audit` çalışma zamanı tarafından yönlendirilir — altta yatan tarama motoru, desteklenen bayraklar ve transkripsyon başına önbellek değişmezleri için [Denetim CLI](/tr/cli/audit) bölümüne bakın. Dashboard en son sonucu `~/.failproofai/audit-dashboard.json` adresinde önbelleğe alır (`0600` modu, tek yuva, yeni çalıştırmalar üzerine yazar), böylece yeniden ziyaretler anında gerçekleşir; **hem transkripsiyon başına hem de tüm sonuç önbellekleri okunduğunda 7 günden eski olunca reddedilir**, böylece dashboard asla sessizce bir hafta eski sonuç sunmaz — TTL'den sonra `/audit` boş durumuna girer ve taze çalıştırmayı ister. Raporun alt kısmında `[ re-audit now ]` seçeneğini tıklamak `/api/audit/run` adresine `noCache: true` ile POSTler — yeniden denetim transkripsyon başına önbelleği atlar ve sessizce önbelleğe alınan sonucu döndürmek yerine her transkripsyonu baştan yeniden tarar — ve dashboard `/api/audit/status` adresini 1Hz'de yoklar; çalıştırma sırasında görünüm alanının üstüne yapışan pembe bir ilerleme şeridi geçen zamanlayıcı ile sabitlenir ve yeni sonuç başarı üzerine yerinde değiştirilir (tam sayfa yeniden yükleme yok; başarısız yeniden denetim önceki raporu sintact bırakır). Başarısız olduğunda şerit `RerunError.kind` (`timeout` / `network` / `post_failed`) anahtarlanmış kopya ile kırmızıya döner. Boş durum (önbellek yok veya süresi dolmuş) ve sıfır oturum durumu (önbellek var ancak tarama transkripsyon bulamadı) ayrı ayrı sunulur. ### Politikalar -Politikaları yönetmek ve aktiviteyi gözden geçirmek için iki sekmeli sayfa. +Politikaları yönetmek ve etkinliği gözden geçirmek için iki sekmeli bir sayfa. - - failproofai'nin hangi agent CLI'lerden koruduğunu tek bir panelden çok seçili olarak seçin — Claude Code, OpenAI Codex, GitHub Copilot, Cursor Agent, OpenCode, Pi ve Gemini CLI'nin her birinin kurulum durumu satırı (`Active` / `Detected` / `Inactive`), kullanıcı kapsamı ayarları yolu ve marka renkli vurgu vardır. İstediğiniz CLI'leri işaretleyin veya işaretini kaldırın ve `Apply changes` öğesine tıklayarak farkı tek adımda yükleyin/kaldırın. PATH'de ikili dosyası bulunan CLI'ler önceden işaretlenmiş olur. - - Tek bir tıklamayla bireysel politikaları açıp kapatın (`~/.failproofai/policies-config.json` adresine yazılır — kurulu tüm CLI'ler arasında paylaşılır) - - Bir politikayı genişleterek parametrelerini yapılandırın (`policyParams` destekleyen politikalar için) - - Özel bir politika dosyası yolu ayarlayın + - Tek bir panelinden failproofai'nin hangi ajan CLI'lerini koruduğunu çoklu seçim yapın — Claude Code, OpenAI Codex, GitHub Copilot, Cursor Agent, OpenCode, Pi ve Gemini CLI'nin her birinin yükleme durumu (`Active` / `Detected` / `Inactive`) satırı, kullanıcı kapsamı ayarları yolu ve marka renginde vurgu vardır. İstediğiniz CLI'leri işaretleyin veya işareti kaldırın ve `Apply changes` düğmesini tıklayarak bir adımda farkı yükleyin/kaldırın. Dosya yolunda ikili tespit edilen CLI'ler önceden işaretlenmiştir. + - Bireysel politikaları tek tıkla açıp kapatın (`~/.failproofai/policies-config.json` adresine yazılır — yüklü her CLI'de paylaşılır) + - Politika parametrelerini yapılandırmak için bir politikayı genişletin (`policyParams` destekleyen politikalar için) + - Özel politikalar dosyası yolunu ayarlayın - - - Tüm oturumlar arasında ateşlenmiş tüm hook olaylarının tam sayfalanmış geçmişi - - Karar, etkinlik türü, CLI (Claude Code / OpenAI Codex / GitHub Copilot _(beta)_ / Cursor Agent _(beta)_ / OpenCode _(beta)_ / Pi _(beta)_ / Gemini CLI _(beta)_), politika adı veya oturum ID'sine göre filtreleyin - - Her satır şunları gösterir: zaman damgası, politika adı, karar, CLI rozeti (turuncu = Claude Code, mor = OpenAI Codex, mavi = GitHub Copilot, zümrüt = Cursor Agent, kehribar = OpenCode, pembe = Pi, gökyüzü = Gemini CLI), araç adı, oturum ID'si ve deny/instruct kararlarının nedeni - - Transkript açmak için bir oturum ID'sine tıklayın — görüntüleyici, hangi CLI'nin hook'u ateşlediğini otomatik olarak algılar (Claude `~/.claude/projects/…`, Codex `~/.codex/sessions/…`, Copilot CLI `~/.copilot/session-state//events.jsonl`, Cursor Agent `~/.cursor/agent-sessions//events.jsonl`, OpenCode `~/.local/share/opencode/opencode.db`, Pi `~/.pi/agent/sessions//.jsonl`, Gemini CLI `~/.gemini/tmp//chats/.jsonl`) ve başlıkta eşleşen CLI rozetini gösterir + + - Tüm oturumlar arasında harekete geçen her hook olayının tam sayfalandırılmış geçmişi + - Karar, olay türü, CLI (Claude Code / OpenAI Codex / GitHub Copilot _(beta)_ / Cursor Agent _(beta)_ / OpenCode _(beta)_ / Pi _(beta)_ / Gemini CLI _(beta)_), politika adı veya oturum kimliğine göre filtreleyin + - Her satır şunları gösterir: zaman damgası, politika adı, karar, CLI rozeti (turuncu = Claude Code, mor = OpenAI Codex, mavi = GitHub Copilot, zümrüt = Cursor Agent, kehribar = OpenCode, pembe = Pi, gökyüzü = Gemini CLI), araç adı, oturum kimliği ve reddet/talimat kararlarının nedeni + - Oturum kimliğini tıklatarak transkripsyonu açın — görüntüleyici hangi CLI'nin hook'u ateşlediğini otomatik olarak algılar (Claude `~/.claude/projects/…`, Codex `~/.codex/sessions/…`, Copilot CLI `~/.copilot/session-state//events.jsonl`, Cursor Agent `~/.cursor/agent-sessions//events.jsonl`, OpenCode `~/.local/share/opencode/opencode.db`, Pi `~/.pi/agent/sessions//.jsonl`, Gemini CLI `~/.gemini/tmp//chats/.jsonl`) ve başlık içinde eşleşen CLI rozetini gösterir @@ -92,13 +92,13 @@ Politikaları yönetmek ve aktiviteyi gözden geçirmek için iki sekmeli sayfa. ## Otomatik yenileme -Dashboard üst gezinmesinde bir otomatik yenileme açma/kapama düğmesi vardır. Etkinleştirildiğinde, geçerli sayfa, yeni oturumlar ve politika aktiviteleri göründükçe periyodik olarak yenilenir. Uzun süreli özerk agent oturumlarını izlemek için gereklidir. +Dashboard, üst gezintide otomatik yenileme tuşuna sahiptir. Etkinleştirildiğinde, geçerli sayfa, yeni oturumlar ve politika etkinlikleri göründükçe periyodik olarak yenilenir. Uzun süre çalışan özerk ajan oturumlarını izlemek için gereklidir. --- ## Sayfaları devre dışı bırakma -Dashboard'un yalnızca bazı bölümlerine ihtiyacınız varsa, `FAILPROOFAI_DISABLE_PAGES` öğesini virgülle ayrılmış sayfa adlarının listesine ayarlayın: +Dashboard'un yalnızca bazı bölümlerine ihtiyacınız varsa, `FAILPROOFAI_DISABLE_PAGES` öğesini virgülle ayrılmış sayfa adları listesine ayarlayın: ```bash FAILPROOFAI_DISABLE_PAGES=policies failproofai @@ -108,7 +108,7 @@ Geçerli değerler: `policies`, `projects`, `audit`. --- -## Proje yolunu yapılandırma +## Projeler yolunu yapılandırma Varsayılan olarak, dashboard standart Claude Code projeleri dizininden okur. Özel kurulumlar için bunu geçersiz kılın: @@ -118,21 +118,21 @@ CLAUDE_PROJECTS_PATH=/custom/path/to/projects failproofai --- -## Localhost olmayan bir konaktan erişme +## Yerel olmayan bir konaktan erişim -Dashboard'u **dev mode**'da (`npm run dev`) çalıştırırken ve `localhost` dışında bir ana bilgisayar adından erişirken — örneğin özel bir alan adı, uzak bir IP veya tünellenmiş bir URL — şöyle bir uyarı görebilirsiniz: +Dashboard'u **geliştirme modu** (`npm run dev`) içinde çalıştırırken ve `localhost` dışında bir ana bilgisayar adından erişirken — örneğin, özel bir etki alanı, uzak IP veya tünel URL — aşağıdaki gibi bir uyarı görebilirsiniz: ```text ⚠ Blocked cross-origin request to Next.js dev resource /_next/webpack-hmr from "dashboard.example.com". ``` -Bu Next.js'nin HMR (sıcak modül yeniden yükleme) websocket'ine erişimi sadece dev özelliği olan enine çıkış erişimini engellemesidir. Ana bilgisayarınıza izin vermek için `--allowed-origins` bayrağını kullanın: +Bu, Next.js'nin HMR (sıcak modül yeniden yükleme) websocket'ine yalnızca geliştirme için olan çapraz kaynaklı erişimi engelmesidir. Ana bilgisayarınıza izin vermek için `--allowed-origins` bayrağını kullanın: ```bash npm run dev -- --allowed-origins dashboard.example.com ``` -Birden fazla konak veya IP için virgülle ayrılmış bir liste geçirin: +Birden fazla ana bilgisayar veya IP için virgülle ayrılmış bir liste iletin: ```bash npm run dev -- --allowed-origins dashboard.example.com,192.168.1.5 @@ -145,5 +145,5 @@ FAILPROOFAI_ALLOWED_DEV_ORIGINS=dashboard.example.com npm run dev ``` -Bu sadece dev mode'da geçerlidir. `failproofai` (production mode) çalıştırırken HMR websocket'i yoktur ve enine çıkış dev kaynağı sorunu yoktur. +Bu yalnızca geliştirme modunda uygulanır. `failproofai` çalıştırıldığında (üretim modu), HMR websocket'i ve çapraz kaynaklı geliştirme kaynağı sorunu yoktur. \ No newline at end of file diff --git a/docs/vi/cli/audit.mdx b/docs/vi/cli/audit.mdx index 43f21eb9e..060e56088 100644 --- a/docs/vi/cli/audit.mdx +++ b/docs/vi/cli/audit.mdx @@ -1,57 +1,88 @@ --- -title: Kiểm toán các phiên làm việc trước đó (beta) -description: "Đếm tần suất agent thực hiện các hành động lãng phí hoặc rủi ro trên các bản ghi cũ" +title: Kiểm tra các phiên làm việc trước đó (beta) +description: "Đếm xem agent đã làm những việc lãng phí hoặc rủi ro bao nhiêu lần trong các bản ghi lịch sử trước đó" --- - **Tính năng beta.** Tính năng kiểm toán được phát hành dưới dạng beta trong khi chúng tôi thu thập phản hồi ban đầu. - Danh mục detector và định dạng báo cáo có thể thay đổi trước phiên bản ổn định tiếp theo. + **Tính năng beta.** Tính năng kiểm tra được phát hành dưới dạng beta trong khi chúng tôi thu thập phản hồi ban đầu. + Danh mục phát hiện và định dạng báo cáo có thể thay đổi trước bản phát hành ổn định tiếp theo. Vui lòng mở một issue nếu có gì không ổn. -Tính năng kiểm toán hiện được hiển thị dưới dạng **trang bảng điều khiển /audit**, không phải là một lệnh con CLI. Mở nó từ thanh điều hướng bảng điều khiển (giữa Policies và Projects), hoặc truy cập trực tiếp `http://localhost:8020/audit` khi chạy `failproofai` trên máy cục bộ. +Tính năng kiểm tra sẽ phát lại các bản ghi lịch sử agent-CLI trước đó của bạn thông qua engine chính sách của failproofai và tạo ra một báo cáo hình ảnh có thể chia sẻ trên **trang `/audit` của bảng điều khiển** — kiểu mẫu agent của bạn, điểm từ 0–100 và chính xác những chính sách nào sẽ bắt được cái gì. -```bash -failproofai # mở bảng điều khiển, sau đó nhấp vào "Audit" +## Chạy nó + +Ba cách để bắt đầu — tất cả đều dẫn tới cùng một báo cáo `/audit`. + + + +```bash npx (không cần cài đặt) +npx -y failproofai audit +``` + +```bash failproofai audit +failproofai audit ``` -Bảng điều khiển quét các bản ghi giao dịch agent CLI trước đó trên máy này (Claude Code, Codex, Copilot, Cursor, OpenCode, Pi, Gemini) và báo cáo tần suất agent thực hiện những điều mà failproofai được xây dựng để ngăn chặn — kiểm tra biến môi trường, force push, các tiền tố `cd ` dư thừa, sleep-polling loop, đọc lại tệp vừa được chỉnh sửa, và hơn thế nữa. +```bash failproofai (bảng điều khiển) +failproofai +``` + + + + + + `npx -y failproofai audit` tải failproofai, chạy quét, và mở bảng điều khiển cho bạn — không cần cài đặt gì trước. + + + `failproofai audit` chạy quét trong terminal của bạn, rồi tự động mở `localhost:8020/audit` khi hoàn thành. + + + Chạy `failproofai` và nhấp vào **Audit** trong thanh điều hướng (giữa Policies và Projects), hoặc mở `/audit` trực tiếp. + + + + + Chạy `failproofai audit -h` (hoặc `--help`) để xem cách sử dụng. Tính năng kiểm tra chạy **hoàn toàn ngoại tuyến** — không cần tài khoản hoặc mạng — và bảng điều khiển tiếp tục phục vụ cho đến khi bạn dừng nó bằng `Ctrl+C`. + + +Bảng điều khiển quét các bản ghi lịch sử agent CLI trước đó trên máy này (Claude Code, Codex, Copilot, Cursor, OpenCode, Pi, Gemini) và báo cáo xem agent đã làm những việc mà failproofai được xây dựng để dừng bao nhiêu lần — kiểm tra biến môi trường, force push, tiền tố `cd ` dư thừa, vòng lặp sleep-polling, đọc lại tệp vừa sửa, và nhiều hơn nữa. -Đối với mỗi bản ghi, mọi sự kiện tool-use được phát lại thông qua 39 chính sách builtin **và** thông qua 8 detector chỉ dành cho kiểm toán để bắt các mẫu chưa được bao gồm bởi các chính sách thời gian chạy. Các đếm được tổng hợp mỗi chính sách / detector trên tất cả các phiên. +Đối với mỗi bản ghi lịch sử, mọi sự kiện sử dụng công cụ được phát lại thông qua 39 chính sách tích hợp **và** 8 bộ phát hiện chỉ dùng để kiểm tra bắt các mẫu chưa được bao phủ bởi các chính sách thời gian chạy. Số lượng được tổng hợp cho mỗi chính sách / bộ phát hiện trên tất cả các phiên. -## Bạn nhận được gì +## Những gì bạn nhận được -Trang `/audit` bao gồm sáu phần: +Trang `/audit` là một **áp phích** trên toàn màn hình, có thể chia sẻ được, theo sau là bốn phần phía dưới: -1. **Identity** — agent của bạn được phân loại thành một trong 8 nguyên mẫu (`optimist`, `cowboy`, `explorer`, `goldfish`, `paranoid architect`, `precision builder`, `hammer`, `ghost`) dựa trên tín hiệu có trọng số trên mọi bản ghi được kiểm toán. -2. **Strengths** — các con số thực tế được lấy từ quét (clean-call %, "0 credential leaks", v.v.) được bảo vệ bởi các chính sách sanitize có liên quan thực sự kích hoạt. -3. **Score** — 0-100 với các dải S/A/B/C/D/F và khả năng cải thiện dự báo nếu mọi chính sách được đề xuất đều được bật. -4. **Findings** — các thẻ theo chính sách với những gì đã xảy ra, chi phí, bằng chứng được ghi lại, và `failproofai policy add ` chính xác để bật builtin thời gian chạy mà sẽ bắt được nó. -5. **Prescribed policies** — danh sách cài đặt được tổng hợp với lệnh `failproofai policies --install` một lần. -6. **Re-audit reminder** — "quay lại tốt hơn." Đặt nhắc nhở email 7 ngày qua api-server (yêu cầu đăng nhập; xem [`failproofai auth`](/vi/cli/auth)). +1. **Áp phích** — danh tính của agent của bạn một cách sơ lược: **kiểu mẫu** của nó (một trong 8 — `optimist`, `cowboy`, `explorer`, `goldfish`, `paranoid architect`, `precision builder`, `hammer`, `ghost`), các từ khóa tính cách, mức độ hiếm có của kiểu mẫu đó, và **điểm từ 0–100** với một dải cấp bậc (`S` xuống `bottom tier`). Được xây dựng để chia sẻ — đăng trên X hoặc LinkedIn, hoặc tải xuống dưới dạng PNG. +2. **`// strengths`** — những gì agent của bạn đã làm tốt, dưới dạng các số thực từ quét (ví dụ: clean-tool-call %, `0` push-to-main attempts), chỉ được hiển thị khi chính sách liên quan có một hồ sơ sạch sẽ. +3. **`// quirks`** — những gì lọt qua: một bảng xếp hạng các hành vi mà failproofai sẽ bắt được — *khi nào* nó lần cuối xảy ra, *cái gì lọt qua* (và chính sách tích hợp sẽ chặn nó), **mức độ nghiêm trọng** của nó, và nó được **nhìn thấy** bao nhiêu lần (`new` / `recurring` / `N× seen`). +4. **`// how to improve`** — danh sách sửa chữa được quy định: một hàng cho mỗi chính sách với `failproofai policy add ` sao chép dán, cộng với nút **install all** cho phép mọi khuyến nghị cùng một lúc và hiển thị **projected score** của bạn nếu bạn làm. +5. **`// come back better`** — xây dựng thói quen: đặt **reminder** tái kiểm tra qua email (`3d` / `7d` / `14d` / `30d`) hoặc tái kiểm tra ngay bây giờ, và **mời một bạn** chạy kiểm tra của riêng họ (gửi từ failproof.ai, Cc cho bạn). Reminders và invites yêu cầu đăng nhập — xem [`failproofai auth`](/vi/cli/auth). -## Detector chỉ dành cho kiểm toán +## Bộ phát hiện chỉ dùng để kiểm tra -Những detector này phát hiện các mẫu "hành động ngu ngốc" chưa được (hoặc chưa) thực thi trong thời gian thực. Chúng chỉ chạy trong quá trình kiểm toán và không bao giờ chặn một lệnh gọi công cụ trực tiếp. +Những bộ này phát hiện các mẫu hành vi "ngu ngốc" không (chưa) được thực thi thời gian thực. Chúng chạy chỉ trong quá trình kiểm tra và không bao giờ chặn một lệnh gọi công cụ trực tiếp. -| Detector | Những gì nó đếm | +| Bộ phát hiện | Những gì nó đếm | |---|---| -| `redundant-cd-cwd` | Lệnh Bash bắt đầu với `cd && …` mặc dù các lệnh đã chạy trong `cwd`. | +| `redundant-cd-cwd` | Các lệnh Bash bắt đầu bằng `cd && …` mặc dù các lệnh đã chạy trong `cwd`. | | `prefer-edit-over-read-cat` | `cat`/`head`/`tail`/`less`/`more` trên một tệp nguồn duy nhất — sử dụng công cụ `Read`. | -| `prefer-edit-over-sed-awk` | `sed -i` / `awk … > file` chỉnh sửa tại chỗ — sử dụng công cụ `Edit`. | -| `prefer-write-over-heredoc` | Heredoc / `echo > file` nhiều dòng ghi tệp — sử dụng công cụ `Write`. | -| `sleep-polling-loop` | `sleep N` dài (≥ 30s) hoặc `while …; sleep …; done` polling loop. | -| `find-from-root` | `find /`, `find /home`, `find /usr`, v.v. — phạm vi cho `cwd`. | -| `git-commit-no-verify` | `git commit … --no-verify` / `-n`, bỏ qua hook. | -| `reread-after-edit` | `Read` của một tệp vừa được `Edit`/`Write` trong cùng một phiên. | +| `prefer-edit-over-sed-awk` | `sed -i` / `awk … > file` các chỉnh sửa tại chỗ — sử dụng công cụ `Edit`. | +| `prefer-write-over-heredoc` | Heredoc / multi-line `echo > file` ghi tệp — sử dụng công cụ `Write`. | +| `sleep-polling-loop` | `sleep N` dài (≥ 30s) hoặc `while …; sleep …; done` vòng lặp polling. | +| `find-from-root` | `find /`, `find /home`, `find /usr`, vv — giới hạn trong `cwd`. | +| `git-commit-no-verify` | `git commit … --no-verify` / `-n`, bỏ qua hooks. | +| `reread-after-edit` | `Read` của tệp vừa được `Edit`/`Write` trong cùng một phiên. | -## Bộ nhớ cache +## Bộ nhớ đệm -- **Bộ nhớ cache mỗi bản ghi** tại `~/.failproofai/cache/audit/.json` được khóa bằng `(mtime, size, engineVersion, detectorVersion)` — tự động vô hiệu hóa khi bản ghi hoặc mã chính sách/detector thay đổi. Mỗi mục cũng lưu trữ một dấu thời gian `cachedAt` dưới dạng **siêu dữ liệu TTL** (không phải một phần của khóa bộ nhớ cache); các mục cũ hơn **7 ngày** bị từ chối khi đọc để kết quả dài hạn không vượt quá ý định detector phát triển. -- **Bộ nhớ cache kết quả toàn bộ** tại `~/.failproofai/audit-dashboard.json` (chế độ 0600). Cho phép bảng điều khiển hiển thị ngay lập tức khi điều hướng mà không cần chạy lại. Cũng bị từ chối khi đọc quá **7 ngày TTL** — `/audit` sau đó rơi vào trạng thái trống của nó và nhắc nhở chạy lại tươi. Nhấp vào `[ re-audit now ]` gần dưới cùng của báo cáo để làm mới — kiểm toán lại gửi `noCache: true`, vì vậy nó bỏ qua bộ nhớ cache mỗi bản ghi và quét lại mỗi bản ghi thay vì trả về kết quả được lưu trong bộ nhớ cache; lần chạy phát trực tuyến tiến độ qua một dải dính ở trên cùng và hoán đổi kết quả tại chỗ khi thành công (không tải lại trang; kiểm toán lại không thành công giữ báo cáo trước đó). +- **Bộ nhớ đệm mỗi bản ghi lịch sử** tại `~/.failproofai/cache/audit/.json` được khóa bằng `(mtime, size, engineVersion, detectorVersion)` — tự động vô hiệu hóa khi bản ghi lịch sử hoặc mã chính sách/phát hiện thay đổi. Mỗi mục cũng lưu trữ dấu thời gian `cachedAt` làm **siêu dữ liệu TTL** (không phải một phần của khóa bộ nhớ đệm); các mục cũ hơn **7 ngày** bị từ chối khi đọc để các kết quả dài hạn không vượt quá ý định phát hiện khác nhau. +- **Bộ nhớ đệm toàn bộ kết quả** tại `~/.failproofai/audit-dashboard.json` (chế độ 0600). Cho phép bảng điều khiển hiển thị ngay lập tức khi điều hướng mà không cần chạy lại. Cũng bị từ chối khi đọc quá **TTL 7 ngày** — `/audit` sau đó rơi vào trạng thái trống của nó và nhắc nhở chạy làm mới. Nhấp vào `[ re-audit now ]` gần dưới cùng của báo cáo để làm mới — re-audit gửi `noCache: true`, vì vậy nó bỏ qua bộ nhớ đệm mỗi bản ghi lịch sử và quét lại mọi bản ghi lịch sử thay vì trả lại kết quả được lưu trong bộ nhớ đệm; lần chạy phát trực tiếp tiến độ thông qua một dải dính ở đầu và hoán đổi kết quả tại chỗ khi thành công (không tải lại trang; một re-audit không thành công sẽ giữ lại báo cáo trước đó). ## Ghi chú -- **Không có đột biến.** Kiểm toán phát lại ở chế độ chỉ đọc. `warn-repeated-tool-calls` bị bỏ qua vì sidecar của nó mỗi phiên sẽ bị sửa đổi. -- **Các chính sách quy trình được bỏ qua.** `require-*-before-stop` chính sách chỉ kích hoạt trên các sự kiện `Stop` và `execSync` chống lại trạng thái git trực tiếp — chúng không có giải thích "điều gì sẽ xảy ra vào năm 2025" có ý nghĩa, vì vậy chúng không xuất hiện trong số lượng kiểm toán. -- **Các chính sách tùy chỉnh bị bỏ qua.** Các hook tùy chỉnh do người dùng cung cấp không được phát lại (chúng có thể đã thay đổi kể từ phiên gốc). \ No newline at end of file +- **Không có đột biến.** Tính năng kiểm tra phát lại ở chế độ chỉ đọc. `warn-repeated-tool-calls` bị bỏ qua vì sidecar mỗi phiên của nó sẽ bị sửa đổi. +- **Chính sách quy trình bị bỏ qua.** `require-*-before-stop` chính sách chỉ kích hoạt trên `Stop` sự kiện và `execSync` so với trạng thái git trực tiếp — chúng không có ý nghĩa "điều gì sẽ xảy ra vào năm 2025" giải thích, vì vậy chúng không xuất hiện trong số đếm kiểm tra. +- **Chính sách tùy chỉnh bị bỏ qua.** Các hook tùy chỉnh được cung cấp bởi người dùng không được phát lại (chúng có thể đã thay đổi kể từ phiên gốc). \ No newline at end of file diff --git a/docs/vi/dashboard.mdx b/docs/vi/dashboard.mdx index 528022720..f3c9f8135 100644 --- a/docs/vi/dashboard.mdx +++ b/docs/vi/dashboard.mdx @@ -1,14 +1,14 @@ --- title: Dashboard -description: "Giám sát các phiên làm việc của agent, xem xét các lệnh gọi công cụ và quản lý chính sách" +description: "Giám sát các phiên làm việc của agent, xem lại các lệnh gọi công cụ và quản lý chính sách" icon: chart-line --- -Dashboard failproofai là một ứng dụng web cục bộ dùng để giám sát các phiên làm việc của agent AI và quản lý chính sách. Xem những gì các agent của bạn đã làm khi bạn vắng mặt. +Bảng điều khiển failproofai là một ứng dụng web cục bộ để giám sát các phiên làm việc của agent AI và quản lý chính sách. Xem những gì các agent của bạn đã làm khi bạn vắng mặt. --- -## Khởi động dashboard +## Khởi động bảng điều khiển ```bash failproofai @@ -16,89 +16,89 @@ failproofai Mở tại `http://localhost:8020`. -Dashboard đọc trực tiếp từ hệ thống tệp - các thư mục dự án Claude Code của bạn và các tệp cấu hình failproofai. Không có dữ liệu nào được ghi vào một dịch vụ từ xa. +Bảng điều khiển đọc trực tiếp từ hệ thống tệp tin - các thư mục dự án Claude Code và các tệp cấu hình failproofai của bạn. Không có gì được ghi vào dịch vụ từ xa. --- ## Các trang -### Projects +### Dự án -Liệt kê tất cả các dự án Claude Code, OpenAI Codex, GitHub Copilot CLI _(beta)_, Cursor Agent _(beta)_, OpenCode _(beta)_, Pi _(beta)_ và Gemini CLI _(beta)_ được tìm thấy trên máy của bạn. Các dự án Claude được phát hiện từ `~/.claude/projects/` (hoặc đường dẫn được đặt bởi `CLAUDE_PROJECTS_PATH`); các dự án Codex được phát hiện bằng cách quét mỗi bản ghi lại dưới `~/.codex/sessions///
/*.jsonl` và nhóm theo `cwd` được ghi trong bản ghi đầu tiên của mỗi phiên; các dự án Copilot CLI được phát hiện bằng cách quét từng `~/.copilot/session-state//workspace.yaml` (có thể định cấu hình qua `COPILOT_HOME`) và nhóm theo trường `cwd` của nó; Các dự án Cursor Agent được phát hiện bằng cách quét siêu dữ liệu cho từng phiên dưới `~/.cursor/agent-sessions//` (có thể định cấu hình qua `CURSOR_HOME`, với `conversations/` và `sessions/` được kiểm tra để dự phòng) cho một vô hướng `cwd` trong `meta.json` / `session.json` / `workspace.yaml`; Các dự án OpenCode được phát hiện bằng cách truy vấn Cơ sở dữ liệu SQLite của nó tại `~/.local/share/opencode/opencode.db` qua `opencode db --format json` (chúng tôi đọc bảng `session` và `project` và nhóm theo `project_id`); Các dự án Pi được phát hiện bằng cách quét các bản ghi lại JSONL cho từng phiên dưới `~/.pi/agent/sessions//_.jsonl` (có thể định cấu hình qua `PI_SESSIONS_DIR`) và kéo `cwd` từ bản ghi đầu tiên của mỗi phiên; Các dự án Gemini CLI được phát hiện bằng cách quét `~/.gemini/tmp//chats/session--.jsonl` (có thể định cấu hình qua `GEMINI_SESSIONS_DIR`) và khôi phục cwd kỹ thuật từ trình đánh dấu văn bản sibling `.project_root`. Một dự án đã được sử dụng bởi nhiều CLI hiển thị dưới dạng một hàng duy nhất với tất cả các huy hiệu phù hợp. Sử dụng menu thả xuống **CLI** ở trên bảng để lọc theo một agent CLI cụ thể; URL lưu giữ lựa chọn của bạn dưới dạng `?cli=claude|codex|copilot|cursor|opencode|pi|gemini`. +Liệt kê tất cả các dự án Claude Code, OpenAI Codex, GitHub Copilot CLI _(beta)_, Cursor Agent _(beta)_, OpenCode _(beta)_, Pi _(beta)_ và Gemini CLI _(beta)_ được tìm thấy trên máy của bạn. Các dự án Claude được khám phá từ `~/.claude/projects/` (hoặc đường dẫn được đặt bởi `CLAUDE_PROJECTS_PATH`); các dự án Codex được khám phá bằng cách quét mọi bảng ghi chép dưới `~/.codex/sessions///
/*.jsonl` và nhóm theo `cwd` được ghi lại trong bản ghi đầu tiên của mỗi phiên; các dự án Copilot CLI được khám phá bằng cách quét từng `~/.copilot/session-state//workspace.yaml` (có thể cấu hình thông qua `COPILOT_HOME`) và nhóm theo trường `cwd` của nó; các dự án Cursor Agent được khám phá bằng cách quét siêu dữ liệu cho mỗi phiên dưới `~/.cursor/agent-sessions//` (có thể cấu hình thông qua `CURSOR_HOME`, với `conversations/` và `sessions/` được thăm dò như phương án dự phòng) để tìm giá trị `cwd` trong `meta.json` / `session.json` / `workspace.yaml`; các dự án OpenCode được khám phá bằng cách truy vấn Cơ sở dữ liệu SQLite của nó tại `~/.local/share/opencode/opencode.db` thông qua `opencode db --format json` (chúng tôi đọc các bảng `session` và `project` và nhóm theo `project_id`); các dự án Pi được khám phá bằng cách quét các bảng ghi chép JSONL cho mỗi phiên dưới `~/.pi/agent/sessions//_.jsonl` (có thể cấu hình thông qua `PI_SESSIONS_DIR`) và lấy `cwd` từ bản ghi đầu tiên của mỗi phiên; các dự án Gemini CLI được khám phá bằng cách quét `~/.gemini/tmp//chats/session--.jsonl` (có thể cấu hình thông qua `GEMINI_SESSIONS_DIR`) và khôi phục cwd chính thức từ dấu đánh dấu văn bản `.project_root` kế bên. Một dự án đã được sử dụng bởi nhiều CLI sẽ hiển thị dưới dạng một hàng có tất cả các huy hiệu phù hợp. Sử dụng menu thả xuống **CLI** phía trên bảng để lọc theo một agent CLI cụ thể; URL bảo tồn lựa chọn của bạn dưới dạng `?cli=claude|codex|copilot|cursor|opencode|pi|gemini`. Mỗi dự án hiển thị: -- Tên dự án (được suy ra từ đường dẫn thư mục) -- Huy hiệu CLI — `Claude Code` (cam), `OpenAI Codex` (tím), `GitHub Copilot` (xanh lam), `Cursor Agent` (xanh ngọc), `OpenCode` (hổ phách), `Pi` (hồng) và/hoặc `Gemini CLI` (trời) -- Ngày hoạt động phiên gần đây nhất +- Tên dự án (được lấy từ đường dẫn thư mục) +- Một huy hiệu CLI — `Claude Code` (cam), `OpenAI Codex` (tím), `GitHub Copilot` (xanh), `Cursor Agent` (ngọc bích), `OpenCode` (hổ phách), `Pi` (hồng) và/hoặc `Gemini CLI` (bầu trời) +- Ngày hoạt động phiên làm việc gần đây nhất -Nhấp vào một dự án để xem các phiên của nó. +Nhấp vào một dự án để xem các phiên làm việc của nó. -### Sessions +### Phiên làm việc -Liệt kê tất cả các phiên trong một dự án. Mỗi phiên hiển thị: -- ID phiên +Liệt kê tất cả các phiên làm việc trong một dự án. Mỗi phiên làm việc hiển thị: +- ID phiên làm việc - Dấu thời gian bắt đầu và kết thúc - Số lượng lệnh gọi công cụ -- Số hoạt động hook (chính sách đã kích hoạt) +- Số lượng hoạt động móc (chính sách được kích hoạt) -Sử dụng bộ lọc phạm vi ngày và tìm kiếm ID phiên để hạn chế danh sách. Các phiên được phân trang. +Sử dụng bộ lọc khoảng thời gian và tìm kiếm ID phiên làm việc để thu hẹp danh sách. Các phiên làm việc được chia trang. -Nhấp vào một phiên để mở trình xem phiên. +Nhấp vào một phiên làm việc để mở trình xem phiên làm việc. -### Session viewer +### Trình xem phiên làm việc -Trình xem phiên trả lời câu hỏi chính cho các agent tự động: agent đã làm gì và liệu nó có ở đúng hướng không? Huy hiệu CLI bên cạnh tiêu đề cho biết liệu phiên đó là bản ghi Claude Code, OpenAI Codex, GitHub Copilot CLI, Cursor Agent, OpenCode, Pi hay Gemini CLI. Nó hiển thị dòng thời gian của tất cả những gì xảy ra trong một phiên: +Trình xem phiên làm việc trả lời câu hỏi chính cho các agent tự trị: agent đã làm gì và liệu nó có ở đúng con đường không? Một huy hiệu CLI bên cạnh tiêu đề cho biết phiên làm việc có phải là Claude Code, OpenAI Codex, GitHub Copilot CLI, Cursor Agent, OpenCode, Pi hay Gemini CLI. Nó hiển thị một dòng thời gian của tất cả những gì đã xảy ra trong một phiên làm việc: -- **Messages** - Các phản hồi văn bản của Claude và các lời nhắc từ người dùng -- **Tool calls** - Mỗi công cụ mà Claude gọi, với đầu vào và đầu ra của nó -- **Policy activity** - Đối với mỗi lệnh gọi công cụ, các chính sách nào đã kích hoạt và quyết định nào mà chúng trả về +- **Tin nhắn** - Các phản hồi văn bản của Claude và các lời nhắc của người dùng +- **Lệnh gọi công cụ** - Mọi công cụ mà Claude gọi, với input và output của nó +- **Hoạt động chính sách** - Đối với mỗi lệnh gọi công cụ, những chính sách nào được kích hoạt và quyết định nào mà chúng trả về -Thanh thống kê ở trên cùng hiển thị thời lượng phiên, tổng số lệnh gọi công cụ và tóm tắt các quyết định hook (số lượng allow / deny / instruct). +Thanh thống kê ở trên cùng hiển thị thời lượng phiên làm việc, tổng số lệnh gọi công cụ và một tóm tắt các quyết định móc (số lượng cho phép / từ chối / hướng dẫn). -Nhấp vào nút **Download Logs** để xuất phiên. Đối với các phiên Claude Code, Codex, Copilot, Cursor, Pi và Gemini, bạn sẽ nhận được bản ghi JSONL trên đĩa nguyên bản; đối với OpenCode (phiên của nó nằm trong SQLite, không phải trên đĩa), bạn sẽ nhận được tài liệu JSON phản ánh các bảng `session` / `messages` / `parts` cơ bản. +Nhấp nút **Tải xuống Nhật ký** để xuất phiên làm việc. Đối với các phiên làm việc Claude Code, Codex, Copilot, Cursor, Pi và Gemini, bạn nhận được bảng ghi chép JSONL trên đĩa gốc byte-for-byte; đối với OpenCode (các phiên làm việc của nó nằm trong SQLite, không phải trên đĩa), bạn nhận được tài liệu JSON phản ánh các bảng `session` / `messages` / `parts` cơ bản. -### Audit +### Kiểm toán -Một báo cáo mang tính cách của cách agent của bạn thực sự hoạt động trên các phiên trước đó. Chạy cùng một quét như CLI `failproofai audit` nhưng hiển thị nó dưới dạng một áp phích có thể chia sẻ trên một màn hình + bốn phần dưới đường gấp: +Một báo cáo được điều khiển bởi tính cách về cách agent của bạn thực sự hoạt động trên các phiên làm việc trong quá khứ. Chạy lần quét giống như CLI `failproofai audit` nhưng hiển thị nó dưới dạng một trang duy nhất có thể chia sẻ + bốn phần ẩn bên dưới: -1. **Poster** — lấp đầy viewport đầu tiên. Khu vực chụp PNG độc lập với biểu tượng failproof_ai + nhãn audit · chỉ mục kiến trúc (`№ NN of 08`) + ngày audit · điểm số số (0–100) + xếp hạng phần trăm viên thuốc (`top 15%`) · tên kiến trúc (một trong `the optimist`, `the cowboy`, `the explorer`, `the goldfish`, `the paranoid architect`, `the precision builder`, `the hammer`, `the ghost`) + dải 3 từ khóa · `// only N% of agents are this archetype` dòng hiếm · viên gạch sigil 8×8 pixel · `audit yours → failproof.ai` chân trang. Ba nút chia sẻ nằm ngay ngoài hộp chụp: `post your archetype` (ý định X), `share on linkedin`, `download poster`. Chụp chạy qua `html-to-image` nên PNG khớp với kết xuất trên màn hình pixel-for-pixel (đường viền đứt nét, mặt nạ logo SVG, gradient, số liệu phông chữ — tất cả được bảo tồn). -2. **Strengths** — danh sách hàng yên tĩnh ✓ của những hành vi mà agent của bạn đã thực hiện đúng, được suy ra từ dữ liệu audit trực tiếp (tỷ lệ lệnh gọi công cụ sạch sẽ, độ dài phiên trung bình, không rò rỉ thông tin xác thực, không có bão thử lại, v.v.). -3. **Quirks** — bảng những gì bị sót, xếp hạng theo tác động: `time · what slipped + policy that would've caught it · severity pill · recurrence` (new / Nx this wk / recurring). -4. **How to improve** — danh sách hàng yên tĩnh, một cho mỗi chính sách được quy định: tên chính sách bằng màu trắng, mô tả một dòng, lệnh cài đặt + nút sao chép ở bên phải. Một nút `[install all]` ở tiêu đề phần sao chép lệnh `failproofai policy add a b c …` kết hợp cho mỗi chính sách được quy định. -5. **Come back better** — hai thẻ cạnh nhau. Trái: đặt nhắc nhở (`3d` / `7d` / `14d` / `30d` bộ chọn tần suất; tồn tại thông qua `/api/auth/reminder` sau khi được xác thực). Phải: mở khóa các quyền lợi failproof — `invite a friend` mở một modal nhận một danh sách các email bạn bè được phân tách bằng dấu phẩy/khoảng trắng/dòng mới (tối đa 10 mỗi lần gửi), POSTs chúng tới `/api/audit/invite`, chuyển tiếp tới `POST /v0/invite` của api-server. Api-server gửi một email cho mỗi người nhận từ `invite@failproof.ai` với người gửi Cc'd và `Reply-To` được đặt, vì vậy người nhận thấy ai đã mời họ và người gửi nhận được bản sao trong hộp thư đến của họ. Người dùng ẩn danh được định tuyến qua `AuthDialog` trước tiên để email của người gửi được biết trước khi lời mời được gửi. Thực hiện quyền lợi / quyền lợi là một công việc tiếp theo. +1. **Áp phích** — lấp đầy viewport đầu tiên. Vùng chụp PNG độc lập với logo failproof_ai + nhãn kiểm toán · chỉ số mẫu vốn (`№ NN of 08`) + ngày kiểm toán · điểm số số (0–100) + viên xếp hạng phần trăm (`top 15%`) · tên mẫu vốn (một trong `the optimist`, `the cowboy`, `the explorer`, `the goldfish`, `the paranoid architect`, `the precision builder`, `the hammer`, `the ghost`) + dải 3 từ khóa · dòng `// only N% of agents are this archetype` · ô sigil tile 8×8 pixel · `audit yours → failproof.ai` chân trang. Ba nút chia sẻ nằm ngoài hộp chụp: `post your archetype` (ý định X), `share on linkedin`, `download poster`. Chụp chạy qua `html-to-image` để PNG khớp với bản render trên màn hình từng pixel (viền nét đứt, mặt nạ logo SVG, gradients, số liệu phông chữ — tất cả được bảo tồn). +2. **Điểm mạnh** — danh sách hàng tĩnh ✓ của các hành vi mà agent của bạn đã làm đúng, được lấy từ dữ liệu kiểm toán trực tiếp (tỷ lệ lệnh gọi công cụ sạch sẽ, không có đẩy trực tiếp đến main, không rò rỉ thông tin xác thực, không có bão retry) — mỗi cái chỉ được hiển thị khi chính sách liên quan có hồ sơ sạch sẽ trên toàn bộ cửa sổ kiểm toán. +3. **Những tính kỳ lạ** — bảng những gì trượt qua, được xếp hạng theo mức độ nghiêm trọng: `when · what slipped + the policy that would've caught it · severity pill · seen`, trong đó lần xuất hiện đọc là `new` (một lần), `N× seen` (2–9 lần) hoặc `recurring` (10+). +4. **Cách cải thiện** — danh sách hàng tĩnh, một cho mỗi chính sách được quy định: tên chính sách bằng trắng, mô tả một dòng, lệnh cài đặt + nút sao chép ở bên phải. Tiêu đề phần đọc `enable all N → projected · ` (điểm bạn sẽ đạt được với mọi bản sửa lỗi được áp dụng) và nút `[install all]` của nó sao chép lệnh `failproofai policy add a b c …` kết hợp cho mọi chính sách được quy định. +5. **Quay lại tốt hơn** — hai thẻ cạnh nhau. Trái: đặt một lời nhắc nhở (`3d` / `7d` / `14d` / `30d` chọn nhịp độ; duy trì qua `/api/auth/reminder` sau khi xác thực). Phải: mở khóa các lợi ích failproof — `invite a friend` mở một modal chấp nhận danh sách email của bạn được phân tách bằng dấu phẩy/khoảng trắng/xuống dòng (tối đa 10 lần gửi), POSTS chúng đến `/api/audit/invite`, chuyển tiếp đến `/api/audit/invite` của máy chủ api `POST /v0/invite`. Máy chủ api gửi một email cho mỗi người nhận từ `invite@failproof.ai` với người gửi được Cc'd và `Reply-To` được đặt, vì vậy người nhận thấy ai đã mời họ và người gửi nhận được một bản sao trong hộp thư đến của họ. Người dùng ẩn danh được định tuyến qua `AuthDialog` đầu tiên để email của người gửi được biết trước khi lời mời được gửi đi. Thực hiện quyền lợi / perks là một công việc tiếp theo. -Được điều khiển bởi thời gian chạy `failproofai audit` — xem [Audit CLI](/vi/cli/audit) để biết công cụ quét cơ bản, các cờ được hỗ trợ và các bất biến bộ nhớ cache cho mỗi bản ghi. Dashboard lưu trữ kết quả mới nhất ở `~/.failproofai/audit-dashboard.json` (chế độ `0600`, khe duy nhất, các lần chạy mới ghi đè) để các lần truy cập lại diễn ra tức thì; **cả bộ nhớ cache cho mỗi bản ghi và bộ nhớ cache kết quả toàn bộ đều bị từ chối khi đọc sau khi chúng cũ hơn 7 ngày** nên dashboard không bao giờ yên lặng phục vụ một kết quả cách đây một tuần — quá TTL `/audit` đạt đến trạng thái trống rỗng của nó và nhắc nhở chạy lại. Nhấp vào `[ re-audit now ]` gần dưới cùng của báo cáo POSTs `/api/audit/run` với `noCache: true` — tái audit bỏ qua bộ nhớ cache cho mỗi bản ghi và quét lại mỗi bản ghi từ đầu thay vì yên lặng trả về kết quả được lưu trong bộ nhớ cache — và dashboard thăm dò `/api/audit/status` ở 1Hz cho đến khi chạy kết thúc; một dải tiến độ hồng dính ghim vào đầu viewport trong quá trình chạy với bộ đếm thời gian trôi qua, và kết quả mới nhất được hoán đổi tại chỗ khi thành công (không tải lại toàn bộ trang; tái audit không thành công để lại báo cáo trước đó nguyên vẹn). Khi thất bại, dải sẽ chuyển sang màu đỏ với bản sao được khóa từ `RerunError.kind` (`timeout` / `network` / `post_failed`). Trạng thái rỗng (không có bộ nhớ cache hoặc hết hạn) và trạng thái không có phiên (bộ nhớ cache tồn tại nhưng quét không tìm thấy bản ghi) được hiển thị riêng biệt. +Được thúc đẩy bởi thời gian chạy `failproofai audit` — xem [Audit CLI](/vi/cli/audit) để biết công cụ quét cơ bản, các cờ được hỗ trợ và các bất biến bộ đệm cho mỗi bảng ghi chép. Bảng điều khiển lưu vào bộ đệm kết quả mới nhất tại `~/.failproofai/audit-dashboard.json` (chế độ `0600`, slot đơn, các lần chạy mới sẽ ghi đè) để các lần revisit nhanh tức thì; **cả bộ đệm cho mỗi bảng ghi chép và bộ đệm kết quả toàn bộ đều bị từ chối khi đọc khi chúng cũ hơn 7 ngày** để bảng điều khiển không bao giờ im lặng phục vụ kết quả cũ một tuần — quá TTL `/audit` giảm xuống trạng thái trống của nó và nhắc chạy lại. Nhấp `[ re-audit now ]` gần dưới cùng của báo cáo POSTs `/api/audit/run` với `noCache: true` — re-audit bỏ qua bộ đệm cho mỗi bảng ghi chép và quét lại mọi bảng ghi chép từ đầu thay vì im lặng trả về kết quả được lưu vào bộ đệm — và bảng điều khiển thăm dò `/api/audit/status` ở tần số 1Hz cho đến khi lần chạy hoàn thành; một dải tiến trình hồng dính pins ở trên cùng của viewport trong quá trình chạy với bộ đếm thời gian trôi qua, và kết quả mới được hoán đổi vào vị trí khi thành công (không tải lại trang đầy đủ; một re-audit không thành công để lại báo cáo trước đó nguyên vẹn). Khi thất bại, dải chuyển sang đỏ với sao chép được khóa từ `RerunError.kind` (`timeout` / `network` / `post_failed`). Trạng thái trống (không có bộ đệm hoặc hết hạn) và trạng thái không có phiên (bộ đệm tồn tại nhưng lần quét không tìm thấy bảng ghi chép) được hiển thị riêng biệt. -### Policies +### Chính sách Một trang hai tab để quản lý chính sách và xem lại hoạt động. - - - Chọn nhiều CLI agent nào mà failproofai bảo vệ từ một bảng điều khiển duy nhất — Claude Code, OpenAI Codex, GitHub Copilot, Cursor Agent, OpenCode, Pi và Gemini CLI đều có một hàng với trạng thái cài đặt (`Active` / `Detected` / `Inactive`), đường dẫn cài đặt phạm vi người dùng và nhấn mạnh màu thương hiệu. Đánh dấu hoặc bỏ đánh dấu các CLI mà bạn muốn và nhấp vào `Apply changes` để cài đặt/gỡ cài đặt sự khác biệt trong một bước. Các CLI có tệp nhị phân được phát hiện trên PATH được đánh dấu trước. - - Bật hoặc tắt các chính sách riêng lẻ bằng một lần nhấp (ghi vào `~/.failproofai/policies-config.json` — chia sẻ trên mỗi CLI được cài đặt) - - Mở rộng một chính sách để định cấu hình các tham số của nó (đối với các chính sách hỗ trợ `policyParams`) - - Đặt một đường dẫn tệp chính sách tùy chỉnh + + - Chọn nhiều CLI agent mà failproofai bảo vệ từ một bảng duy nhất — Claude Code, OpenAI Codex, GitHub Copilot, Cursor Agent, OpenCode, Pi và Gemini CLI đều có một hàng với trạng thái cài đặt (`Active` / `Detected` / `Inactive`), đường dẫn cài đặt phạm vi người dùng và một điểm nhấn có thương hiệu. Kiểm tra hoặc bỏ kiểm tra các CLI bạn muốn và nhấp `Apply changes` để cài đặt/gỡ cài đặt chênh lệch trong một bước. Các CLI có tệp nhị phân được phát hiện trên PATH được kiểm tra trước. + - Bật hoặc tắt các chính sách riêng lẻ bằng một cú nhấp chuột (ghi vào `~/.failproofai/policies-config.json` — chia sẻ trên mọi CLI được cài đặt) + - Mở rộng một chính sách để cấu hình các tham số của nó (đối với các chính sách hỗ trợ `policyParams`) + - Đặt đường dẫn tệp chính sách tùy chỉnh - - - Lịch sử được phân trang đầy đủ của mỗi sự kiện hook đã kích hoạt trong tất cả các phiên - - Lọc theo quyết định, loại sự kiện, CLI (Claude Code / OpenAI Codex / GitHub Copilot _(beta)_ / Cursor Agent _(beta)_ / OpenCode _(beta)_ / Pi _(beta)_ / Gemini CLI _(beta)_), tên chính sách hoặc ID phiên - - Mỗi hàng hiển thị: dấu thời gian, tên chính sách, quyết định, huy hiệu CLI (cam = Claude Code, tím = OpenAI Codex, xanh lam = GitHub Copilot, xanh ngọc = Cursor Agent, hổ phách = OpenCode, hồng = Pi, trời = Gemini CLI), tên công cụ, ID phiên và lý do cho các quyết định deny/instruct - - Nhấp vào ID phiên để mở bản ghi của nó — trình xem tự động phát hiện CLI nào đã kích hoạt hook (Claude `~/.claude/projects/…`, Codex `~/.codex/sessions/…`, Copilot CLI `~/.copilot/session-state//events.jsonl`, Cursor Agent `~/.cursor/agent-sessions//events.jsonl`, OpenCode `~/.local/share/opencode/opencode.db`, Pi `~/.pi/agent/sessions//.jsonl`, Gemini CLI `~/.gemini/tmp//chats/.jsonl`) và hiển thị huy hiệu CLI phù hợp trong tiêu đề + + - Lịch sử được phân trang đầy đủ của mọi sự kiện móc đã được kích hoạt trên tất cả các phiên làm việc + - Lọc theo quyết định, loại sự kiện, CLI (Claude Code / OpenAI Codex / GitHub Copilot _(beta)_ / Cursor Agent _(beta)_ / OpenCode _(beta)_ / Pi _(beta)_ / Gemini CLI _(beta)_), tên chính sách hoặc ID phiên làm việc + - Mỗi hàng hiển thị: dấu thời gian, tên chính sách, quyết định, huy hiệu CLI (cam = Claude Code, tím = OpenAI Codex, xanh = GitHub Copilot, ngọc bích = Cursor Agent, hổ phách = OpenCode, hồng = Pi, bầu trời = Gemini CLI), tên công cụ, ID phiên làm việc và lý do cho các quyết định từ chối/hướng dẫn + - Nhấp vào ID phiên làm việc để mở bảng ghi chép của nó — trình xem tự động phát hiện CLI nào kích hoạt móc (Claude `~/.claude/projects/…`, Codex `~/.codex/sessions/…`, Copilot CLI `~/.copilot/session-state//events.jsonl`, Cursor Agent `~/.cursor/agent-sessions//events.jsonl`, OpenCode `~/.local/share/opencode/opencode.db`, Pi `~/.pi/agent/sessions//.jsonl`, Gemini CLI `~/.gemini/tmp//chats/.jsonl`) và hiển thị huy hiệu CLI phù hợp trong tiêu đề --- -## Auto-refresh +## Làm mới tự động -Dashboard có chuyển đổi tự động làm mới ở thanh điều hướng trên cùng. Khi bật, trang hiện tại sẽ làm mới định kỳ để hiển thị các phiên mới và hoạt động chính sách khi chúng xuất hiện. Cần thiết để giám sát các phiên agent tự động chạy lâu dài. +Bảng điều khiển có một bộ chuyển đổi làm mới tự động trong thanh điều hướng trên cùng. Khi được bật, trang hiện tại sẽ làm mới định kỳ để hiển thị các phiên làm việc và hoạt động chính sách mới khi chúng xuất hiện. Thiết yếu để giám sát các phiên làm việc agent tự trị chạy lâu dài. --- ## Vô hiệu hóa các trang -Nếu bạn chỉ cần một số phần của dashboard, hãy đặt `FAILPROOFAI_DISABLE_PAGES` thành danh sách tên trang được phân tách bằng dấu phẩy: +Nếu bạn chỉ cần một số phần của bảng điều khiển, hãy đặt `FAILPROOFAI_DISABLE_PAGES` thành danh sách tên trang được phân tách bằng dấu phẩy: ```bash FAILPROOFAI_DISABLE_PAGES=policies failproofai @@ -108,9 +108,9 @@ Các giá trị hợp lệ: `policies`, `projects`, `audit`. --- -## Định cấu hình đường dẫn dự án +## Cấu hình đường dẫn dự án -Theo mặc định, dashboard đọc từ thư mục dự án Claude Code tiêu chuẩn. Ghi đè nó cho các thiết lập tùy chỉnh: +Theo mặc định, bảng điều khiển đọc từ thư mục dự án Claude Code tiêu chuẩn. Ghi đè nó cho các thiết lập tùy chỉnh: ```bash CLAUDE_PROJECTS_PATH=/custom/path/to/projects failproofai @@ -118,21 +118,21 @@ CLAUDE_PROJECTS_PATH=/custom/path/to/projects failproofai --- -## Truy cập từ một máy chủ không phải localhost +## Truy cập từ máy chủ không phải localhost -Khi chạy dashboard ở **chế độ dev** (`npm run dev`) và truy cập nó từ tên máy chủ khác với `localhost` - ví dụ, một tên miền tùy chỉnh, một IP từ xa hoặc một URL được đưa qua tunnel - bạn có thể thấy một cảnh báo như: +Khi chạy bảng điều khiển ở **chế độ dev** (`npm run dev`) và truy cập nó từ tên máy chủ không phải `localhost` - chẳng hạn như tên miền tùy chỉnh, IP từ xa hoặc URL được đường hầm — bạn có thể thấy cảnh báo như: ```text ⚠ Blocked cross-origin request to Next.js dev resource /_next/webpack-hmr from "dashboard.example.com". ``` -Đây là Next.js chặn quyền truy cập ngorigin vào websocket HMR (hot module reload) của nó, đây là một tính năng chỉ dành cho dev. Để cho phép máy chủ của bạn, sử dụng cờ `--allowed-origins`: +Đây là Next.js chặn truy cập xuyên nguồn gốc đến websocket HMR (tải lại mô-đun nóng) của nó, đây là tính năng chỉ dev. Để cho phép máy chủ của bạn, hãy sử dụng cờ `--allowed-origins`: ```bash npm run dev -- --allowed-origins dashboard.example.com ``` -Đối với nhiều máy chủ hoặc IP, hãy truyền một danh sách được phân tách bằng dấu phẩy: +Đối với nhiều máy chủ hoặc IP, hãy chuyển danh sách được phân tách bằng dấu phẩy: ```bash npm run dev -- --allowed-origins dashboard.example.com,192.168.1.5 @@ -145,5 +145,5 @@ FAILPROOFAI_ALLOWED_DEV_ORIGINS=dashboard.example.com npm run dev ``` -Điều này chỉ áp dụng cho chế độ dev. Khi chạy `failproofai` (chế độ sản xuất), không có websocket HMR và không có vấn đề tài nguyên dev ngorigin. +Điều này chỉ áp dụng cho chế độ dev. Khi chạy `failproofai` (chế độ production), không có websocket HMR và không có vấn đề tài nguyên dev xuyên nguồn gốc. \ No newline at end of file diff --git a/docs/zh/cli/audit.mdx b/docs/zh/cli/audit.mdx index 25eac6aa8..9af541693 100644 --- a/docs/zh/cli/audit.mdx +++ b/docs/zh/cli/audit.mdx @@ -1,57 +1,88 @@ --- -title: 审计过去的会话(测试版) -description: "统计代理在过去的转录记录中执行浪费性或风险性操作的频率" +title: 审计历史会话(测试版) +description: "统计代理在历史记录中执行浪费性或高风险操作的频率" --- - **测试版功能。** 审计功能以测试版形式发布,我们正在收集早期反馈。 - 在下一个稳定版本发布之前,检测器目录和报告格式可能会发生变化。 - 如有任何问题,请提交 issue。 + **测试版功能。** 审计功能作为测试版发布,目的是收集早期反馈。 + 探测器目录和报告格式可能在下一个稳定版本发布前有所变化。 + 如发现任何异常,请提交 issue。 -审计功能现在以 **/audit 仪表盘页面**的形式呈现,而非 CLI 子命令。您可以通过仪表盘导航栏(位于 Policies 和 Projects 之间)访问,或在本地运行 `failproofai` 时直接访问 `http://localhost:8020/audit`。 +审计功能将过去的代理 CLI 记录重新通过 failproofai 的策略引擎进行回放,并在 **`/audit` 仪表板页面**上生成一份可共享的可视化报告——包括代理的原型分类、0 至 100 的评分,以及哪些策略能够捕获哪些问题的详细说明。 -```bash -failproofai # 打开仪表盘,然后点击"Audit" +## 运行方式 + +有三种入口——均指向同一份 `/audit` 报告。 + + + +```bash npx (no install) +npx -y failproofai audit +``` + +```bash failproofai audit +failproofai audit ``` -仪表盘会扫描本机上过去的代理 CLI 转录记录(Claude Code、Codex、Copilot、Cursor、OpenCode、Pi、Gemini),并报告代理执行了多少次 failproofai 旨在阻止的操作——包括环境变量检查、强制推送、冗余的 `cd ` 前缀、sleep 轮询循环、重复读取刚编辑的文件等。 +```bash failproofai (dashboard) +failproofai +``` + + + + + + `npx -y failproofai audit` 会自动获取 failproofai、执行扫描,并为你打开仪表板——无需提前安装任何内容。 + + + `failproofai audit` 在终端中执行扫描,完成后自动打开 `localhost:8020/audit`。 + + + 运行 `failproofai` 后点击导航栏中的 **Audit**(位于 Policies 和 Projects 之间),或直接访问 `/audit`。 + + + + + 运行 `failproofai audit -h`(或 `--help`)可查看用法说明。审计**完全离线**运行——无需账户或网络——仪表板会持续提供服务,直到你按下 `Ctrl+C` 停止。 + + +仪表板会扫描本机上过去的代理 CLI 记录(Claude Code、Codex、Copilot、Cursor、OpenCode、Pi、Gemini),并报告代理执行 failproofai 旨在阻止的操作的频率——包括环境变量检查、强制推送、冗余的 `cd ` 前缀、轮询睡眠循环、重复读取刚编辑过的文件等。 -对于每条转录记录,所有工具调用事件都会通过 39 个内置策略**以及** 8 个仅审计检测器进行回放,这些检测器可捕获运行时策略尚未覆盖的模式。计数按策略/检测器在所有会话中聚合。 +针对每条记录,所有工具使用事件都会通过 39 个内置策略以及 8 个仅用于审计的探测器进行重放,后者可捕获运行时策略尚未覆盖的模式。计数会按策略/探测器维度跨所有会话进行聚合。 -## 您将获得什么 +## 报告内容 -`/audit` 页面由六个部分组成: +`/audit` 页面是一个单屏可共享的**海报**,下方附有四个区块: -1. **Identity**——根据所有已审计转录记录中的加权信号,将您的代理归类为 8 种原型之一(`optimist`、`cowboy`、`explorer`、`goldfish`、`paranoid architect`、`precision builder`、`hammer`、`ghost`)。 -2. **Strengths**——从扫描中得出的真实数据(干净调用百分比、"0 次凭证泄露"等),以相关 sanitize 策略实际触发为前提。 -3. **Score**——0 到 100 分,分为 S/A/B/C/D/F 等级,以及启用所有推荐策略后的预计提升分数。 -4. **Findings**——每条策略的卡片,包含发生的情况、成本、捕获的证据,以及启用相应内置策略的精确命令 `failproofai policy add `。 -5. **Prescribed policies**——聚合安装列表,提供一键执行的 `failproofai policies --install` 命令。 -6. **Re-audit reminder**——"更好地回来。"通过 api-server 设置 7 天邮件提醒(需要登录;参见 [`failproofai auth`](/zh/cli/auth))。 +1. **海报** — 代理身份一览:其**原型**(共 8 种:`optimist`、`cowboy`、`explorer`、`goldfish`、`paranoid architect`、`precision builder`、`hammer`、`ghost`)、角色关键词、该原型的稀有程度,以及带有等级区间(`S` 至 `bottom tier`)的 **0–100 评分**。专为分享设计——可发布到 X 或 LinkedIn,或下载为 PNG。 +2. **`// strengths`** — 代理已做得很好的方面,以扫描得出的真实数据呈现(如 clean-tool-call 百分比、`0` 次推送主干尝试),仅在相关策略记录清白时显示。 +3. **`// quirks`** — 漏网之鱼:一份按优先级排序的行为表格,列出 failproofai 本可捕获的行为——*最后发生时间*、*漏过的内容*(以及应对的内置策略)、*严重程度*,以及出现频率(`new` / `recurring` / `N× seen`)。 +4. **`// how to improve`** — 建议修复清单:每条策略对应一行可直接复制粘贴的 `failproofai policy add ` 命令,另有一个**全部安装**按钮,可一次性启用所有建议,并显示执行后的**预计评分**。 +5. **`// come back better`** — 养成习惯:设置重新审计的邮件**提醒**(`3d` / `7d` / `14d` / `30d`)或立即重新审计,并**邀请朋友**进行他们自己的审计(由 failproof.ai 发送,抄送给你)。提醒和邀请功能需要登录——请参阅 [`failproofai auth`](/zh/cli/auth)。 -## 仅审计检测器 +## 仅用于审计的探测器 -这些检测器用于检测尚未在实时中执行的"低效行为"模式。它们仅在审计期间运行,永远不会阻止实时工具调用。 +这些探测器用于检测尚未(在运行时)强制执行的"低效行为"模式。它们仅在审计期间运行,不会阻止实时工具调用。 -| 检测器 | 计数内容 | +| 探测器 | 统计内容 | |---|---| | `redundant-cd-cwd` | 以 `cd && …` 开头的 Bash 命令,尽管命令已在 `cwd` 中运行。 | -| `prefer-edit-over-read-cat` | 对单个源文件执行 `cat`/`head`/`tail`/`less`/`more`——应使用 `Read` 工具。 | +| `prefer-edit-over-read-cat` | 对单个源文件使用 `cat`/`head`/`tail`/`less`/`more`——应使用 `Read` 工具。 | | `prefer-edit-over-sed-awk` | 使用 `sed -i` / `awk … > file` 进行原地编辑——应使用 `Edit` 工具。 | -| `prefer-write-over-heredoc` | 使用 Heredoc / 多行 `echo > file` 写入文件——应使用 `Write` 工具。 | +| `prefer-write-over-heredoc` | 使用 heredoc / 多行 `echo > file` 写入文件——应使用 `Write` 工具。 | | `sleep-polling-loop` | 长时间 `sleep N`(≥ 30 秒)或 `while …; sleep …; done` 轮询循环。 | -| `find-from-root` | `find /`、`find /home`、`find /usr` 等——应将范围限制在 `cwd` 内。 | -| `git-commit-no-verify` | `git commit … --no-verify` / `-n`,跳过钩子。 | -| `reread-after-edit` | 在同一会话中对刚刚执行过 `Edit`/`Write` 的文件执行 `Read`。 | +| `find-from-root` | `find /`、`find /home`、`find /usr` 等——应限定在 `cwd` 范围内。 | +| `git-commit-no-verify` | `git commit … --no-verify` / `-n`,跳过 hooks。 | +| `reread-after-edit` | 在同一会话中对刚刚 `Edit`/`Write` 过的文件执行 `Read`。 | -## 缓存 +## 缓存机制 -- **每条转录记录缓存**位于 `~/.failproofai/cache/audit/.json`,以 `(mtime, size, engineVersion, detectorVersion)` 为键——当转录记录或策略/检测器代码发生变化时自动失效。每个条目还存储一个 `cachedAt` 时间戳作为 **TTL 元数据**(不属于缓存键的一部分);读取时超过 **7 天**的条目将被拒绝,以防止长期存在的结果超出检测器意图的演变范围。 -- **整体结果缓存**位于 `~/.failproofai/audit-dashboard.json`(模式 0600)。使仪表盘在导航时能够立即渲染,无需重新运行。同样,读取时超过 **7 天 TTL** 的结果将被拒绝——此时 `/audit` 将回退到空状态并提示进行新的运行。点击报告底部附近的 `[ re-audit now ]` 进行刷新——重新审计会发送 `noCache: true`,因此它会绕过每条转录记录的缓存并重新扫描所有转录记录,而不是返回缓存结果;运行过程通过顶部固定条带流式传输进度,成功后原位替换结果(无需重新加载页面;重新审计失败时保留之前的报告)。 +- **按记录缓存**,路径为 `~/.failproofai/cache/audit/.json`,以 `(mtime, size, engineVersion, detectorVersion)` 为键——当记录或策略/探测器代码发生变化时自动失效。每条缓存项还存储 `cachedAt` 时间戳作为 **TTL 元数据**(不作为缓存键的一部分);超过 **7 天**的条目在读取时会被拒绝,避免长期缓存的结果与不断演进的探测器意图脱节。 +- **整体结果缓存**,路径为 `~/.failproofai/audit-dashboard.json`(权限 0600)。允许仪表板在导航时即时渲染,无需重新运行。同样在超过 **7 天 TTL** 后读取时被拒绝——`/audit` 随后会回退至空状态并提示重新运行。点击报告底部附近的 `[ re-audit now ]` 可刷新——重新审计会发送 `noCache: true`,从而绕过按记录缓存,重新扫描所有记录而非返回缓存结果;运行过程通过顶部固定条带流式显示进度,成功后原地替换结果(无需刷新页面;重新审计失败时保留上次报告)。 ## 注意事项 -- **无数据修改。** 审计以只读模式回放。`warn-repeated-tool-calls` 被跳过,否则其每个会话的附属文件将被修改。 -- **工作流策略跳过。** `require-*-before-stop` 策略仅在 `Stop` 事件时触发,并通过 `execSync` 检查实时 git 状态——它们对于"2025 年会发生什么"没有有意义的解释,因此不会出现在审计计数中。 -- **自定义策略跳过。** 用户提供的自定义钩子不会被回放(它们可能在原始会话之后已发生变化)。 \ No newline at end of file +- **不修改任何数据。** 审计以只读模式回放。`warn-repeated-tool-calls` 会被跳过,因为其按会话存储的附属文件否则会被修改。 +- **工作流策略被跳过。** `require-*-before-stop` 策略仅在 `Stop` 事件时触发,并通过 `execSync` 对实时 git 状态进行检查——它们对"2025 年的历史会话中会发生什么"没有实质性的解读意义,因此不会出现在审计计数中。 +- **自定义策略被跳过。** 用户提供的自定义 hooks 不会被重放(它们可能在原始会话之后已发生变化)。 \ No newline at end of file diff --git a/docs/zh/dashboard.mdx b/docs/zh/dashboard.mdx index 5077a5839..dc58ca9b5 100644 --- a/docs/zh/dashboard.mdx +++ b/docs/zh/dashboard.mdx @@ -1,14 +1,14 @@ --- -title: 控制台 -description: "监控智能体会话、审查工具调用并管理策略" +title: 仪表板 +description: "监控 Agent 会话、查看工具调用并管理策略" icon: chart-line --- -failproofai 控制台是一个本地 Web 应用程序,用于监控 AI 智能体会话和管理策略。查看智能体在您不在时所做的一切。 +failproofai 仪表板是一个用于监控 AI Agent 会话和管理策略的本地 Web 应用程序。查看 Agent 在你离开时做了什么。 --- -## 启动控制台 +## 启动仪表板 ```bash failproofai @@ -16,7 +16,7 @@ failproofai 在 `http://localhost:8020` 打开。 -控制台直接从文件系统读取数据——包括您的 Claude Code 项目文件夹和 failproofai 配置文件。不会向远程服务写入任何内容。 +仪表板直接从文件系统读取数据——包括你的 Claude Code 项目文件夹和 failproofai 配置文件。不会向任何远程服务写入数据。 --- @@ -24,18 +24,18 @@ failproofai ### 项目 -列出在您的机器上找到的所有 Claude Code、OpenAI Codex、GitHub Copilot CLI _(beta)_、Cursor Agent _(beta)_、OpenCode _(beta)_、Pi _(beta)_ 和 Gemini CLI _(beta)_ 项目。Claude 项目从 `~/.claude/projects/`(或由 `CLAUDE_PROJECTS_PATH` 设置的路径)中发现;Codex 项目通过扫描 `~/.codex/sessions///
/*.jsonl` 下的所有对话记录并按每个会话首条记录中的 `cwd` 分组来发现;Copilot CLI 项目通过扫描每个 `~/.copilot/session-state//workspace.yaml`(可通过 `COPILOT_HOME` 配置)并按其 `cwd` 字段分组来发现;Cursor Agent 项目通过扫描 `~/.cursor/agent-sessions//`(可通过 `CURSOR_HOME` 配置,并以 `conversations/` 和 `sessions/` 作为备选路径)下每个会话的元数据,从 `meta.json` / `session.json` / `workspace.yaml` 中读取 `cwd` 标量来发现;OpenCode 项目通过 `opencode db --format json` 查询位于 `~/.local/share/opencode/opencode.db` 的 SQLite 数据库(读取 `session` 和 `project` 表并按 `project_id` 分组)来发现;Pi 项目通过扫描 `~/.pi/agent/sessions//_.jsonl`(可通过 `PI_SESSIONS_DIR` 配置)下每个会话的 JSONL 对话记录并从每个会话的首条记录中提取 `cwd` 来发现;Gemini CLI 项目通过扫描 `~/.gemini/tmp//chats/session--.jsonl`(可通过 `GEMINI_SESSIONS_DIR` 配置)并从同级 `.project_root` 文本标记中还原规范 cwd 来发现。被多个 CLI 使用过的项目会以单行显示,并附带所有匹配的徽章。使用表格上方的 **CLI** 下拉菜单按特定智能体 CLI 筛选;URL 会将您的选择保留为 `?cli=claude|codex|copilot|cursor|opencode|pi|gemini`。 +列出在你机器上发现的所有 Claude Code、OpenAI Codex、GitHub Copilot CLI _(测试版)_、Cursor Agent _(测试版)_、OpenCode _(测试版)_、Pi _(测试版)_ 和 Gemini CLI _(测试版)_ 项目。Claude 项目从 `~/.claude/projects/`(或通过 `CLAUDE_PROJECTS_PATH` 设置的路径)中发现;Codex 项目通过扫描 `~/.codex/sessions///
/*.jsonl` 下的所有记录并按每个会话第一条记录中的 `cwd` 分组来发现;Copilot CLI 项目通过扫描 `~/.copilot/session-state//workspace.yaml`(可通过 `COPILOT_HOME` 配置)并按其 `cwd` 字段分组来发现;Cursor Agent 项目通过扫描 `~/.cursor/agent-sessions//`(可通过 `CURSOR_HOME` 配置,并以 `conversations/` 和 `sessions/` 作为备用路径)下的逐会话元数据,从 `meta.json` / `session.json` / `workspace.yaml` 中查找 `cwd` 标量来发现;OpenCode 项目通过 `opencode db --format json` 查询位于 `~/.local/share/opencode/opencode.db` 的 SQLite 数据库来发现(读取 `session` 和 `project` 表并按 `project_id` 分组);Pi 项目通过扫描 `~/.pi/agent/sessions//_.jsonl`(可通过 `PI_SESSIONS_DIR` 配置)下的逐会话 JSONL 记录,并从每个会话的第一条记录中提取 `cwd` 来发现;Gemini CLI 项目通过扫描 `~/.gemini/tmp//chats/session--.jsonl`(可通过 `GEMINI_SESSIONS_DIR` 配置),并从同级 `.project_root` 文本标记中恢复规范 cwd 来发现。被多个 CLI 使用的项目会渲染为单行并显示所有匹配的标记。使用表格上方的 **CLI** 下拉菜单按特定 Agent CLI 筛选;URL 会将你的选择保存为 `?cli=claude|codex|copilot|cursor|opencode|pi|gemini`。 每个项目显示: - 项目名称(从文件夹路径派生) -- CLI 徽章——`Claude Code`(橙色)、`OpenAI Codex`(紫色)、`GitHub Copilot`(蓝色)、`Cursor Agent`(翠绿色)、`OpenCode`(琥珀色)、`Pi`(粉色)和/或 `Gemini CLI`(天蓝色) -- 最近一次会话活动的日期 +- CLI 标记——`Claude Code`(橙色)、`OpenAI Codex`(紫色)、`GitHub Copilot`(蓝色)、`Cursor Agent`(翠绿色)、`OpenCode`(琥珀色)、`Pi`(粉色)和/或 `Gemini CLI`(天蓝色) +- 最近会话活动的日期 点击项目可查看其会话。 ### 会话 -列出项目中的所有会话。每个会话显示: +列出某个项目中的所有会话。每个会话显示: - 会话 ID - 开始和结束时间戳 - 工具调用次数 @@ -47,44 +47,44 @@ failproofai ### 会话查看器 -会话查看器回答了自主智能体最关键的问题:智能体做了什么,它是否保持正轨?标题旁边的 CLI 徽章指示该会话是 Claude Code、OpenAI Codex、GitHub Copilot CLI、Cursor Agent、OpenCode、Pi 还是 Gemini CLI 对话记录。它显示会话中发生的一切事件的时间线: +会话查看器回答了自主 Agent 的核心问题:Agent 做了什么,是否保持在正轨上?标题旁的 CLI 标记表明该会话是 Claude Code、OpenAI Codex、GitHub Copilot CLI、Cursor Agent、OpenCode、Pi 还是 Gemini CLI 的记录。它显示会话中发生的所有事情的时间线: - **消息** - Claude 的文本回复和用户提示 -- **工具调用** - Claude 调用的每个工具,包含其输入和输出 -- **策略活动** - 针对每次工具调用,哪些策略被触发以及返回了什么决定 +- **工具调用** - Claude 调用的每个工具,包括其输入和输出 +- **策略活动** - 针对每个工具调用,显示哪些策略触发了以及返回了什么决策 -顶部统计栏显示会话时长、工具调用总数以及 Hook 决定摘要(allow / deny / instruct 计数)。 +顶部的统计栏显示会话时长、工具调用总数以及 hook 决策摘要(allow / deny / instruct 计数)。 -点击**下载日志**按钮可导出会话。对于 Claude Code、Codex、Copilot、Cursor、Pi 和 Gemini 会话,您将获得磁盘上的原始 JSONL 对话记录(逐字节完整);对于 OpenCode(其会话存储在 SQLite 而非磁盘上),您将获得一个镜像底层 `session` / `messages` / `parts` 表的 JSON 文档。 +点击 **Download Logs** 按钮可导出会话。对于 Claude Code、Codex、Copilot、Cursor、Pi 和 Gemini 会话,你将获得磁盘上原始的 JSONL 记录(逐字节);对于 OpenCode(其会话存储在 SQLite 中而非磁盘文件),你将获得一个镜像底层 `session` / `messages` / `parts` 表的 JSON 文档。 ### 审计 -一份基于个性化分析的报告,呈现您的智能体在过去会话中的实际行为。运行与 `failproofai audit` CLI 相同的扫描,但将结果渲染为一张单屏可分享的海报,以及四个折叠区域: +一份对 Agent 在过去会话中实际行为的个性化报告。运行与 `failproofai audit` CLI 相同的扫描,但将其渲染为单屏可分享的海报,以及四个折叠以下的区块: -1. **海报** — 填满第一个视口。可独立导出为 PNG 的捕获区域,包含 failproof_ai 字标 + 审计标签 · 原型索引(`№ NN of 08`)+ 审计日期 · 数值评分(0–100)+ 百分位排名标签(`top 15%`)· 原型名称(`the optimist`、`the cowboy`、`the explorer`、`the goldfish`、`the paranoid architect`、`the precision builder`、`the hammer`、`the ghost` 之一)+ 3 关键词条 · `// only N% of agents are this archetype` 稀有度行 · 8×8 像素图章瓷砖 · `audit yours → failproof.ai` 页脚。捕获框外侧有三个分享按钮:`post your archetype`(X 分享)、`share on linkedin`、`download poster`。通过 `html-to-image` 生成 PNG,与屏幕渲染像素完全一致(虚线边框、SVG 徽标遮罩、渐变、字体度量——全部保留)。 -2. **优势** — 平静的 ✓ 行列表,列出您的智能体已经做得正确的行为,从实时审计数据派生(干净工具调用率、平均会话时长、零凭据泄露、零重试风暴等)。 -3. **问题** — 按影响排序列出遗漏内容的表格:`时间 · 遗漏内容 + 本可捕获该问题的策略 · 严重程度标签 · 复发情况`(新 / 本周 N 次 / 周期性)。 -4. **改进建议** — 平静的行列表,每条对应一个推荐策略:白色显示策略名称,单行描述,右侧是安装命令 + 复制按钮。区域标题处有一个 `[install all]` 按钮,可复制所有推荐策略的合并 `failproofai policy add a b c …` 命令。 -5. **更好地回归** — 两张并排卡片。左侧:设置提醒(`3d` / `7d` / `14d` / `30d` 周期选择器;通过 `/api/auth/reminder` 在认证后持久化)。右侧:解锁 failproof 特权——`invite a friend` 打开一个弹窗,接受逗号/空格/换行分隔的好友邮箱列表(每次发送最多 10 个),POST 至 `/api/audit/invite`,该接口转发到 api-server 的 `POST /v0/invite`。api-server 从 `invite@failproof.ai` 向每位收件人发送邮件,发件人抄送且 `Reply-To` 已设置,因此收件人能看到谁邀请了他们,发件人也会在收件箱收到一份副本。匿名用户会先通过 `AuthDialog` 流程,以便在发送邀请前获知发件人邮箱。权益/特权兑现为后续功能。 +1. **海报** — 填满第一个视口。自包含的 PNG 截图区域,包含 failproof_ai 品牌标识 + 审计标签 · 原型索引(`№ NN of 08`)+ 审计日期 · 数字评分(0–100)+ 百分位排名标记(`top 15%`)· 原型名称(`the optimist`、`the cowboy`、`the explorer`、`the goldfish`、`the paranoid architect`、`the precision builder`、`the hammer`、`the ghost` 之一)+ 3 关键词条 · `// only N% of agents are this archetype` 稀有度说明 · 8×8 像素印记图块 · `audit yours → failproof.ai` 页脚。截图框外有三个分享按钮:`post your archetype`(X 分享意图)、`share on linkedin`、`download poster`。截图通过 `html-to-image` 运行,PNG 与屏幕渲染像素级一致(虚线边框、SVG logo 遮罩、渐变、字体度量——全部保留)。 +2. **优势** — 平静的 ✓ 行列表,列出 Agent 已经做对的行为,从实时审计数据中派生(干净的工具调用率、无直接推送到主分支、零凭据泄露、零重试风暴)——每项仅在相关策略在审计窗口内记录干净时才会显示。 +3. **问题** — 列出遗漏内容的表格,按严重程度排序:`时间 · 遗漏内容 + 本应捕获它的策略 · 严重程度标记 · 出现次数`,其中复现次数显示为 `new`(一次)、`N× seen`(2–9 次)或 `recurring`(10 次以上)。 +4. **改进方法** — 平静的行列表,每条对应一个建议策略:白色策略名称、一行描述、右侧的安装命令 + 复制按钮。区块标题显示 `enable all N → projected · `(应用所有修复后的预期评分),`[install all]` 按钮可复制所有建议策略的组合 `failproofai policy add a b c …` 命令。 +5. **下次更好** — 两张并排卡片。左侧:设置提醒(`3d` / `7d` / `14d` / `30d` 周期选择器;通过 `/api/auth/reminder` 登录后持久化)。右侧:解锁 failproof 福利——`invite a friend` 打开一个弹窗,接受逗号/空格/换行分隔的好友邮件列表(每次最多发送 10 个),POST 到 `/api/audit/invite`,后者转发到 api-server 的 `POST /v0/invite`。api-server 从 `invite@failproof.ai` 向每位收件人发送一封邮件,发件人抄送并设置 `Reply-To`,这样收件人可以看到是谁邀请了他们,发件人也会在收件箱中收到副本。匿名用户会先通过 `AuthDialog` 验证,以便在发送邀请前获取发件人邮箱。权益/福利兑现将在后续跟进。 -由 `failproofai audit` 运行时驱动——扫描引擎、支持的标志和每个对话记录的缓存不变量,请参阅 [Audit CLI](/zh/cli/audit)。控制台将最新结果缓存在 `~/.failproofai/audit-dashboard.json`(模式 `0600`,单槽,新运行覆盖旧缓存),以便再次访问时即时加载;**无论是每个对话记录的缓存还是整体结果缓存,一旦超过 7 天就会在读取时被拒绝**,因此控制台永远不会静默返回一周前的旧结果——超过 TTL 后,`/audit` 会回退到空状态并提示重新运行。点击报告底部附近的 `[ re-audit now ]` 会向 `/api/audit/run` POST 请求(带 `noCache: true`)——重新审计会绕过每个对话记录的缓存,从头重新扫描所有对话记录,而不是静默返回缓存结果——控制台以 1Hz 轮询 `/api/audit/status` 直到运行完成;运行期间,一个粘性粉色进度条固定在视口顶部,并显示计时器,成功后新结果原地替换(无需整页刷新;重新审计失败时保留原有报告)。失败时进度条变红,并根据 `RerunError.kind`(`timeout` / `network` / `post_failed`)显示对应提示文案。空状态(无缓存或已过期)和零会话状态(缓存存在但扫描未发现任何对话记录)会分别呈现。 +由 `failproofai audit` 运行时驱动——关于底层扫描引擎、支持的标志和每条记录的缓存不变性,请参阅 [Audit CLI](/zh/cli/audit)。仪表板将最新结果缓存在 `~/.failproofai/audit-dashboard.json`(模式 `0600`,单槽位,新运行覆盖),因此重新访问是即时的;**每条记录和完整结果的缓存在读取时一旦超过 7 天即被拒绝**,这样仪表板就不会静默返回一周前的结果——超过 TTL 后,`/audit` 会回退到空状态并提示重新运行。点击报告底部附近的 `[ re-audit now ]` 会向 `/api/audit/run` POST `noCache: true`——重新审计会绕过每条记录的缓存并从头重新扫描每条记录,而不是静默返回缓存结果——仪表板以 1Hz 轮询 `/api/audit/status` 直到运行完成;运行期间顶部会显示一个带有计时器的固定粉色进度条,成功后新结果会原地替换(无需全页刷新;重新审计失败时会保留之前的报告)。失败时进度条变红,并根据 `RerunError.kind`(`timeout` / `network` / `post_failed`)显示相应提示。空状态(无缓存或已过期)和零会话状态(缓存存在但扫描未找到记录)会分别显示。 ### 策略 -一个包含两个选项卡的页面,用于管理策略和审查活动。 +一个包含两个标签页的页面,用于管理策略和查看活动。 - - - 在单个面板中多选 failproofai 要保护的智能体 CLI——Claude Code、OpenAI Codex、GitHub Copilot、Cursor Agent、OpenCode、Pi 和 Gemini CLI 各有一行,显示安装状态(`Active` / `Detected` / `Inactive`)、用户范围的设置路径和品牌配色强调色。勾选或取消勾选所需的 CLI,然后点击 `Apply changes`,一步完成安装/卸载差异更新。已在 PATH 中检测到二进制文件的 CLI 会预先勾选。 - - 单击即可启用或禁用单个策略(写入 `~/.failproofai/policies-config.json`——在所有已安装的 CLI 之间共享) + + - 从单个面板多选 failproofai 保护哪些 Agent CLI——Claude Code、OpenAI Codex、GitHub Copilot、Cursor Agent、OpenCode、Pi 和 Gemini CLI 均有一行显示安装状态(`Active` / `Detected` / `Inactive`)、用户范围的设置路径和品牌色调。勾选或取消勾选所需的 CLI,然后点击 `Apply changes` 一步完成安装/卸载差异。PATH 上检测到二进制文件的 CLI 会被预先勾选。 + - 单击即可开启或关闭单个策略(写入 `~/.failproofai/policies-config.json`——所有已安装 CLI 共享) - 展开策略以配置其参数(适用于支持 `policyParams` 的策略) - 设置自定义策略文件路径 - - - 跨所有会话触发的每个 Hook 事件的完整分页历史记录 - - 按决定、事件类型、CLI(Claude Code / OpenAI Codex / GitHub Copilot _(beta)_ / Cursor Agent _(beta)_ / OpenCode _(beta)_ / Pi _(beta)_ / Gemini CLI _(beta)_)、策略名称或会话 ID 筛选 - - 每行显示:时间戳、策略名称、决定、CLI 徽章(橙色 = Claude Code,紫色 = OpenAI Codex,蓝色 = GitHub Copilot,翠绿色 = Cursor Agent,琥珀色 = OpenCode,粉色 = Pi,天蓝色 = Gemini CLI)、工具名称、会话 ID,以及 deny/instruct 决定的原因 - - 点击会话 ID 可打开其对话记录——查看器会自动检测哪个 CLI 触发了 Hook(Claude `~/.claude/projects/…`、Codex `~/.codex/sessions/…`、Copilot CLI `~/.copilot/session-state//events.jsonl`、Cursor Agent `~/.cursor/agent-sessions//events.jsonl`、OpenCode `~/.local/share/opencode/opencode.db`、Pi `~/.pi/agent/sessions//.jsonl`、Gemini CLI `~/.gemini/tmp//chats/.jsonl`),并在标题中渲染对应的 CLI 徽章 + + - 所有会话中触发的每个 hook 事件的完整分页历史记录 + - 按决策、事件类型、CLI(Claude Code / OpenAI Codex / GitHub Copilot _(测试版)_ / Cursor Agent _(测试版)_ / OpenCode _(测试版)_ / Pi _(测试版)_ / Gemini CLI _(测试版)_)、策略名称或会话 ID 筛选 + - 每行显示:时间戳、策略名称、决策、CLI 标记(橙色 = Claude Code,紫色 = OpenAI Codex,蓝色 = GitHub Copilot,翠绿色 = Cursor Agent,琥珀色 = OpenCode,粉色 = Pi,天蓝色 = Gemini CLI)、工具名称、会话 ID 以及 deny/instruct 决策的原因 + - 点击会话 ID 可打开其记录——查看器会自动检测是哪个 CLI 触发了 hook(Claude `~/.claude/projects/…`、Codex `~/.codex/sessions/…`、Copilot CLI `~/.copilot/session-state//events.jsonl`、Cursor Agent `~/.cursor/agent-sessions//events.jsonl`、OpenCode `~/.local/share/opencode/opencode.db`、Pi `~/.pi/agent/sessions//.jsonl`、Gemini CLI `~/.gemini/tmp//chats/.jsonl`),并在标题中渲染匹配的 CLI 标记 @@ -92,13 +92,13 @@ failproofai ## 自动刷新 -控制台在顶部导航栏中有一个自动刷新开关。启用后,当前页面会定期刷新,以显示新出现的会话和策略活动。这对于监控长时间运行的自主智能体会话至关重要。 +仪表板在顶部导航中提供自动刷新开关。启用后,当前页面会定期刷新,以实时显示新会话和策略活动。这对于监控长时间运行的自主 Agent 会话至关重要。 --- ## 禁用页面 -如果您只需要控制台的某些部分,可将 `FAILPROOFAI_DISABLE_PAGES` 设置为逗号分隔的页面名称列表: +如果只需要仪表板的某些部分,可将 `FAILPROOFAI_DISABLE_PAGES` 设置为以逗号分隔的页面名称列表: ```bash FAILPROOFAI_DISABLE_PAGES=policies failproofai @@ -110,7 +110,7 @@ FAILPROOFAI_DISABLE_PAGES=policies failproofai ## 配置项目路径 -默认情况下,控制台从标准 Claude Code 项目目录读取。可为自定义设置覆盖此路径: +默认情况下,仪表板从标准 Claude Code 项目目录读取。对于自定义设置,可以覆盖此路径: ```bash CLAUDE_PROJECTS_PATH=/custom/path/to/projects failproofai @@ -120,30 +120,30 @@ CLAUDE_PROJECTS_PATH=/custom/path/to/projects failproofai ## 从非 localhost 主机访问 -在**开发模式**下运行控制台(`npm run dev`)并从 `localhost` 以外的主机名访问时——例如自定义域名、远程 IP 或隧道 URL——您可能会看到如下警告: +在**开发模式**(`npm run dev`)下运行仪表板,并从 `localhost` 以外的主机名访问时——例如自定义域名、远程 IP 或隧道 URL——你可能会看到如下警告: ```text ⚠ Blocked cross-origin request to Next.js dev resource /_next/webpack-hmr from "dashboard.example.com". ``` -这是 Next.js 阻止跨源访问其 HMR(热模块重载)WebSocket 的行为,这是一个仅在开发模式下存在的功能。要允许您的主机访问,请使用 `--allowed-origins` 标志: +这是 Next.js 阻止对其 HMR(热模块重载)websocket 的跨域访问,这是一个仅限开发环境的功能。要允许你的主机,请使用 `--allowed-origins` 标志: ```bash npm run dev -- --allowed-origins dashboard.example.com ``` -对于多个主机或 IP,传入逗号分隔的列表: +对于多个主机或 IP,传入以逗号分隔的列表: ```bash npm run dev -- --allowed-origins dashboard.example.com,192.168.1.5 ``` -您也可以改用 `FAILPROOFAI_ALLOWED_DEV_ORIGINS` 环境变量: +你也可以设置 `FAILPROOFAI_ALLOWED_DEV_ORIGINS` 环境变量: ```bash FAILPROOFAI_ALLOWED_DEV_ORIGINS=dashboard.example.com npm run dev ``` -这仅适用于开发模式。运行 `failproofai`(生产模式)时,不存在 HMR WebSocket,也不存在跨源开发资源问题。 +这仅适用于开发模式。运行 `failproofai`(生产模式)时,不存在 HMR websocket,也不存在跨域开发资源问题。 \ No newline at end of file