From 8d8f882b4a94502df45383e6b8fa013bbdbf8c23 Mon Sep 17 00:00:00 2001 From: lihongyuan99 <64824864+lihongyuan99@users.noreply.github.com> Date: Sat, 3 Oct 2026 09:08:35 +0800 Subject: [PATCH] docs(i18n): add the missing Projects section to the ja/fr/ru READMEs (#6204) The English and Chinese READMEs document the Projects feature (shared instructions, document shelf, archive read semantics, trash), but the Japanese, French, and Russian READMEs skip it: their heading structure jumps straight from the embedded Python client to Scheduled Tasks, and their tables of contents have no Projects entry. Add the translated section at the same position between the embedded Python client and Scheduled Tasks, and add the matching table of contents entry, so all five language variants cover the same 21 H1/H2 sections. Follow-up in spirit to #4803 and #6129, which synced the Sister Projects and Startup Modes sections across the localized READMEs. --- README_fr.md | 34 ++++++++++++++++++++++++++++++++++ README_ja.md | 34 ++++++++++++++++++++++++++++++++++ README_ru.md | 34 ++++++++++++++++++++++++++++++++++ 3 files changed, 102 insertions(+) diff --git a/README_fr.md b/README_fr.md index b89b21100e..ab6ca6fd4a 100644 --- a/README_fr.md +++ b/README_fr.md @@ -75,6 +75,7 @@ DeerFlow intègre désormais le toolkit de recherche et de crawling intelligent - [Mémoire à long terme](#mémoire-à-long-terme) - [Modèles recommandés](#modèles-recommandés) - [Client Python intégré](#client-python-intégré) + - [Projets](#projets) - [Tâches planifiées (Scheduled Tasks)](#tâches-planifiées-scheduled-tasks) - [Atelier terminal (TUI)](#atelier-terminal-tui) - [Documentation](#documentation) @@ -675,6 +676,39 @@ client.clear_goal("thread-1") Toutes les méthodes retournant des dicts sont validées en CI contre les modèles de réponse Pydantic du Gateway (`TestGatewayConformance`), garantissant que le client intégré reste synchronisé avec les schémas de l'API HTTP. Voir `backend/packages/harness/deerflow/client.py` pour la documentation API complète. +## Projets + +Les projets regroupent des conversations liées sous un nom partagé, des instructions et une étagère de documents. + +Une conversation rejoint un projet au moment de sa création (lorsqu'un projet est sélectionné) ou plus tard via le menu de déplacement. Les exécutions ne modifient jamais l'appartenance : l'envoi d'un message ne peut pas affecter ou réaffecter une conversation. Déplacer une conversation hors d'un projet la laisse non affectée jusqu'à ce qu'elle soit à nouveau explicitement déplacée. + +Le déplacement d'une conversation actualise son rattachement dans l'en-tête ainsi que les listes de projets, y compris lorsqu'une requête de métadonnées plus ancienne est encore en cours. + +Les projets exigent les tables et colonnes de base de données actuelles. Une base de données estampillée `0019_thread_incarnations` issue de l'ancien déploiement basé sur 0018 est rejetée au démarrage si le schéma des projets est absent. Suivez la [procédure de récupération hors ligne de la base de données](docs/database-forward-revision-recovery.md) avant de démarrer ce build sur cette base. + +### Instructions de projet + +Chaque projet stocke des instructions en forme libre — contexte, conventions et contraintes s'appliquant à toutes les conversations du projet — modifiables dans l'onglet Instructions de la page du projet, avec un compteur d'octets en direct. Lorsqu'une exécution démarre sur un thread membre, le Gateway fige une seule fois l'état actuel du projet et rend les instructions sous forme d'un bloc `` borné, propre à cette requête et réservé à cette exécution : le bloc n'entre jamais dans le prompt système ni dans l'historique persisté, et chaque nouvelle exécution voit les dernières instructions enregistrées. Les instructions sont plafonnées à `projects.instructions_max_bytes` octets UTF-8 (par défaut 8192, plage 256–262144) ; les caractères multioctets comptent pour leur longueur en octets UTF-8. Les instructions trop longues sont rejetées avec un `422` à l'écriture et ne sont jamais tronquées silencieusement. + +### Étagère de documents + +Chaque projet dispose d'une étagère de documents pour les fichiers partagés par l'ensemble du projet, gérée depuis la section Documents de la page du projet : + +- **Téléverser** un fichier (bouton ou glisser-déposer, un fichier par requête). Les limites de taille de l'étagère réutilisent `uploads.max_file_size` (par défaut 50 Mio) ; re-téléverser un contenu identique renvoie l'entrée existante au lieu de créer un doublon. +- **Lister** les entrées avec leur nom, taille, date de modification et provenance (téléversées vs. enregistrées depuis une conversation), et prévisualiser ou télécharger n'importe quelle entrée. +- **Enregistrer dans le projet** depuis un fichier de thread : le navigateur en lecture seule des fichiers de conversation sous l'étagère liste les téléversements et sorties des threads membres, chacun avec une action « Enregistrer dans le projet ». +- **Joindre à un thread** : copier un fichier de l'étagère vers les téléversements d'un thread via le pipeline d'ingestion normal, pour que la conversation puisse l'utiliser directement. + +Les exécutions sur les threads membres reçoivent également un index `` borné, rendu à chaque exécution à partir de l'instantané figé (limité par `projects.shelf_index_max_entries` et `projects.shelf_index_max_bytes`), et l'agent peut parcourir l'étagère et lire les documents avec les outils `list_project_documents` et `read_project_document`. + +### Sémantique de lecture des projets archivés + +Archiver un projet gèle les écritures mais conserve les lectures. Les threads d'un projet archivé s'exécutent toujours et reçoivent toujours les instructions du projet et l'index de l'étagère, et l'étagère reste entièrement lisible : listage, prévisualisation/téléchargement, navigateur de fichiers de conversation et jonction à un thread continuent de fonctionner. Les téléversements, l'enregistrement dans le projet et le déplacement de fichiers individuels de l'étagère vers la corbeille exigent un projet actif, et un document mis à la corbeille ne peut pas être restauré dans un projet archivé. La suppression d'un projet archivé reste possible et déplace toute son étagère vers la corbeille. + +### Corbeille + +Supprimer un document de l'étagère le déplace vers la corbeille au lieu de l'effacer : l'entrée conserve ses octets et un instantané de son projet d'origine pendant `projects.trash_retention_days` (par défaut 30) avant que le balayage de rétention puisse la purger définitivement. La page `/workspace/trash` — accessible depuis la section Documents de la page du projet et l'en-tête Projets de la barre latérale — liste les documents mis à la corbeille avec leur projet d'origine et la rétention restante, avec des actions Restaurer et Supprimer définitivement par entrée, plus une action Vider la corbeille qui supprime définitivement tous les documents de la corbeille — immédiatement, et non après la fenêtre de rétention ; la fenêtre ne fait que borner la durée pendant laquelle une entrée peut y rester avant que le balayage de rétention ne la récupère. La restauration renvoie le document à son projet d'origine, ou à un projet de votre choix lorsque l'origine a disparu ou est archivée ; si la cible contient déjà un fichier actif identique, les entrées fusionnent. La suppression d'un projet déplace toute son étagère vers la corbeille en une seule étape. + ## Tâches planifiées (Scheduled Tasks) DeerFlow inclut désormais un MVP de tâches planifiées (scheduled-task) de premier niveau dans le workspace. diff --git a/README_ja.md b/README_ja.md index c2d25dc2cd..50ee3750e0 100644 --- a/README_ja.md +++ b/README_ja.md @@ -75,6 +75,7 @@ DeerFlowは、BytePlusが独自に開発したインテリジェント検索・ - [長期メモリ](#長期メモリ) - [推奨モデル](#推奨モデル) - [組み込みPythonクライアント](#組み込みpythonクライアント) + - [プロジェクト (Projects)](#プロジェクト-projects) - [スケジュールタスク (Scheduled Tasks)](#スケジュールタスク-scheduled-tasks) - [ターミナルワークベンチ (TUI)](#ターミナルワークベンチ-tui) - [ドキュメント](#ドキュメント) @@ -662,6 +663,39 @@ client.clear_goal("thread-1") すべてのdict返却メソッドはCIでGateway Pydanticレスポンスモデルに対して検証されており(`TestGatewayConformance`)、組み込みクライアントがHTTP APIスキーマと同期していることを保証します。完全なAPIドキュメントは`backend/packages/harness/deerflow/client.py`をご覧ください。 +## プロジェクト (Projects) + +プロジェクトは、関連する会話を共有の名前・指示・ドキュメントシェルフのもとにまとめます。 + +会話は作成時(プロジェクトを選択した場合)に、または後から移動メニューを使ってプロジェクトに参加します。実行がメンバーシップを変更することはありません。メッセージを送信しても、会話の割り当てや再割り当ては行われません。会話をプロジェクトから移動すると、再度明示的に移動されるまで未割り当ての状態が保たれます。 + +会話を移動すると、古いメタデータリクエストがまだ処理中の場合でも、ヘッダーの所属表示とプロジェクトリストが更新されます。 + +プロジェクトには最新のデータベーステーブルとカラムが必要です。古い 0018 ベースのロールアウトで `0019_thread_incarnations` にスタンプされたデータベースは、プロジェクトのスキーマが不足している場合、起動時に拒否されます。そのデータベースに対してこのビルドを起動する前に、[オフラインデータベース復旧手順](docs/database-forward-revision-recovery.md) に従ってください。 + +### プロジェクト指示 (Project instructions) + +各プロジェクトは、プロジェクト内のすべての会話に適用される背景・規約・制約を、自由形式の指示として保存します。プロジェクトページの Instructions タブで編集でき、バイト数がリアルタイムで表示されます。メンバースレッドで実行が開始されると、Gateway はプロジェクトの現在の状態を一度だけ固定(pin)し、その実行専用の有界でリクエストスコープの `` ブロックとして指示をレンダリングします。このブロックがシステムプロンプトや永続化された履歴に入ることはなく、新しい実行ごとに最新の保存済み指示が参照されます。指示の長さは `projects.instructions_max_bytes` UTF-8 バイト(デフォルト 8192、範囲 256–262144)に制限され、マルチバイト文字はその UTF-8 バイト長として数えられます。サイズ超過の指示は書き込み時に `422` で拒否され、黙って切り詰められることはありません。 + +### ドキュメントシェルフ (Document shelf) + +各プロジェクトには、プロジェクト全体で共有するファイルのためのドキュメントシェルフがあり、プロジェクトページの Documents セクションから管理します: + +- **アップロード**:ファイルをアップロードします(ボタンまたはドラッグ&ドロップ、1 リクエストにつき 1 ファイル)。シェルフのサイズ上限は `uploads.max_file_size`(デフォルト 50 MiB)を再利用します。同一内容を再アップロードしても重複は作成されず、既存のエントリが返されます。 +- **一覧表示**:名前・サイズ・更新時刻・出自(直接アップロードか、会話から保存か)付きでエントリを一覧表示し、任意のエントリをプレビューまたはダウンロードできます。 +- **プロジェクトへ保存**:シェルフの下にある読み取り専用の会話ファイルブラウザにメンバースレッドのアップロードと出力が一覧表示され、各エントリに「プロジェクトへ保存」アクションが用意されます。 +- **スレッドにアタッチ**:シェルフのファイルを通常の取り込みパイプラインを通じてスレッドのアップロードにコピーし、会話から直接扱えるようにします。 + +メンバースレッドの実行では、固定されたスナップショットから実行ごとにレンダリングされた有界な `` インデックス(`projects.shelf_index_max_entries` と `projects.shelf_index_max_bytes` で上限設定)も受け取ります。エージェントは `list_project_documents` および `read_project_document` ツールでシェルフをページングし、ドキュメントを読むことができます。 + +### アーカイブ時の読み取り動作 (Archive read semantics) + +プロジェクトをアーカイブすると書き込みは凍結されますが、読み取りは維持されます。アーカイブされたプロジェクトのスレッドは引き続き実行でき、プロジェクトの指示とシェルフインデックスも受け取ります。シェルフも完全に読み取り可能で、一覧表示・プレビュー/ダウンロード・会話ファイルブラウザ・スレッドへのアタッチはすべて機能し続けます。アップロード、プロジェクトへの保存、個々のシェルフファイルのゴミ箱への移動にはアクティブなプロジェクトが必要で、ゴミ箱に入ったドキュメントをアーカイブ済みプロジェクトに復元することはできません。アーカイブ済みプロジェクトの削除は引き続き可能で、そのシェルフ全体がゴミ箱に移されます。 + +### ゴミ箱 (Trash) + +シェルフのドキュメントを削除すると、消去ではなくゴミ箱に移動されます。エントリはバイト内容と出身プロジェクトのスナップショットを `projects.trash_retention_days`(デフォルト 30)の間保持し、その後は保持期間のクリーンアップによって完全に消去される可能性があります。`/workspace/trash` ページ(プロジェクトページの Documents セクションとサイドバーの Projects 見出しからアクセス可能)には、ゴミ箱のドキュメントが出身プロジェクトと残り保持期間付きで一覧表示され、エントリごとの「復元」と「完全に削除」アクションに加え、「ゴミ箱を空にする」アクションが用意されています。これはゴミ箱内のすべてのドキュメントを保持期間の経過を待たずに即座に完全削除します。保持期間は、クリーンアップがエントリを回収するまでエントリがそこに留まれる期間の上限を定めるだけです。復元では、ドキュメントは出身プロジェクトへ戻されます。出身プロジェクトが削除済みまたはアーカイブ済みの場合は、選択したプロジェクトへ戻されます。復元先に同一内容のアクティブなファイルが既にある場合、エントリは統合されます。プロジェクトを削除すると、そのシェルフ全体が同じ操作でゴミ箱に移されます。 + ## スケジュールタスク (Scheduled Tasks) DeerFlowには現在、ワークスペース内でファーストクラスのスケジュールタスクMVPが組み込まれています。 diff --git a/README_ru.md b/README_ru.md index a1ec00b2e4..7c30773880 100644 --- a/README_ru.md +++ b/README_ru.md @@ -77,6 +77,7 @@ DeerFlow интегрирован с инструментарием для ум - [Long-Term Memory](#long-term-memory) - [Рекомендуемые модели](#рекомендуемые-модели) - [Встроенный Python-клиент](#встроенный-python-клиент) + - [Проекты](#проекты) - [Запланированные задачи (Scheduled Tasks)](#запланированные-задачи-scheduled-tasks) - [Терминальная панель (TUI)](#терминальная-панель-tui) - [Документация](#документация) @@ -599,6 +600,39 @@ client.get_goal("thread-1") # {"goal": {...}} or {"goal": None} client.clear_goal("thread-1") ``` +## Проекты + +Проекты группируют связанные диалоги под общим именем, инструкциями и полкой документов. + +Диалог присоединяется к проекту в момент создания (когда выбран проект) или позже через меню перемещения. Запуски никогда не изменяют членство: отправка сообщения не может назначить или переназначить диалог. Перемещение диалога из проекта оставляет его без назначения, пока он не будет явно перемещён снова. + +Перемещение диалога обновляет его принадлежность в заголовке, а также списки проектов, в том числе когда старый запрос метаданных ещё выполняется. + +Проектам требуются актуальные таблицы и столбцы базы данных. База данных с меткой `0019_thread_incarnations` от старого развёртывания на основе 0018 отклоняется при запуске, если схема проектов отсутствует. Перед запуском этой сборки на такой базе следуйте [процедуре автономного восстановления базы данных](docs/database-forward-revision-recovery.md). + +### Инструкции проекта + +Каждый проект хранит инструкции в свободной форме — контекст, соглашения и ограничения, применимые ко всем диалогам проекта; они редактируются на вкладке Instructions страницы проекта с живым счётчиком байтов. Когда запуск начинается на потоке-участнике, Gateway один раз фиксирует текущее состояние проекта и рендерит инструкции в виде ограниченного блока ``, действующего только в рамках этого запроса и этого запуска: блок никогда не попадает в системный промпт и в сохранённую историю, и каждый новый запуск видит последние сохранённые инструкции. Инструкции ограничены `projects.instructions_max_bytes` байтами UTF-8 (по умолчанию 8192, диапазон 256–262144); многобайтовые символы считаются по их длине в байтах UTF-8. Слишком длинные инструкции отклоняются с ошибкой `422` при записи и никогда не обрезаются молча. + +### Полка документов + +У каждого проекта есть полка документов для файлов, общих для всего проекта; она управляется в разделе Documents страницы проекта: + +- **Загрузить** файл (кнопкой или перетаскиванием, один файл за запрос). Ограничения размера полки переиспользуют `uploads.max_file_size` (по умолчанию 50 МиБ); повторная загрузка идентичного содержимого возвращает существующую запись вместо создания дубликата. +- **Просмотреть** записи с именем, размером, временем изменения и происхождением (загружено напрямую или сохранено из диалога), а также предпросмотреть или скачать любую запись. +- **Сохранить в проект** из файла потока: браузер файлов диалогов только для чтения под полкой перечисляет загрузки и результаты потоков-участников, у каждой записи есть действие «Сохранить в проект». +- **Прикрепить к потоку**: скопировать файл с полки в загрузки потока через обычный конвейер приёма, чтобы диалог мог работать с ним напрямую. + +Запуски на потоках-участниках также получают ограниченный индекс ``, рендеримый для каждого запуска из зафиксированного снимка (ограничен `projects.shelf_index_max_entries` и `projects.shelf_index_max_bytes`), а агент может постранично обходить полку и читать документы инструментами `list_project_documents` и `read_project_document`. + +### Семантика чтения архивированных проектов + +Архивация проекта замораживает записи, но сохраняет чтения. Потоки архивированного проекта по-прежнему запускаются и по-прежнему получают инструкции проекта и индекс полки, а полка остаётся полностью читаемой: просмотр списка, предпросмотр/скачивание, браузер файлов диалогов и прикрепление к потоку продолжают работать. Загрузка, сохранение в проект и перемещение отдельных файлов полки в корзину требуют активного проекта, а удалённый в корзину документ нельзя восстановить в архивированный проект. Удаление архивированного проекта остаётся доступным и перемещает всю его полку в корзину. + +### Корзина + +Удаление документа с полки перемещает его в корзину, а не стирает: запись сохраняет своё содержимое и снимок исходного проекта в течение `projects.trash_retention_days` (по умолчанию 30) до того, как очистка по сроку хранения сможет удалить её безвозвратно. Страница `/workspace/trash` — доступная из раздела Documents страницы проекта и из заголовка «Проекты» на боковой панели — перечисляет документы в корзине с их исходным проектом и оставшимся сроком хранения, с действиями «Восстановить» и «Удалить навсегда» для каждой записи, а также действием «Очистить корзину», которое безвозвратно удаляет все документы в корзине — немедленно, а не по истечении срока хранения; срок лишь ограничивает, как долго запись может там находиться, прежде чем очистка её заберёт. Восстановление возвращает документ в его исходный проект или в выбранный вами проект, если исходный удалён или архивирован; если в целевом проекте уже есть идентичный активный файл, записи объединяются. Удаление проекта за один шаг перемещает всю его полку в корзину. + ## Запланированные задачи (Scheduled Tasks) Теперь в DeerFlow есть первоклассный MVP запланированных задач (scheduled-task) в workspace.