Publish hermes-skills-autonomous-ai-agents via gitea-publish skill
This commit is contained in:
@@ -0,0 +1,58 @@
|
||||
# Windows-Specific Quirks
|
||||
|
||||
Hermes runs natively on Windows (PowerShell, cmd, Windows Terminal, git-bash
|
||||
mintty, VS Code integrated terminal). Most of it just works, but a handful
|
||||
of differences between Win32 and POSIX have bitten us — document new ones
|
||||
here as you hit them so the next person (or the next session) doesn't
|
||||
rediscover them from scratch.
|
||||
|
||||
### Input / Keybindings
|
||||
|
||||
**Alt+Enter doesn't insert a newline** — Windows Terminal (and mintty) grab it
|
||||
for fullscreen before prompt_toolkit sees it. Use **Ctrl+Enter** instead (the
|
||||
CLI binds it to newline on Windows; raw Ctrl+J does the same, harmlessly).
|
||||
To inspect how your terminal reports a keystroke, run
|
||||
`python scripts/keystroke_diagnostic.py` from the repo root.
|
||||
|
||||
### Config / Files
|
||||
|
||||
**HTTP 400 "No models provided" on first run** — `config.yaml` was saved with
|
||||
a UTF-8 BOM (Notepad does this). Re-save as UTF-8 without BOM;
|
||||
`hermes config edit` writes correctly.
|
||||
|
||||
### `execute_code` / Sandbox
|
||||
|
||||
**WinError 10106** from the sandbox child process — it can't create an
|
||||
`AF_INET` socket. Root cause is usually Hermes's env scrubber dropping
|
||||
`SYSTEMROOT`/`WINDIR`/`COMSPEC` (Python's `socket` needs `SYSTEMROOT` to find
|
||||
`mswsock.dll`), not a broken Winsock LSP. The `_WINDOWS_ESSENTIAL_ENV_VARS`
|
||||
allowlist in `tools/code_execution_tool.py` covers it; if you still hit it,
|
||||
echo `os.environ` inside an `execute_code` block to confirm `SYSTEMROOT` is set.
|
||||
|
||||
### Testing on Windows
|
||||
|
||||
`scripts/run_tests.sh` is POSIX-only (expects `.venv/bin/activate`); the
|
||||
Hermes-installed `venv/Scripts/` has no pip/pytest (stripped for size).
|
||||
Install pytest into a system Python and run directly (the repo no longer
|
||||
uses pytest-xdist; the canonical runner does per-file subprocess isolation,
|
||||
which the POSIX-only wrapper handles):
|
||||
|
||||
```bash
|
||||
"/c/Program Files/Python311/python" -m pip install --user pytest pyyaml
|
||||
export PYTHONPATH="$(pwd)"
|
||||
"/c/Program Files/Python311/python" -m pytest tests/foo/test_bar.py -v --tb=short
|
||||
```
|
||||
|
||||
(POSIX-only tests need skip guards — see the cross-platform guard list in
|
||||
`references/contributor-guide.md`.)
|
||||
|
||||
### Path / Filesystem
|
||||
|
||||
**Line endings.** Git may warn `LF will be replaced by CRLF`. Cosmetic — the
|
||||
repo's `.gitattributes` normalizes. Don't let editors auto-convert committed
|
||||
POSIX-newline files to CRLF.
|
||||
|
||||
**Forward slashes work almost everywhere.** `C:/Users/...` is accepted by
|
||||
every Hermes tool and most Windows APIs. Prefer forward slashes in code
|
||||
and logs — avoids shell-escaping backslashes in bash.
|
||||
|
||||
Reference in New Issue
Block a user