CONTRIBUTING.md
Rama main · réplica de lectura del repositorio original.
# Contributing to HermesClaw
Thanks for your interest. HermesClaw is a small project — one Python file, ~760 lines — so contributions stay focused.
## Ground rules
1. **Keep it minimal.** HermesClaw is a router. It should not start managing memory, rewriting prompts, or competing with Hermes Agent / OpenClaw. If a feature belongs upstream in either of those, file it there.
2. **Keep it one file.** `hermesclaw.py` is intentionally a single file. Don't split it into a package without a strong reason.
3. **Keep it MIT.** All contributions are MIT licensed.
## What we welcome
- Bug reports with reproducible steps (please include `journalctl -u hermesclaw -n 100` output if relevant)
- Bug fixes
- Documentation fixes, especially for the bilingual README
- New iLink protocol fields support (the protocol is undocumented; PRs that add real-world coverage are welcome)
- New install paths (other Linux distros, BSD, Termux, etc.)
- Test additions
## What we don't want (yet)
- New runtime dependencies beyond `requests` and `pycryptodome`
- Web UI / dashboard / config GUI
- Database backends — `router_state.json` is enough
- Anything that requires running as root beyond the systemd install
## Development setup
```bash
git clone https://github.com/AaronWong1999/hermesclaw
cd hermesclaw
python3 -m venv .venv && source .venv/bin/activate
pip install requests pycryptodome pytest
# Edit hermesclaw.py
# Run tests if any exist:
pytest -q
```
To test locally without WeChat, mock `send_msg_ilink` and call `proc_msg(...)` directly with hand-crafted iLink message dicts.
## Pull request checklist
- [ ] My change is small enough to review in one sitting
- [ ] I've explained the *why*, not just the *what*, in the PR description
- [ ] I've tested it on a real machine, not just in my head
- [ ] I haven't added a new top-level dependency (or I've justified it)
- [ ] If my change touches the README, I've updated both the English and the Chinese paragraphs
## Reporting security issues
Open a public issue instead of emailing privately.
## Code of Conduct
See [CODE_OF_CONDUCT.md](CODE_OF_CONDUCT.md). The short version: be kind, assume good faith, no slurs.