文件历史

提交图

24 次代码提交

作者 SHA1 备注 提交日期
Magnus Müller de1c3a4948 Refine README structure section (#31) 2026-04-17 21:59:56 -07:00
Magnus Müller 2c81cc99c5 [codex] Refresh remote debugging screenshot (#30)
* Trim README setup copy

* Refresh remote debugging screenshot
2026-04-17 21:55:58 -07:00
Magnus Müller 6fd06fbe80 Trim README setup copy (#29) 2026-04-17 21:53:35 -07:00
Magnus Müller 7d53eaaa9f Add remote debugging setup image (#28) 2026-04-17 21:50:30 -07:00
Magnus Müller acda8c72a0 Simplify helper surface (#23)
* Simplify helper surface

* Trim common module and restore dispatch key
2026-04-17 21:37:58 -07:00
Magnus Müller 1a083d14df Compress README setup prompt (#21) 2026-04-17 21:00:40 -07:00
Magnus Müller 3193531a28 Split install and runtime docs (#20)
* Split install and runtime docs

* Refine install skill prompts
2026-04-17 20:57:29 -07:00
Gregor Žunič 29c4dfa8e7 changed name 2026-04-17 20:50:33 -07:00
Magnus Müller e7d43ddf37 Tighten README setup prompt (#19) 2026-04-17 19:39:50 -07:00
Magnus Müller a412960746 add spacing between README sections (#16) 2026-04-17 18:23:35 -07:00
Magnus Müller feb7b66557 defer README setup to skill (#15) 2026-04-17 18:21:54 -07:00
Magnus Müller 76cff3b573 update README tagline (#13) 2026-04-17 18:06:09 -07:00
MagMueller b189d0dcf3 tighten README how-it-works bullets 2026-04-17 18:00:38 -07:00
MagMueller 532e2c4c7d tighten README line count wording 2026-04-17 18:00:13 -07:00
MagMueller 444ea762e7 clarify README how-it-works section 2026-04-17 17:59:10 -07:00
MagMueller dc027a5180 reduce README to one example task 2026-04-17 17:56:32 -07:00
MagMueller 4383f7079c refine README setup and examples 2026-04-17 17:55:39 -07:00
MagMueller c20a7d0847 refine setup prompt in README 2026-04-17 17:53:12 -07:00
MagMueller bb40aba44f tighten README to prompt-first flow 2026-04-17 17:49:39 -07:00
MagMueller 94c8ab5aec expand README: setup prompt, features, line counts
- rename "example prompt" → "setup prompt"; coding agent handles clone,
  uv sync, opens chrome://inspect on macOS, walks user through the
  allow-debugging checkbox, verifies connection, navigates to the repo,
  then offers the first task (star the repo)
- setup prompt explicitly tells the agent to read SKILL.md end-to-end first
- add Features section: raw CDP + editable helpers, Browser Use cloud
  for parallel sub-agents (each gets its own live URL), iframe/shadow
  passthrough, http_get bulk fallback
- how-it-works now shows line counts (~580 total) to show how small it is

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-04-17 17:41:01 -07:00
MagMueller 751591eaa6 rewrite README for human setup flow 2026-04-17 17:30:15 -07:00
MagMueller 552aed7087 merge AGENTS into SKILL 2026-04-17 17:16:01 -07:00
Gregor Žunič 5ab5a958bb add remote browser support (Browser Use cloud) + multi-daemon + rename to bu (#1)
* add remote browser support via Browser Use cloud + multi-daemon

HARNESLESS_NAME suffixes socket/pid/log — daemons are independent, no
supervisor. start_remote_daemon() creates a Browser Use cloud browser and
launches a daemon attached to it; kill_daemon() stops both. Local Chrome
path is unchanged.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>

* rename env vars to BU_ prefix (shorter, less noisy in tool calls)

HARNESLESS_NAME → BU_NAME
HARNESLESS_CDP_WS → BU_CDP_WS
HARNESLESS_REMOTE_BROWSER_ID → BU_BROWSER_ID

Socket/pid/log files keep the harnesless- prefix on disk so they're
recognizable in /tmp. BROWSER_USE_API_KEY unchanged (external convention).

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>

* rename project from harnesless to bu

Socket/pid/log paths now /tmp/bu-<name>.{sock,pid,log}. pyproject package
name updated, uv.lock regenerated. Slash command now /bu.

Note: the repo directory itself is still named harnesless on disk. Rename
manually (mv harnesless bu) so the absolute paths in docs line up.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>

---------

Co-authored-by: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-04-17 00:28:02 -07:00
Gregor Žunič 2b8be642e0 initial commit: harnesless — LLM-first browser control via CDP
Three-process architecture: daemon.py holds one persistent CDP WebSocket
to the user's running Chrome (via chrome://inspect), short-lived run.py
processes talk to it over a Unix socket, helpers.py is the transparent
layer the LLM reads and edits at will.

Philosophy: no CLI, no fixed API surface. The LLM writes Python blocks
against ~13 tiny helpers (cdp, click, type_text, screenshot, get_dom,
etc.) and edits helpers.py on the fly when a pattern repeats. Coordinate
clicks default because they pass through iframes/shadow DOM/cross-origin
at the compositor level.

Uses cdp-use internally for send_raw only (ignores its 36k lines of
typed wrappers — raw CDP strings tokenize better than typed calls).

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-04-16 17:51:31 -07:00