開発¶
テストとローカルへのインストール¶
uv sync && uv run pytest -q # 128 tests, ~18 s: a fake `claude` binary and synthetic Codex, Copilot and Bob stores
# redeploy: --reinstall is required, uv caches local builds keyed on pyproject.toml only
uv tool install --force --reinstall --python 3.13 . && chronicle install # install restarts the agents
macOS アプリ¶
uv run --extra app chronicle app でチェックアウトから起動できます(Open at Login など、バンドルでしか意味のない
メニュー項目は非表示)。./packaging/macos/build.sh は dist/Chronicle.app と
dist/Chronicle-<version>-<arch>.dmg をビルドします(PyInstaller、約 30 秒。packaging/macos/Chronicle.spec)。1 つのバイナリが、
引数なしではアプリとして、引数ありでは CLI として動き、フックと MCP サーバーはこれを CLI として実行します。署名なしのビルドはアドホック
署名となり、ビルドした Mac でのみ動きます。配布するには CHRONICLE_CODESIGN_IDENTITY(Developer ID
Application 証明書)と NOTARY_KEYCHAIN_PROFILE(xcrun notarytool store-credentials で作成)を設定すると、スクリプトが
DMG の署名・公証・ステープルまで行います。packaging/macos/make_icon.py でアイコン(.icns と、ダッシュボードとソースから起動したアプリのウインドウが使う web/icon.png)を再描画できます。desktop.py は
pywebview の Cocoa アプリデリゲートを拡張しているため、pywebview を <7 に固定しています。
リリース¶
pyproject.toml の version を上げ、v<version> タグで GitHub リリースを公開します。
.github/workflows/release.yml がテストを実行し、agents-chronicle を PyPI に公開し(Trusted Publishing、
環境 pypi)、DMG をリリースに添付します(MACOS_* / APPLE_* シークレットが設定されていれば署名・公証済み。
詳細はワークフローの先頭を参照)。ワークフローを手動で実行すると(Actions → Release → Run workflow)
ドライランになり、テストを実行して DMG をワークフローの成果物として保存するだけで、何も公開しません。
最初のリリースの前に一度だけ必要な設定¶
- PyPI で pending publisher を追加します(Account → Publishing):プロジェクト
agents-chronicle、オーナーChatixia-AI、リポジトリagents-chronicle、ワークフローrelease.yml、環境pypi。 - GitHub リポジトリで
pypiという名前の環境を作成します(Settings → Environments)。 - 署名・公証済みの DMG を配布するには(Apple Developer Program への加入が必要):Developer ID Application
証明書を鍵ごと
.p12として書き出し、シークレットMACOS_CERT_P12(ファイルの base64)、MACOS_CERT_PASSWORD、MACOS_CODESIGN_IDENTITY、APPLE_ID、APPLE_TEAM_ID、APPLE_APP_PASSWORD(account.apple.com で発行するアプリ用パスワード)を追加します。これらがない場合、DMG はアドホック署名となり、 利用者は「プライバシーとセキュリティ」で許可する必要があります。
ドキュメントサイト¶
https://chronicle.chatixia.net/ は docs/ と README から MkDocs Material でそのまま生成されます。README.md と README.ja.md が
ホームページになり、docs/ の外を指すリンクは docs/_site/hooks.py が GitHub へのリンクに書き換えます。
main へのプッシュでドキュメントが変わると、.github/workflows/docs.yml が GitHub Pages に公開します。
uv run --only-group docs mkdocs serve # http://127.0.0.1:8000/ でプレビュー(保存で再読み込み)
uv run --only-group docs mkdocs build --strict # CI と同じ:リンクやアンカーが壊れていると失敗
図¶
docs/diagrams/ の図は .excalidraw.svg ファイルです。画像として表示され、Excalidraw の VS Code 拡張機能
(pomdtr.excalidraw-editor)または excalidraw.com で編集できます。保存すると同じファイルに書き戻されます。
コードの構成¶
parser.py(Claude のトランスクリプト形式)、codex_parser.py(Codex のロールアウト)、copilot_parser.py(Copilot の
エージェントセッション+VS Code のチャットログ)、bob_parser.py(Bob のタスク)、agents.py(エージェント名)、connectors.py(ソース)、
ingest.py(アーカイブ+保存)、digest.py / analyze.py /
llm.py(分析)、synthesize.py(ナレッジベース)、glossary.py、reviews.py、worker.py(キュー)、server.py + web/
(ダッシュボード)、mcp_server.py、export_md.py、hooks.py / install.py、desktop.py(macOS アプリ)、cli.py。packaging/macos/ がアプリをビルドします。
デモデータ¶
docs/demo/make_demo.py は、架空のセッションから Chronicle のホームを作ります:5 つのプロジェクトと約 6 週間分の作業を持つ
架空の開発者です。合成した Claude Code のトランスクリプトを書き出し、それに対して実際の処理(同期、分析、ナレッジベース、用語集、
週次の振り返り)を実行します。代役の claude が、手書きの要約とナレッジで各分析に答えるため、費用はかからず、ログインも不要です。
docs/images/ のスクリーンショットはこのデータから作られています。
uv run python docs/demo/make_demo.py /tmp/chronicle-demo
CHRONICLE_HOME=/tmp/chronicle-demo/home uv run python -m chronicle ui --port 8898 --open