Compare commits

..

202 Commits

Author SHA1 Message Date
amanape da500222d5 Change how changes tab loads items 2025-05-27 20:05:11 +04:00
Yunfeng Yu 6f1effba5b Fix Feedback Submission Retry (#8693)
Co-authored-by: Test User <test@example.com>
Co-authored-by: Auroral <1596588744@163.com>
2025-05-27 14:48:30 +00:00
dependabot[bot] bc223885a0 chore(deps): bump the version-all group across 1 directory with 9 updates (#8709)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: amanape <83104063+amanape@users.noreply.github.com>
2025-05-27 14:33:27 +00:00
sp.wack 0dcd5e9d30 hotfix(frontend): Clear error message on WS connect (#8725) 2025-05-27 10:12:56 -04:00
Engel Nyst 8ee85a45a2 Reduce more logs (#8712) 2025-05-27 16:05:04 +02:00
Marco Dalalba 342563d113 fix: url repo encode (#8713) 2025-05-27 17:39:13 +04:00
KianoshArian af037b3a8a fix(frontend): fix mobile view of SettingsModal (#8711) 2025-05-27 17:38:31 +04:00
sp.wack 33b714e0a0 fix(frontend): Consider agent state errors (#8672) 2025-05-27 09:30:53 -04:00
Kent Johnson 35d2281717 feat: Add dev container (#8589) 2025-05-26 21:35:27 -04:00
dependabot[bot] 83bfbc7045 chore(deps): bump the version-all group across 1 directory with 16 updates (#8710)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-05-26 23:35:15 +02:00
CoreJa 11e6d40c7a bug: fix fn_call error during API response (#8695)
Co-authored-by: Engel Nyst <engel.nyst@gmail.com>
2025-05-26 14:10:10 +02:00
mamoodi 41d84ee8cd Update the versions to align with already released 0.39.2 (#8673) 2025-05-25 12:09:19 -04:00
CoreJa 0c2924453f bug: fix cache_control missing during convertion (#8692)
Co-authored-by: Engel Nyst <engel.nyst@gmail.com>
2025-05-25 15:35:34 +02:00
Graham Neubig 77cd05c33b Fix setup.sh error logging (#8678) 2025-05-24 17:23:26 -04:00
sp.wack ff22712686 fix(frontend): Use uppercase event type for generic events without translation keys (#8671)
Co-authored-by: openhands <openhands@all-hands.dev>
2025-05-24 18:20:08 +00:00
sp.wack edc43ca60d fix(frontend): Fix actionHasObservationPair function to correctly identify pairs (#8661)
Co-authored-by: openhands <openhands@all-hands.dev>
Co-authored-by: Xingyao Wang <xingyao@all-hands.dev>
2025-05-24 09:39:37 +00:00
sp.wack b838ea0427 hotfix(frontend): Prevent too many re-renders (#8670) 2025-05-24 09:38:51 +00:00
tofarr 9a5e5956fc Added ability to read specify permitted origins in env (#8675)
Co-authored-by: openhands <openhands@all-hands.dev>
2025-05-23 19:18:20 -06:00
Robert Brennan 35426a04d8 fix warning for workspace_base (#8667) 2025-05-23 15:11:53 -04:00
Rohit Malhotra 598d19cd5d [Feat]: slack conversation instruction template (#8648) 2025-05-23 14:39:53 -04:00
Rohit Malhotra dd3b3d1253 [Fix]: conversation ID attachment in create_new_conversation (#8669) 2025-05-23 14:37:10 -04:00
tofarr 693d912361 Fix conversation initial state (#8647) 2025-05-23 17:36:58 +00:00
Xingyao Wang 31ad7fc175 chore: add claude 4 to verified mode & global replace 3.7 to claude 4 (#8665)
Co-authored-by: openhands <openhands@all-hands.dev>
2025-05-23 17:35:30 +00:00
Xingyao Wang 5e43dbadcb feat(frontend): Display MCP tool name and arguments as JSON in MCPObservation when visualized in frontend (#8644)
Co-authored-by: openhands <openhands@all-hands.dev>
2025-05-23 17:21:22 +00:00
Ryan H. Tran b0b5a6c2a1 Expose partial MCP server addition failure logs (#8655) 2025-05-24 00:17:31 +07:00
chuckbutkus 92f8061558 Fix so redirect URL is in OAuth state (#8653) 2025-05-23 17:09:47 +00:00
mamoodi 2bb1b7b7aa Fix tip link (#8666) 2025-05-24 00:56:35 +08:00
Howie Zhou ca9fe7c5c8 docs: fix debug command (#8654) 2025-05-23 12:43:27 -04:00
Xingyao Wang a40443f5f4 feat(agent): First-class Search API support via MCP (#8638)
Co-authored-by: openhands <openhands@all-hands.dev>
2025-05-24 00:07:48 +08:00
sp.wack 20983a2128 refactor(frontend): Simplify useConversation hook by removing context dependency (#8659)
Co-authored-by: openhands <openhands@all-hands.dev>
2025-05-23 19:56:00 +04:00
Zhaoling Chen efe287ce34 integrate LocAgent into OpenHands (#7371)
Co-authored-by: czlll <gangda@huaihe.usc.edu>
Co-authored-by: Hoang Tran <descience.thh10@gmail.com>
2025-05-23 22:42:58 +07:00
sp.wack fa5b52298e fix(frontend): Fix action buttons display bugs in chat interface (#8660)
Co-authored-by: openhands <openhands@all-hands.dev>
2025-05-23 15:35:41 +00:00
dependabot[bot] 57bfef3735 chore(deps): bump the version-all group in /frontend with 2 updates (#8635)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: amanape <83104063+amanape@users.noreply.github.com>
2025-05-23 13:55:42 +00:00
Graham Neubig f3a127a17f Fix unlocalized elements in frontend (#8650)
Co-authored-by: openhands <openhands@all-hands.dev>
2025-05-23 08:40:10 -04:00
Robert Brennan 8cc039997f Downgrade info to debug log (#8643) 2025-05-23 13:43:40 +02:00
Robert Brennan 50d4c79094 Add CLIRuntime implementation for local command execution (#8264)
Co-authored-by: openhands <openhands@all-hands.dev>
Co-authored-by: Engel Nyst <enyst@users.noreply.github.com>
Co-authored-by: Engel Nyst <engel.nyst@gmail.com>
2025-05-23 03:03:22 +00:00
tofarr f7cdf4720f Fix gitlab header error in console (#8631) 2025-05-22 14:22:02 -06:00
mamoodi 6d3c2170b1 Release 0.39.1 (#8608)
Co-authored-by: tofarr <tofarr@gmail.com>
Co-authored-by: Rohit Malhotra <rohitvinodmalhotra@gmail.com>
2025-05-22 16:18:54 -04:00
Xingyao Wang 926b425e12 add claude 4 to prompt caching and fn call list; do not add icl for devstral (#8642) 2025-05-22 19:10:00 +00:00
Ryan H. Tran 3980ba53c9 Add option to run patch evaluation on Modal (#8607)
Co-authored-by: Engel Nyst <enyst@users.noreply.github.com>
2025-05-23 00:45:45 +07:00
Xingyao Wang be78cc07bd docs: add documentation for adding user settings and tooltips (#8634)
Co-authored-by: openhands <openhands@all-hands.dev>
2025-05-22 17:38:54 +00:00
Graham Neubig 13f9acd48a Fix Cloud documentation structure and consolidate issue resolver information (#8558)
Co-authored-by: openhands <openhands@all-hands.dev>
Co-authored-by: mamoodi <mamoodiha@gmail.com>
2025-05-22 11:05:15 -04:00
Xingyao Wang 2906a9023f fix(frontend): MCP tool name rendering (#8623)
Co-authored-by: openhands <openhands@all-hands.dev>
2025-05-22 21:46:40 +08:00
dependabot[bot] 66f33bfa96 chore(deps-dev): bump swagger-ui-dist from 5.21.0 to 5.22.0 in /docs in the version-all group (#8611)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-05-22 17:11:14 +04:00
kotauchisunsun cfa2725abd Split IssueResolver class into a separate file (#8619) 2025-05-22 09:53:55 +02:00
Rohit Malhotra 097f757c65 [Refactor]: Update resolver instructions (#8601)
Co-authored-by: openhands <openhands@all-hands.dev>
Co-authored-by: Engel Nyst <enyst@users.noreply.github.com>
2025-05-21 19:26:48 -04:00
Rohit Malhotra ac87ff8d27 [Fix]: Don't start conversations without user instructions for remote api key conversations (#8626) 2025-05-21 17:51:48 -04:00
tofarr a3d1a92353 Nested Conversation Support (#8588)
Co-authored-by: openhands <openhands@all-hands.dev>
Co-authored-by: Robert Brennan <contact@rbren.io>
2025-05-21 15:17:30 -06:00
Xingyao Wang 70573dcbc0 fix(mcp): fix the config conflict between microagent MCP tools & MCP config (#8620)
Co-authored-by: openhands <openhands@all-hands.dev>
2025-05-21 20:26:02 +00:00
Engel Nyst 637cb0726a specify condenser config for evals (#8177)
Co-authored-by: openhands <openhands@all-hands.dev>
2025-05-21 22:08:57 +02:00
tofarr 2bd10de636 Revert "Fix for issue where initial env vars are not passed to runtime" (#8624) 2025-05-21 20:00:56 +00:00
dependabot[bot] 70322c8418 chore(deps): bump the version-all group across 1 directory with 8 updates (#8617)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: amanape <83104063+amanape@users.noreply.github.com>
2025-05-21 19:34:59 +00:00
Rohit Malhotra 8b08958efe [Fix]: make mcp config optional in settings (#8622) 2025-05-21 19:17:43 +00:00
dependabot[bot] 5b021ad1bb chore(deps): bump the version-all group across 1 directory with 2 updates (#8618)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-05-21 16:39:07 +00:00
Rohit Malhotra 890796cc9d [Feat]: Git mcp server to open PRs (#8348)
Co-authored-by: openhands <openhands@all-hands.dev>
Co-authored-by: Xingyao Wang <xingyao@all-hands.dev>
Co-authored-by: Robert Brennan <accounts@rbren.io>
2025-05-21 11:48:02 -04:00
sp.wack 7305c8fb31 hotfix(frontend): Prevent merging conversation events when switching between conversations (#8614) 2025-05-21 15:12:04 +00:00
Xingyao Wang f1897b8095 docs: add Devstral MLX link for local models documentation (#8615) 2025-05-21 15:04:50 +00:00
Engel Nyst c26ef180f2 Fix unsupported MCP tools param (#8610) 2025-05-21 14:41:01 +00:00
Robert Brennan 37e9933092 Revert "Fix passing environment" (#8612) 2025-05-21 14:32:47 +00:00
Xingyao Wang c353fb6e7e docs: update local llm documentation (#8609)
Co-authored-by: mamoodi <mamoodiha@gmail.com>
2025-05-21 14:05:21 +00:00
chuckbutkus 3280f450ac Update to login if session times out and return to previous conversation (#8587)
Co-authored-by: openhands <openhands@all-hands.dev>
2025-05-20 22:10:28 +00:00
Graham Neubig 6335afb010 Fix environment variable casting for dict and list types (#8494)
Co-authored-by: openhands <openhands@all-hands.dev>
2025-05-20 17:47:07 -04:00
mamoodi 40d9b0b13a Remove duplicated documentation from cognition (#8600) 2025-05-20 21:23:12 +00:00
Boxuan Li 005c5d6bde Document native windows support without WSL (#8567)
Co-authored-by: mamoodi <mamoodiha@gmail.com>
2025-05-20 20:54:32 +00:00
Rohit Malhotra 0deabd5935 [Feat]: add context msg to new conversation endpoint (#8586)
Co-authored-by: openhands <openhands@all-hands.dev>
Co-authored-by: Engel Nyst <enyst@users.noreply.github.com>
2025-05-20 20:47:15 +00:00
Erkin Alp Güney 6f5bb4341f Add a DeepWiki reference (#8350) 2025-05-20 16:20:56 -04:00
dependabot[bot] a5daf0e3c1 chore(deps): bump the version-all group with 6 updates (#8596)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-05-20 21:35:22 +02:00
tofarr 3873d9f002 Fix for issue where initial env vars are not passed to runtime (#8597) 2025-05-20 10:58:43 -06:00
Robert Brennan 5e1039e4b5 Make chat auto-scroll functionality more explicit (#8562)
Co-authored-by: openhands <openhands@all-hands.dev>
2025-05-20 12:58:05 -04:00
mamoodi d648d249d8 Release 0.39.0 (#8539) 2025-05-20 11:39:55 -04:00
tofarr aa55da27fa Fix unlocalized strings in frontend components (#8585)
Co-authored-by: openhands <openhands@all-hands.dev>
2025-05-19 19:12:26 +00:00
tofarr e69d6b3ef1 fix: add missing translation keys to declaration.ts (#8580)
Co-authored-by: openhands <openhands@all-hands.dev>
2025-05-19 11:49:57 -06:00
tofarr be1ddaa57d Add conversationUrl static variable with getter and setter methods (#8531)
Co-authored-by: openhands <openhands@all-hands.dev>
2025-05-19 11:28:07 -06:00
Robert Brennan 7b59e81048 make scrollbar prettier (#8581) 2025-05-19 17:23:47 +00:00
dependabot[bot] 470687f826 chore(deps): bump the mcp-packages group with 2 updates (#8546)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-05-19 18:37:11 +02:00
tofarr 38b4d93237 Add Session API Key Authentication for Runtime Communication (#8550) 2025-05-19 09:59:22 -06:00
dependabot[bot] 872b97a3c8 chore(deps): bump the version-all group across 1 directory with 20 updates (#8545)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: amanape <83104063+amanape@users.noreply.github.com>
2025-05-19 15:49:53 +00:00
sp.wack 14334040f1 chore(frontend): Refactor chat interface-related event handling (#8403) 2025-05-19 15:15:09 +00:00
sp.wack b244138ec5 fix(frontend): Prevent making too many calls to /git/changes on conversation load (#8579) 2025-05-19 18:57:18 +04:00
Xingyao Wang 4a3d2e6859 Fix #8551: Show images produced in Jupyter Notebook to LLM directly (#8552)
Co-authored-by: openhands <openhands@all-hands.dev>
2025-05-19 14:14:00 +00:00
luolin101 1a3cb16ba6 add Visual SWE-bench benchmark (#7131)
Co-authored-by: tsukimi <yuailun@pku.edu.cn>
Co-authored-by: Ryan H. Tran <descience.thh10@gmail.com>
2025-05-19 12:08:46 +07:00
Xingyao Wang 2ecc39ffcc [eval]: disable MCP for SWE-Bench evaluation (#8574)
Co-authored-by: openhands <openhands@all-hands.dev>
Co-authored-by: Engel Nyst <enyst@users.noreply.github.com>
Co-authored-by: Engel Nyst <engel.nyst@gmail.com>
2025-05-19 01:32:46 +00:00
Graham Neubig 0b26174d60 Add documentation microagent (#8563)
Co-authored-by: openhands <openhands@all-hands.dev>
2025-05-18 16:34:15 -04:00
Calvin Smith b0005d4e09 Limit size of browser events (#8559)
Co-authored-by: Calvin Smith <calvin@all-hands.dev>
2025-05-18 11:35:09 -06:00
Graham Neubig 2dc7b37fe8 Fix flaky TestLocalFileStore tests (#8569)
Co-authored-by: openhands <openhands@all-hands.dev>
2025-05-18 06:37:28 -04:00
Carlos Freund 27c18f5bdd build(makefile) Develop in OpenhandsCloud (#7440)
Co-authored-by: openhands <openhands@all-hands.dev>
Co-authored-by: Boxuan Li <liboxuan@connect.hku.hk>
Co-authored-by: Engel Nyst <enyst@users.noreply.github.com>
2025-05-17 14:40:46 +00:00
Graham Neubig 5077fea5c7 Fix: Run setup.sh script in GitHub resolver (#8548)
Co-authored-by: openhands <openhands@all-hands.dev>
2025-05-17 09:52:34 -04:00
Justin Coffi bf383b4881 Add SSH Microagent (#8436)
Co-authored-by: openhands <openhands@all-hands.dev>
Co-authored-by: Xingyao Wang <xingyaoww@gmail.com>
2025-05-17 05:56:51 +00:00
OpenHands c17b0ebfc6 Fix issue #8304: [Bug]: Non-native tool use converter fails when builtin tools are disabled (#8310)
Co-authored-by: Engel Nyst <enyst@users.noreply.github.com>
Co-authored-by: Engel Nyst <engel.nyst@gmail.com>
Co-authored-by: Xingyao Wang <xingyao@all-hands.dev>
2025-05-17 06:37:45 +02:00
Xingyao Wang 1f390430e5 feat(MCP, microagent): MCP-support for Repo Microagent & add fetch as default tool (#8360)
Co-authored-by: openhands <openhands@all-hands.dev>
Co-authored-by: Engel Nyst <enyst@users.noreply.github.com>
2025-05-16 23:32:38 +00:00
Robert Brennan 819bad0777 Fix: Only show login modal for genuine 401 errors, not connection issues (#8540)
Co-authored-by: openhands <openhands@all-hands.dev>
2025-05-16 13:33:06 -04:00
dependabot[bot] 2faed14139 chore(deps): bump the version-all group with 5 updates (#8541)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: openhands <openhands@all-hands.dev>
2025-05-16 17:17:38 +00:00
tofarr 4733270e3c Add event search endpoints with filtering and pagination (#8538)
Co-authored-by: openhands <openhands@all-hands.dev>
2025-05-16 09:51:40 -06:00
Robert Brennan 21dd91de63 Add info logging for 401 Unauthorized responses (#8527)
Co-authored-by: openhands <openhands@all-hands.dev>
2025-05-16 11:46:15 -04:00
Graham Neubig 25619c5a93 Fix #8510: Improve error messages for invalid microagent format (#8511)
Co-authored-by: openhands <openhands@all-hands.dev>
2025-05-16 15:01:39 +00:00
Robert Brennan 15f71e7ed6 Update microagent message from "Activated" to "ready" (#8536)
Co-authored-by: openhands <openhands@all-hands.dev>
2025-05-16 10:44:37 -04:00
mamoodi 5b583e5f27 Organization and user microagents (#8506) 2025-05-16 10:42:32 -04:00
Rohit Malhotra c191a17afb [Fix]: don't access secrets if doesn't exist (#8535)
Co-authored-by: openhands <openhands@all-hands.dev>
2025-05-16 14:30:16 +00:00
Robert Brennan 8ec5d0e043 Add WebSocket connection documentation (#8404)
Co-authored-by: openhands <openhands@all-hands.dev>
2025-05-16 10:12:05 -04:00
Robert Brennan f3f038bb60 Fix mypy error for pkg_resources import (#8537)
Co-authored-by: openhands <openhands@all-hands.dev>
2025-05-16 14:06:41 +00:00
Robert Brennan b8d3027cfe Always enable logout button regardless of GitHub connection status (#8529)
Co-authored-by: openhands <openhands@all-hands.dev>
2025-05-16 09:09:33 -04:00
Rohit Malhotra feb04dc65f Plumb custom secrets to runtime (#8330)
Co-authored-by: openhands <openhands@all-hands.dev>
2025-05-15 20:06:30 -04:00
Engel Nyst 1f827170f4 Fix resolver test (#8530) 2025-05-15 21:57:02 +00:00
Engel Nyst f7cb2d0f64 Restore previous conversation in CLI (#8431) 2025-05-15 23:47:41 +02:00
tofarr 033788c2d0 API Updates to facilitate nested runtimes. (#8525) 2025-05-15 15:38:09 -06:00
dependabot[bot] 21d0990be4 chore(deps): bump the version-all group with 7 updates (#8522)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: openhands <openhands@all-hands.dev>
Co-authored-by: Engel Nyst <enyst@users.noreply.github.com>
2025-05-15 20:17:51 +00:00
tofarr 6227073cff Add missing Ukrainian translations for secrets-related keys (#8526)
Co-authored-by: openhands <openhands@all-hands.dev>
2025-05-15 19:25:06 +00:00
Graham Neubig 4c38113cb7 Fix CI to check for missing translations (#8486)
Co-authored-by: openhands <openhands@all-hands.dev>
2025-05-15 13:31:44 -04:00
Emmanuel Ferdman fb516dfa0f Remove obsolete task.py file (#8517)
Signed-off-by: Emmanuel Ferdman <emmanuelferdman@gmail.com>
2025-05-15 18:54:25 +02:00
sp.wack 04d585513c feat: secrets manager settings (#8068)
Co-authored-by: openhands <openhands@all-hands.dev>
Co-authored-by: rohitvinodmalhotra@gmail.com <rohitvinodmalhotra@gmail.com>
2025-05-15 11:30:10 -04:00
Robert Brennan 7a4ea23b9d Revert "Add Docker, Java, Golang, and other programming languages to runtime image" (#8518) 2025-05-15 14:29:15 +00:00
sp.wack 7490c1927f fix(frontend): Failing tests (#8519) 2025-05-15 14:20:52 +00:00
tofarr 8d2ac59909 Fix passing environment (#8483)
Co-authored-by: openhands <openhands@all-hands.dev>
2025-05-15 07:23:21 -06:00
Ryan H. Tran 68e5f485aa fix: validation error when saving SSE MCP server url on the UI (#8502) 2025-05-15 06:35:06 +00:00
Graham Neubig e4c284f96d Add timeout parameter to bash tool for hard timeout control (#8106)
Co-authored-by: openhands <openhands@all-hands.dev>
Co-authored-by: Xingyao Wang <xingyao@all-hands.dev>
2025-05-15 13:24:42 +08:00
Yueqi Song 3ca585b79f Update run_infer.py to incorporate selection of task based on repo (#8509) 2025-05-15 12:27:28 +08:00
tofarr 7e88d4195f Refactor event store cleanup (#8505)
Co-authored-by: openhands <openhands@all-hands.dev>
2025-05-14 16:20:43 -06:00
Engel Nyst f046efd53d Revert "Make str_replace_editor description more clear (#8434)" (#8501) 2025-05-15 04:08:16 +08:00
Engel Nyst e4586432ad Add top_k (#8480) 2025-05-14 21:46:03 +02:00
sp.wack d956abe56b fix(frontend): Show actions when idle (#8507) 2025-05-14 18:53:32 +00:00
Robert Brennan 6145552841 Add Docker, Java, Golang, and other programming languages to runtime image (#8026)
Co-authored-by: openhands <openhands@all-hands.dev>
2025-05-14 13:46:06 -04:00
dependabot[bot] b1dca48c8e chore(deps): bump the version-all group with 6 updates (#8504)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: openhands <openhands@all-hands.dev>
Co-authored-by: Engel Nyst <enyst@users.noreply.github.com>
2025-05-14 16:39:01 +00:00
Robert Brennan 81ba80dde0 Fix issue #8327: Unable to delete the entire default branch name in input box (#8329)
Co-authored-by: openhands <openhands@all-hands.dev>
2025-05-14 12:07:12 -04:00
mamoodi 08a790c4ca Update default model to sonnet 3.7 in all applicable places (#8489)
Co-authored-by: openhands <openhands@all-hands.dev>
2025-05-14 10:55:34 -04:00
Robert Brennan 1b57fd4d1e Remove github_user_id in favor of user_id (#8406)
Co-authored-by: openhands <openhands@all-hands.dev>
2025-05-14 10:17:35 -04:00
Robert Brennan c36cbf6543 Fix padding on last paragraph in messages (#8491)
Co-authored-by: openhands <openhands@all-hands.dev>
Co-authored-by: Xingyao Wang <xingyao@all-hands.dev>
2025-05-14 10:24:21 +00:00
Xingyao Wang 67d438ea4f Fix workspace mount behavior with SANDBOX_VOLUMES (#8500) 2025-05-14 14:58:03 +08:00
Graham Neubig 154eed148f Fix typing in server directory (#8375)
Co-authored-by: openhands <openhands@all-hands.dev>
Co-authored-by: Rohit Malhotra <rohitvinodmalhotra@gmail.com>
2025-05-13 21:27:59 +00:00
Graham Neubig f9b0fcd76e Add API documentation link to API Keys tab in settings (#8363)
Co-authored-by: openhands <openhands@all-hands.dev>
2025-05-13 20:09:58 +00:00
mamoodi 0782aeb1c4 Update recommended models (#8488)
Co-authored-by: Engel Nyst <enyst@users.noreply.github.com>
2025-05-13 15:46:22 -04:00
dependabot[bot] 55fbb65e05 chore(deps): bump the version-all group across 1 directory with 12 updates (#8478)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: openhands <openhands@all-hands.dev>
2025-05-13 21:20:50 +02:00
mamoodi 1abed30b44 Update MCP docs and LLM docs with more accurate information (#8482) 2025-05-13 13:09:25 -04:00
tofarr 1f29ec836b Fix missing translations in frontend i18n files (#8481)
Co-authored-by: openhands <openhands@all-hands.dev>
2025-05-13 17:02:06 +00:00
Rohit Malhotra 81c754ec65 [Fix]: Don't allow endpoint to modify conversation trigger (#8396) 2025-05-13 11:57:32 -04:00
Rohit Malhotra 880ec57c78 [Fix]: Status icon regression (#8427) 2025-05-13 11:43:35 -04:00
mamoodi e06aac7521 Remove unnecessary frontmatter from repo microagent (#8477) 2025-05-13 11:32:35 -04:00
Graham Neubig 60d9b519e0 Add proper typing to cli directory (#8374)
Co-authored-by: openhands <openhands@all-hands.dev>
2025-05-13 09:55:44 -04:00
Graham Neubig 5ad11e73b8 Proposed update to resolver prompt (#8473) 2025-05-13 13:48:23 +00:00
Graham Neubig 3e5b16b348 Fix translation completeness issues (#8472)
Co-authored-by: openhands <openhands@all-hands.dev>
2025-05-13 09:42:33 -04:00
Graham Neubig f3d0ae3fbf Add type annotations to local runtime implementation (#8376)
Co-authored-by: openhands <openhands@all-hands.dev>
2025-05-13 09:42:07 -04:00
Engel Nyst dea3ddfcc6 Clean up codecov (#8465) 2025-05-13 14:51:47 +02:00
kotauchisunsun 31b2f3c9c2 [refactor]: Refactor sandbox configuration setup in IssueResolver class (#8414) 2025-05-13 13:37:15 +02:00
omahs 4bb6ec2ee5 Fix typos (#8469) 2025-05-13 09:34:21 +00:00
Engel Nyst ae8ed49280 Make str_replace_editor description more clear (#8434) 2025-05-13 13:08:53 +07:00
mamoodi 786e21fb8a Add more run eval options (#8468) 2025-05-13 02:33:14 +00:00
Graham Neubig f317c03b1b Fix inconsistent max_iterations in SWE-bench evaluation (#8467)
Co-authored-by: openhands <openhands@all-hands.dev>
2025-05-13 02:07:57 +00:00
Chase e72153629d fix #8424: change native_tool_calling semantics (#8463) 2025-05-12 19:21:51 -04:00
mamoodi b127d5f656 Add exc_info to remote runtime log (#8457) 2025-05-12 15:45:58 -05:00
tofarr f75fa50b80 Add number of connections to Conversation Info (#8456)
Co-authored-by: openhands <openhands@all-hands.dev>
2025-05-12 13:57:52 -06:00
mamoodi 5a927c8651 Release 0.38.0 (#8446) 2025-05-12 15:41:14 -04:00
chuckbutkus 2693360ad0 Auth URL fix of on-prem (#8455) 2025-05-12 17:28:04 +00:00
sp.wack 1081f8091d improve(frontend): Changes tab status message logic (#8454) 2025-05-12 12:57:35 -04:00
sp.wack 8d0e5c6c34 hotfix: Don't handle git changes side effect too frequently (#8451) 2025-05-12 12:57:00 -04:00
Robert Brennan 0b897ff3dc Add 10px bottom padding to paragraph tags in markdown rendering (#8440)
Co-authored-by: openhands <openhands@all-hands.dev>
2025-05-12 11:03:17 -04:00
Ryan H. Tran c5ace563c4 fix: remove duplicate rendering of tab components (#8442)
Co-authored-by: Xingyao Wang <xingyao@all-hands.dev>
2025-05-12 11:15:41 +00:00
Engel Nyst 9af132933c Fix log for clearing pending action to be at the same level (#8430) 2025-05-12 02:50:36 +02:00
Engel Nyst 10c56932af Fix: update pre-commit docs (#8433)
Co-authored-by: openhands <openhands@all-hands.dev>
2025-05-12 02:13:33 +02:00
Robert Brennan e9905115c4 Allow websocket connection to pass in Authorization header to conversation validator (#8405)
Co-authored-by: openhands <openhands@all-hands.dev>
2025-05-11 16:27:02 -04:00
Emmanuel Ferdman 6b11fff735 Resolve warnings of logger library (#8432)
Signed-off-by: Emmanuel Ferdman <emmanuelferdman@gmail.com>
2025-05-11 15:29:53 +00:00
Xingyao Wang 3d02c0c3a3 Fix issue #8372: Implement browser screenshot saving functionality (#8383)
Co-authored-by: openhands <openhands@all-hands.dev>
Co-authored-by: Graham Neubig <neubig@gmail.com>
2025-05-11 15:51:18 +08:00
kotauchisunsun a17c57d82e [refactor]: Refactored the initialization of issue_handler within IssueResolver (#8417)
Co-authored-by: Rohit Malhotra <rohitvinodmalhotra@gmail.com>
2025-05-10 21:27:06 -04:00
Muly Oved da637a0dad Update docker_runtime.py #8422 (#8423) 2025-05-11 00:08:14 +02:00
Polly 27c49471a8 Fix Bug #8425 - Enable prompt cache for OpenRouter model of calude-3.7-sonnet (#8426) 2025-05-11 00:07:31 +02:00
Robert Brennan bffe8de597 Add support for user/org level microagents (#8402)
Co-authored-by: openhands <openhands@all-hands.dev>
2025-05-10 09:34:34 -04:00
OpenHands f0bb7de1c6 Fix issue #8145: Add docs about runtime tests (#8146) 2025-05-10 12:40:35 +02:00
Polly 90aab29bc0 Fix Issue #8413 max_output_tokens in openrouter/anthropic/claude-3.7-sonnet doesn't work correctly (#8415) 2025-05-10 08:29:39 +00:00
sp.wack ade059bfba feat/fix(fontend): Get public repos via repo URL (#8223)
Co-authored-by: Robert Brennan <accounts@rbren.io>
Co-authored-by: rohitvinodmalhotra@gmail.com <rohitvinodmalhotra@gmail.com>
2025-05-09 23:45:33 +00:00
Robert Brennan 5073cee7ff Add CODEOWNERS file (#8359)
Co-authored-by: openhands <openhands@all-hands.dev>
Co-authored-by: sp.wack <83104063+amanape@users.noreply.github.com>
2025-05-09 21:54:46 +00:00
Rohit Malhotra dc4b06f96b [Docs]: fix param key for openhands api docs (#8399) 2025-05-09 19:11:51 +00:00
Graham Neubig b5dbf81179 Fix typing issues in openhands/llm directory (#8377)
Co-authored-by: openhands <openhands@all-hands.dev>
2025-05-09 18:26:59 +00:00
Rohit Malhotra b50831d06c [Fix]: Check if existing store is None (#8398) 2025-05-09 18:13:59 +00:00
kotauchisunsun 46c735282a Update Development.md to install pycls correctly. (#8382) 2025-05-09 18:24:18 +02:00
Xingyao Wang 507c02e518 Fix browser tab not showing the most recent screenshot (#8389)
Co-authored-by: openhands <openhands@all-hands.dev>
2025-05-09 11:45:29 -04:00
Robert Brennan 29f3e028e5 Move custom scripts docs (#8386)
Co-authored-by: openhands <openhands@all-hands.dev>
2025-05-09 10:34:03 -04:00
Xingyao Wang f8faa28bb1 Fix issue #8369: Handle invalid arguments in model tool calls (#8370)
Co-authored-by: openhands <openhands@all-hands.dev>
Co-authored-by: Engel Nyst <enyst@users.noreply.github.com>
2025-05-09 22:11:05 +08:00
Xingyao Wang b6c5a7e854 fix(runtime): e.response attribute errors when run into httpx.NetworkError (#8371) 2025-05-09 07:50:32 -04:00
Xingyao Wang c805247574 fix(frontend): remove extra colon in token cost UI (#8379) 2025-05-09 19:15:04 +08:00
AutoLTX 3d68711ca3 Display context window usage status in UI (#8267) 2025-05-09 11:39:14 +08:00
Graham Neubig 7d356cad47 Add type annotations to CLI directory (#8291)
Co-authored-by: openhands <openhands@all-hands.dev>
2025-05-09 01:25:02 +00:00
Graham Neubig 4c33b28dad Add type annotations to remote runtime implementation (#8337)
Co-authored-by: openhands <openhands@all-hands.dev>
2025-05-08 20:23:34 -04:00
Graham Neubig 9d4d56d3be Add more extensive typing to server/routes files (#8336)
Co-authored-by: openhands <openhands@all-hands.dev>
2025-05-08 20:23:10 -04:00
Graham Neubig 4ff43d1d99 Add claude-sonnet-latest to supported models lists (#8365)
Co-authored-by: openhands <openhands@all-hands.dev>
Co-authored-by: Engel Nyst <enyst@users.noreply.github.com>
2025-05-09 00:08:09 +00:00
Rohit Malhotra 6d1e1f75ae [Feat]: Support self hosted gitlab + enterprise github (#8274)
Co-authored-by: openhands <openhands@all-hands.dev>
Co-authored-by: amanape <83104063+amanape@users.noreply.github.com>
2025-05-08 17:54:32 -04:00
Calvin Smith c982bc6692 updating web read tool description to explain masking (#8294)
Co-authored-by: Calvin Smith <calvin@all-hands.dev>
2025-05-08 15:44:21 -06:00
rbrugaro 3606ca87d5 [bug] add list support in setting attributes from env variables (#8295) 2025-05-08 22:03:23 +02:00
Engel Nyst 05f3840ca5 Fix openhands-resolver.yml (#8356) 2025-05-08 22:00:55 +02:00
mamoodi a87bb10bfc Update documentation again (#8362) 2025-05-08 15:56:04 -04:00
Neeraj Panwar b030594646 Fixing bug #8214 -ImportError During pip install --upgrade pip on Github Actions (#8229) 2025-05-08 18:07:52 +00:00
மனோஜ்குமார் பழனிச்சாமி 99a4717826 fix: retry if Connection Timed out (#8222) 2025-05-08 13:53:21 -04:00
Xingyao Wang 11f32d2465 fix(mcp): fix SSE MCP server connection & add tests (#8353)
Co-authored-by: openhands <openhands@all-hands.dev>
2025-05-08 17:26:49 +00:00
Chase c6c94d979b Feature: Add custom agents via config (#8245) 2025-05-08 18:15:15 +02:00
sp.wack b06bd277ba fix(backend): Only get provider tokens from store if it exists (#8352)
Co-authored-by: openhands <openhands@all-hands.dev>
2025-05-08 15:59:22 +00:00
dependabot[bot] d8dfc7735c chore(deps): bump the version-all group with 6 updates (#8354)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-05-08 17:28:42 +02:00
mamoodi 6f88ddb2ab Update documentation with updated information from releases (#8331) 2025-05-08 11:09:01 -04:00
tofarr 750b1f03b7 Now explicitly closing connections (#8351) 2025-05-08 14:01:48 +00:00
Ivan Dagelic e95c2bf521 chore: daytona runtime windows README.md and docs (#7396)
Signed-off-by: Ivan Dagelic <dagelic.ivan@gmail.com>
2025-05-08 08:51:39 -04:00
Bashwara Undupitiya 56651bb93c refactor: Update CLI mode documentation with commands and interactive features (#8303) 2025-05-08 08:23:20 -04:00
Xingyao Wang 13c9bff050 test: add MCP test test_fetch_mcp_via_stdio back in CI (#8344) 2025-05-08 00:08:58 -05:00
Graham Neubig 689d3c9046 Update pre-commit hook versions to most recent versions (#8343)
Co-authored-by: openhands <openhands@all-hands.dev>
2025-05-08 03:59:13 +00:00
Graham Neubig d5a8d4251c Fix missing comma in hosts (#8345) 2025-05-07 21:54:15 -04:00
Xingyao Wang 087438eb3e docs: remove api_key section from doc (#8347) 2025-05-08 01:51:51 +00:00
Graham Neubig f2af1807e3 Add return type annotations to functions in runtime/utils directory (#8335)
Co-authored-by: openhands <openhands@all-hands.dev>
2025-05-08 01:48:39 +00:00
728 changed files with 24684 additions and 9775 deletions
+15
View File
@@ -0,0 +1,15 @@
// For format details, see: https://aka.ms/devcontainer.json
{
"name": "Python 3",
// Documentation for this image:
// - https://github.com/devcontainers/templates/tree/main/src/python
// - https://github.com/microsoft/vscode-remote-try-python
// - https://hub.docker.com/r/microsoft/devcontainers-python
"image": "mcr.microsoft.com/devcontainers/python:1-3.12-bullseye",
"features": {
"ghcr.io/devcontainers/features/docker-outside-of-docker:1": {},
"ghcr.io/devcontainers-extra/features/poetry:2": {},
"ghcr.io/devcontainers/features/node:1": {},
},
"postCreateCommand": ".devcontainer/setup.sh",
}
+7
View File
@@ -0,0 +1,7 @@
#!/bin/bash
# Install `nc`
sudo apt update && sudo apt install netcat -y
# Do common setup tasks
source .openhands/setup.sh
+5
View File
@@ -0,0 +1,5 @@
[*]
# force *nix line endings so files don't look modified in container run from Windows clone
end_of_line = lf
trim_trailing_whitespace = true
insert_final_newline = true
+6
View File
@@ -1 +1,7 @@
*.ipynb linguist-vendored
# force *nix line endings so files don't look modified in container run from Windows clone
* text eol=lf
# Git incorrectly thinks some media is text
*.png -text
*.mp4 -text
-19
View File
@@ -1,19 +0,0 @@
codecov:
notify:
wait_for_ci: true
# our project is large, so 6 builds are typically uploaded. this waits till 5/6
# See https://docs.codecov.com/docs/notifications#section-preventing-notifications-until-after-n-builds
after_n_builds: 5
coverage:
status:
patch:
default:
threshold: 100% # allow patch coverage to be lower than project coverage by any amount
project:
default:
threshold: 5% # allow project coverage to drop at most 5%
comment: false
github_checks:
annotations: false
+11
View File
@@ -0,0 +1,11 @@
# CODEOWNERS file for OpenHands repository
# See https://docs.github.com/en/repositories/managing-your-repositorys-settings-and-features/customizing-your-repository/about-code-owners
# Frontend code owners
/frontend/ @rbren @amanape
# Evaluation code owners
/evaluation/ @xingyaoww @neubig
# Documentation code owners
/docs/ @mamoodi
+4
View File
@@ -13,6 +13,10 @@ updates:
browsergym:
patterns:
- "browsergym*"
mcp-packages:
patterns:
- "mcp"
- "mcpm"
security-all:
applies-to: "security-updates"
patterns:
+1 -2
View File
@@ -2,10 +2,9 @@
import os
import re
import sys
from typing import Set, Tuple
def find_version_references(directory: str) -> Tuple[Set[str], Set[str]]:
def find_version_references(directory: str) -> tuple[set[str], set[str]]:
openhands_versions = set()
runtime_versions = set()
-4
View File
@@ -42,7 +42,3 @@ jobs:
- name: Run tests and collect coverage
working-directory: ./frontend
run: npm run test:coverage
- name: Upload coverage to Codecov
uses: codecov/codecov-action@v5
env:
CODECOV_TOKEN: ${{ secrets.CODECOV_TOKEN }}
+2 -10
View File
@@ -312,11 +312,7 @@ jobs:
SANDBOX_RUNTIME_CONTAINER_IMAGE=$image_name \
TEST_IN_CI=true \
RUN_AS_OPENHANDS=false \
poetry run pytest -n 7 -raRs --reruns 2 --reruns-delay 5 --cov=openhands --cov-report=xml -s ./tests/runtime --ignore=tests/runtime/test_browsergym_envs.py --durations=10
- name: Upload coverage to Codecov
uses: codecov/codecov-action@v5
env:
CODECOV_TOKEN: ${{ secrets.CODECOV_TOKEN }}
poetry run pytest -n 7 -raRs --reruns 2 --reruns-delay 5 -s ./tests/runtime --ignore=tests/runtime/test_browsergym_envs.py --durations=10
# Run unit tests with the Docker runtime Docker images as openhands user
test_runtime_oh:
@@ -381,11 +377,7 @@ jobs:
SANDBOX_RUNTIME_CONTAINER_IMAGE=$image_name \
TEST_IN_CI=true \
RUN_AS_OPENHANDS=true \
poetry run pytest -n 7 -raRs --reruns 2 --reruns-delay 5 --cov=openhands --cov-report=xml -s ./tests/runtime --ignore=tests/runtime/test_browsergym_envs.py --durations=10
- name: Upload coverage to Codecov
uses: codecov/codecov-action@v5
env:
CODECOV_TOKEN: ${{ secrets.CODECOV_TOKEN }}
poetry run pytest -n 7 -raRs --reruns 2 --reruns-delay 5 -s ./tests/runtime --ignore=tests/runtime/test_browsergym_envs.py --durations=10
# The two following jobs (named identically) are to check whether all the runtime tests have passed as the
# "All Runtime Tests Passed" is a required job for PRs to merge
+2 -1
View File
@@ -30,11 +30,12 @@ jobs:
run: |
cd frontend
npm install --frozen-lockfile
- name: Lint and TypeScript compilation
- name: Lint, TypeScript compilation, and translation checks
run: |
cd frontend
npm run lint
npm run make-i18n && tsc
npm run check-translation-completeness
# Run lint on the python code
lint-python:
+7 -4
View File
@@ -24,7 +24,7 @@ on:
LLM_MODEL:
required: false
type: string
default: "anthropic/claude-3-7-sonnet-20250219"
default: "anthropic/claude-sonnet-4-20250514"
LLM_API_VERSION:
required: false
type: string
@@ -83,7 +83,7 @@ jobs:
(github.event.review.author_association == 'OWNER' || github.event.review.author_association == 'COLLABORATOR' || github.event.review.author_association == 'MEMBER')
)
)
runs-on: "${{ inputs.runner }}"
runs-on: "${{ inputs.runner || 'ubuntu-latest' }}"
steps:
- name: Checkout repository
uses: actions/checkout@v4
@@ -92,6 +92,9 @@ jobs:
uses: actions/setup-python@v5
with:
python-version: "3.12"
- name: Upgrade pip
run: |
python -m pip install --upgrade pip
- name: Get latest versions and create requirements.txt
run: |
@@ -229,11 +232,11 @@ jobs:
// Perform package installation
if (isExperimentalLabel || isIssueCommentExperimental || isReviewCommentExperimental) {
console.log("Installing experimental OpenHands...");
await exec.exec("python -m pip install --upgrade pip");
await exec.exec("pip install git+https://github.com/all-hands-ai/openhands.git");
} else {
console.log("Installing from requirements.txt...");
await exec.exec("python -m pip install --upgrade pip");
await exec.exec("pip install -r /tmp/requirements.txt");
}
+5 -7
View File
@@ -47,12 +47,10 @@ jobs:
run: poetry install --without evaluation
- name: Build Environment
run: make build
- name: Run Tests
run: poetry run pytest --forked -n auto --cov=openhands --cov-report=xml -svv ./tests/unit
- name: Upload coverage to Codecov
uses: codecov/codecov-action@v5
env:
CODECOV_TOKEN: ${{ secrets.CODECOV_TOKEN }}
- name: Run Unit Tests
run: poetry run pytest --forked -n auto -svv ./tests/unit
- name: Run Runtime Tests with CLIRuntime
run: TEST_RUNTIME=cli poetry run pytest -svv tests/runtime/test_bash.py
# Run specific Windows python tests
test-on-windows:
@@ -76,5 +74,5 @@ jobs:
run: poetry install --without evaluation
- name: Run Windows unit tests
run: poetry run pytest -svv tests/unit/test_windows_bash.py
- name: Run Windows runtime tests
- name: Run Windows runtime tests with LocalRuntime
run: $env:TEST_RUNTIME="local"; poetry run pytest -svv tests/runtime/test_bash.py
+8 -6
View File
@@ -9,7 +9,7 @@ on:
jobs:
trigger-job:
name: Trigger remote eval job
if: ${{ github.event.label.name == 'run-eval-xs' || github.event.label.name == 'run-eval-s' || github.event.label.name == 'run-eval-m' }}
if: ${{ github.event.label.name == 'run-eval-1' || github.event.label.name == 'run-eval-2' || github.event.label.name == 'run-eval-50' || github.event.label.name == 'run-eval-100' }}
runs-on: blacksmith-4vcpu-ubuntu-2204
steps:
@@ -26,12 +26,14 @@ jobs:
echo "Repository URL: $REPO_URL"
echo "PR Branch: $PR_BRANCH"
if [[ "${{ github.event.label.name }}" == "run-eval-xs" ]]; then
if [[ "${{ github.event.label.name }}" == "run-eval-1" ]]; then
EVAL_INSTANCES="1"
elif [[ "${{ github.event.label.name }}" == "run-eval-s" ]]; then
EVAL_INSTANCES="5"
elif [[ "${{ github.event.label.name }}" == "run-eval-m" ]]; then
EVAL_INSTANCES="30"
elif [[ "${{ github.event.label.name }}" == "run-eval-2" ]]; then
EVAL_INSTANCES="2"
elif [[ "${{ github.event.label.name }}" == "run-eval-50" ]]; then
EVAL_INSTANCES="50"
elif [[ "${{ github.event.label.name }}" == "run-eval-100" ]]; then
EVAL_INSTANCES="100"
fi
curl -X POST \
+8 -1
View File
@@ -161,9 +161,16 @@ cython_debug/
# and can be added to the global gitignore or merged into this file. For a more nuclear
# option (not recommended) you can uncomment the following to ignore the entire idea folder.
.idea/
.vscode/
.cursorignore
# VS Code: Ignore all but certain files that specify repo-specific settings.
# https://stackoverflow.com/questions/32964920/should-i-commit-the-vscode-folder-to-source-control
.vscode/**/*
!.vscode/extensions.json
!.vscode/launch.json
!.vscode/settings.json
!.vscode/tasks.json
# evaluation
evaluation/evaluation_outputs
evaluation/outputs
+33
View File
@@ -0,0 +1,33 @@
---
name: documentation
type: knowledge
version: 1.0.0
agent: CodeActAgent
triggers:
- documentation
- docs
- document
---
# Documentation Guidelines
All documentation must be grounded in fact, so you must not make anything up without proper evidence. When you have finished writing documentation, convey to the user what reference source, including web pages, source code, or other sources of documentation you referenced when writing each new fact in the documentation. If you cannot reference a source for anything do not include it in the pull request.
## Best Practices for Documentation
1. **Be Factual**: Only include information that can be verified from reliable sources.
2. **Cite Sources**: Always reference the source of information (code, web pages, official documentation).
3. **Be Clear and Concise**: Use simple language and avoid unnecessary jargon.
4. **Use Examples**: Include practical examples to illustrate concepts.
5. **Structure Properly**: Use headings, lists, and code blocks to organize information.
6. **Keep Updated**: Ensure documentation reflects the current state of the code or system.
## Documentation Process
1. Research and gather information from reliable sources
2. Draft documentation based on verified facts
3. Review for accuracy and completeness
4. Include references for all factual statements
5. Submit only when all information is properly sourced
Remember: If you cannot verify a piece of information, it's better to exclude it than to include potentially incorrect information.
+16 -6
View File
@@ -1,8 +1,3 @@
---
name: repo
type: repo
agent: CodeActAgent
---
This repository contains the code for OpenHands, an automated AI software engineer. It has a Python backend
(in the `openhands` directory) and React frontend (in the `frontend` directory).
@@ -14,7 +9,7 @@ IMPORTANT: Before making any changes to the codebase, ALWAYS run `make install-p
Before pushing any changes, you MUST ensure that any lint errors or simple test errors have been fixed.
* If you've made changes to the backend, you should run `pre-commit run --all-files --config ./dev_config/python/.pre-commit-config.yaml`
* If you've made changes to the backend, you should run `pre-commit run --config ./dev_config/python/.pre-commit-config.yaml` (this will run on staged files).
* If you've made changes to the frontend, you should run `cd frontend && npm run lint:fix && npm run build ; cd ..`
The pre-commit hooks MUST pass successfully before pushing any changes to the repository. This is a mandatory requirement to maintain code quality and consistency.
@@ -71,3 +66,18 @@ These details may or may not be useful for your current task.
- Actions with `thought` property are displayed in the UI based on their action type:
- Regular actions (like "run", "edit") display the thought as a separate message
- Special actions (like "think") are displayed as collapsible elements only
#### Adding User Settings:
- To add a new user setting to OpenHands, follow these steps:
1. Add the setting to the frontend:
- Add the setting to the `Settings` type in `frontend/src/types/settings.ts`
- Add the setting to the `ApiSettings` type in the same file
- Add the setting with an appropriate default value to `DEFAULT_SETTINGS` in `frontend/src/services/settings.ts`
- Update the `useSettings` hook in `frontend/src/hooks/query/use-settings.ts` to map the API response
- Update the `useSaveSettings` hook in `frontend/src/hooks/mutation/use-save-settings.ts` to include the setting in API requests
- Add UI components (like toggle switches) in the appropriate settings screen (e.g., `frontend/src/routes/app-settings.tsx`)
- Add i18n translations for the setting name and any tooltips in `frontend/src/i18n/translation.json`
- Add the translation key to `frontend/src/i18n/declaration.ts`
2. Add the setting to the backend:
- Add the setting to the `Settings` model in `openhands/storage/data_models/settings.py`
- Update any relevant backend code to apply the setting (e.g., in session creation)
Regular → Executable
View File
+1
View File
@@ -9,4 +9,5 @@ python -m pip install pre-commit
if [ -d ".git" ]; then
echo "Installing pre-commit hooks..."
pre-commit install
make install-pre-commit-hooks
fi
+6
View File
@@ -0,0 +1,6 @@
{
// force *nix line endings so files don't look modified in container run from Windows clone
"files.eol": "\n",
"files.trimTrailingWhitespace": true,
"files.insertFinalNewline": true,
}
+19 -14
View File
@@ -1,8 +1,8 @@
# Development Guide
This guide is for people working on OpenHands and editing the source code.
If you wish to contribute your changes, check out the [CONTRIBUTING.md](https://github.com/All-Hands-AI/OpenHands/blob/main/CONTRIBUTING.md) on how to clone and setup the project initially before moving on.
Otherwise, you can clone the OpenHands project directly.
If you wish to contribute your changes, check out the [CONTRIBUTING.md](https://github.com/All-Hands-AI/OpenHands/blob/main/CONTRIBUTING.md) on how to clone and setup the project
initially before moving on. Otherwise, you can clone the OpenHands project directly.
## Start the Server for Development
@@ -14,14 +14,15 @@ Otherwise, you can clone the OpenHands project directly.
- [NodeJS](https://nodejs.org/en/download/package-manager) >= 22.x
- [Poetry](https://python-poetry.org/docs/#installing-with-the-official-installer) >= 1.8
- OS-specific dependencies:
- Ubuntu: build-essential => `sudo apt-get install build-essential`
- Ubuntu: build-essential => `sudo apt-get install build-essential python3.12-dev`
- WSL: netcat => `sudo apt-get install netcat`
Make sure you have all these dependencies installed before moving on to `make build`.
#### Develop without sudo access
If you want to develop without system admin/sudo access to upgrade/install `Python` and/or `NodeJs`, you can use `conda` or `mamba` to manage the packages for you:
If you want to develop without system admin/sudo access to upgrade/install `Python` and/or `NodeJs`, you can use
`conda` or `mamba` to manage the packages for you:
```bash
# Download and install Mamba (a faster version of conda)
@@ -36,7 +37,8 @@ mamba install conda-forge::poetry
### 2. Build and Setup The Environment
Begin by building the project which includes setting up the environment and installing dependencies. This step ensures that OpenHands is ready to run on your system:
Begin by building the project which includes setting up the environment and installing dependencies. This step ensures
that OpenHands is ready to run on your system:
```bash
make build
@@ -45,8 +47,6 @@ make build
### 3. Configuring the Language Model
OpenHands supports a diverse array of Language Models (LMs) through the powerful [litellm](https://docs.litellm.ai) library.
By default, we've chosen Claude Sonnet 3.5 as our go-to model, but the world is your oyster! You can unleash the
potential of any other LM that piques your interest.
To configure the LM of your choice, run:
@@ -54,9 +54,12 @@ To configure the LM of your choice, run:
make setup-config
```
This command will prompt you to enter the LLM API key, model name, and other variables ensuring that OpenHands is tailored to your specific needs. Note that the model name will apply only when you run headless. If you use the UI, please set the model in the UI.
This command will prompt you to enter the LLM API key, model name, and other variables ensuring that OpenHands is
tailored to your specific needs. Note that the model name will apply only when you run headless. If you use the UI,
please set the model in the UI.
Note: If you have previously run OpenHands using the docker command, you may have already set some environmental variables in your terminal. The final configurations are set from highest to lowest priority:
Note: If you have previously run OpenHands using the docker command, you may have already set some environmental
variables in your terminal. The final configurations are set from highest to lowest priority:
Environment variables > config.toml variables > default variables
**Note on Alternative Models:**
@@ -74,13 +77,15 @@ make run
#### Option B: Individual Server Startup
- **Start the Backend Server:** If you prefer, you can start the backend server independently to focus on backend-related tasks or configurations.
- **Start the Backend Server:** If you prefer, you can start the backend server independently to focus on
backend-related tasks or configurations.
```bash
make start-backend
```
- **Start the Frontend Server:** Similarly, you can start the frontend server on its own to work on frontend-related components or interface enhancements.
- **Start the Frontend Server:** Similarly, you can start the frontend server on its own to work on frontend-related
components or interface enhancements.
```bash
make start-frontend
```
@@ -115,10 +120,10 @@ poetry run pytest ./tests/unit/test_*.py
### 9. Use existing Docker image
To reduce build time (e.g., if no changes were made to the client-runtime component), you can use an existing Docker container image by
setting the SANDBOX_RUNTIME_CONTAINER_IMAGE environment variable to the desired Docker image.
To reduce build time (e.g., if no changes were made to the client-runtime component), you can use an existing Docker
container image by setting the SANDBOX_RUNTIME_CONTAINER_IMAGE environment variable to the desired Docker image.
Example: `export SANDBOX_RUNTIME_CONTAINER_IMAGE=ghcr.io/all-hands-ai/runtime:0.37-nikolaik`
Example: `export SANDBOX_RUNTIME_CONTAINER_IMAGE=ghcr.io/all-hands-ai/runtime:0.39-nikolaik`
## Develop inside Docker container
+1 -6
View File
@@ -3,17 +3,12 @@ These are the procedures and guidelines on how issues are triaged in this repo b
## General
* All issues must be tagged with **enhancement**, **bug** or **troubleshooting/help**.
* Issues may be tagged with what it relates to (**agent quality**, **frontend**, **resolver**, etc.).
* Issues may be tagged with what it relates to (**agent quality**, **resolver**, **CLI**, etc.).
## Severity
* **Low**: Minor issues or affecting single user.
* **Medium**: Affecting multiple users.
* **High**: High visibility issues or affecting many users.
* **Critical**: Affecting all users or potential security issues.
## Effort
* Issues may be estimated with effort required (**small effort**, **medium effort**, **large effort**).
## Difficulty
* Issues with low implementation difficulty may be tagged with **good first issue**.
+11 -2
View File
@@ -5,6 +5,7 @@ SHELL=/usr/bin/env bash
BACKEND_HOST ?= "127.0.0.1"
BACKEND_PORT = 3000
BACKEND_HOST_PORT = "$(BACKEND_HOST):$(BACKEND_PORT)"
FRONTEND_HOST ?= "127.0.0.1"
FRONTEND_PORT = 3001
DEFAULT_WORKSPACE_DIR = "./workspace"
DEFAULT_MODEL = "gpt-4o"
@@ -288,6 +289,15 @@ setup-config-prompts:
@read -p "Enter your LLM base URL [mostly used for local LLMs, leave blank if not needed - example: http://localhost:5001/v1/]: " llm_base_url; \
if [[ ! -z "$$llm_base_url" ]]; then echo "base_url=\"$$llm_base_url\"" >> $(CONFIG_FILE).tmp; fi
setup-config-basic:
@printf '%s\n' \
'[core]' \
'workspace_base="./workspace"' \
> config.toml
@echo "$(GREEN)config.toml created.$(RESET)"
openhands-cloud-run:
@$(MAKE) run BACKEND_HOST="0.0.0.0" BACKEND_PORT="12000" FRONTEND_HOST="0.0.0.0" FRONTEND_PORT="12001"
# Develop in container
docker-dev:
@@ -322,5 +332,4 @@ help:
@echo " $(GREEN)help$(RESET) - Display this help message, providing information on available targets."
# Phony targets
.PHONY: build check-dependencies check-python check-npm check-docker check-poetry install-python-dependencies install-frontend-dependencies install-pre-commit-hooks lint start-backend start-frontend run run-wsl setup-config setup-config-prompts help
.PHONY: docker-dev docker-run
.PHONY: build check-dependencies check-system check-python check-npm check-nodejs check-docker check-poetry install-python-dependencies install-frontend-dependencies install-pre-commit-hooks lint-backend lint-frontend lint test-frontend test build-frontend start-backend start-frontend _run_setup run run-wsl setup-config setup-config-prompts setup-config-basic openhands-cloud-run docker-dev docker-run clean help
+5 -11
View File
@@ -51,23 +51,23 @@ system requirements and more information.
```bash
docker pull docker.all-hands.dev/all-hands-ai/runtime:0.37-nikolaik
docker pull docker.all-hands.dev/all-hands-ai/runtime:0.39-nikolaik
docker run -it --rm --pull=always \
-e SANDBOX_RUNTIME_CONTAINER_IMAGE=docker.all-hands.dev/all-hands-ai/runtime:0.37-nikolaik \
-e SANDBOX_RUNTIME_CONTAINER_IMAGE=docker.all-hands.dev/all-hands-ai/runtime:0.39-nikolaik \
-e LOG_ALL_EVENTS=true \
-v /var/run/docker.sock:/var/run/docker.sock \
-v ~/.openhands-state:/.openhands-state \
-p 3000:3000 \
--add-host host.docker.internal:host-gateway \
--name openhands-app \
docker.all-hands.dev/all-hands-ai/openhands:0.37
docker.all-hands.dev/all-hands-ai/openhands:0.39
```
You'll find OpenHands running at [http://localhost:3000](http://localhost:3000)!
When you open the application, you'll be asked to choose an LLM provider and add an API key.
[Anthropic's Claude 3.7 Sonnet](https://www.anthropic.com/api) (`anthropic/claude-3-7-sonnet-20250219`)
[Anthropic's Claude Sonnet 4](https://www.anthropic.com/api) (`anthropic/claude-sonnet-4-20250514`)
works best, but you have [many options](https://docs.all-hands.dev/modules/usage/llms).
## 💡 Other ways to run OpenHands
@@ -92,6 +92,7 @@ If you want to modify the OpenHands source code, check out [Development.md](http
Having issues? The [Troubleshooting Guide](https://docs.all-hands.dev/modules/usage/troubleshooting) can help.
## 📖 Documentation
<a href="https://deepwiki.com/All-Hands-AI/OpenHands"><img src="https://deepwiki.com/badge.svg" alt="Ask DeepWiki" title="Autogenerated Documentation by DeepWiki"></a>
To learn more about the project, and for tips on using OpenHands,
check out our [documentation](https://docs.all-hands.dev/modules/usage/getting-started).
@@ -99,13 +100,6 @@ check out our [documentation](https://docs.all-hands.dev/modules/usage/getting-s
There you'll find resources on how to use different LLM providers,
troubleshooting resources, and advanced configuration options.
### Custom Scripts
OpenHands supports custom scripts that run at different points in the runtime lifecycle:
- **setup.sh**: Place this script in the `.openhands` directory of your repository to run custom setup commands when the runtime initializes.
- **pre-commit.sh**: Place this script in the `.openhands` directory to add a custom git pre-commit hook that runs before each commit. This can be used to enforce code quality standards, run tests, or perform other checks before allowing commits.
## 🤝 How to Join the Community
OpenHands is a community-driven project, and we welcome contributions from everyone. We do most of our communication
+146
View File
@@ -0,0 +1,146 @@
<a name="readme-top"></a>
<div align="center">
<img src="./docs/static/img/logo.png" alt="Logo" width="200">
<h1 align="center">OpenHands: 少写代码,多做事</h1>
</div>
<div align="center">
<a href="https://github.com/All-Hands-AI/OpenHands/graphs/contributors"><img src="https://img.shields.io/github/contributors/All-Hands-AI/OpenHands?style=for-the-badge&color=blue" alt="Contributors"></a>
<a href="https://github.com/All-Hands-AI/OpenHands/stargazers"><img src="https://img.shields.io/github/stars/All-Hands-AI/OpenHands?style=for-the-badge&color=blue" alt="Stargazers"></a>
<a href="https://github.com/All-Hands-AI/OpenHands/blob/main/LICENSE"><img src="https://img.shields.io/github/license/All-Hands-AI/OpenHands?style=for-the-badge&color=blue" alt="MIT License"></a>
<br/>
<a href="https://join.slack.com/t/openhands-ai/shared_invite/zt-34zm4j0gj-Qz5kRHoca8DFCbqXPS~f_A"><img src="https://img.shields.io/badge/Slack-Join%20Us-red?logo=slack&logoColor=white&style=for-the-badge" alt="加入我们的Slack社区"></a>
<a href="https://discord.gg/ESHStjSjD4"><img src="https://img.shields.io/badge/Discord-Join%20Us-purple?logo=discord&logoColor=white&style=for-the-badge" alt="加入我们的Discord社区"></a>
<a href="https://github.com/All-Hands-AI/OpenHands/blob/main/CREDITS.md"><img src="https://img.shields.io/badge/Project-Credits-blue?style=for-the-badge&color=FFE165&logo=github&logoColor=white" alt="致谢"></a>
<br/>
<a href="https://docs.all-hands.dev/modules/usage/getting-started"><img src="https://img.shields.io/badge/Documentation-000?logo=googledocs&logoColor=FFE165&style=for-the-badge" alt="查看文档"></a>
<a href="https://arxiv.org/abs/2407.16741"><img src="https://img.shields.io/badge/Paper%20on%20Arxiv-000?logoColor=FFE165&logo=arxiv&style=for-the-badge" alt="Arxiv论文"></a>
<a href="https://docs.google.com/spreadsheets/d/1wOUdFCMyY6Nt0AIqF705KN4JKOWgeI4wUGUP60krXXs/edit?gid=0#gid=0"><img src="https://img.shields.io/badge/Benchmark%20score-000?logoColor=FFE165&logo=huggingface&style=for-the-badge" alt="评估基准分数"></a>
<hr>
</div>
欢迎使用OpenHands(前身为OpenDevin),这是一个由AI驱动的软件开发代理平台。
OpenHands代理可以完成人类开发者能做的任何事情:修改代码、运行命令、浏览网页、调用API,甚至从StackOverflow复制代码片段。
在[docs.all-hands.dev](https://docs.all-hands.dev)了解更多信息,或[注册OpenHands Cloud](https://app.all-hands.dev)开始使用。
> [!IMPORTANT]
> 在工作中使用OpenHands?我们很想与您交流!填写
> [这份简短表格](https://docs.google.com/forms/d/e/1FAIpQLSet3VbGaz8z32gW9Wm-Grl4jpt5WgMXPgJ4EDPVmCETCBpJtQ/viewform)
> 加入我们的设计合作伙伴计划,您将获得商业功能的早期访问权限,并有机会对我们的产品路线图提供意见。
![应用截图](./docs/static/img/screenshot.png)
## ☁️ OpenHands Cloud
开始使用OpenHands的最简单方式是在[OpenHands Cloud](https://app.all-hands.dev)上,
新用户可获得$50的免费额度。
## 💻 在本地运行OpenHands
OpenHands也可以使用Docker在本地系统上运行。
查看[运行OpenHands](https://docs.all-hands.dev/modules/usage/installation)指南了解
系统要求和更多信息。
> [!WARNING]
> 在公共网络上?请参阅我们的[强化Docker安装指南](https://docs.all-hands.dev/modules/usage/runtimes/docker#hardened-docker-installation)
> 通过限制网络绑定和实施其他安全措施来保护您的部署。
```bash
docker pull docker.all-hands.dev/all-hands-ai/runtime:0.39-nikolaik
docker run -it --rm --pull=always \
-e SANDBOX_RUNTIME_CONTAINER_IMAGE=docker.all-hands.dev/all-hands-ai/runtime:0.39-nikolaik \
-e LOG_ALL_EVENTS=true \
-v /var/run/docker.sock:/var/run/docker.sock \
-v ~/.openhands-state:/.openhands-state \
-p 3000:3000 \
--add-host host.docker.internal:host-gateway \
--name openhands-app \
docker.all-hands.dev/all-hands-ai/openhands:0.39
```
您将在[http://localhost:3000](http://localhost:3000)找到运行中的OpenHands
打开应用程序时,您将被要求选择一个LLM提供商并添加API密钥。
[Anthropic的Claude Sonnet 4](https://www.anthropic.com/api)`anthropic/claude-sonnet-4-20250514`
效果最佳,但您还有[许多选择](https://docs.all-hands.dev/modules/usage/llms)。
## 💡 运行OpenHands的其他方式
> [!CAUTION]
> OpenHands旨在由单个用户在其本地工作站上运行。
> 它不适合多租户部署,即多个用户共享同一实例。没有内置的身份验证、隔离或可扩展性。
>
> 如果您有兴趣在多租户环境中运行OpenHands,请
> [与我们联系](https://docs.google.com/forms/d/e/1FAIpQLSet3VbGaz8z32gW9Wm-Grl4jpt5WgMXPgJ4EDPVmCETCBpJtQ/viewform)
> 了解高级部署选项。
您还可以[将OpenHands连接到本地文件系统](https://docs.all-hands.dev/modules/usage/runtimes/docker#connecting-to-your-filesystem)
以可编程的[无头模式](https://docs.all-hands.dev/modules/usage/how-to/headless-mode)运行OpenHands
通过[友好的CLI](https://docs.all-hands.dev/modules/usage/how-to/cli-mode)与其交互,
或使用[GitHub Action](https://docs.all-hands.dev/modules/usage/how-to/github-action)在标记的问题上运行它。
访问[运行OpenHands](https://docs.all-hands.dev/modules/usage/installation)获取更多信息和设置说明。
如果您想修改OpenHands源代码,请查看[Development.md](https://github.com/All-Hands-AI/OpenHands/blob/main/Development.md)。
遇到问题?[故障排除指南](https://docs.all-hands.dev/modules/usage/troubleshooting)可以提供帮助。
## 📖 文档
<a href="https://deepwiki.com/All-Hands-AI/OpenHands"><img src="https://deepwiki.com/badge.svg" alt="Ask DeepWiki" title="DeepWiki自动生成文档"></a>
要了解有关项目的更多信息,以及使用OpenHands的技巧,
请查看我们的[文档](https://docs.all-hands.dev/modules/usage/getting-started)。
在那里,您将找到有关如何使用不同LLM提供商、
故障排除资源和高级配置选项的资源。
## 🤝 如何加入社区
OpenHands是一个社区驱动的项目,我们欢迎每个人的贡献。我们大部分沟通
通过Slack进行,因此这是开始的最佳场所,但我们也很乐意您通过Discord或Github与我们联系:
- [加入我们的Slack工作空间](https://join.slack.com/t/openhands-ai/shared_invite/zt-34zm4j0gj-Qz5kRHoca8DFCbqXPS~f_A) - 这里我们讨论研究、架构和未来发展。
- [加入我们的Discord服务器](https://discord.gg/ESHStjSjD4) - 这是一个社区运营的服务器,用于一般讨论、问题和反馈。
- [阅读或发布Github问题](https://github.com/All-Hands-AI/OpenHands/issues) - 查看我们正在处理的问题,或添加您自己的想法。
在[COMMUNITY.md](./COMMUNITY.md)中了解更多关于社区的信息,或在[CONTRIBUTING.md](./CONTRIBUTING.md)中找到有关贡献的详细信息。
## 📈 进展
在[这里](https://github.com/orgs/All-Hands-AI/projects/1)查看OpenHands月度路线图(每月月底在维护者会议上更新)。
<p align="center">
<a href="https://star-history.com/#All-Hands-AI/OpenHands&Date">
<img src="https://api.star-history.com/svg?repos=All-Hands-AI/OpenHands&type=Date" width="500" alt="Star History Chart">
</a>
</p>
## 📜 许可证
根据MIT许可证分发。有关更多信息,请参阅[`LICENSE`](./LICENSE)。
## 🙏 致谢
OpenHands由大量贡献者构建,每一份贡献都备受感谢!我们还借鉴了其他开源项目,对他们的工作深表感谢。
有关OpenHands中使用的开源项目和许可证列表,请参阅我们的[CREDITS.md](./CREDITS.md)文件。
## 📚 引用
```
@misc{openhands,
title={{OpenHands: An Open Platform for AI Software Developers as Generalist Agents}},
author={Xingyao Wang and Boxuan Li and Yufan Song and Frank F. Xu and Xiangru Tang and Mingchen Zhuge and Jiayi Pan and Yueqi Song and Bowen Li and Jaskirat Singh and Hoang H. Tran and Fuqiang Li and Ren Ma and Mingzhang Zheng and Bill Qian and Yanjun Shao and Niklas Muennighoff and Yizhe Zhang and Binyuan Hui and Junyang Lin and Robert Brennan and Hao Peng and Heng Ji and Graham Neubig},
year={2024},
eprint={2407.16741},
archivePrefix={arXiv},
primaryClass={cs.SE},
url={https://arxiv.org/abs/2407.16741},
}
```
+5
View File
@@ -255,6 +255,11 @@ enable_history_truncation = true
# useful when an agent doesn't demand high quality but uses a lot of tokens
llm_config = 'gpt3'
[agent.CustomAgent]
# Example: use a custom agent from a different package
# This will be automatically be registered as a new agent named "CustomAgent"
classpath = "my_package.my_module.MyCustomAgent"
#################################### Sandbox ###################################
# Configuration for the sandbox
##############################################################################
+1 -1
View File
@@ -11,7 +11,7 @@ services:
- BACKEND_HOST=${BACKEND_HOST:-"0.0.0.0"}
- SANDBOX_API_HOSTNAME=host.docker.internal
#
- SANDBOX_RUNTIME_CONTAINER_IMAGE=${SANDBOX_RUNTIME_CONTAINER_IMAGE:-ghcr.io/all-hands-ai/runtime:0.37-nikolaik}
- SANDBOX_RUNTIME_CONTAINER_IMAGE=${SANDBOX_RUNTIME_CONTAINER_IMAGE:-ghcr.io/all-hands-ai/runtime:0.39-nikolaik}
- SANDBOX_USER_ID=${SANDBOX_USER_ID:-1234}
- WORKSPACE_MOUNT_PATH=${WORKSPACE_BASE:-$PWD/workspace}
ports:
+5 -5
View File
@@ -1,6 +1,6 @@
repos:
- repo: https://github.com/pre-commit/pre-commit-hooks
rev: v4.5.0
rev: v5.0.0
hooks:
- id: trailing-whitespace
exclude: docs/modules/python
@@ -10,17 +10,17 @@ repos:
- id: debug-statements
- repo: https://github.com/tox-dev/pyproject-fmt
rev: 1.7.0
rev: v2.5.1
hooks:
- id: pyproject-fmt
- repo: https://github.com/abravalheri/validate-pyproject
rev: v0.16
rev: v0.24.1
hooks:
- id: validate-pyproject
- repo: https://github.com/astral-sh/ruff-pre-commit
# Ruff version.
rev: v0.4.1
rev: v0.11.8
hooks:
# Run the linter.
- id: ruff
@@ -33,7 +33,7 @@ repos:
types_or: [python, pyi, jupyter]
- repo: https://github.com/pre-commit/mirrors-mypy
rev: v1.9.0
rev: v1.15.0
hooks:
- id: mypy
additional_dependencies:
+6
View File
@@ -20,6 +20,12 @@ ignore = [
"B010",
"B904",
"B018",
# Temporarily ignore ASYNC rules until they can be properly fixed in a separate PR
"ASYNC110",
"ASYNC220",
"ASYNC221",
"ASYNC230",
"ASYNC251",
]
[lint.flake8-quotes]
+1 -1
View File
@@ -7,7 +7,7 @@ services:
image: openhands:latest
container_name: openhands-app-${DATE:-}
environment:
- SANDBOX_RUNTIME_CONTAINER_IMAGE=${SANDBOX_RUNTIME_CONTAINER_IMAGE:-docker.all-hands.dev/all-hands-ai/runtime:0.37-nikolaik}
- SANDBOX_RUNTIME_CONTAINER_IMAGE=${SANDBOX_RUNTIME_CONTAINER_IMAGE:-docker.all-hands.dev/all-hands-ai/runtime:0.39-nikolaik}
#- SANDBOX_USER_ID=${SANDBOX_USER_ID:-1234} # enable this only if you want a specific non-root sandbox user but you will have to manually adjust permissions of openhands-state for this user
- WORKSPACE_MOUNT_PATH=${WORKSPACE_BASE:-$PWD/workspace}
ports:
+10 -15
View File
@@ -4,37 +4,32 @@ This website is built using [Docusaurus](https://docusaurus.io/).
When published, the content will be published at https://docs.all-hands.dev/.
### Installation
### Local Development
```bash
$ cd docs
$ yarn
$ npm install
$ npm run start
```
### Local Development
```
$ yarn start # for the default English version
```
This command starts a local development server and opens up a browser window. Most changes are reflected live without having to restart the server.
This command starts a local development server and opens up a browser window.
Most changes are reflected live without having to restart the server.
Alternatively, you can pass a `--locale` argument to render a specific language in dev mode as in:
```
$ yarn start --locale pt-BR # for the Brazilian Portuguese version
$ yarn start --locale fr # for the French version
$ yarn start --locale zh-Hans # for the Chinese Han (simplified variant) version
$ npm run start --locale pt-BR # for the Brazilian Portuguese version
$ npm run start --locale fr # for the French version
$ npm run start --locale zh-Hans # for the Chinese Han (simplified variant) version
```
### Build
```
$ yarn build
$ npm run build
```
This command generates static content into the `build` directory and can be served using any static contents hosting service.
It compiles all languages.
### Deployment
@@ -57,4 +52,4 @@ $ poetry run python docs/translation_updater.py
# ...
```
This process uses `claude-3-7-sonnet-20250219` as base model and each language consumes at least ~30k input tokens and ~35k output tokens.
This process uses `claude-sonnet-4-20250514` as base model and each language consumes at least ~30k input tokens and ~35k output tokens.
@@ -22,4 +22,4 @@ Veuillez noter que la sélection de ces technologies est en cours, et des techno
## Licence
Distribué sous la [Licence](https://github.com/All-Hands-AI/OpenHands/blob/main/LICENSE) MIT.
Distribué sous la [Licence](https://github.com/All-Hands-AI/OpenHands/blob/main/LICENSE) MIT.
@@ -20,4 +20,4 @@ L'idée conceptuelle est illustrée ci-dessous. À chaque tour, l'agent peut :
https://github.com/All-Hands-AI/OpenHands/assets/38853559/f592a192-e86c-4f48-ad31-d69282d5f6ac
_Exemple de CodeActAgent avec `gpt-4-turbo-2024-04-09` réalisant une tâche de science des données (régression linéaire)_.
_Exemple de CodeActAgent avec `gpt-4-turbo-2024-04-09` réalisant une tâche de science des données (régression linéaire)_.
@@ -51,4 +51,4 @@ _**Avertissement** : L'architecture backend est en cours de développement et pe
6. Exporter le diagramme en fichiers PNG et SVG et remplacer les diagrammes existants dans le répertoire `docs/architecture`. Cela peut être fait avec (par exemple [PlantText](https://www.planttext.com/))
</div>
</details>
</details>
@@ -125,4 +125,4 @@ Aspects clés du système de plugins :
2. Enregistrement du plugin : Les plugins disponibles sont enregistrés dans un dictionnaire `ALL_PLUGINS`
3. Spécification du plugin : Les plugins sont associés à `Agent.sandbox_plugins: list[PluginRequirement]`. Les utilisateurs peuvent spécifier quels plugins charger lors de l'initialisation du runtime
4. Initialisation : Les plugins sont initialisés de manière asynchrone au démarrage du client runtime
5. Utilisation : Le client runtime peut utiliser les plugins initialisés pour étendre ses capacités (par exemple, le JupyterPlugin pour exécuter des cellules IPython)
5. Utilisation : Le client runtime peut utiliser les plugins initialisés pour étendre ses capacités (par exemple, le JupyterPlugin pour exécuter des cellules IPython)
@@ -69,7 +69,7 @@ data = {
response = requests.post(url, headers=headers, json=data)
conversation = response.json()
print(f"Conversation Link: https://app.all-hands.dev/conversations/{conversation['id']}")
print(f"Conversation Link: https://app.all-hands.dev/conversations/{conversation['conversation_id']}")
print(f"Status: {conversation['status']}")
```
</details>
@@ -174,4 +174,4 @@ La réponse est formatée comme suit :
L'API a une limite de 10 conversations simultanées par compte. Si vous avez besoin d'une limite plus élevée pour votre cas d'utilisation, veuillez nous contacter à [contact@all-hands.dev](mailto:contact@all-hands.dev).
Si vous dépassez cette limite, l'API renverra une réponse 429 Too Many Requests.
Si vous dépassez cette limite, l'API renverra une réponse 429 Too Many Requests.
@@ -1,33 +0,0 @@
# Résolveur GitHub Cloud
Le Résolveur GitHub automatise les corrections de code et fournit une assistance intelligente pour vos dépôts.
## Configuration
Le Résolveur GitHub Cloud est disponible automatiquement lorsque vous
[accordez l'accès au dépôt OpenHands Cloud](./openhands-cloud#adding-repository-access).
## Utilisation
Après avoir accordé l'accès au dépôt OpenHands Cloud, vous pouvez utiliser le Résolveur GitHub Cloud sur les problèmes et les pull requests
du dépôt.
### Problèmes (Issues)
Sur votre dépôt, étiquetez un problème avec `openhands`. OpenHands va :
1. Commenter le problème pour vous informer qu'il y travaille.
- Vous pouvez cliquer sur le lien pour suivre la progression sur OpenHands Cloud.
2. Ouvrir une pull request s'il détermine que le problème a été résolu avec succès.
3. Commenter le problème avec un résumé des tâches effectuées et un lien vers la pull request.
### Pull Requests
Pour qu'OpenHands travaille sur des pull requests, utilisez `@openhands` dans les commentaires de premier niveau ou en ligne pour :
- Poser des questions
- Demander des mises à jour
- Obtenir des explications de code
OpenHands va :
1. Commenter la PR pour vous informer qu'il y travaille.
2. Effectuer la tâche.
@@ -0,0 +1,32 @@
# Résolveur de Problèmes Cloud
Le Résolveur de Problèmes Cloud automatise les corrections de code et fournit une assistance intelligente pour vos dépôts sur GitHub et GitLab.
## Configuration
Le Résolveur de Problèmes Cloud est disponible automatiquement lorsque vous accordez l'accès au dépôt OpenHands Cloud :
- [Accès au dépôt GitHub](./github-installation#adding-repository-access)
- [Accès au dépôt GitLab](./gitlab-installation#adding-repository-access)
## Utilisation
Après avoir accordé l'accès au dépôt OpenHands Cloud, vous pouvez utiliser le Résolveur de Problèmes Cloud sur les problèmes et les pull/merge requests dans vos dépôts.
### Travailler avec les Problèmes
Sur votre dépôt, étiquetez un problème avec `openhands`. OpenHands va :
1. Commenter le problème pour vous faire savoir qu'il y travaille
- Vous pouvez cliquer sur le lien pour suivre la progression sur OpenHands Cloud
2. Ouvrir une pull request (GitHub) ou une merge request (GitLab) s'il détermine que le problème a été résolu avec succès
3. Commenter le problème avec un résumé des tâches effectuées et un lien vers la PR/MR
### Travailler avec les Pull/Merge Requests
Pour qu'OpenHands travaille sur les pull requests (GitHub) ou les merge requests (GitLab), mentionnez `@openhands` dans les commentaires pour :
- Poser des questions
- Demander des mises à jour
- Obtenir des explications de code
OpenHands va :
1. Commenter pour vous faire savoir qu'il y travaille
2. Effectuer la tâche demandée
@@ -0,0 +1,29 @@
# Interface Cloud
L'interface Cloud fournit une interface web pour interagir avec OpenHands AI. Cette page explique comment accéder et utiliser l'interface Cloud d'OpenHands.
## Accès à l'Interface
L'interface Cloud d'OpenHands est accessible à [app.all-hands.dev](https://app.all-hands.dev). Vous devrez vous connecter avec votre compte GitHub ou GitLab pour accéder à l'interface.
<!-- Image will be added in a future update -->
<!-- ![Interface Cloud OpenHands](/img/docs/openhands-cloud-ui.png) -->
## Fonctionnalités Clés
Pour des informations détaillées sur les fonctionnalités disponibles dans l'interface Cloud d'OpenHands, veuillez consulter la section [Fonctionnalités Clés](../key-features.md) de la documentation.
## Paramètres
La page des paramètres vous permet de :
1. Configurer les préférences de votre compte
2. Gérer l'accès aux dépôts
3. Générer des clés API pour un accès programmatique
4. Personnaliser votre expérience OpenHands
## Prochaines Étapes
- [Utiliser le Résolveur de Problèmes Cloud](./cloud-issue-resolver.md) pour automatiser les corrections de code et obtenir de l'aide
- [En savoir plus sur l'API Cloud](./cloud-api.md) pour un accès programmatique
- [Retourner à la Mise en Route](./openhands-cloud.md)
@@ -0,0 +1,55 @@
# Installation GitHub
Ce guide vous accompagne dans le processus d'installation et de configuration d'OpenHands Cloud pour vos dépôts GitHub.
## Prérequis
- Un compte GitHub
- Accès à OpenHands Cloud
## Étapes d'Installation
1. Connectez-vous à [OpenHands Cloud](https://app.all-hands.dev)
2. Si vous n'avez pas encore connecté votre compte GitHub :
- Cliquez sur `Se connecter à GitHub`
- Examinez et acceptez les conditions d'utilisation
- Autorisez l'application OpenHands AI
## Ajout d'Accès au Dépôt
Vous pouvez accorder à OpenHands l'accès à des dépôts spécifiques :
1. Cliquez sur le menu déroulant `Sélectionner un projet GitHub`, puis sélectionnez `Ajouter plus de dépôts...`
2. Sélectionnez votre organisation et choisissez les dépôts spécifiques auxquels vous souhaitez accorder l'accès à OpenHands.
- OpenHands demande des jetons à courte durée de vie (expiration de 8 heures) avec ces permissions :
- Actions : Lecture et écriture
- Administration : Lecture seule
- Statuts de commit : Lecture et écriture
- Contenus : Lecture et écriture
- Problèmes : Lecture et écriture
- Métadonnées : Lecture seule
- Pull requests : Lecture et écriture
- Webhooks : Lecture et écriture
- Workflows : Lecture et écriture
- L'accès au dépôt pour un utilisateur est accordé en fonction de :
- Permission accordée pour le dépôt
- Permissions GitHub de l'utilisateur (propriétaire/collaborateur)
3. Cliquez sur `Installer & Autoriser`
## Modification de l'Accès au Dépôt
Vous pouvez modifier l'accès au dépôt à tout moment :
* En utilisant le même workflow `Sélectionner un projet GitHub > Ajouter plus de dépôts`, ou
* En visitant la page Paramètres et en sélectionnant `Configurer les Dépôts GitHub` dans la section `Paramètres GitHub`.
## Utilisation d'OpenHands avec GitHub
Une fois que vous avez accordé l'accès au dépôt, vous pouvez utiliser OpenHands avec vos dépôts GitHub.
Pour plus de détails sur l'utilisation d'OpenHands avec les problèmes et les pull requests GitHub, consultez la documentation du [Résolveur de Problèmes Cloud](./cloud-issue-resolver.md).
## Prochaines Étapes
- [Accéder à l'Interface Cloud](./cloud-ui.md) pour interagir avec l'interface web
- [Utiliser le Résolveur de Problèmes Cloud](./cloud-issue-resolver.md) pour automatiser les corrections de code et obtenir de l'aide
- [Utiliser l'API Cloud](./cloud-api.md) pour interagir programmatiquement avec OpenHands
@@ -0,0 +1,50 @@
# Installation GitLab
Ce guide vous accompagne dans le processus d'installation et de configuration d'OpenHands Cloud pour vos dépôts GitLab.
## Prérequis
- Un compte GitLab
- Accès à OpenHands Cloud
## Étapes d'Installation
1. Connectez-vous à [OpenHands Cloud](https://app.all-hands.dev)
2. Si vous n'avez pas encore connecté votre compte GitLab :
- Cliquez sur `Se connecter à GitLab`
- Examinez et acceptez les conditions d'utilisation
- Autorisez l'application OpenHands AI
## Ajout d'Accès au Dépôt
Vous pouvez accorder à OpenHands l'accès à des dépôts spécifiques :
1. Cliquez sur le menu déroulant `Sélectionner un projet GitLab`, puis sélectionnez `Ajouter plus de dépôts...`
2. Sélectionnez votre organisation et choisissez les dépôts spécifiques auxquels vous souhaitez accorder l'accès à OpenHands.
- OpenHands demande des permissions avec ces portées :
- api : Accès complet à l'API
- read_user : Lecture des informations utilisateur
- read_repository : Lecture des informations du dépôt
- write_repository : Écriture dans le dépôt
- L'accès au dépôt pour un utilisateur est accordé en fonction de :
- Permission accordée pour le dépôt
- Permissions GitLab de l'utilisateur (propriétaire/mainteneur/développeur)
3. Cliquez sur `Installer & Autoriser`
## Modification de l'Accès au Dépôt
Vous pouvez modifier l'accès au dépôt à tout moment :
* En utilisant le même workflow `Sélectionner un projet GitLab > Ajouter plus de dépôts`, ou
* En visitant la page Paramètres et en sélectionnant `Configurer les Dépôts GitLab` dans la section `Paramètres GitLab`.
## Utilisation d'OpenHands avec GitLab
Une fois que vous avez accordé l'accès au dépôt, vous pouvez utiliser OpenHands avec vos dépôts GitLab.
Pour plus de détails sur l'utilisation d'OpenHands avec les problèmes et les merge requests GitLab, consultez la documentation du [Résolveur de Problèmes Cloud](./cloud-issue-resolver.md).
## Prochaines Étapes
- [Accéder à l'Interface Cloud](./cloud-ui.md) pour interagir avec l'interface web
- [Utiliser le Résolveur de Problèmes Cloud](./cloud-issue-resolver.md) pour automatiser les corrections de code et obtenir de l'aide
- [Utiliser l'API Cloud](./cloud-api.md) pour interagir programmatiquement avec OpenHands
@@ -0,0 +1,24 @@
# OpenHands Cloud
OpenHands Cloud est la version hébergée dans le cloud d'OpenHands par All Hands AI.
## Accès à OpenHands Cloud
Pour commencer avec OpenHands Cloud, visitez [app.all-hands.dev](https://app.all-hands.dev).
Vous serez invité à vous connecter avec votre compte GitHub ou GitLab :
1. Après avoir lu et accepté les conditions d'utilisation, cliquez sur `Se connecter à GitHub` ou `Se connecter à GitLab`.
2. Examinez les permissions demandées par OpenHands et autorisez l'application.
- OpenHands nécessitera certaines permissions de votre compte. Pour en savoir plus sur ces permissions,
vous pouvez cliquer sur le lien `En savoir plus` sur la page d'autorisation.
## Prochaines Étapes
Une fois que vous avez connecté votre compte, vous pouvez :
- [Installer l'Intégration GitHub](./github-installation.md) pour utiliser OpenHands avec vos dépôts GitHub
- [Installer l'Intégration GitLab](./gitlab-installation.md) pour utiliser OpenHands avec vos dépôts GitLab
- [Accéder à l'Interface Cloud](./cloud-ui.md) pour interagir avec l'interface web
- [Utiliser l'API Cloud](./cloud-api.md) pour interagir programmatiquement avec OpenHands
- [Configurer le Résolveur de Problèmes Cloud](./cloud-issue-resolver.md) pour automatiser les corrections de code et fournir une assistance intelligente
@@ -1,65 +0,0 @@
# OpenHands Cloud
OpenHands Cloud est la version hébergée dans le cloud d'OpenHands par All Hands AI.
## Accéder à OpenHands Cloud
OpenHands Cloud est accessible à l'adresse https://app.all-hands.dev/.
Vous pouvez également interagir avec OpenHands Cloud par programmation en utilisant l'[API](./cloud-api).
## Premiers pas
Après avoir visité OpenHands Cloud, il vous sera demandé de vous connecter avec votre compte GitHub ou GitLab :
1. Après avoir lu et accepté les conditions d'utilisation, cliquez sur `Log in with GitHub` ou `Log in with GitLab`.
2. Examinez les autorisations demandées par OpenHands, puis cliquez sur `Authorize OpenHands AI`.
- OpenHands nécessitera certaines autorisations de votre compte GitHub ou GitLab. Pour en savoir plus sur ces autorisations :
- GitHub : Vous pouvez cliquer sur le lien `Learn more` sur la page d'autorisation GitHub.
- GitLab : Vous pouvez développer chaque demande d'autorisation sur la page d'autorisation GitLab.
## Accès aux dépôts
### GitHub
#### Ajouter l'accès aux dépôts
Vous pouvez accorder à OpenHands un accès à des dépôts spécifiques :
1. Cliquez sur `Add GitHub repos` sur la page d'accueil.
2. Sélectionnez l'organisation, puis choisissez les dépôts spécifiques auxquels vous souhaitez donner accès à OpenHands.
<details>
<summary>Détails des autorisations pour l'accès aux dépôts</summary>
Openhands demande des jetons à courte durée de vie (expiration de 8 heures) avec ces autorisations :
- Actions : Lecture et écriture
- Administration : Lecture seule
- Statuts de commit : Lecture et écriture
- Contenus : Lecture et écriture
- Issues : Lecture et écriture
- Métadonnées : Lecture seule
- Pull requests : Lecture et écriture
- Webhooks : Lecture et écriture
- Workflows : Lecture et écriture
L'accès au dépôt pour un utilisateur est accordé en fonction de :
- L'autorisation accordée pour le dépôt.
- Les autorisations GitHub de l'utilisateur (propriétaire/collaborateur).
</details>
3. Cliquez sur `Install & Authorize`.
#### Modifier l'accès aux dépôts
Vous pouvez modifier l'accès aux dépôts GitHub à tout moment en :
* Utilisant le même processus `Add GitHub repos`, ou
* Visitant la page Paramètres et en sélectionnant `Configure GitHub Repositories` dans la section `Git Settings`.
### GitLab
Lorsque vous utilisez votre compte GitLab, OpenHands aura automatiquement accès à vos dépôts.
## Persistance des conversations
- Liste des conversations Affiche uniquement les 10 conversations les plus récentes initiées au cours des 10 derniers jours.
- Espaces de travail Les espaces de travail de conversation sont conservés pendant 14 jours.
- Environnements d'exécution Les environnements d'exécution restent actifs ("chauds") pendant 30 minutes. Après cette période, la reprise d'une conversation peut prendre 1 à 2 minutes.
@@ -392,4 +392,4 @@ Pour les utiliser avec la commande docker, passez `-e SANDBOX_<option>`. Exemple
Les options de configuration de sécurité sont définies dans la section `[security]` du fichier `config.toml`.
Pour les utiliser avec la commande docker, passez `-e SECURITY
Pour les utiliser avec la commande docker, passez `-e SECURITY
@@ -20,4 +20,4 @@ export MY_ENV_VAR="my value"
sudo apt-get update
sudo apt-get install -y lsof
cd frontend && npm install ; cd ..
```
```
@@ -35,4 +35,4 @@ Pour les données sur les serveurs d'All Hands AI, nous sommes heureux de les su
**Une Seule Donnée :** Si vous souhaitez qu'une donnée soit supprimée, nous ajouterons prochainement un mécanisme pour supprimer des éléments de données en utilisant le lien et le mot de passe qui s'affichent sur l'interface lorsque vous soumettez des données.
**Toutes les Données :** Si vous souhaitez que toutes vos données soient supprimées, ou si vous ne disposez pas de l'identifiant et du mot de passe que vous avez reçus lors de la soumission des données, veuillez contacter `contact@all-hands.dev` depuis l'adresse e-mail que vous avez enregistrée lors de la soumission initiale des données.
**Toutes les Données :** Si vous souhaitez que toutes vos données soient supprimées, ou si vous ne disposez pas de l'identifiant et du mot de passe que vous avez reçus lors de la soumission des données, veuillez contacter `contact@all-hands.dev` depuis l'adresse e-mail que vous avez enregistrée lors de la soumission initiale des données.
@@ -1,10 +1,10 @@
# Premiers pas avec OpenHands
Vous avez [exécuté OpenHands](./installation) et vous avez
Vous avez [exécuté OpenHands](./installation) et vous avez
[configuré votre LLM](./installation#setup). Et maintenant ?
OpenHands peut vous aider pour diverses tâches d'ingénierie. Cependant, la technologie est encore nouvelle, et nous sommes loin d'avoir
des agents capables de gérer des tâches complexes de manière autonome. Il est important de comprendre ce que l'agent fait bien et où il
OpenHands peut vous aider pour diverses tâches d'ingénierie. Cependant, la technologie est encore nouvelle, et nous sommes loin d'avoir
des agents capables de gérer des tâches complexes de manière autonome. Il est important de comprendre ce que l'agent fait bien et où il
a besoin de soutien.
## Hello World
@@ -96,4 +96,4 @@ Gardez ces conseils à l'esprit :
* Fournissez beaucoup de contexte.
* Committez et poussez fréquemment.
Consultez [Meilleures pratiques de prompt](./prompting/prompting-best-practices) pour plus de conseils sur la façon de tirer le meilleur parti d'OpenHands.
Consultez [Meilleures pratiques de prompt](./prompting/prompting-best-practices) pour plus de conseils sur la façon de tirer le meilleur parti d'OpenHands.
@@ -37,7 +37,7 @@ Pour exécuter OpenHands en mode CLI avec Docker :
```bash
docker run -it \
--pull=always \
-e SANDBOX_RUNTIME_CONTAINER_IMAGE=docker.all-hands.dev/all-hands-ai/runtime:0.37-nikolaik \
-e SANDBOX_RUNTIME_CONTAINER_IMAGE=docker.all-hands.dev/all-hands-ai/runtime:0.39-nikolaik \
-e SANDBOX_USER_ID=$(id -u) \
-e SANDBOX_VOLUMES=$SANDBOX_VOLUMES \
-e LLM_API_KEY=$LLM_API_KEY \
@@ -46,10 +46,10 @@ docker run -it \
-v ~/.openhands-state:/.openhands-state \
--add-host host.docker.internal:host-gateway \
--name openhands-app-$(date +%Y%m%d%H%M%S) \
docker.all-hands.dev/all-hands-ai/openhands:0.37 \
docker.all-hands.dev/all-hands-ai/openhands:0.39 \
python -m openhands.core.cli
```
Cette commande lancera une session interactive dans Docker où vous pourrez saisir des tâches et recevoir des réponses d'OpenHands.
Le paramètre `-e SANDBOX_USER_ID=$(id -u)` est transmis à la commande Docker pour s'assurer que l'utilisateur du sandbox correspond aux permissions de l'utilisateur hôte. Cela empêche l'agent de créer des fichiers appartenant à root dans l'espace de travail monté.
Le paramètre `-e SANDBOX_USER_ID=$(id -u)` est transmis à la commande Docker pour s'assurer que l'utilisateur du sandbox correspond aux permissions de l'utilisateur hôte. Cela empêche l'agent de créer des fichiers appartenant à root dans l'espace de travail monté.
@@ -92,4 +92,4 @@ platform = "linux/amd64"
### Exécution
Exécutez OpenHands en lançant ```make run``` dans le répertoire principal.
Exécutez OpenHands en lançant ```make run``` dans le répertoire principal.
@@ -68,4 +68,4 @@ Les valeurs dans l'extrait ci-dessus peuvent être mises à jour de sorte que :
* *d* : le répertoire de travail openhands
* *c* : l'agent
* *l* : la configuration LLM (prédéfinie dans config.toml)
* *n* : nom de session (par exemple, nom d'eventstream)
* *n* : nom de session (par exemple, nom d'eventstream)
@@ -71,4 +71,4 @@ Lorsque vous apportez des modifications au code, veuillez vous assurer que :
1. La documentation pertinente est mise à jour pour refléter vos changements
2. Les nouvelles fonctionnalités sont documentées dans les fichiers README appropriés
3. Tout changement d'API est reflété dans la documentation du serveur
4. La documentation suit le guide de style dans `/docs/DOC_STYLE_GUIDE.md`
4. La documentation suit le guide de style dans `/docs/DOC_STYLE_GUIDE.md`
@@ -275,4 +275,4 @@ Cette fonction fait ce qui suit :
2. Vérifie combien de fois l'agent a tenté de communiquer avec l'utilisateur
3. Si l'agent a fait plusieurs tentatives, elle lui fournit une option pour abandonner
En utilisant cette fonction, vous pouvez assurer un comportement cohérent à travers plusieurs séries d'évaluations et empêcher l'agent de rester bloqué en attendant une entrée humaine.
En utilisant cette fonction, vous pouvez assurer un comportement cohérent à travers plusieurs séries d'évaluations et empêcher l'agent de rester bloqué en attendant une entrée humaine.
@@ -48,4 +48,4 @@ Les options de personnalisation que vous pouvez définir sont :
| `OPENHANDS_MAX_ITER` | Variable | Définir la limite maximale d'itérations de l'agent | `OPENHANDS_MAX_ITER=10` |
| `OPENHANDS_MACRO` | Variable | Personnaliser la macro par défaut pour invoquer le résolveur | `OPENHANDS_MACRO=@resolveit` |
| `OPENHANDS_BASE_CONTAINER_IMAGE` | Variable | Sandbox personnalisé ([en savoir plus](https://docs.all-hands.dev/modules/usage/how-to/custom-sandbox-guide)) | `OPENHANDS_BASE_CONTAINER_IMAGE="custom_image"` |
| `TARGET_BRANCH` | Variable | Fusionner vers une branche autre que `main` | `TARGET_BRANCH="dev"` |
| `TARGET_BRANCH` | Variable | Fusionner vers une branche autre que `main` | `TARGET_BRANCH="dev"` |
@@ -139,4 +139,4 @@ OpenHands exporte automatiquement un `GITLAB_TOKEN` vers l'environnement shell s
- Utilisez l'un des modèles recommandés, comme décrit dans la [section LLMs](usage/llms/llms.md).
N'oubliez pas que le mode GUI d'OpenHands est conçu pour rendre votre interaction avec l'assistant IA aussi fluide et intuitive
que possible. N'hésitez pas à explorer ses fonctionnalités pour maximiser votre productivité.
que possible. N'hésitez pas à explorer ses fonctionnalités pour maximiser votre productivité.
@@ -34,7 +34,7 @@ Pour exécuter OpenHands en mode Headless avec Docker :
```bash
docker run -it \
--pull=always \
-e SANDBOX_RUNTIME_CONTAINER_IMAGE=docker.all-hands.dev/all-hands-ai/runtime:0.37-nikolaik \
-e SANDBOX_RUNTIME_CONTAINER_IMAGE=docker.all-hands.dev/all-hands-ai/runtime:0.39-nikolaik \
-e SANDBOX_USER_ID=$(id -u) \
-e SANDBOX_VOLUMES=$SANDBOX_VOLUMES \
-e LLM_API_KEY=$LLM_API_KEY \
@@ -44,7 +44,7 @@ docker run -it \
-v ~/.openhands-state:/.openhands-state \
--add-host host.docker.internal:host-gateway \
--name openhands-app-$(date +%Y%m%d%H%M%S) \
docker.all-hands.dev/all-hands-ai/openhands:0.37 \
docker.all-hands.dev/all-hands-ai/openhands:0.39 \
python -m openhands.core.main -t "write a bash script that prints hi"
```
@@ -56,4 +56,4 @@ Pour voir toutes les options de configuration disponibles pour le mode headless,
### Journaux supplémentaires
Pour que le mode headless enregistre toutes les actions de l'agent, exécutez dans le terminal : `export LOG_ALL_EVENTS=true`
Pour que le mode headless enregistre toutes les actions de l'agent, exécutez dans le terminal : `export LOG_ALL_EVENTS=true`
@@ -58,17 +58,17 @@ Un système avec un processeur moderne et un minimum de **4 Go de RAM** est reco
La façon la plus simple d'exécuter OpenHands est dans Docker.
```bash
docker pull docker.all-hands.dev/all-hands-ai/runtime:0.37-nikolaik
docker pull docker.all-hands.dev/all-hands-ai/runtime:0.39-nikolaik
docker run -it --rm --pull=always \
-e SANDBOX_RUNTIME_CONTAINER_IMAGE=docker.all-hands.dev/all-hands-ai/runtime:0.37-nikolaik \
-e SANDBOX_RUNTIME_CONTAINER_IMAGE=docker.all-hands.dev/all-hands-ai/runtime:0.39-nikolaik \
-e LOG_ALL_EVENTS=true \
-v /var/run/docker.sock:/var/run/docker.sock \
-v ~/.openhands-state:/.openhands-state \
-p 3000:3000 \
--add-host host.docker.internal:host-gateway \
--name openhands-app \
docker.all-hands.dev/all-hands-ai/openhands:0.37
docker.all-hands.dev/all-hands-ai/openhands:0.39
```
Vous trouverez OpenHands en cours d'exécution à l'adresse http://localhost:3000 !
@@ -118,4 +118,4 @@ Cette version est instable et est recommandée uniquement à des fins de test ou
Pour le flux de travail de développement, consultez [Development.md](https://github.com/All-Hands-AI/OpenHands/blob/main/Development.md).
Vous rencontrez des problèmes ? Consultez notre [Guide de dépannage](https://docs.all-hands.dev/modules/usage/troubleshooting).
Vous rencontrez des problèmes ? Consultez notre [Guide de dépannage](https://docs.all-hands.dev/modules/usage/troubleshooting).
@@ -1,8 +1,8 @@
# Aperçu des fonctionnalités d'OpenHands
# Aperçu des Fonctionnalités d'OpenHands
![aperçu](/img/oh-features.png)
### Panneau de discussion
### Panneau de Discussion
- Affiche la conversation entre l'utilisateur et OpenHands.
- OpenHands explique ses actions dans ce panneau.
@@ -10,8 +10,8 @@
- Montre les modifications de fichiers effectuées par OpenHands.
### VS Code
- VS Code intégré pour parcourir et modifier des fichiers.
- Peut également être utilisé pour télécharger et importer des fichiers.
- VS Code intégré pour parcourir et modifier les fichiers.
- Peut également être utilisé pour télécharger et envoyer des fichiers.
### Terminal
- Un espace permettant à OpenHands et aux utilisateurs d'exécuter des commandes terminal.
@@ -25,5 +25,5 @@
- Les utilisateurs peuvent interagir avec l'application en cours d'exécution.
### Navigateur
- Utilisé par OpenHands pour naviguer sur des sites web.
- Le navigateur n'est pas interactif.
- Utilisé par OpenHands pour naviguer sur les sites web.
- Le navigateur n'est pas interactif.
@@ -4,7 +4,7 @@ OpenHands utilise LiteLLM pour effectuer des appels aux modèles de chat d'Azure
## Configuration d'Azure OpenAI
Lors de l'exécution d'OpenHands, vous devrez définir la variable d'environnement suivante en utilisant `-e` dans la
Lors de l'exécution d'OpenHands, vous devrez définir la variable d'environnement suivante en utilisant `-e` dans la
[commande docker run](../installation#running-openhands) :
```
@@ -38,4 +38,4 @@ Lors de l'exécution d'OpenHands, définissez la variable d'environnement suivan
```
LLM_API_VERSION="<api-version>" # ex. "2024-02-15-preview"
```
```
@@ -133,4 +133,4 @@ Utilisez cette configuration lorsque vous souhaitez qu'un LLM ébauche des modif
:::note
Les configurations LLM personnalisées ne sont disponibles que lorsque vous utilisez OpenHands en mode développement, via `main.py` ou `cli.py`. Lors de l'exécution via `docker run`, veuillez utiliser les options de configuration standard.
:::
:::
@@ -26,4 +26,4 @@ VERTEXAI_LOCATION="<votre-emplacement-gcp>"
Ensuite, définissez les éléments suivants dans l'interface utilisateur d'OpenHands via les Paramètres :
- `LLM Provider` sur `VertexAI`
- `LLM Model` sur le modèle que vous utiliserez.
Si le modèle n'est pas dans la liste, activez les options `Advanced`, et saisissez-le dans `Custom Model` (par exemple vertex_ai/&lt;nom-du-modèle&gt;).
Si le modèle n'est pas dans la liste, activez les options `Advanced`, et saisissez-le dans `Custom Model` (par exemple vertex_ai/&lt;nom-du-modèle&gt;).
@@ -19,4 +19,4 @@ accéderiez à n'importe quel point de terminaison compatible OpenAI. Dans l'int
2. Définissez les éléments suivants :
- `Custom Model` avec le préfixe `openai/` + le modèle que vous utiliserez (par exemple `openai/llama3-70b-8192`)
- `Base URL` sur `https://api.groq.com/openai/v1`
- `API Key` avec votre clé API Groq
- `API Key` avec votre clé API Groq
@@ -17,4 +17,4 @@ Pour utiliser le proxy LiteLLM avec OpenHands, vous devez :
Les modèles pris en charge dépendent de la configuration de votre proxy LiteLLM. OpenHands prend en charge tous les modèles que votre proxy LiteLLM est configuré pour gérer.
Référez-vous à la configuration de votre proxy LiteLLM pour la liste des modèles disponibles et leurs noms.
Référez-vous à la configuration de votre proxy LiteLLM pour la liste des modèles disponibles et leurs noms.
@@ -13,7 +13,7 @@ recommandations pour la sélection de modèles. Nos derniers résultats d'évalu
Sur la base de ces résultats et des retours de la communauté, les modèles suivants ont été vérifiés comme fonctionnant raisonnablement bien avec OpenHands :
- [anthropic/claude-3-7-sonnet-20250219](https://www.anthropic.com/api) (recommandé)
- [anthropic/claude-sonnet-4-20250514](https://www.anthropic.com/api) (recommandé)
- [gemini/gemini-2.5-pro](https://blog.google/technology/google-deepmind/gemini-model-thinking-updates-march-2025/)
- [deepseek/deepseek-chat](https://api-docs.deepseek.com/)
- [openai/o3-mini](https://openai.com/index/openai-o3-mini/)
@@ -89,4 +89,4 @@ num_retries = 4
retry_min_wait = 5
retry_max_wait = 30
retry_multiplier = 2
```
```
@@ -80,4 +80,4 @@ Une fois qu'OpenHands est en cours d'exécution, vous devrez définir les élém
2. Définissez les éléments suivants :
- `Modèle personnalisé` sur `openai/<served-model-name>` (par exemple `openai/openhands-lm-32b-v0.1`)
- `URL de base` sur `http://host.docker.internal:8000`
- `Clé API` sur la même chaîne que celle que vous avez définie lors du service du modèle (par exemple `mykey`)
- `Clé API` sur la même chaîne que celle que vous avez définie lors du service du modèle (par exemple `mykey`)
@@ -22,4 +22,4 @@ Si vous utilisez un proxy OpenAI, dans l'interface utilisateur d'OpenHands via l
2. Définissez les éléments suivants :
- `Custom Model` sur openai/&lt;nom-du-modèle&gt; (par exemple `openai/gpt-4o` ou openai/&lt;préfixe-proxy&gt;/&lt;nom-du-modèle&gt;)
- `Base URL` sur l'URL de votre proxy OpenAI
- `API Key` sur votre clé API OpenAI
- `API Key` sur votre clé API OpenAI
@@ -9,4 +9,4 @@ Lors de l'exécution d'OpenHands, vous devrez définir les éléments suivants d
* `LLM Model` sur le modèle que vous utiliserez.
[Visitez ce lien pour voir une liste complète des modèles OpenRouter](https://openrouter.ai/models).
Si le modèle ne figure pas dans la liste, activez les options `Advanced`, et saisissez-le dans `Custom Model` (par exemple openrouter/&lt;nom-du-modèle&gt; comme `openrouter/anthropic/claude-3.5-sonnet`).
* `API Key` avec votre clé API OpenRouter.
* `API Key` avec votre clé API OpenRouter.
@@ -93,4 +93,4 @@ L'agent peut alors utiliser ces outils comme n'importe quel outil intégré. Lor
1. OpenHands achemine l'appel vers le serveur MCP approprié
2. Le serveur traite la demande et renvoie une réponse
3. OpenHands convertit la réponse en une observation et la présente à l'agent
3. OpenHands convertit la réponse en une observation et la présente à l'agent
@@ -33,4 +33,4 @@ triggers:
L'utilisateur a dit le mot magique. Répondez avec "C'était délicieux !"
```
[Voir des exemples de microagents déclenchés par mots-clés dans le dépôt officiel OpenHands](https://github.com/All-Hands-AI/OpenHands/tree/main/microagents)
[Voir des exemples de microagents déclenchés par mots-clés dans le dépôt officiel OpenHands](https://github.com/All-Hands-AI/OpenHands/tree/main/microagents)
@@ -37,4 +37,4 @@ est requis :
| Type de Microagent | Requis |
|----------------------------------------|---------|
| `Microagents Généraux de Dépôt` | Non |
| `Microagents Déclenchés par Mots-clés` | Oui |
| `Microagents Déclenchés par Mots-clés` | Oui |
@@ -47,4 +47,4 @@ Soumettez une pull request avec :
- Le nouveau fichier de microagent.
- Documentation mise à jour si nécessaire.
- Description de l'objectif et des capacités de l'agent.
- Description de l'objectif et des capacités de l'agent.
@@ -28,4 +28,4 @@ Pour la configurer, vous pouvez exécuter `npm run build`.
Assurez-vous toujours que les tests sont réussis avant de valider les modifications. Vous pouvez exécuter les tests en lançant `npm run test`.
```
[Voir plus d'exemples de microagents généraux de dépôt ici.](https://github.com/All-Hands-AI/OpenHands/tree/main/.openhands/microagents)
[Voir plus d'exemples de microagents généraux de dépôt ici.](https://github.com/All-Hands-AI/OpenHands/tree/main/.openhands/microagents)
@@ -34,4 +34,4 @@ Les bons prompts sont :
Plus votre prompt est précis et informatif, mieux OpenHands pourra vous aider.
Voir [Démarrer avec OpenHands](../getting-started) pour plus d'exemples de prompts utiles.
Voir [Démarrer avec OpenHands](../getting-started) pour plus d'exemples de prompts utiles.
@@ -22,4 +22,4 @@ OpenHands prend en charge plusieurs environnements d'exécution différents :
- [Environnement distant OpenHands](./runtimes/remote.md) - Environnement d'exécution basé sur le cloud pour l'exécution parallèle (bêta).
- [Environnement Modal](./runtimes/modal.md) - Environnement d'exécution fourni par nos partenaires chez Modal.
- [Environnement Daytona](./runtimes/daytona.md) - Environnement d'exécution fourni par Daytona.
- [Environnement local](./runtimes/local.md) - Exécution directe sur votre machine locale sans Docker.
- [Environnement local](./runtimes/local.md) - Exécution directe sur votre machine locale sans Docker.
@@ -5,4 +5,4 @@ title: Runtime Configuration
import { Redirect } from '@docusaurus/router';
<Redirect to="/modules/usage/runtimes-index" />
<Redirect to="/modules/usage/runtimes-index" />
@@ -29,4 +29,4 @@ bash -i <(curl -sL https://get.daytona.io/openhands)
Une fois exécuté, OpenHands devrait fonctionner localement et être prêt à l'emploi.
Pour plus de détails et une initialisation manuelle, consultez le [README.md](https://github.com/All-Hands-AI/OpenHands/blob/main/openhands/runtime/impl/daytona/README.md) complet
Pour plus de détails et une initialisation manuelle, consultez le [README.md](https://github.com/All-Hands-AI/OpenHands/blob/main/openhands/runtime/impl/daytona/README.md) complet
@@ -126,4 +126,4 @@ docker network create openhands-network
# Exécuter OpenHands dans le réseau isolé
docker run # ... \
--network openhands-network \
```
```
@@ -71,4 +71,4 @@ Le Runtime Local est particulièrement utile pour :
- Les pipelines CI/CD où Docker n'est pas disponible.
- Les tests et le développement d'OpenHands lui-même.
- Les environnements où l'utilisation de conteneurs est restreinte.
- Les environnements où l'utilisation de conteneurs est restreinte.
@@ -10,4 +10,4 @@ docker run # ...
-e RUNTIME=modal \
-e MODAL_API_TOKEN_ID="your-id" \
-e MODAL_API_TOKEN_SECRET="modal-api-key" \
```
```
@@ -1,9 +1,9 @@
# OpenHands Remote Runtime
:::note
Ce runtime est spécifiquement conçu uniquement pour des fins d'évaluation d'agents via le
Ce runtime est spécifiquement conçu uniquement pour des fins d'évaluation d'agents via le
[harnais d'évaluation OpenHands](https://github.com/All-Hands-AI/OpenHands/tree/main/evaluation). Il ne doit pas être utilisé pour lancer des applications OpenHands en production.
:::
OpenHands Remote Runtime est actuellement en version bêta (lisez [ici](https://runtime.all-hands.dev/) pour plus de détails), il vous permet de lancer des runtimes
en parallèle dans le cloud. Remplissez [ce formulaire](https://docs.google.com/forms/d/e/1FAIpQLSckVz_JFwg2_mOxNZjCtr7aoBFI2Mwdan3f75J_TrdMS1JV2g/viewform) pour postuler si vous souhaitez l'essayer !
OpenHands Remote Runtime est actuellement en version bêta (lisez [ici](https://runtime.all-hands.dev/) pour plus de détails), il vous permet de lancer des runtimes
en parallèle dans le cloud. Remplissez [ce formulaire](https://docs.google.com/forms/d/e/1FAIpQLSckVz_JFwg2_mOxNZjCtr7aoBFI2Mwdan3f75J_TrdMS1JV2g/viewform) pour postuler si vous souhaitez l'essayer !
@@ -65,4 +65,4 @@ Lors de la première invite, une erreur avec `Permission Denied` ou `PermissionE
* Changer le propriétaire du répertoire : `sudo chown <utilisateur>:<utilisateur> ~/.openhands-state`.
* ou mettre à jour les permissions du répertoire : `sudo chmod 777 ~/.openhands-state`
* ou le supprimer si vous n'avez pas besoin des données précédentes. OpenHands le recréera. Vous devrez ressaisir les paramètres LLM.
* Si vous montez un répertoire local, assurez-vous que votre `WORKSPACE_BASE` dispose des permissions nécessaires pour l'utilisateur exécutant OpenHands.
* Si vous montez un répertoire local, assurez-vous que votre `WORKSPACE_BASE` dispose des permissions nécessaires pour l'utilisateur exécutant OpenHands.
@@ -22,4 +22,4 @@ OpenHandsは強力なフレームワークとライブラリの組み合わせ
## ライセンス
MIT [ライセンス](https://github.com/All-Hands-AI/OpenHands/blob/main/LICENSE)の下で配布されています。
MIT [ライセンス](https://github.com/All-Hands-AI/OpenHands/blob/main/LICENSE)の下で配布されています。
@@ -20,4 +20,4 @@
https://github.com/All-Hands-AI/OpenHands/assets/38853559/f592a192-e86c-4f48-ad31-d69282d5f6ac
_`gpt-4-turbo-2024-04-09`を使用したCodeActAgentがデータサイエンスタスク(線形回帰)を実行する例_
_`gpt-4-turbo-2024-04-09`を使用したCodeActAgentがデータサイエンスタスク(線形回帰)を実行する例_
@@ -49,4 +49,4 @@ _**免責事項**: バックエンドアーキテクチャは進行中の作業
6. 図をPNGおよびSVGファイルとしてエクスポートし、`docs/architecture`ディレクトリ内の既存の図を置き換えます。これは(例えば[PlantText](https://www.planttext.com/)で)行うことができます。
</div>
</details>
</details>
@@ -124,4 +124,4 @@ OpenHandsランタイムは、機能を拡張しランタイム環境をカス
2. プラグイン登録:利用可能なプラグインは`ALL_PLUGINS`辞書に登録されます
3. プラグイン指定:プラグインは`Agent.sandbox_plugins: list[PluginRequirement]`に関連付けられます。ユーザーはランタイムの初期化時にロードするプラグインを指定できます
4. 初期化:プラグインはランタイムクライアントの起動時に非同期で初期化されます
5. 使用法:ランタイムクライアントは初期化されたプラグインを使用して機能を拡張できます(例:IPythonセルを実行するためのJupyterPlugin
5. 使用法:ランタイムクライアントは初期化されたプラグインを使用して機能を拡張できます(例:IPythonセルを実行するためのJupyterPlugin
@@ -69,7 +69,7 @@ data = {
response = requests.post(url, headers=headers, json=data)
conversation = response.json()
print(f"Conversation Link: https://app.all-hands.dev/conversations/{conversation['id']}")
print(f"Conversation Link: https://app.all-hands.dev/conversations/{conversation['conversation_id']}")
print(f"Status: {conversation['status']}")
```
</details>
@@ -174,4 +174,4 @@ curl -X GET "https://app.all-hands.dev/api/conversations/{conversation_id}" \
APIはアカウントごとに10の同時会話の制限があります。ユースケースに応じてより高い制限が必要な場合は、[contact@all-hands.dev](mailto:contact@all-hands.dev)までお問い合わせください。
この制限を超えると、APIは429 Too Many Requestsレスポンスを返します。
この制限を超えると、APIは429 Too Many Requestsレスポンスを返します。
@@ -1,31 +0,0 @@
# Cloud GitHub Resolver
GitHub Resolverはコードの修正を自動化し、リポジトリに対してインテリジェントな支援を提供します。
## セットアップ
Cloud GitHub Resolverは、[OpenHands Cloudにリポジトリアクセス権を付与する](./openhands-cloud#adding-repository-access)と自動的に利用可能になります。
## 使用方法
OpenHands Cloudにリポジトリアクセス権を付与した後、リポジトリの課題(Issue)とプルリクエストでCloud GitHub Resolverを使用できます。
### 課題(Issues
リポジトリで課題に`openhands`ラベルを付けると、OpenHandsは以下の操作を行います:
1. 課題にコメントして、作業中であることを通知します。
- OpenHands Cloudで進捗状況を追跡するためのリンクをクリックできます。
2. 課題が正常に解決されたと判断した場合、プルリクエストを開きます。
3. 実行されたタスクの概要とプルリクエストへのリンクを含むコメントを課題に投稿します。
### プルリクエスト
プルリクエストでOpenHandsを利用するには、トップレベルまたはインラインコメントで`@openhands`を使用して:
- 質問する
- 更新をリクエストする
- コードの説明を取得する
OpenHandsは以下の操作を行います:
1. PRにコメントして、作業中であることを通知します。
2. タスクを実行します。
@@ -0,0 +1,32 @@
# クラウド課題リゾルバー
クラウド課題リゾルバーは、GitHubとGitLabのリポジトリに対してコード修正を自動化し、インテリジェントな支援を提供します。
## セットアップ
クラウド課題リゾルバーは、OpenHands Cloudリポジトリアクセスを許可すると自動的に利用可能になります:
- [GitHubリポジトリアクセス](./github-installation#adding-repository-access)
- [GitLabリポジトリアクセス](./gitlab-installation#adding-repository-access)
## 使用方法
OpenHands Cloudリポジトリアクセスを許可した後、リポジトリの課題やプルリクエスト/マージリクエストでクラウド課題リゾルバーを使用できます。
### 課題の操作
リポジトリで、課題に`openhands`というラベルを付けます。OpenHandsは以下を行います:
1. 課題にコメントして、作業中であることを知らせます
- リンクをクリックすると、OpenHands Cloudで進捗状況を追跡できます
2. 課題が正常に解決されたと判断した場合、プルリクエスト(GitHub)またはマージリクエスト(GitLab)を開きます
3. 実行されたタスクの概要とPR/MRへのリンクを含むコメントを課題に残します
### プルリクエスト/マージリクエストの操作
プルリクエスト(GitHub)またはマージリクエスト(GitLab)でOpenHandsを動作させるには、コメントで`@openhands`を言及して以下を行います:
- 質問する
- 更新をリクエストする
- コードの説明を取得する
OpenHandsは以下を行います:
1. 作業中であることを知らせるコメントをします
2. リクエストされたタスクを実行します
@@ -0,0 +1,29 @@
# クラウドUI
クラウドUIは、OpenHands AIと対話するためのウェブインターフェースを提供します。このページでは、OpenHands クラウドUIへのアクセス方法と使用方法について説明します。
## UIへのアクセス
OpenHands クラウドUIは[app.all-hands.dev](https://app.all-hands.dev)でアクセスできます。インターフェースにアクセスするには、GitHubまたはGitLabアカウントでサインインする必要があります。
<!-- 画像は将来のアップデートで追加されます -->
<!-- ![OpenHands クラウドUI](/img/docs/openhands-cloud-ui.png) -->
## 主な機能
OpenHands クラウドUIで利用可能な機能の詳細については、ドキュメントの[主な機能](../key-features.md)セクションを参照してください。
## 設定
設定ページでは以下のことができます:
1. アカウント設定の構成
2. リポジトリアクセスの管理
3. プログラムによるアクセスのためのAPIキーの生成
4. OpenHandsエクスペリエンスのカスタマイズ
## 次のステップ
- [クラウド課題リゾルバーを使用する](./cloud-issue-resolver.md)でコード修正を自動化し、支援を受ける
- [クラウドAPIについて学ぶ](./cloud-api.md)でプログラムによるアクセスを行う
- [はじめにに戻る](./openhands-cloud.md)
@@ -0,0 +1,55 @@
# GitHub インストール
このガイドでは、GitHubリポジトリ用にOpenHands Cloudをインストールおよび設定するプロセスについて説明します。
## 前提条件
- GitHubアカウント
- OpenHands Cloudへのアクセス
## インストール手順
1. [OpenHands Cloud](https://app.all-hands.dev)にログインします
2. まだGitHubアカウントを接続していない場合:
- `GitHubに接続する`をクリックします
- 利用規約を確認して同意します
- OpenHands AIアプリケーションを承認します
## リポジトリアクセスの追加
特定のリポジトリへのアクセスをOpenHandsに許可できます:
1. `GitHubプロジェクトを選択`ドロップダウンをクリックし、`リポジトリを追加...`を選択します
2. 組織を選択し、OpenHandsにアクセスを許可する特定のリポジトリを選択します。
- OpenHandsは以下の権限を持つ短期間のトークン(8時間の有効期限)をリクエストします:
- アクション:読み取りと書き込み
- 管理:読み取り専用
- コミットステータス:読み取りと書き込み
- コンテンツ:読み取りと書き込み
- 課題:読み取りと書き込み
- メタデータ:読み取り専用
- プルリクエスト:読み取りと書き込み
- Webhook:読み取りと書き込み
- ワークフロー:読み取りと書き込み
- ユーザーのリポジトリアクセスは以下に基づいて付与されます:
- リポジトリに付与された権限
- ユーザーのGitHub権限(所有者/コラボレーター)
3. `インストール&承認`をクリックします
## リポジトリアクセスの変更
リポジトリアクセスはいつでも変更できます:
* 同じ`GitHubプロジェクトを選択 > リポジトリを追加`ワークフローを使用する、または
* 設定ページにアクセスし、`GitHub設定`セクションで`GitHubリポジトリを設定する`を選択します。
## GitHubでのOpenHandsの使用
リポジトリアクセスを許可すると、GitHubリポジトリでOpenHandsを使用できます。
GitHub課題とプルリクエストでOpenHandsを使用する方法の詳細については、[クラウド課題リゾルバー](./cloud-issue-resolver.md)のドキュメントを参照してください。
## 次のステップ
- [クラウドUIにアクセスする](./cloud-ui.md)でウェブインターフェースと対話する
- [クラウド課題リゾルバーを使用する](./cloud-issue-resolver.md)でコード修正を自動化し、支援を受ける
- [クラウドAPIを使用する](./cloud-api.md)でプログラムによりOpenHandsと対話する
@@ -0,0 +1,50 @@
# GitLab インストール
このガイドでは、GitLabリポジトリ用にOpenHands Cloudをインストールおよび設定するプロセスについて説明します。
## 前提条件
- GitLabアカウント
- OpenHands Cloudへのアクセス
## インストール手順
1. [OpenHands Cloud](https://app.all-hands.dev)にログインします
2. まだGitLabアカウントを接続していない場合:
- `GitLabに接続する`をクリックします
- 利用規約を確認して同意します
- OpenHands AIアプリケーションを承認します
## リポジトリアクセスの追加
特定のリポジトリへのアクセスをOpenHandsに許可できます:
1. `GitLabプロジェクトを選択`ドロップダウンをクリックし、`リポジトリを追加...`を選択します
2. 組織を選択し、OpenHandsにアクセスを許可する特定のリポジトリを選択します。
- OpenHandsは以下のスコープで権限をリクエストします:
- api:完全なAPIアクセス
- read_user:ユーザー情報の読み取り
- read_repository:リポジトリ情報の読み取り
- write_repository:リポジトリへの書き込み
- ユーザーのリポジトリアクセスは以下に基づいて付与されます:
- リポジトリに付与された権限
- ユーザーのGitLab権限(所有者/メンテナー/開発者)
3. `インストール&承認`をクリックします
## リポジトリアクセスの変更
リポジトリアクセスはいつでも変更できます:
* 同じ`GitLabプロジェクトを選択 > リポジトリを追加`ワークフローを使用する、または
* 設定ページにアクセスし、`GitLab設定`セクションで`GitLabリポジトリを設定する`を選択します。
## GitLabでのOpenHandsの使用
リポジトリアクセスを許可すると、GitLabリポジトリでOpenHandsを使用できます。
GitLab課題とマージリクエストでOpenHandsを使用する方法の詳細については、[クラウド課題リゾルバー](./cloud-issue-resolver.md)のドキュメントを参照してください。
## 次のステップ
- [クラウドUIにアクセスする](./cloud-ui.md)でウェブインターフェースと対話する
- [クラウド課題リゾルバーを使用する](./cloud-issue-resolver.md)でコード修正を自動化し、支援を受ける
- [クラウドAPIを使用する](./cloud-api.md)でプログラムによりOpenHandsと対話する
@@ -0,0 +1,24 @@
# OpenHands クラウド
OpenHands クラウドは、All Hands AIのOpenHandsのホスト型クラウドバージョンです。
## OpenHands クラウドへのアクセス
OpenHands クラウドを始めるには、[app.all-hands.dev](https://app.all-hands.dev)にアクセスしてください。
GitHubまたはGitLabアカウントで接続するよう求められます:
1. 利用規約を読んで同意した後、`GitHubに接続する`または`GitLabに接続する`をクリックします。
2. OpenHandsがリクエストする権限を確認し、アプリケーションを承認します。
- OpenHandsはあなたのアカウントから特定の権限を必要とします。これらの権限について詳しく知るには、
承認ページの`詳細を見る`リンクをクリックしてください。
## 次のステップ
アカウントを接続したら、以下のことができます:
- [GitHub統合をインストールする](./github-installation.md)でGitHubリポジトリでOpenHandsを使用する
- [GitLab統合をインストールする](./gitlab-installation.md)でGitLabリポジトリでOpenHandsを使用する
- [クラウドUIにアクセスする](./cloud-ui.md)でウェブインターフェースと対話する
- [クラウドAPIを使用する](./cloud-api.md)でプログラムによりOpenHandsと対話する
- [クラウド課題リゾルバーを設定する](./cloud-issue-resolver.md)でコード修正を自動化し、インテリジェントな支援を提供する
@@ -1,65 +0,0 @@
# OpenHands Cloud
OpenHands CloudはAll Hands AIによるOpenHandsのクラウドホスト版です。
## OpenHands Cloudへのアクセス
OpenHands Cloudは https://app.all-hands.dev/ でアクセスできます。
[API](./cloud-api)を使用してプログラム的にOpenHands Cloudと対話することもできます。
## はじめに
OpenHands Cloudにアクセスすると、GitHubまたはGitLabアカウントとの接続を求められます:
1. 利用規約を読んで同意した後、`Log in with GitHub`または`Log in with GitLab`をクリックします。
2. OpenHandsが要求する権限を確認し、`Authorize OpenHands AI`をクリックします。
- OpenHandsはGitHubまたはGitLabアカウントからいくつかの権限を必要とします。これらの権限について詳しく知るには:
- GitHubGitHub認証ページの`Learn more`リンクをクリックできます。
- GitLab:GitLab認証ページで各権限リクエストを展開できます。
## リポジトリアクセス
### GitHub
#### リポジトリアクセスの追加
OpenHandsに特定のリポジトリへのアクセス権を付与できます:
1. ホームページで`Add GitHub repos`をクリックします。
2. 組織を選択し、OpenHandsにアクセス権を付与する特定のリポジトリを選択します。
<details>
<summary>リポジトリアクセスの権限詳細</summary>
Openhandsは短期間のトークン(8時間で期限切れ)を以下の権限で要求します:
- Actions:読み取りと書き込み
- Administration:読み取り専用
- Commit statuses:読み取りと書き込み
- Contents:読み取りと書き込み
- Issues:読み取りと書き込み
- Metadata:読み取り専用
- Pull requests:読み取りと書き込み
- Webhooks:読み取りと書き込み
- Workflows:読み取りと書き込み
ユーザーのリポジトリアクセスは以下に基づいて付与されます:
- リポジトリに対して付与された権限
- ユーザーのGitHub権限(オーナー/コラボレーター)
</details>
3. `Install & Authorize`をクリックします。
#### リポジトリアクセスの変更
GitHubリポジトリアクセスはいつでも以下の方法で変更できます:
* 同じ`Add GitHub repos`ワークフローを使用する、または
* 設定ページにアクセスし、`Git Settings`セクションの下にある`Configure GitHub Repositories`を選択する。
### GitLab
GitLabアカウントを使用する場合、OpenHandsは自動的にあなたのリポジトリにアクセスできるようになります。
## 会話の保持
- 会話リスト – 過去10日間に開始された最新10件の会話のみが表示されます。
- ワークスペース – 会話ワークスペースは14日間保持されます。
- ランタイム – ランタイムは30分間アクティブ(「ウォーム」)な状態を維持します。この期間後、会話を再開するには1〜2分かかる場合があります。
@@ -339,4 +339,4 @@ LLM(大規模言語モデル)設定オプションは、`config.toml`ファ
- `user_id`
- 型: `int`
- デフォルト: `1000`
- デフォルト: `1000`
@@ -18,4 +18,4 @@ export MY_ENV_VAR="my value"
sudo apt-get update
sudo apt-get install -y lsof
cd frontend && npm install ; cd ..
```
```
@@ -36,4 +36,4 @@ All Hands AIのサーバー上のデータについては、リクエストに
**1つのデータ:** 1つのデータの削除を希望する場合、近日中にデータを提出した際にインターフェースに表示されるリンクとパスワードを使用してデータを削除するメカニズムを追加する予定です。
**すべてのデータ:** すべてのデータの削除を希望する場合、またはデータ提出時に受け取ったIDとパスワードをお持ちでない場合は、データを最初に提出した際に登録したメールアドレスから`contact@all-hands.dev`にお問い合わせください。
**すべてのデータ:** すべてのデータの削除を希望する場合、またはデータ提出時に受け取ったIDとパスワードをお持ちでない場合は、データを最初に提出した際に登録したメールアドレスから`contact@all-hands.dev`にお問い合わせください。
@@ -90,4 +90,4 @@ OpenHandsはほぼすべてのコーディングタスクを支援できます
* 十分なコンテキストを提供する。
* 頻繁にコミットしてプッシュする。
OpenHandsを最大限に活用する方法についての詳細は、[プロンプトのベストプラクティス](./prompting/prompting-best-practices)をご覧ください。
OpenHandsを最大限に活用する方法についての詳細は、[プロンプトのベストプラクティス](./prompting/prompting-best-practices)をご覧ください。
@@ -36,7 +36,7 @@ DockerでOpenHandsをCLIモードで実行するには:
```bash
docker run -it \
--pull=always \
-e SANDBOX_RUNTIME_CONTAINER_IMAGE=docker.all-hands.dev/all-hands-ai/runtime:0.37-nikolaik \
-e SANDBOX_RUNTIME_CONTAINER_IMAGE=docker.all-hands.dev/all-hands-ai/runtime:0.39-nikolaik \
-e SANDBOX_USER_ID=$(id -u) \
-e SANDBOX_VOLUMES=$SANDBOX_VOLUMES \
-e LLM_API_KEY=$LLM_API_KEY \
@@ -45,10 +45,10 @@ docker run -it \
-v ~/.openhands-state:/.openhands-state \
--add-host host.docker.internal:host-gateway \
--name openhands-app-$(date +%Y%m%d%H%M%S) \
docker.all-hands.dev/all-hands-ai/openhands:0.37 \
docker.all-hands.dev/all-hands-ai/openhands:0.39 \
python -m openhands.core.cli
```
このコマンドはDocker内で対話型セッションを開始し、タスクを入力してOpenHandsからの応答を受け取ることができます。
`-e SANDBOX_USER_ID=$(id -u)`はDockerコマンドに渡され、サンドボックスユーザーがホストユーザーの権限と一致するようにします。これにより、エージェントがマウントされたワークスペースにroot所有のファイルを作成するのを防ぎます。
`-e SANDBOX_USER_ID=$(id -u)`はDockerコマンドに渡され、サンドボックスユーザーがホストユーザーの権限と一致するようにします。これにより、エージェントがマウントされたワークスペースにroot所有のファイルを作成するのを防ぎます。
@@ -98,4 +98,4 @@ platform = "linux/amd64"
### 実行
トップレベルディレクトリで```make run```を実行してOpenHandsを起動します。
トップレベルディレクトリで```make run```を実行してOpenHandsを起動します。
@@ -68,4 +68,4 @@
* *d*: openhandsワークスペースディレクトリ
* *c*: エージェント
* *l*: LLM設定(config.tomlで事前定義)
* *n*: セッション名(例:イベントストリーム名)
* *n*: セッション名(例:イベントストリーム名)
@@ -71,4 +71,4 @@ OpenHandsでの開発が初めての場合は、次の順序に従うことを
1. 関連するドキュメントが変更を反映するように更新されている
2. 新機能が適切なREADMEファイルに文書化されている
3. APIの変更がサーバードキュメントに反映されている
4. ドキュメントが`/docs/DOC_STYLE_GUIDE.md`のスタイルガイドに従っている
4. ドキュメントが`/docs/DOC_STYLE_GUIDE.md`のスタイルガイドに従っている

Some files were not shown because too many files have changed in this diff Show More