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:
@@ -0,0 +1,7 @@
|
||||
{"step": 1, "timestamp_utc": "2026-08-03T15:29:27.512482+00:00", "note": "Open LibreOffice Options with its keyboard shortcut.", "action": "import pyautogui, time\npyautogui.hotkey('alt','f12')\ntime.sleep(3)", "reward": 0, "done": false, "info": {}, "screenshot": "step-001.png"}
|
||||
{"step": 2, "timestamp_utc": "2026-08-03T15:29:48.301346+00:00", "note": "Expand the Load/Save settings category.", "action": "import pyautogui, time\npyautogui.click(575,580)\ntime.sleep(2)", "reward": 0, "done": false, "info": {}, "screenshot": "step-002.png"}
|
||||
{"step": 3, "timestamp_utc": "2026-08-03T15:30:16.116263+00:00", "note": "Open the Load/Save subtree using its disclosure arrow.", "action": "import pyautogui, time\npyautogui.click(519,579)\ntime.sleep(2)", "reward": 0, "done": false, "info": {}, "screenshot": "step-003.png"}
|
||||
{"step": 4, "timestamp_utc": "2026-08-03T15:30:39.750396+00:00", "note": "Open Load/Save > General, where recovery auto-save is configured.", "action": "import pyautogui, time\npyautogui.click(578,602)\ntime.sleep(3)", "reward": 0, "done": false, "info": {}, "screenshot": "step-004.png"}
|
||||
{"step": 5, "timestamp_utc": "2026-08-03T15:31:09.739262+00:00", "note": "Enable AutoRecovery saving and change its interval from 10 minutes to 3 minutes.", "action": "import pyautogui, time\npyautogui.click(827,398)\ntime.sleep(1)\npyautogui.click(1121,398)\npyautogui.hotkey('ctrl','a')\npyautogui.write('3')\ntime.sleep(2)", "reward": 0, "done": false, "info": {}, "screenshot": "step-005.png"}
|
||||
{"step": 6, "timestamp_utc": "2026-08-03T15:31:41.122618+00:00", "note": "Commit the settings, then reopen Options to verify the persisted value before freezing.", "action": "import pyautogui, time\npyautogui.click(1437,859)\ntime.sleep(3)\npyautogui.hotkey('alt','f12')\ntime.sleep(3)", "reward": 0, "done": false, "info": {}, "screenshot": "step-006.png"}
|
||||
{"step": 7, "timestamp_utc": "2026-08-03T15:32:12.478588+00:00", "note": "Close the verified Options dialog without altering the persisted setting.", "action": "import pyautogui, time\npyautogui.click(1421,858)\ntime.sleep(2)", "reward": 0, "done": false, "info": {}, "screenshot": "step-007.png"}
|
||||
@@ -0,0 +1,13 @@
|
||||
{"step": 1, "timestamp_utc": "2026-08-03T15:36:07.393867+00:00", "note": "Open the Impress View menu to switch from the slide canvas to presenter Notes view.", "action": "import pyautogui, time\npyautogui.click(175,75)\ntime.sleep(2)", "reward": 0, "done": false, "info": {}, "screenshot": "step-001.png"}
|
||||
{"step": 2, "timestamp_utc": "2026-08-03T15:36:37.723337+00:00", "note": "Switch the selected slide into Notes view.", "action": "import pyautogui, time\npyautogui.click(207,151)\ntime.sleep(4)", "reward": 0, "done": false, "info": {}, "screenshot": "step-002.png"}
|
||||
{"step": 3, "timestamp_utc": "2026-08-03T15:37:15.236852+00:00", "note": "Advance to slide 2 in Notes view to read its presenter note.", "action": "import pyautogui, time\npyautogui.press('pagedown')\ntime.sleep(3)", "reward": 0, "done": false, "info": {}, "screenshot": "step-003.png"}
|
||||
{"step": 4, "timestamp_utc": "2026-08-03T15:37:50.524210+00:00", "note": "Advance to slide 3 in Notes view to read its presenter note.", "action": "import pyautogui, time\npyautogui.press('pagedown')\ntime.sleep(3)", "reward": 0, "done": false, "info": {}, "screenshot": "step-004.png"}
|
||||
{"step": 5, "timestamp_utc": "2026-08-03T15:38:14.951726+00:00", "note": "Advance to slide 4 in Notes view to read its presenter note.", "action": "import pyautogui, time\npyautogui.press('pagedown')\ntime.sleep(3)", "reward": 0, "done": false, "info": {}, "screenshot": "step-005.png"}
|
||||
{"step": 6, "timestamp_utc": "2026-08-03T15:38:50.832395+00:00", "note": "Advance to slide 5 in Notes view to read its presenter note.", "action": "import pyautogui, time\npyautogui.press('pagedown')\ntime.sleep(3)", "reward": 0, "done": false, "info": {}, "screenshot": "step-006.png"}
|
||||
{"step": 7, "timestamp_utc": "2026-08-03T15:39:15.292584+00:00", "note": "Advance to slide 6 in Notes view to read its presenter note.", "action": "import pyautogui, time\npyautogui.press('pagedown')\ntime.sleep(3)", "reward": 0, "done": false, "info": {}, "screenshot": "step-007.png"}
|
||||
{"step": 8, "timestamp_utc": "2026-08-03T15:39:40.966594+00:00", "note": "Advance to slide 7 in Notes view to read its presenter note.", "action": "import pyautogui, time\npyautogui.press('pagedown')\ntime.sleep(3)", "reward": 0, "done": false, "info": {}, "screenshot": "step-008.png"}
|
||||
{"step": 9, "timestamp_utc": "2026-08-03T15:40:08.165115+00:00", "note": "Advance to slide 8 in Notes view to check whether it has a presenter note.", "action": "import pyautogui, time\npyautogui.press('pagedown')\ntime.sleep(3)", "reward": 0, "done": false, "info": {}, "screenshot": "step-009.png"}
|
||||
{"step": 10, "timestamp_utc": "2026-08-03T15:41:46.354993+00:00", "note": "Advance to slide 9 in Notes view to read its presenter note.", "action": "import pyautogui, time\npyautogui.press('pagedown')\ntime.sleep(3)", "reward": 0, "done": false, "info": {}, "screenshot": "step-010.png"}
|
||||
{"step": 11, "timestamp_utc": "2026-08-03T15:42:11.114457+00:00", "note": "Open LibreOffice Writer from the visible launcher to create the requested unformatted document.", "action": "import pyautogui, time\npyautogui.click(35, 336)\ntime.sleep(6)", "reward": 0, "done": false, "info": {}, "screenshot": "step-011.png"}
|
||||
{"step": 12, "timestamp_utc": "2026-08-03T15:42:33.891841+00:00", "note": "Enter only the eight actual presenter-note texts in slide order as plain paragraphs, then open Save As.", "action": "import pyautogui, time\ntext = 'This is opening slide.\\nCover slide option #1\\nCover slide option #3\\nThis is a graph.\\nThis is a table.\\nThis is item lists.\\nThis is an inserted image.\\nBlank ending slide'\npyautogui.write(text, interval=0.01)\ntime.sleep(3)\npyautogui.hotkey('ctrl', 'shift', 's')\ntime.sleep(4)", "reward": 0, "done": false, "info": {}, "screenshot": "step-012.png"}
|
||||
{"step": 13, "timestamp_utc": "2026-08-03T15:43:14.315037+00:00", "note": "Choose the Desktop, name the file notes.docx, and save in Word 2007-365 format.", "action": "import pyautogui, time\npyautogui.click(457, 247)\ntime.sleep(2)\npyautogui.click(1000, 164)\npyautogui.hotkey('ctrl', 'a')\npyautogui.write('notes.docx', interval=0.08)\ntime.sleep(1)\npyautogui.click(1551, 164)\ntime.sleep(5)", "reward": 0, "done": false, "info": {}, "screenshot": "step-013.png"}
|
||||
@@ -0,0 +1,3 @@
|
||||
{"step": 1, "timestamp_utc": "2026-08-03T15:33:47.310918+00:00", "note": "Enter a VLOOKUP in F2, mapping the headoffice in E2 to the fixed branch/officer table A2:B7.", "action": "import pyautogui, time\n# Go directly to the first output cell.\npyautogui.click(145,185)\npyautogui.hotkey('ctrl','a')\npyautogui.write('F2')\npyautogui.press('enter')\n# Enter a VLOOKUP against the fixed branch/officer table.\npyautogui.write('=VLOOKUP(E2;$A$2:$B$7;2;0)', interval=0.03)\npyautogui.press('enter')\ntime.sleep(3)", "reward": 0, "done": false, "info": {}, "screenshot": "step-001.png"}
|
||||
{"step": 2, "timestamp_utc": "2026-08-03T15:34:13.454292+00:00", "note": "Select F2:F12 and fill the VLOOKUP formula down so each row uses its own headoffice reference.", "action": "import pyautogui, time\npyautogui.click(145,185)\npyautogui.hotkey('ctrl','a')\npyautogui.write('F2:F12')\npyautogui.press('enter')\npyautogui.hotkey('ctrl','d')\ntime.sleep(4)", "reward": 0, "done": false, "info": {}, "screenshot": "step-002.png"}
|
||||
{"step": 3, "timestamp_utc": "2026-08-03T15:34:37.759069+00:00", "note": "Save the completed workbook in place.", "action": "import pyautogui, time\npyautogui.hotkey('ctrl','s')\ntime.sleep(5)", "reward": 0, "done": false, "info": {}, "screenshot": "step-003.png"}
|
||||
@@ -0,0 +1,75 @@
|
||||
{
|
||||
"benchmark": "OSWorld-Verified",
|
||||
"operator": "Codex acting as the human operator",
|
||||
"source_commit": "8365edc975efd0477a0d62444a5beed562ab5a7b",
|
||||
"environment": "Upstream Docker/KVM Ubuntu VM with Ubuntu.qcow2; all computer interaction used visible pyautogui actions through the benchmark environment.",
|
||||
"artifact_policy": "Full-resolution step screenshots remain outside Git. The adjacent easy-, medium-, and hard-trajectory.jsonl files preserve every exact pyautogui action submitted before evaluation; this file preserves the readable trajectory and first official result.",
|
||||
"cases": [
|
||||
{
|
||||
"tier": "easy",
|
||||
"task_id": "2cd43775-7085-45d8-89fa-9e35c0a915cf",
|
||||
"about": "Enable LibreOffice AutoRecovery and set its interval to three minutes.",
|
||||
"trajectory": [
|
||||
{"step": 1, "note": "Open LibreOffice Options with its keyboard shortcut.", "action": "pyautogui.hotkey('alt','f12')"},
|
||||
{"step": 2, "note": "Select the Load/Save settings category.", "action": "pyautogui.click(575,580)"},
|
||||
{"step": 3, "note": "Expand the Load/Save subtree.", "action": "pyautogui.click(519,579)"},
|
||||
{"step": 4, "note": "Open Load/Save > General.", "action": "pyautogui.click(578,602)"},
|
||||
{"step": 5, "note": "Enable AutoRecovery and replace 10 with 3 minutes.", "action": "pyautogui.click(827,398); pyautogui.click(1121,398); pyautogui.hotkey('ctrl','a'); pyautogui.write('3')"},
|
||||
{"step": 6, "note": "Commit the settings and reopen Options to verify persistence.", "action": "pyautogui.click(1437,859); pyautogui.hotkey('alt','f12')"},
|
||||
{"step": 7, "note": "Close the verified dialog without changing it.", "action": "pyautogui.click(1421,858)"}
|
||||
],
|
||||
"frozen_before_evaluation": true,
|
||||
"official_result": 1,
|
||||
"result": "passed",
|
||||
"evaluation_explanation": "The official LibreOffice configuration evaluator found AutoRecovery enabled with a three-minute interval."
|
||||
},
|
||||
{
|
||||
"tier": "medium",
|
||||
"task_id": "7e429b8d-a3f0-4ed0-9b58-08957d00b127",
|
||||
"about": "Use a branch/officer lookup table in Calc to fill officer names for every row in a second table.",
|
||||
"trajectory": [
|
||||
{"step": 1, "note": "Enter a VLOOKUP in F2 against the fixed A2:B7 lookup table.", "action": "Select F2; enter =VLOOKUP(E2;$A$2:$B$7;2;0); press Enter"},
|
||||
{"step": 2, "note": "Fill the formula through all destination rows.", "action": "Select F2:F12; press Ctrl+D"},
|
||||
{"step": 3, "note": "Save the completed workbook in place.", "action": "pyautogui.hotkey('ctrl','s')"}
|
||||
],
|
||||
"frozen_before_evaluation": true,
|
||||
"official_result": 1.0,
|
||||
"result": "passed",
|
||||
"evaluation_explanation": "The official spreadsheet evaluator found the correct officer for every branch row. The absolute lookup range remained fixed while E2 changed by row."
|
||||
},
|
||||
{
|
||||
"tier": "hard",
|
||||
"task_id": "51f5801c-18b3-4f25-b0c3-02f85507a078",
|
||||
"about": "Extract all real presenter notes from an Impress presentation into an unformatted Word document named notes.docx on the Desktop.",
|
||||
"trajectory": [
|
||||
{"step": 1, "note": "Open Impress's View menu.", "action": "pyautogui.click(175,75)"},
|
||||
{"step": 2, "note": "Switch to Notes view.", "action": "pyautogui.click(207,151)"},
|
||||
{"step": 3, "note": "Advance to slide 2 and read its note.", "action": "pyautogui.press('pagedown')"},
|
||||
{"step": 4, "note": "Advance to slide 3 and read its note.", "action": "pyautogui.press('pagedown')"},
|
||||
{"step": 5, "note": "Advance to slide 4 and read its note.", "action": "pyautogui.press('pagedown')"},
|
||||
{"step": 6, "note": "Advance to slide 5 and read its note.", "action": "pyautogui.press('pagedown')"},
|
||||
{"step": 7, "note": "Advance to slide 6 and read its note.", "action": "pyautogui.press('pagedown')"},
|
||||
{"step": 8, "note": "Advance to slide 7; observe only the empty Click to add Notes placeholder.", "action": "pyautogui.press('pagedown')"},
|
||||
{"step": 9, "note": "Advance to slide 8 and read its note.", "action": "pyautogui.press('pagedown')"},
|
||||
{"step": 10, "note": "Advance to slide 9 and read its note.", "action": "pyautogui.press('pagedown')"},
|
||||
{"step": 11, "note": "Open LibreOffice Writer from the visible launcher.", "action": "pyautogui.click(35,336)"},
|
||||
{"step": 12, "note": "Type only the eight real note texts in slide order and open Save As.", "action": "Type eight plain paragraphs; press Ctrl+Shift+S"},
|
||||
{"step": 13, "note": "Choose Desktop, name the file notes.docx, and save as Word 2007-365.", "action": "Select Desktop; type notes.docx; click Save"}
|
||||
],
|
||||
"extracted_text": [
|
||||
"This is opening slide.",
|
||||
"Cover slide option #1",
|
||||
"Cover slide option #3",
|
||||
"This is a graph.",
|
||||
"This is a table.",
|
||||
"This is item lists.",
|
||||
"This is an inserted image.",
|
||||
"Blank ending slide"
|
||||
],
|
||||
"frozen_before_evaluation": true,
|
||||
"official_result": 1,
|
||||
"result": "passed",
|
||||
"evaluation_explanation": "The official artifact evaluator accepted Desktop/notes.docx. It contained the eight actual presenter notes in order, omitted slide 7's empty placeholder, and added no slide numbers or formatting."
|
||||
}
|
||||
]
|
||||
}
|
||||
Reference in New Issue
Block a user