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
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:
+1
@@ -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>
|
||||
+44
@@ -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
|
||||
}
|
||||
}
|
||||
}
|
||||
+45
@@ -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"
|
||||
}
|
||||
]
|
||||
}
|
||||
+28
@@ -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
|
||||
}
|
||||
}
|
||||
+109
@@ -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
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
+161
@@ -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
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
+286
@@ -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"
|
||||
}
|
||||
}
|
||||
+136
@@ -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
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
+29
@@ -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"
|
||||
}
|
||||
Reference in New Issue
Block a user