This is my actively maintained fork of AMAP-ML/LongHorizon-Harness, a role-orchestrated harness (Manager → Executor → Auditor) that turns agent CLIs into long-horizon computer-use systems. Upstream went quiet after 2026-08-20 (v0.1.7), so the fork carries the project forward on its own line.
The complete original project documentation — install walkthroughs, the loop
engineering story, benchmarks, configuration reference — is preserved verbatim
from the v0.1.7 tag: see docs/upstream/README.md
(English) and docs/upstream/README.zh-CN.md
(中文). Everything below is specific to this fork.
- ZCode agent backend (
lhht run --agent zcode): drives the headless runtime bundled with the ZCode desktop app on GLM models (glm-5.3default,glm-5.3-flash), with role-scoped permission modes (planfor the manager and auditors,yolofor executors). The reasoning effort (low/high/max) rides in an isolated per-run copy of ZCode's session database plus a.zcode/config.jsonprovider declaration written into the workspace — the operator's~/.zcodeis never touched. - Reasoning effort for every backend: on top of upstream's
reasoning_effortchain (Codex, Claude Code, OpenCode), the DeepSeek Harness backend forwards the level through anllm-deepseekpatch layer, and ZCode through its session store. Per-role, verbatim, no cross-backend mapping. - Bilingual control tokens: the manager/auditor parsers accept route lines and control markers in both English and Russian.
- A modern toolchain floor: Python ≥ 3.14 (tomli fallbacks removed),
Node.js ≥ 22 with CI provisioning 24;
make checkis the pre-push gate. - Honest CI:
tests.ymlruns the Python suite on ubuntu/windows × 3.14 plus a web job (frontend core suite + typecheck) on every push and pull request;release.ymlbuilds and verifies distributions without publishing (the PyPI name belongs to upstream).
The PyPI package lh-harness is upstream's release and does not contain the
work above — install from this repository:
pip install lhht # or: uv tool install lhhtNaming note: the fork owns its identity end to end — the PyPI distribution, the console command, the import module (
import lhht), theLHHT_*environment variables, and the.lhht/state directory are alllhht. The originallh-harnessinstalls alongside it cleanly, so both can drive the same project folder for comparison.
Building from source (what the development loop uses):
git clone https://github.com/TON14/LongHorizon-Harness.git
cd LongHorizon-Harness
npm run build --prefix frontend/web # the Web workbench bundle
uv tool install --force . # installs the `lhht` commandmake help # all targets
make check # both suites + typecheck, everything expected green
make dev-api # control API on 127.0.0.1:8799
make dev-web # Vite dev server on :5173, proxying /apiThe tool installs as lhht (import module and the .lhht/ state directory keep their
historical names). The harness is also used to develop itself: a repo-root .lhht/config.toml
defines the roles (manager/executor on glm-5.3-flash, auditor on glm-5.3,
effort max), and tasks run with lhht run --task @task.md. Agents edit
the working tree; the operator reviews, runs make check, and commits.
The foundation is the AMAP-ML team's work — every contributor is listed on the contributors page. The fork's line is maintained by TON14.