文件历史

提交图

19 次代码提交

作者 SHA1 备注 提交日期
MagMueller c82345e1ab Merge main into split-install-skill 2026-04-17 20:56:58 -07:00
Gregor Žunič 29c4dfa8e7 changed name 2026-04-17 20:50:33 -07:00
MagMueller ef3a4f2919 Split install and runtime docs 2026-04-17 20:46:42 -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