Бяспечны доступ Hermes Agent да вэба праз асобны Chrome
Бяспечны доступ Hermes Agent да вэба праз асобны под Chrome у Podman: навошта ізаляваць браўзер, чаму CDP і як спраектаваць сетку.
Крыніцы: Give Hermes Agent Secure Web Access with a Separate Chrome Podman Pod
Наступныя прытамлівкі паказваюць практычны спосаб пры выкарыстоўванні падходу «Надаць агенту Hermes безпечны доступ у Інтэрнэт за дапамою аддзельнага падман-пада Chrome». Акцэнт ставіцца на контрактах, перакананнях і месцах для коду, а не на мотывацыйных аспектах. Калі працуеце на стадыі агляду, спачатку запісайце контракт: неабяжныя даны, сігнал успеху і тое, што выканаецца у разе частковай нявыполненасці. Такі спіс пераканаў дапамагае заліцвачыць пазнейшыя змены ў кодзе. Документавайце як шлях успеху, так і шлях вярнення да нормальнага стану. Перапрыбуткі, людзкія контрольны пункты і обработка некорэктных паведамленняў ёсць часткай продукту, а не пазнейшым дапрацоўкам.
INTERNET
▲
│
outbound only
│
┌────────────────────────┐
│ Chrome Browser Pod │
│ │
│ Chrome Headless │
│ CDP :9222 │
└───────────┬────────────┘
│
private CDP network
│
┌───────────▼────────────┐
│ Hermes / Ollama Pod │
│ │
│ Hermes ─────► Ollama │
│ localhost:11434
│ │
└────────────────────────┘
│
▼
AMD GPU
Chrome → Internet YES
Hermes → Chrome YES
Hermes → Ollama YES
Hermes → Internet directly NO
Chrome → host filesystem NO
Hermes → rest of host NO
Either → Podman socket NO
Чаму ставіць Chrome у аддзельны пад?
Прынцып «Чаму размістаць Chrome на сцэне» працюе найкрашча, калі яго розглядаць як меркаваны аспект. Зафіксавце адна ідэальная версія, адзін случай неудачы і прыметкі па поверненню да попярэдней версіі пры расшырэнні масштаба. Валіце маленькія, тэставаныя елементы замест большых скрыптов. Калі якісь крок не выйшае, прычына неудачы павінна вказываць на адную адпаведальнасць, а не на заплутаны ланцюг задач. Рэзультаты графа павінны быць простымі і з адначыя тыпамі дадзеных. Вкладаныя структуры дадзеных масквуюць, які вузел запісаў канкрэтны поле, і спакойваюць працу пасля перэрываў.
Untrusted Internet content
↓
Chrome container
↓
CDP
↓
Hermes
Чаму CDP?
Этап Why CDP працюе найкрашча, калі яго розглядаць як вімерную паверхню. Зафіксавце адзін ідэальны прыклад, адзін прыклад неудачы і запіс працэў павернення да пярвоначальнага стану пры розшырэнні масштаба. Разглядзайце гэты этап як кантракт межа вхіднымі данымі і перакананымі выходнымі рэзультатамі. Даўце назвы артыфактам, задаце крытэрыя успеху і не падзеўляйцеся частым, некомплектным выкананнем задач. Храніце стан графа ў простам і тыпаваным фармаце. Вкладзеныя блокі маскуюць інфармацыю пра тое, які вузел запісаў канкрэтны поле, і спакойваюць працу пасля перарываў.
chromedp/headless-shell
Дызайн сеткі
Этап праектавання сеткі працюе найэфектывней, калі яго спрыяваць як меравальную плошчу. Зберагачыце адны ідэальны прыклад працы, адзін прыклад неудачы і запіс пра вярнэнне да пачатковага стану перад расшырэнням масштабаў. Запісвайце часы выканання і косты токеноў або запытак праза функцыйнае рэзультат. Відкрытыя даныя пра косты з самага пачатку запобегаюць неспакоўным рахункам, калі працэс пераходзіць з дэмаверсіі ў спяльныя асяроддзя. Храніце стан графа ў простам і тыпаваным фармаце. Вярнутыя структуры даных маскуюць інфармацыю пра тое, калькі вузел запісаў калькі поле, і спакшваюць продовжэнне працы пасля перарываў. Этап праектавання сеткі працюе найэфектывней, калі яго спрыяваць як меравальную плошчу. Зберагачыце адны ідэальны прыклад працы, адзін прыклад неудачы і запіс пра вярнэнне да пачатковага стану перад расшырэнням масштабаў. Дакументавайце як шлях успеху, так і шлях вярнэння да нормальнага стану. Перапрыбуткі, людзкі контроль і обработка некорэктных паведамленняў ёсць часткай продукту, а не чымсь, што дадаецца пазней.
hermes-browser-link
browser-egress
Internet
▲
│
browser-egress
│
Chrome Pod
│
hermes-browser-link
│
Hermes Pod
hermes-browser-link
Шаг 1 — Зупініце існуючую срэду Hermes
Для першага, ў яком трэба зупініць працэс, пярэд тым, як зменшыць код, неабходна візначыць інпуты, адпаведальную особу за шаг і крытэрыі завершэння. Аператары должны магчымаць перзапуск шага з вядомай точкі контролю, не падозрываючы прыхованы стан. Валіць крашчэ маленькія, тэставаныя елементы за велікія скрыпты. Калі шаг не выйшаў, прычына неудачы должна вказываць на адну конкрэтную адпаведальнасць, а не на заплутаны працэс. Неабходна людская апраўда для тых крокаў, якія выкарыстоўваюць грошы або зменяюць даны варабочага сервісу. Компіляцыйныя налашчэння не ёсць прамаравамым паказатэлем завершання бізнес-процэса.
systemctl --user stop hermes-local
systemctl --user disable hermes-local
podman volume ls
hermes-data
ollama-models
Шаг 2 — Выберыце прыватную падсет
Для другога крока «Выберыце стадыю» неабяжна пазначыць вхідныя даны, адпаведальнага за крок і крытэрыі завершэння пры перадзеяванні коду. Аператары должны магчымаць перзапуск кроку з вядомай точкі контролю, не падозрываючы прыхованы стан. Спрыяйце гэтай этапы як кантракту межа вхіднымі данымі і перакананымі выходнымі рэзультатамі. Дайце назвы артыфактам, пазначыце перакананні успеху і адмовіцеся ад бяспечнага частковага завершэння. Заставіце людзкую апраўду на тых этапах, дзе вітрачаюцца грошы або зміняюцыся даны для працы. Кампайл-врэменныя наладкі не ўзроўнаваліся з пачатковым станом бізнесу.
10.77.0.0/24
Hermes pod: 10.77.0.10
Chrome pod: 10.77.0.20
podman network ls
podman network inspect NETWORK_NAME
Крок 3 — Створыце прыватную сетка кантролю браузера
Для крока 3 «Стварыць стадыю» неабяжна пазначыць вхідныя даны, адміністратара крока і крэтырыя для завершэння пры перадзеіснавленні коду. Аператары должны магчымаць перзапуск крока з вядомай точкі контролю, не падозрываючы прыхованы стан. Запісваць час выканання і кост токена або запыту разам з функцыйнальнымі рэзултатамі. Відразы коста з самага пачатку запобегае неспакоўным рахункам, калі працэс пераходзіць з дэмовай асяроддзя ў спакульную. Апраўляць людзкую атрыбутацыю для тых крокаў, якія вітрачаюць грошы або зменяюць даны ў працэсе. Працэс складання коду не ўзроўнаважваеся з повнасцю бізнес-функцыйоналу. Для крока 3 «Стварыць стадыю» неабяжна пазначыць вхідныя даны, адміністратара крока і крэтырыя для завершэння пры перадзеіснавленні коду. Аператары должны магчымаць перзапуск крока з вядомай точкі контролю, не падозрываючы прыхованы стан. Адначасова документаваць шлях успеху і шлях вярнення. Перапрыбуткі, людзкія контрольныя пункты і обработка некорэктных паведамленняў ёсць часткай продукту, а не елементамі пазнейшага доўнешчэння.
podman network create \
--internal \
--subnet 10.77.0.0/24 \
hermes-browser-link
podman network inspect hermes-browser-link
Шаг 4 — Створэнне сеткі выходу браузера
Калі працюеце над шагам 4 «Створэнне», спачатку запісайце умовы: неабяжлівыя даныя, сігнал успеху і тое, што выканаецца у разы частковага нявыпалення. Такі спіс контролю дапамагае заліцвачыць змяны ў кодзе. Валіце маленькія, тэставаныя елементы замест большых скрыптов. Калі якісь шаг нявыпанаецца, прычына нявыпалення павінна вказваць на адну конкрэтную адпаведальнасць, а не на заплутаны ланцюг задач. Зробіце перапактаванне пасля дорогіх шагоў. Програма не павінна зноў выклікаць той самы вызов LLM, калі аператар праканае пазнейшы вузел.
podman network create browser-egress
Шаг 5 — Перастворэнне пада Hermes
Калі вы віконваеце 5-й крок «Стварыць занова стадыю», спачатку запісайце угоду: неабяжлівыя даныя, сігнал успеху і тое, што выканаецца у разе частковага невыпалення. Такі спіс пераканаець у тым, што пазнейшыя змены коду будуць чыстымі. Спрэтавайцеся да гэтай этапы як да угоды межа данымі і перакананымі выходамі. Дайце назвы артыфактам, задаць тэсты на успех і не падзеўляйцеся частковым завершэнням без паведамлення. Зробіце перапытку пасля дорогіх крокаў. Програма не должна зноў выклікаць той самы календар LLM, калі аператар праканаецца з пазнейшым вузлам.
podman pod rm -f hermes-local
podman pod create \
--name hermes-local \
--network hermes-browser-link:ip=10.77.0.10 \
--userns=keep-id:uid=10000,gid=10000
10.77.0.10
6-й крок — Стварыць занова Ollama
Калі працуеце над этапам 6 «Павторачунак Ollama», спачатку запісайце умовы взаўзейшага дакумента: неабходныя даны, сігнал успеху і тое, што выходзіць пад частковым невясненням. Такі спіс дапамагае залічваць пазнейшыя змены ў кодзе чыста.
podman run -d \
--name ollama \
--pod hermes-local \
--device /dev/kfd \
--device /dev/dri \
--group-add keep-groups \
-e HOME=/root \
-e OLLAMA_MODELS=/root/.ollama/models \
-e OLLAMA_CONTEXT_LENGTH=64000 \
-v ollama-models:/root/.ollama \
docker.io/ollama/ollama:rocm
http://127.0.0.1:11434
podman exec ollama ollama list
Шаг 7 — Перзахоўваць Hermes
Этап перзахоўвання Hermes у рамках шага 7 будзе працаваць наякша, калі яго спрацоўваць як віміроўваную структуру. Зберажыце адну «золатую» копію дадзеных, адны прыклад неудачы і запіс пра вярненне да поперадняе стану, перш чым расшырваць масштабы. Валідзіце невялікія, тэставаныя елементы замест большых скрыптов. Калі якісь шаг не выйшаў, прычына неудачы павінна вказываць на адную конкрэтную адпаведальнасць, а не на заплутаны ланцюг задач. Храніце стан графа ў простам і тыпаваным фармаце. Вкладаныя структуры дадзеных маскуюць інфармацыю пра тое, які вузол запісаў кожны поле, і спакшуюць возз'ядналенне працы пасля перэрываў.
export HERMES_WORKSPACE="$HOME/path/to/Hermes-Workspace"
podman run -d \
--name hermes \
--pod hermes-local \
--security-opt=no-new-privileges \
--pids-limit 512 \
-v hermes-data:/opt/data \
-v "$HERMES_WORKSPACE:/opt/data/workspace:rw,nodev,nosuid" \
-w /opt/data/workspace \
docker.io/nousresearch/hermes-agent:latest \
sleep infinity
RW access:
$HERMES_WORKSPACE
/
$HOME
~/.ssh
~/.config
your normal browser profile
Podman socket
Docker socket
Шаг 8 — З’явіць Chrome Headless Shell
Этап 8 «З’явленне Chrome» працюе найэфектыўней, калі яго розглядаць як мерыемую паверхню. Зафіксавайце адна ідэальная транскрыпцыя, адзін прыклад неудачы і запіс пра вярнэнне да поперадньага стану пры расшырэнні масштаба. Разглядзайце гэты этап як кантракт межа вхіднымі данымі і перакананымі выходнымі рэзультатамі. Дайце назвы артыфактам, задаць крытэрыя успеху і не падзеўляйцеся частым, непূরным выкананнем задачы. Храніце стан графа ў простам і тыпаваным фармаце. Вкладзеныя блокі маскуюць інфармацыю пра тое, які вузел запісаў які поле, і спакоююць продовжэнне выканання пасля перэрываў.
podman pull docker.io/chromedp/headless-shell:latest
Этап 9 — Створыце окольны пад Chrome
Крок 9 «Стварыць стадыю» працуе наяўней, калі яго спрыяваць як мерыемую паверхню. Зафіксавайце адны ідэальны прыклад працы, адзін прыклад неудачы і запіс пра вярнэнне да пачатковага стану перад расшырэнням масштаба. Запісвайце часы выканання і косты токеноў або запытак па боку ад функцыйнальных рэзультатаў. Візуабельнасць костаў з самага пачатку запобегае неспакойным рахункам, калі працэс пераходзіць з дэмаверсіі ў спяльныя сераўы. Храніце стан графа простым і з адначытаемымі данымі. Вкладзеныя блокі маскуюць інфармацыю пра тое, які вузел запісаў канкрэтны поле, і спакшваюць продовжэнне працы пасля перарываў. Крок 9 «Стварыць стадыю» працуе наяўней, калі яго спрыяваць як мерыемую паверхню. Зафіксавайце адны ідэальны прыклад працы, адзін прыклад неудачы і запіс пра вярнэнне да пачатковага стану перад расшырэнням масштаба. Дакументавайце як шлях успеху, так і шлях вяснавання проблем. Перапрыбуткі, людзкія контрольныя пункты і обработка некорэктных паведамленняў ёсць часткай продукту, а не чымсь, што дадаецца пазней.
podman pod create \
--name hermes-browser-pod \
--network hermes-browser-link:ip=10.77.0.20 \
--network browser-egress
Chrome
│
├── 10.77.0.20 ─── private link to Hermes
│
└── browser-egress ─── Internet
Крок 10 — Запуск Chrome унутрані браузерскага падмету
Для этапу «Выкананне Chrome» на кроку 10 неабяжна прадзецьваваць інпуты, адпаведнага власніка крока і крэтарыя выходу пры перадзеўці коду. Аператары должны магчымае перывыканнець крок з вядомай точкі контролю, не падозрываючы схованы стан. Лепш выбіраць маленькія, тэставаныя елементы замест большых скрыптов. Калі крок не выйшае, прычына неудачы должна вказываць на адну конкрэтную адпаведальнасць, а не на заплутаны працэс. Неабяжна людская апраўда для тых крокоў, якія выкарыстоўваюць грошы або зменяюць даны праўай працы. Кампіляцыйныя наладкі не ўзначаюць павноты бізнес-процэса.
podman run -d \
--name hermes-browser \
--pod hermes-browser-pod \
--init \
--shm-size=2g \
--security-opt=no-new-privileges \
docker.io/chromedp/headless-shell:latest
-p 9222:9222
10.77.0.20:9222
Крок 11 — Тэставанне Chrome з кантэйнера Hermes
Для этапы тэста Chrome у пасох 11 неабяжна ўзначыць вхідныя даныя, адпаведальнага за пасох і крэтыры завершэння пры перадзеі коду. Аперацыйныя працавнікі должны магчымае запускаць пасох з вядомай точкі контролю, не прыпускаючы стану, які застаецца незрозумелым. Спрыяйце цій этапы як даговору межаў вхідных даных і перакананых выходных рэзультатаў. Даць назвы артыфактам, узначыць крэтыры успеху і не прымкнуцца да тыхняе частковага завершэння без падтверджэння. Забезпечыце людзкую апраўдку для тых сітуацыяй, дзе відбываецца выдатак грошэй або зміняюцыся даныя для працы сістэмы. Компіляцыйныя налашчэння не ўзначаюць павнае завершэння бізнес-процэсу.
podman exec hermes python -c \
'import urllib.request; print(urllib.request.urlopen("http://10.77.0.20:9222/json/version").read().decode())'
{
"Browser": "HeadlessChrome/...",
"webSocketDebuggerUrl": "ws://10.77.0.20:9222/devtools/browser/..."
}
Hermes → Chrome
Пасох 12 — Пераканацца, што Chrome мае доступ да Інтэрнэту
Для этапа «Падзеўка 12: Адбавочная перакананне» пярэд змінайчом коду неабходна запрацаваць вхідныя даны, выканавальніка крока і крэтарыя для завершэння. Аперацыйныя працавнікі должны магчыма было перзапускаць крок з вядомай точкі контролю, не спрабоўваючы здагадвацца пра схованы стан. Запісвайце час выканання і кост токенаў або запытаў разам з функцыйнальнымі рэзултатамі. Відразы костаў з самага пачатку запобегае неспакойным рахункам, калі працэс пераходзіць з дэмовай асяроддзя ў спяльнаныя сераўеры. Заставіце людзкую апрацоўку для тых крокаў, якія выкарыстоўваюць грошы або зміняюць даны ў працэсе віробніцтва. Компіляцыйныя налашчэння не ўзроўнаваліся з повнасцю бізнес-функцыйоналу. Для этапа «Падзеўка 12: Адбавочная перакананне» пярэд змінайчом коду неабходна запрацаваць вхідныя даны, выканавальніка крока і крэтарыя для завершэння. Аперацыйныя працавнікі должны магчыма было перзапускаць крок з вядомай точкі контролю, не спрабоўваючы здагадвацца пра схованы стан. Дакументавайце як «шчаслівы» так і «вярнучыся» шляхі працы. Перапрыбуткі, людзкія контрольныя пункты і обработка некорэктных запытаў ёсць часткай продукту, а не чымсь, што дадаецца пазней.
podman exec hermes-browser \
curl -I https://example.com
browser-egress
Шаг 13 — Пераканацца, што Hermes не мае прымальнага доступу да Інтэрнэту
Калі вы працюеце над шагам 13 «Пераканацца, што Hermes не мае прымальнага доступу да Інтэрнэту», спачатку запісайце умовы кантракту: неабяжлівыя даны, сігнал успеху і тое, што выканаецца у разе частковага нявыпання. Такі спіс пераканаецца дапамагае залічваць змяны ў кодзе чыста. Валіце маленькія, тэставаныя елементы замест большых скрыптов. Калі якісь шаг не выйшоў, прычына нявыпання павінна вказваць на адну конкрэтную адпаведальнасць, а не на заплутаны ланцужок задач. Зробіце пераканацца пасля дорогіх шагоў. Програма не павінна зноў сцягваць плата за той самы вызов LLM, калі аператар праканаецца з новага пазнейшы ўзел.
podman exec hermes python -c \
'import urllib.request; print(urllib.request.urlopen("https://example.com", timeout=5).status)'
podman exec hermes python -c \
'import urllib.request; print(urllib.request.urlopen("http://10.77.0.20:9222/json/version").status)'
200
Hermes → Internet FAIL
Hermes → Chrome PASS
Chrome → Internet PASS
Шаг 14 — Направіць Hermes да удаленай інстанцыі Chrome
Калі працуеце над стадзіяй «Хермес», пункт 14, спачатку запісайце контракт: неабяжлівыя даны, сігнал успеху і тое, што выходзіць у разе частковага нявыпання. Такі спіс пераконтроўвае, каб пазнейшыя змены коду былі чыстымі. Спрыятлівае ставленне да гэтай стадзіі як да контракту межа данымі і перакананымі выходамі. Дайце назвы артыфактам, задаце правілы пераканання успеху і не падзволяйце частковаму завершэнню без паведамлення. Зробіце пераконтроль пасля дорогіх крокаў. Програма не должна зноў выклікаць той самы календар LLM, калі аператар прабуе зноў запрацаваць з пазнейшым вузлам.
http://127.0.0.1:9222
http://10.77.0.20:9222
podman exec \
--user 10000:10000 \
hermes \
hermes config set browser.cdp_url http://10.77.0.20:9222
podman exec hermes \
grep -A3 '^browser:' /opt/data/config.yaml
browser:
cdp_url: http://10.77.0.20:9222
podman restart hermes
Пункт 15 — Апробаваце з Хермеса
Калі працуеце над стадыям тэставання Крока 15, спачатку запісайце «кантракт»: неабяжлівыя даны, сігнал успеху і тое, што выходзіць пад частковыя неудачы. Такі спіс пераканаець у тым, што пазнейшыя змены коду будуць чыстымі. Запісвайце час выканання і кост токена або запытку празаўсёды разам з функцыйнальнымі рэзултатамі. Відразы коста з самага пачатку запобегае неспакою, калі працэс пераходзіць з дэмавайну у спяльныя асяроддзя. Зробіце контрольную паўзу пасля дорогіх крокаў. Сістэма вярнення не должна зноў нарахоўваць кост той самай вызову LLM, калі аператар прабуюць зноў запрацаваць пазнейшы вузел. Калі працуеце над стадыям тэставання Крока 15, спачатку запісайце «кантракт»: неабяжлівыя даны, сігнал успеху і тое, што выходзіць пад частковыя неудачы. Такі спіс пераканаець у тым, што пазнейшыя змены коду будуць чыстымі. Дакументавайце як «шчаслівы» шлях, так і шлях вярнення да нормальнасці. Прабавы, людзкія контролі і обработка некорэктных паведамленняў ёсць часткай продукту, а не пазнейшым дапрацоўкам.
podman exec -it \
--user 10000:10000 \
-w /opt/data/workspace \
hermes \
hermes
Важна прытама: гэта ўсё ж адказ браузера, а не безакцыянальны доступ да Інтэрнэту праз Hermes
Этап, які ўважаецца важным, працюе найэфектывнейша, калі яго спрыяваць як меравальную плошчу. Зафіксавайце адна ідэальная версія, адзін случай неудачы і прыметкі па поверненню да попярэдней версіі пры расшырэнні масштаба. Валіце маленькія, тэставаныя елементы замест большых скрыптов. Калі якісь крок не выйшоў, прычына неудачы павінна вказываць на адзін конкрэтны элемент, а не на заплутаны ланцужок задач. Рэзультаты працы графа павінны быць простымі і з адначытаемымі дадзеннямі. Вярнутыя структуры дадзеных маскуюць інфармацыю пра тое, які вузел запісаў канкрэтны поле, і спакойваюць працу пасля перарываў.
Hermes browser tools
↓
Chrome
↓
Internet
curl https://example.com
Чаму не падключыць Chrome да модуля Hermes?
Этап «Чаму не выкорыстаць Chrome?» працюе найэфектывней, калі яго спрыяваць як меравальную паверхню. Запісаце адна ідэальная транскрыпцыя, адзін прыклад неудачы і прыметку па адвярненню працы перш чым расшырваць масштабы. Спрыяйце этапу як даговору между вхіднымі данымі і паўнастацэннымі выхіднымі рэзультатамі. Даўце назвы артыфактам, задаце крытэрыя успеху і адмовіцеся ад тыхняга частковага завершэння без паведамлення. Храніце стан графа як просты і з адначытаемымі дадзеннямі. Вярнутыя структуры дадзеных маскуюць, які вузел запісаў канкрэтны поле, і спакшваюць продажчыку працу пасля перарываў.
127.0.0.1:9222
Hermes pod:
private network only
Browser pod:
private network
+
Internet network
Не запускайце свой стандартны профіль Chrome
Метод «Не монтавайце вашу сцэну» працюе наяўней, калі яго спрыяваць як мерыемую паверхню. Зберагуйце адны ідэальны прыклад працы, адзін прыклад неудачы і запіс пра вярнэнне да пачатковага стану перад расшырэнням масштаба. Запісвайце часы выканання і косты токеноў або запытак праза функцыйнае рэзультат. Відразлівае прадставленне костаў з’являецца рана, таму не будзе неспакою з рахункамі, калі працэс перэйдзе з дэма-серавера ў спяльныя асяроддзя. Робіце стан графа плоскім і з адначытаемымі дадзеннямі. Вкладаныя блокі дадзеных маскуюць інфармацыю пра тое, які вузел запісаў кожны поле, і спакшуюць продовжэнне працы пасля перарываў. Метод «Не монтавайце вашу сцэну» працюе наяўней, калі яго спрыяваць як мерыемую паверхню. Зберагуйце адны ідэальны прыклад працы, адзін прыклад неудачы і запіс пра вярнэнне да пачатковага стану перад расшырэнням масштаба. Дакументавайце як шлях успеху, так і шлях вярнэння да нормальнага стану адночасна. Перапрыбуткі, людзкія контрольны пункты і обработка некорэктных паведамленняў ёсць часткай продукту, а не чымсь, што дадаецца пазней.
-v "$HOME/.config/google-chrome:/chrome-profile"
Необав’язкова: профіль прыгледу агента з можлівасцю зберагання
Для неабяцковага ўзбіранага этапу працы браузера-агента неабходна пазначыць вхідныя даны, адпаведальнага за крок і крытэрыя завершэння пры перадзеіснавленні коду. Аператары должны магчымаць перзапуск крока з вядомай точкі контролю, не прабуючы спадарожваць схованы стан. Лепш выбіраць маленькія, тэставаныя елементы замест амаль неконтрольваных скрыптав. Калі крок не выйшоў, прычына неудачы должна вказываць на адну конкрэтную адпаведальнасць, а не на заплутаны ланцюг задач. Неабходна людская апраўка для тых крокав, якія выкорыстоўваюць грошы або зміняюць даны ў працэсе віробніцтва. Праця ў часе компілявання не ёсць гарантыяй полнай адпаведальнасці ў бізнесе.
podman volume create hermes-browser-profile
Human browser profile separate
Agent browser profile separateHost filesystem separate
CDP должна застацца прыватной
Колькі хто CDP павінен застацца на стадыі прыватнае выкананне, неабяжна практычна вказаць інпуты, адміністратара крока і крэтынія выходу пры змены коду. Аператары павінны магчымаць перзапуск крока з вядомай точкі контролю, не падозрываючы схованы стан. Спрыяйце гэтай этапы як кантракту межа інпутамі і падтвердзенымы выходам. Даўце назвы артыфактам, практычна вказаць перагляды успеху і адмовіцеся ад тыхоўскага частковага завершэння. Заставьце людзкія падтверджэння на тых элементах, якія вітрачаюць грошы або зменяюць даныя праўай працы. Прыўязка ў часе компілявання не адпавядае пачатковай цэласнасці бізнесу.
10.77.0.20:9222
hermes-browser-link
0.0.0.0:9222 -> Chrome
Пераканацца ў ізоляцыі
Для этапы пераканальнення ізоляцыі неабходна ўпэўненасць у тым, што былі з’явлены вхідныя даны, апраўнік крока і крэтырыя завершэння прычыненне перад зменыма коду. Аперацыйныя працавнікі должны магчымае перадзеўжваць крок з вядомага пункта контролю, не спрабоўваючы здагадвацца пра схованы стан. Запісвайце час выканання і кост токенаў або запытаў разам з функцыйнальнымі рэзултатамі. Відразы костаў з самага пачатку запобегае неспакойным рахункам, калі працэс пераходзіць з дэмовай асяроддзя ў спаканую. Апраўненне чалавека неабходна для тых крокаў, якія выкарыстоўваюць грошы або зміняюць даны ў працэсе. Компіляцыйныя налашчэння не ўзначаюць павнае адпраўленне продукту. Для этапы пераканальнення ізоляцыі неабходна ўпэўненасць у тым, што былі з’явлены вхідныя даны, апраўнік крока і крэтырыя завершэння прычыненне перад зменыма коду. Аперацыйныя працавнікі должны магчымае перадзеўжваць крок з вядомага пункта контролю, не спрабоўваючы здагадвацца пра схованы стан. Дакументавайце як «шчаслівы» шлях, так і шлях вяснавання. Перапрыбуткі, апраўненне чалавека і апрацоўка нерабочых паведамленняў ёсць часткай продукту, а не чымсь, што дадаецца пазней.
podman pod inspect hermes-local
podman pod inspect hermes-browser-pod
Hermes pod
└── hermes-browser-link
Browser pod
├── hermes-browser-link
└── browser-egress
podman inspect hermes \
--format '{{range .Mounts}}{{println .Type .Source "->" .Destination}}{{end}}'
podman inspect hermes-browser \
--format '{{range .Mounts}}{{println .Type .Source "->" .Destination}}{{end}}'
podman port hermes-browser
Автаматычна запуск падоў
Кал працуеце над этапам автаматычнай запуск падоў, спачатку запісаце кантракт: неабходныя даны, сігнал успеху і тое, што выходзіць у разе частковага абякання. Такі спіс пераконтрацоў дапамагае залічыць змяны ў кодзе. Валіце маленькія, тэставаныя елементы замест большых скрыптов. Калі якісьць крок абякае, прычына абякання павінна вказваць на адную адпаведальнасц, а не на заплутаны ланцуг задач. Зробіце контрольную паўзу пасля дорогіх крокаў. Функцыя адновы не павінна зноў выклікаць той самы калект працэсу розумнага мовлення, калі аператар пракушае пазнейшы вузел.
nano ~/.config/systemd/user/hermes-local.service
[Unit]
Description=Hermes Local AI and Browser Pods
After=default.target
[Service]
Type=oneshot
RemainAfterExit=yesExecStart=/usr/bin/podman pod start hermes-browser-pod
ExecStart=/usr/bin/podman pod start hermes-localExecStop=/usr/bin/podman pod stop -t 30 hermes-local
ExecStop=/usr/bin/podman pod stop -t 30 hermes-browser-podTimeoutStartSec=120
TimeoutStopSec=60[Install]
WantedBy=default.target
systemctl --user daemon-reload
systemctl --user enable --now hermes-local
sudo loginctl enable-linger "$USER"
podman pod ps
hermes-local
hermes-browser-pod
Усуненне проблем
Калі працюеце на стадыі адзьявлення проблем, спачатку запісайце контракт: неабяжлівыя даны, сігнал успеху і тое, што выходзіць у разе частковага нявыпання. Такі спіс пераконтроўкаў дапамагае заліцвачыць пазнейшыя змены ў кодзе. Спрыймайце гэтую стадыю як контракт межа данымі і перакананымі выходамі. Дайце назву элементам, задаце перакананні успеху і адмовіцеся ад тыхоўскага частковага завершэння. Зробіце пераконтроўку пасля дорогіх крокаў. Програма для продакцыі не павінна знову сцягваць плата за той самы вызов LLM, калі аператар прабуе зноў запрацаваць пазнейшы вузел.
Hermes не можа дасягнуць порту 9222
Калі працуеце з сітуацыяй, калі Hermes не можа дася да стадыю, спачатку запісайце контракт: неабяжлівыя даны, сігнал успеху і тое, што выходзіць у разе частковага нявыпання. Такі спіс пераконвае ў тым, што пазнейшыя змены коду будуць чыстымі. Запісвайце час выканання і кост токена або запіту праза функцыональныя рэзультаты. Відразлівасць коста з самага пачатку запобегае неспакоўным рахункам, калі працэс пераходзіць з дэмаверсіі ў спяльныя сераўры. Зробіце контрольную пункт пасля дорогіх крокаў. Функцыя адновлення не должна зноў нараховваць кост той самай вызову LLM, калі аператар прабуе зноў запрацаваць пазнейшы вузел. Калі працуеце з сітуацыяй, калі Hermes не можа дася да стадыю, спачатку запісайце контракт: неабяжлівыя даны, сігнал успеху і тое, што выходзіць у разе частковага нявыпання. Такі спіс пераконвае ў тым, што пазнейшыя змены коду будуць чыстымі. Дакументавайце як «шчаслівы» шлях, так і шлях вярнення да нормальнасці. Прабулі, людзкія контролы і обработка некорэктных паведамленняў ёсць часткай продукту, а не чымсь, што дадаецца пазней.
podman ps
podman exec hermes python -c \
'import urllib.request; print(urllib.request.urlopen("http://10.77.0.20:9222/json/version").read().decode())'
hermes-browser-link
Chrome можа запускацца, але сторанцы збіваюцца
Chrome можа запускацца, але крашчэ працюе, калі яго розглядаць як меравальную паверхню. Запісаце адна ідэальная версія, адзін случай неудачы і прыметкі па поверненню да попярэдней версіі пры расшырэнні масштаба. Вядзейце прывялёвыя, тэставаныя елементы замест большых скрыптов. Калі якісь крок не выйшае, прычына неудачы павінна вказываць на адную адпаведальнасць, а не на заплутаны ланцюг задач. Рэзультаты графа павінны быць простымі і з адначытаемым тыпам. Вкладзеныя блокі маскуюць інфармацыю пра тое, калькі вузел запісаў калькі поле, і спакоююць працу пасля перэрываў.
--shm-size=2g
Chrome працуе, але інструменты прыглядча Hermes не показуюцца
Chrome працюе, але стадыя Hermes работае найкрашча, калі яе розглядаць як мерыемую паверхню. Запісаце адна «золатая» транскрыпцыя, адзін прыклад неудачы і прыметку па поверненню да пярвоначальнага стану пры розшырэнні масштаба. Разглядзеце гэтую стадыю як кантракт межа вхіднымі данымі і перакананымі выходнымі рэзультатамі. Даце назвы артыфактам, задаце крытэрыі успеху і не падзельвайцеся на частковыя завершэння без паведамлення. Адкройце інструменты з вузкімі схемамі і чысткімі пазначэннямі побачных наследкав. Хостам неабходна інфармацыя пра тое, якія вызовы змінююць стан, перш чым яны автаматычна схваляюць ўсё.
browser:
cdp_url: http://10.77.0.20:9222
nano не ў доступе внутрь кантэйнера Hermes
Этап, калі «nano» недоступны, працюе лепш, калі яго спрыяваць як меравальную паверхню. Зберагачыце адны ідэальны прыклад, адзін прыклад неудачы і запіс пра вярнэнне да пачатковага стану перад расшырэнням масштаба. Запісвайце часы выканання і косты токеноў або запытак праза функцыйнае рэзультат. Відразлівае паказанне костаў з’являецца рана, таму не будзе неспакою з рахункамі, калі працэс перэйдзе з дэма-серавера ў спяльныя асяроддзя. Разважайце стан графа простым і з адначытаемымі дадзеннямі. Вкладаныя блокі маскуюць, калькі вузел запісаў калькі поль, і спакойнае выкананне працы зупіняецца пасля перарываў. Этап, калі «nano» недоступны, працюе лепш, калі яго спрыяваць як меравальную паверхню. Зберагачыце адны ідэальны прыклад, адзін прыклад неудачы і запіс пра вярнэнне да пачатковага стану перад расшырэнням масштаба. Дакументавайце як шлях успеху, так і шлях вярнэння да нормальнага стану адночасна. Перапрыбуткі, людзкія контрольныя пункты і обработка некорэктных паведамленняў ёсць часткай продукту, а не чымсь, што дадацца пазней.
hermes config set
podman exec \
--user 10000:10000 \
hermes \
hermes config set browser.cdp_url http://10.77.0.20:9222
Завершаныя модэлі безпекі
INTERNET
▲
│
browser-egress
│
┌─────────┴──────────┐
│ Chrome Browser Pod │
│ │
│ Headless Chrome │
│ CDP :9222 │
└─────────┬──────────┘
│
hermes-browser-link
INTERNAL ONLY
│
┌─────────▼──────────┐
│ Hermes/Ollama Pod │
│ │
Host Workspace ─►│ Hermes │
RW │ │ │
│ ▼ │
│ Ollama │
│ │ │
└─────┼──────────────┘
▼
AMD GPU
ACCESS
Hermes → designated host workspace YES
Hermes → Ollama YES
Hermes → Chrome CDP YESChrome → Internet YESHermes → Internet directly NO
Hermes → rest of host filesystem NO
Hermes → SSH keys NO
Chrome → host filesystem NO
Chrome → normal browser profile NO
Hermes → Podman/Docker socket NO
Chrome → Podman/Docker socket NO
Host/LAN → Chrome CDP NO
Чаму вы выбіраеце гэтую архітэктуру
Give it the filesystem.
Give it Docker.
Give it Internet.
Give it Chrome.
Give it credentials.
one working directory
local-model access
browser-control access
model storage
GPU access
Internet access
CDP connectivity
my SSH keys
my entire home directory
my normal browser profile
my Podman socket