ai-agent-book 精选快照(<2MB 代码与文档,来自 github.com/bojieli/ai-agent-book)
Build latest book artifacts / build (push) Canceled after 0s
dependency resolution / resolve (3.11) (push) Canceled after 0s
dependency resolution / resolve (3.13) (push) Canceled after 0s
deploy-pages / build (push) Canceled after 0s
deploy-pages / deploy (push) Canceled after 0s
i18n consistency check / check (push) Canceled after 0s
provider adoption tests / test (chapter2/context-compression) (push) Canceled after 0s
provider adoption tests / test (chapter2/prompt-injection) (push) Canceled after 0s
provider adoption tests / test (chapter2/system-hint) (push) Canceled after 0s
provider adoption tests / test (chapter3/log-sanitization) (push) Canceled after 0s
web-search-agent tests / test (push) Canceled after 0s
web-search-agent tests / agentbook (push) Canceled after 0s

This commit is contained in:
2026-08-20 13:12:50 +00:00
commit b119135836
10275 changed files with 3284984 additions and 0 deletions
@@ -0,0 +1 @@
<!DOCTYPE html><html lang="ja"><meta charset="utf-8"><title>非同期分析レポート</title><body><h1>分析結果</h1><p>対象ファイルは 679 行、106193 バイトです。</p><p>非同期に関する言及は 69 件でした。</p></body></html>
@@ -0,0 +1,44 @@
{
"first_completed": "T1",
"query_receipts": [
{
"task_id": "T2",
"status": "running",
"progress": 68.0,
"queried_at": 5.345
},
{
"task_id": "T3",
"status": "running",
"progress": 34.0,
"queried_at": 5.345
}
],
"cancelled_ids": [
"T3"
],
"completed_results": {
"T1": {
"async_mentions": 69,
"bytes": 106193,
"error_keyword_count": 20,
"experiment_mentions": 37,
"heading_count": 27,
"input_path": "/Users/boj/book/ai-agent-book/book/chapter6.md",
"input_sha256": "4184460334544d326bb7ad4db349b8c583790195d51efc28ef325284c41d7fdd",
"job": "fast",
"lines": 679
},
"T2": {
"async_mentions": 69,
"bytes": 106193,
"error_keyword_count": 20,
"experiment_mentions": 37,
"heading_count": 27,
"input_path": "/Users/boj/book/ai-agent-book/book/chapter6.md",
"input_sha256": "4184460334544d326bb7ad4db349b8c583790195d51efc28ef325284c41d7fdd",
"job": "mid",
"lines": 679
}
}
}
@@ -0,0 +1,45 @@
{
"generated_at": "2026-07-29T21:28:45.233367+00:00",
"files": [
{
"path": "artifacts/scenario_2_report.html",
"bytes": 257,
"sha256": "e468c5a2c05f5fe74b2c41ca123676ab2f325fda41869a615545221b7d1c7a2f"
},
{
"path": "artifacts/scenario_4_report.json",
"bytes": 1071,
"sha256": "7bc8f53d28a8ec058424beb24ee1fcf9e36dd6c8b01e16fbea8dcc8d5b5dead7"
},
{
"path": "protocol.json",
"bytes": 1130,
"sha256": "2d15d0bfd8314d4ae141dfb72539703fdcd9fa6aed9bd34082a54df6694b42d3"
},
{
"path": "scenarios/async_command_and_immediate_question.json",
"bytes": 3438,
"sha256": "24677cf6db74cfefee1f6a856254ee6b4d7bbde2de03f3015966bb86aa473f8d"
},
{
"path": "scenarios/interrupt_terminates_and_recovers.json",
"bytes": 4995,
"sha256": "d355ea15acc9b85d789460a215f7cd36b4ee9549194b87a328515f17de8bbcac"
},
{
"path": "scenarios/parallel_progress_threshold_cancellation.json",
"bytes": 9035,
"sha256": "3e6ec09e98703ef4309d55d2386700de8f6ea8c7daeda660ee49ee14c8bbedf4"
},
{
"path": "scenarios/queued_batch_to_japanese_html.json",
"bytes": 4089,
"sha256": "796bf2d2878a6681d897d42938836f29e301d0c4fe6e6fbb78975427dae4aca9"
},
{
"path": "summary.json",
"bytes": 1097,
"sha256": "913b5b9b73d61bcf02c51a44c5ed204dbb6ca5abbe8f133503fd88690ae5f788"
}
]
}
@@ -0,0 +1,28 @@
{
"experiment": "6-2",
"title": "Real subprocess async execution, queueing, interruption, and progress cancellation",
"authority": "book/chapter6.md:579",
"execution": {
"mode": "allowlisted asyncio subprocesses",
"shell": false,
"worker": "analysis_worker.py",
"input": "book/chapter6.md",
"progress_source": "child stdout",
"result_source": "child-computed file metrics"
},
"scenarios": [
"long command plus immediate current-time response before completion",
"two deferred instructions batch on completion and produce Japanese HTML",
"user cancellation terminates the child process and runtime recovers",
"3/2/1 percent jobs; query remaining jobs once; cancel only progress at or below 50 percent"
],
"acceptance": {
"long_job_at_least_three_seconds": true,
"placeholder_return_is_nonblocking": true,
"all_terminal_jobs_are_real_subprocesses": true,
"cancelled_jobs_have_os_return_codes": true,
"completed_jobs_have_stdout_and_input_hashes": true,
"all_artifacts_are_hash_manifested": true,
"no_simulated_terminal_result_can_pass": true
}
}
@@ -0,0 +1,109 @@
{
"id": "async_command_and_immediate_question",
"placeholder_latency_seconds": 0.000241,
"placeholder_at": 0.0,
"time_answer_at": 0.502,
"completion_event_at": 3.635,
"time_answer": "2026-07-30T05:28:26+08:00",
"events": [
{
"elapsed_seconds": 0.0,
"source": "TASK",
"text": "启动真实子进程任务 T1: `python analyze_logs.py` (速度 4%/逻辑秒)"
},
{
"elapsed_seconds": 0.0,
"source": "TOOL",
"event": "placeholder_returned",
"task_id": "T1",
"placeholder_latency_seconds": 0.000241
},
{
"elapsed_seconds": 0.502,
"source": "AGENT",
"event": "immediate_time_answer",
"answer": "2026-07-30T05:28:26+08:00",
"task_still_running": true
},
{
"elapsed_seconds": 0.803,
"source": "TASK",
"text": "T1 `python analyze_logs.py` 进度 22% (pid=92016)"
},
{
"elapsed_seconds": 1.426,
"source": "TASK",
"text": "T1 `python analyze_logs.py` 进度 40% (pid=92016)"
},
{
"elapsed_seconds": 2.207,
"source": "TASK",
"text": "T1 `python analyze_logs.py` 进度 63% (pid=92016)"
},
{
"elapsed_seconds": 2.84,
"source": "TASK",
"text": "T1 `python analyze_logs.py` 进度 81% (pid=92016)"
},
{
"elapsed_seconds": 3.622,
"source": "TASK",
"text": "T1 `python analyze_logs.py` 进度 100% (pid=92016)"
},
{
"elapsed_seconds": 3.635,
"source": "TASK",
"text": "T1 完成 ✅ (pid=92016, returncode=0)"
},
{
"elapsed_seconds": 3.635,
"source": "SYSTEM",
"event": "async_result_injected",
"task_id": "T1"
}
],
"tasks": [
{
"task_id": "T1",
"command": "python analyze_logs.py",
"status": "completed",
"progress": 100.0,
"pid": 92016,
"returncode": 0,
"started_at": 1785360505.728322,
"completed_at": 1785360509.363023,
"elapsed_seconds": 3.635,
"stdout_sha256": "7da29da059869ca8f939dd6d0d4c4a299d9e02a53592773c71517971af545ebd",
"stderr_tail": "",
"result": {
"async_mentions": 69,
"bytes": 106193,
"error_keyword_count": 20,
"experiment_mentions": 37,
"heading_count": 27,
"input_path": "/Users/boj/book/ai-agent-book/book/chapter6.md",
"input_sha256": "4184460334544d326bb7ad4db349b8c583790195d51efc28ef325284c41d7fdd",
"job": "logs",
"lines": 679
},
"executable": {
"mode": "real_subprocess",
"shell": false,
"worker": "/Users/boj/book/ai-agent-book/chapter6/async-agent/analysis_worker.py",
"worker_sha256": "ab700e034f63e4b8f83dfb4a6156745b7ab7c9352750c63a900f2632acb134c7",
"input": "/Users/boj/book/ai-agent-book/book/chapter6.md",
"input_sha256": "4184460334544d326bb7ad4db349b8c583790195d51efc28ef325284c41d7fdd",
"job": "logs",
"rate_percent_per_logical_second": 4.5,
"tick_real_seconds": 0.15,
"argv_sha256": "1c6aa3b4072446e8286dce865f45c6bb1c93733319bf7501adbb555bc6a7973c",
"pid": 92016,
"returncode": 0,
"stdout_sha256": "7da29da059869ca8f939dd6d0d4c4a299d9e02a53592773c71517971af545ebd",
"stdout_lines": 24,
"stderr_sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855",
"elapsed_seconds": 3.635
}
}
]
}
@@ -0,0 +1,161 @@
{
"id": "interrupt_terminates_and_recovers",
"interrupt_at": 0.803,
"cancel_receipt_at": 0.806,
"cancel_latency_seconds": 0.004,
"recovery_at": 0.807,
"completed_callbacks": [
"T2"
],
"events": [
{
"elapsed_seconds": 0.0,
"source": "TASK",
"text": "启动真实子进程任务 T1: `python analyze_logs.py` (速度 4%/逻辑秒)"
},
{
"elapsed_seconds": 0.803,
"source": "USER",
"event": "user.interrupt",
"text": "取消",
"task_id": "T1",
"progress": 18.0
},
{
"elapsed_seconds": 0.806,
"source": "TASK",
"text": "T1 子进程已终止 🛑 (pid=92040, 进度 18%)"
},
{
"elapsed_seconds": 0.806,
"source": "SYSTEM",
"event": "process_cancelled",
"task_ids": [
"T1"
],
"cancel_latency_seconds": 0.004,
"returncode": -15
},
{
"elapsed_seconds": 0.807,
"source": "TASK",
"text": "启动真实子进程任务 T2: `python re_run_summary.py` (速度 4%/逻辑秒)"
},
{
"elapsed_seconds": 0.807,
"source": "SYSTEM",
"event": "runtime_recovered",
"task_id": "T2"
},
{
"elapsed_seconds": 1.619,
"source": "TASK",
"text": "T2 `python re_run_summary.py` 进度 22% (pid=92041)"
},
{
"elapsed_seconds": 2.245,
"source": "TASK",
"text": "T2 `python re_run_summary.py` 进度 40% (pid=92041)"
},
{
"elapsed_seconds": 3.019,
"source": "TASK",
"text": "T2 `python re_run_summary.py` 进度 63% (pid=92041)"
},
{
"elapsed_seconds": 3.644,
"source": "TASK",
"text": "T2 `python re_run_summary.py` 进度 81% (pid=92041)"
},
{
"elapsed_seconds": 4.423,
"source": "TASK",
"text": "T2 `python re_run_summary.py` 进度 100% (pid=92041)"
},
{
"elapsed_seconds": 4.436,
"source": "TASK",
"text": "T2 完成 ✅ (pid=92041, returncode=0)"
},
{
"elapsed_seconds": 4.436,
"source": "SYSTEM",
"event": "async_result_injected",
"task_id": "T2"
}
],
"tasks": [
{
"task_id": "T1",
"command": "python analyze_logs.py",
"status": "cancelled",
"progress": 18.0,
"pid": 92040,
"returncode": -15,
"started_at": 1785360512.964798,
"completed_at": 1785360513.7706082,
"elapsed_seconds": 0.806,
"stdout_sha256": null,
"stderr_tail": "",
"result": null,
"executable": {
"mode": "real_subprocess",
"shell": false,
"worker": "/Users/boj/book/ai-agent-book/chapter6/async-agent/analysis_worker.py",
"worker_sha256": "ab700e034f63e4b8f83dfb4a6156745b7ab7c9352750c63a900f2632acb134c7",
"input": "/Users/boj/book/ai-agent-book/book/chapter6.md",
"input_sha256": "4184460334544d326bb7ad4db349b8c583790195d51efc28ef325284c41d7fdd",
"job": "logs",
"rate_percent_per_logical_second": 4.5,
"tick_real_seconds": 0.15,
"argv_sha256": "1c6aa3b4072446e8286dce865f45c6bb1c93733319bf7501adbb555bc6a7973c",
"pid": 92040,
"returncode": -15,
"cancelled": true,
"elapsed_seconds": 0.806
}
},
{
"task_id": "T2",
"command": "python re_run_summary.py",
"status": "completed",
"progress": 100.0,
"pid": 92041,
"returncode": 0,
"started_at": 1785360513.771501,
"completed_at": 1785360517.4005382,
"elapsed_seconds": 3.629,
"stdout_sha256": "5c538eaf31540bcc95acb80a9ca3333a440020c63e015b644575a35cabbe6a11",
"stderr_tail": "",
"result": {
"async_mentions": 69,
"bytes": 106193,
"error_keyword_count": 20,
"experiment_mentions": 37,
"heading_count": 27,
"input_path": "/Users/boj/book/ai-agent-book/book/chapter6.md",
"input_sha256": "4184460334544d326bb7ad4db349b8c583790195d51efc28ef325284c41d7fdd",
"job": "recovery",
"lines": 679
},
"executable": {
"mode": "real_subprocess",
"shell": false,
"worker": "/Users/boj/book/ai-agent-book/chapter6/async-agent/analysis_worker.py",
"worker_sha256": "ab700e034f63e4b8f83dfb4a6156745b7ab7c9352750c63a900f2632acb134c7",
"input": "/Users/boj/book/ai-agent-book/book/chapter6.md",
"input_sha256": "4184460334544d326bb7ad4db349b8c583790195d51efc28ef325284c41d7fdd",
"job": "recovery",
"rate_percent_per_logical_second": 4.5,
"tick_real_seconds": 0.15,
"argv_sha256": "7079826b54049bc6e5276ade7f4c343a41b9fc82f828d35685665b3101bce693",
"pid": 92041,
"returncode": 0,
"stdout_sha256": "5c538eaf31540bcc95acb80a9ca3333a440020c63e015b644575a35cabbe6a11",
"stdout_lines": 24,
"stderr_sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855",
"elapsed_seconds": 3.629
}
}
]
}
@@ -0,0 +1,286 @@
{
"id": "parallel_progress_threshold_cancellation",
"first_completed": "T1",
"query_receipts": [
{
"task_id": "T2",
"status": "running",
"progress": 68.0,
"queried_at": 5.345
},
{
"task_id": "T3",
"status": "running",
"progress": 34.0,
"queried_at": 5.345
}
],
"cancelled_ids": [
"T3"
],
"completed_results": {
"T1": {
"async_mentions": 69,
"bytes": 106193,
"error_keyword_count": 20,
"experiment_mentions": 37,
"heading_count": 27,
"input_path": "/Users/boj/book/ai-agent-book/book/chapter6.md",
"input_sha256": "4184460334544d326bb7ad4db349b8c583790195d51efc28ef325284c41d7fdd",
"job": "fast",
"lines": 679
},
"T2": {
"async_mentions": 69,
"bytes": 106193,
"error_keyword_count": 20,
"experiment_mentions": 37,
"heading_count": 27,
"input_path": "/Users/boj/book/ai-agent-book/book/chapter6.md",
"input_sha256": "4184460334544d326bb7ad4db349b8c583790195d51efc28ef325284c41d7fdd",
"job": "mid",
"lines": 679
}
},
"events": [
{
"elapsed_seconds": 0.0,
"source": "TASK",
"text": "启动真实子进程任务 T1: `python analyze_fast.py` (速度 3%/逻辑秒)"
},
{
"elapsed_seconds": 0.001,
"source": "TASK",
"text": "启动真实子进程任务 T2: `python analyze_mid.py` (速度 2%/逻辑秒)"
},
{
"elapsed_seconds": 0.001,
"source": "TASK",
"text": "启动真实子进程任务 T3: `python analyze_slow.py` (速度 1%/逻辑秒)"
},
{
"elapsed_seconds": 1.121,
"source": "TASK",
"text": "T1 `python analyze_fast.py` 进度 21% (pid=92132)"
},
{
"elapsed_seconds": 1.605,
"source": "TASK",
"text": "T2 `python analyze_mid.py` 进度 20% (pid=92133)"
},
{
"elapsed_seconds": 2.219,
"source": "TASK",
"text": "T1 `python analyze_fast.py` 进度 42% (pid=92132)"
},
{
"elapsed_seconds": 3.133,
"source": "TASK",
"text": "T3 `python analyze_slow.py` 进度 20% (pid=92134)"
},
{
"elapsed_seconds": 3.144,
"source": "TASK",
"text": "T1 `python analyze_fast.py` 进度 60% (pid=92132)"
},
{
"elapsed_seconds": 3.145,
"source": "TASK",
"text": "T2 `python analyze_mid.py` 进度 40% (pid=92133)"
},
{
"elapsed_seconds": 4.235,
"source": "TASK",
"text": "T1 `python analyze_fast.py` 进度 81% (pid=92132)"
},
{
"elapsed_seconds": 4.699,
"source": "TASK",
"text": "T2 `python analyze_mid.py` 进度 60% (pid=92133)"
},
{
"elapsed_seconds": 5.332,
"source": "TASK",
"text": "T1 `python analyze_fast.py` 进度 100% (pid=92132)"
},
{
"elapsed_seconds": 5.345,
"source": "TASK",
"text": "T1 完成 ✅ (pid=92132, returncode=0)"
},
{
"elapsed_seconds": 5.345,
"source": "SYSTEM",
"event": "async_result_injected",
"task_id": "T1"
},
{
"elapsed_seconds": 5.345,
"source": "TOOL",
"event": "query_task",
"task_id": "T2",
"progress": 68.0
},
{
"elapsed_seconds": 5.345,
"source": "TOOL",
"event": "query_task",
"task_id": "T3",
"progress": 34.0
},
{
"elapsed_seconds": 5.345,
"source": "TOOL",
"event": "cancel_task",
"task_id": "T3",
"progress": 34.0
},
{
"elapsed_seconds": 5.347,
"source": "TASK",
"text": "T3 子进程已终止 🛑 (pid=92134, 进度 34%)"
},
{
"elapsed_seconds": 6.254,
"source": "TASK",
"text": "T2 `python analyze_mid.py` 进度 80% (pid=92133)"
},
{
"elapsed_seconds": 7.815,
"source": "TASK",
"text": "T2 `python analyze_mid.py` 进度 100% (pid=92133)"
},
{
"elapsed_seconds": 7.829,
"source": "TASK",
"text": "T2 完成 ✅ (pid=92133, returncode=0)"
},
{
"elapsed_seconds": 7.829,
"source": "SYSTEM",
"event": "async_result_injected",
"task_id": "T2"
}
],
"tasks": [
{
"task_id": "T1",
"command": "python analyze_fast.py",
"status": "completed",
"progress": 100.0,
"pid": 92132,
"returncode": 0,
"started_at": 1785360517.401463,
"completed_at": 1785360522.7459211,
"elapsed_seconds": 5.344,
"stdout_sha256": "cc880975410f2730b3a60c08b446abc561361940b173aa8241ab22f3d23be937",
"stderr_tail": "",
"result": {
"async_mentions": 69,
"bytes": 106193,
"error_keyword_count": 20,
"experiment_mentions": 37,
"heading_count": 27,
"input_path": "/Users/boj/book/ai-agent-book/book/chapter6.md",
"input_sha256": "4184460334544d326bb7ad4db349b8c583790195d51efc28ef325284c41d7fdd",
"job": "fast",
"lines": 679
},
"executable": {
"mode": "real_subprocess",
"shell": false,
"worker": "/Users/boj/book/ai-agent-book/chapter6/async-agent/analysis_worker.py",
"worker_sha256": "ab700e034f63e4b8f83dfb4a6156745b7ab7c9352750c63a900f2632acb134c7",
"input": "/Users/boj/book/ai-agent-book/book/chapter6.md",
"input_sha256": "4184460334544d326bb7ad4db349b8c583790195d51efc28ef325284c41d7fdd",
"job": "fast",
"rate_percent_per_logical_second": 3.0,
"tick_real_seconds": 0.15,
"argv_sha256": "7261f0de1acd2bbe527657a61c48b925528ac99524a349ac91d350581830780e",
"pid": 92132,
"returncode": 0,
"stdout_sha256": "cc880975410f2730b3a60c08b446abc561361940b173aa8241ab22f3d23be937",
"stdout_lines": 35,
"stderr_sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855",
"elapsed_seconds": 5.344
}
},
{
"task_id": "T2",
"command": "python analyze_mid.py",
"status": "completed",
"progress": 100.0,
"pid": 92133,
"returncode": 0,
"started_at": 1785360517.4036,
"completed_at": 1785360525.229522,
"elapsed_seconds": 7.826,
"stdout_sha256": "a4257b9e774792d2df2f286f29d683ac24d90a766da66069fc5c4654e89ed003",
"stderr_tail": "",
"result": {
"async_mentions": 69,
"bytes": 106193,
"error_keyword_count": 20,
"experiment_mentions": 37,
"heading_count": 27,
"input_path": "/Users/boj/book/ai-agent-book/book/chapter6.md",
"input_sha256": "4184460334544d326bb7ad4db349b8c583790195d51efc28ef325284c41d7fdd",
"job": "mid",
"lines": 679
},
"executable": {
"mode": "real_subprocess",
"shell": false,
"worker": "/Users/boj/book/ai-agent-book/chapter6/async-agent/analysis_worker.py",
"worker_sha256": "ab700e034f63e4b8f83dfb4a6156745b7ab7c9352750c63a900f2632acb134c7",
"input": "/Users/boj/book/ai-agent-book/book/chapter6.md",
"input_sha256": "4184460334544d326bb7ad4db349b8c583790195d51efc28ef325284c41d7fdd",
"job": "mid",
"rate_percent_per_logical_second": 2.0,
"tick_real_seconds": 0.15,
"argv_sha256": "3f8854dc260b11c7d00cbf44f3770cbe6eaf45da0ca6677108a485acd69faf4f",
"pid": 92133,
"returncode": 0,
"stdout_sha256": "a4257b9e774792d2df2f286f29d683ac24d90a766da66069fc5c4654e89ed003",
"stdout_lines": 51,
"stderr_sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855",
"elapsed_seconds": 7.826
}
},
{
"task_id": "T3",
"command": "python analyze_slow.py",
"status": "cancelled",
"progress": 34.0,
"pid": 92134,
"returncode": -15,
"started_at": 1785360517.4054961,
"completed_at": 1785360522.74722,
"elapsed_seconds": 5.342,
"stdout_sha256": null,
"stderr_tail": "",
"result": null,
"executable": {
"mode": "real_subprocess",
"shell": false,
"worker": "/Users/boj/book/ai-agent-book/chapter6/async-agent/analysis_worker.py",
"worker_sha256": "ab700e034f63e4b8f83dfb4a6156745b7ab7c9352750c63a900f2632acb134c7",
"input": "/Users/boj/book/ai-agent-book/book/chapter6.md",
"input_sha256": "4184460334544d326bb7ad4db349b8c583790195d51efc28ef325284c41d7fdd",
"job": "slow",
"rate_percent_per_logical_second": 1.0,
"tick_real_seconds": 0.15,
"argv_sha256": "45f0bfa2cdbd6f54216af52a0d35e71b53de6c9a67f2ddbee1b56594cb1a4f67",
"pid": 92134,
"returncode": -15,
"cancelled": true,
"elapsed_seconds": 5.342
}
}
],
"artifact": {
"path": "/Users/boj/book/ai-agent-book/chapter6/async-agent/validation/experiment_6_2/real_subprocess_20260730T052500Z/artifacts/scenario_4_report.json",
"bytes": 1071,
"sha256": "7bc8f53d28a8ec058424beb24ee1fcf9e36dd6c8b01e16fbea8dcc8d5b5dead7"
}
}
@@ -0,0 +1,136 @@
{
"id": "queued_batch_to_japanese_html",
"instruction_times": [
0.503,
0.703
],
"batch": [
{
"type": "async.result",
"task_id": "T1",
"result_sha256": "8cc819c59b166b1f24f678fffc632ea401136984f3616c2b98c9278ea85a570f"
},
{
"type": "user.input",
"instruction": "記得最後用日語回覆"
},
{
"type": "user.input",
"instruction": "結果をHTMLウェブページに整理"
}
],
"events": [
{
"elapsed_seconds": 0.0,
"source": "TASK",
"text": "启动真实子进程任务 T1: `python analyze_logs.py` (速度 4%/逻辑秒)"
},
{
"elapsed_seconds": 0.0,
"source": "TOOL",
"event": "placeholder_returned",
"task_id": "T1"
},
{
"elapsed_seconds": 0.503,
"source": "QUEUE",
"event": "deferred_instruction",
"instruction": "japanese"
},
{
"elapsed_seconds": 0.703,
"source": "QUEUE",
"event": "deferred_instruction",
"instruction": "html"
},
{
"elapsed_seconds": 0.796,
"source": "TASK",
"text": "T1 `python analyze_logs.py` 进度 22% (pid=92027)"
},
{
"elapsed_seconds": 1.42,
"source": "TASK",
"text": "T1 `python analyze_logs.py` 进度 40% (pid=92027)"
},
{
"elapsed_seconds": 2.198,
"source": "TASK",
"text": "T1 `python analyze_logs.py` 进度 63% (pid=92027)"
},
{
"elapsed_seconds": 2.817,
"source": "TASK",
"text": "T1 `python analyze_logs.py` 进度 81% (pid=92027)"
},
{
"elapsed_seconds": 3.592,
"source": "TASK",
"text": "T1 `python analyze_logs.py` 进度 100% (pid=92027)"
},
{
"elapsed_seconds": 3.599,
"source": "TASK",
"text": "T1 完成 ✅ (pid=92027, returncode=0)"
},
{
"elapsed_seconds": 3.599,
"source": "SYSTEM",
"event": "batch_appended",
"event_count": 3,
"deferred_count": 2
}
],
"artifact": {
"path": "/Users/boj/book/ai-agent-book/chapter6/async-agent/validation/experiment_6_2/real_subprocess_20260730T052500Z/artifacts/scenario_2_report.html",
"bytes": 257,
"sha256": "e468c5a2c05f5fe74b2c41ca123676ab2f325fda41869a615545221b7d1c7a2f",
"doctype": true,
"lang_ja": true,
"has_japanese": true
},
"tasks": [
{
"task_id": "T1",
"command": "python analyze_logs.py",
"status": "completed",
"progress": 100.0,
"pid": 92027,
"returncode": 0,
"started_at": 1785360509.363528,
"completed_at": 1785360512.962622,
"elapsed_seconds": 3.599,
"stdout_sha256": "7da29da059869ca8f939dd6d0d4c4a299d9e02a53592773c71517971af545ebd",
"stderr_tail": "",
"result": {
"async_mentions": 69,
"bytes": 106193,
"error_keyword_count": 20,
"experiment_mentions": 37,
"heading_count": 27,
"input_path": "/Users/boj/book/ai-agent-book/book/chapter6.md",
"input_sha256": "4184460334544d326bb7ad4db349b8c583790195d51efc28ef325284c41d7fdd",
"job": "logs",
"lines": 679
},
"executable": {
"mode": "real_subprocess",
"shell": false,
"worker": "/Users/boj/book/ai-agent-book/chapter6/async-agent/analysis_worker.py",
"worker_sha256": "ab700e034f63e4b8f83dfb4a6156745b7ab7c9352750c63a900f2632acb134c7",
"input": "/Users/boj/book/ai-agent-book/book/chapter6.md",
"input_sha256": "4184460334544d326bb7ad4db349b8c583790195d51efc28ef325284c41d7fdd",
"job": "logs",
"rate_percent_per_logical_second": 4.5,
"tick_real_seconds": 0.15,
"argv_sha256": "1c6aa3b4072446e8286dce865f45c6bb1c93733319bf7501adbb555bc6a7973c",
"pid": 92027,
"returncode": 0,
"stdout_sha256": "7da29da059869ca8f939dd6d0d4c4a299d9e02a53592773c71517971af545ebd",
"stdout_lines": 24,
"stderr_sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855",
"elapsed_seconds": 3.599
}
}
]
}
@@ -0,0 +1,29 @@
{
"experiment": "6-2",
"campaign_id": "real_subprocess_20260730T052500Z",
"generated_at": "2026-07-29T21:28:45.232118+00:00",
"tick_real_seconds": 0.15,
"elapsed_seconds": 19.504,
"scenario_status": {
"async_command_and_immediate_question": "recorded",
"queued_batch_to_japanese_html": "recorded",
"interrupt_terminates_and_recovers": "recorded",
"parallel_progress_threshold_cancellation": "recorded"
},
"acceptance": {
"status": "passed",
"gates": {
"exact_four_scenarios": true,
"real_subprocess_receipts_only": true,
"scenario_1_nonblocking_and_immediate_response": true,
"scenario_2_deferred_events_batched_once": true,
"scenario_2_japanese_html_artifact": true,
"scenario_3_os_process_cancelled_then_recovered": true,
"scenario_4_exact_rates_and_fast_first": true,
"scenario_4_query_once_and_cancel_only_under_threshold": true,
"scenario_4_integrated_report_hashed": true
},
"protocol_sha256": "536c1dc0a187b8795c92b2c11babbf37c54b29215a69226221722567ba867fca"
},
"status": "passed"
}