@bolloon/bolloon-agent 0.1.0 → 0.1.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/package.json +1 -1
- package/dist/constraint-runtime/tests/agent.test.js +0 -16
- package/dist/constraint-runtime/tests/constraint.test.js +0 -41
- package/dist/constraint-runtime/tests/skill.test.js +0 -19
- package/dist/constraint-runtime/tests/thinking.test.js +0 -22
- package/dist/electron-preload.js +0 -15
- package/dist/electron-preload.js.map +0 -1
- package/dist/electron.js +0 -206
- package/dist/electron.js.map +0 -1
- package/dist/test/constraint-layer.test.js +0 -164
- package/dist/test/global-shared-context.test.js +0 -315
- package/dist/test/pi-sdk.test.js +0 -47
- package/dist/test/set-persona.test.js +0 -38
- package/dist/test/subagent-manager.test.js +0 -276
- package/dist/test/workflow-engine.test.js +0 -87
- package/dist/workflows/collaboration.js +0 -374
- package/dist/workflows/index.js +0 -54
- package/docs/agent-communication.md +0 -333
- package/docs/plans/2026-05-15-document-agent-design.md +0 -479
- package/docs/plans/2026-05-15-document-agent-implementation-plan.md +0 -792
- package/docs/plans/2026-05-16-chat-ui-design.md +0 -86
- package/docs/plans/2026-05-16-constraint-runtime-design.md +0 -106
- package/docs/plans/2026-05-16-constraint-runtime-implementation.md +0 -441
- package/docs//346/225/260/345/255/246/350/276/205/345/212/251/346/231/272/350/203/275/344/275/223-/346/240/270/345/277/203/346/225/210/346/236/234/345/256/232/344/271/211.md +0 -287
- package/src/bollharness/.boll/CLAUDE.md.template +0 -34
- package/src/bollharness/.boll/MANIFEST.yaml +0 -213
- package/src/bollharness/.boll/active-review-agents/.gitkeep +0 -0
- package/src/bollharness/.boll/agents/review-base.yaml +0 -108
- package/src/bollharness/.boll/deploy-allowlist.yaml +0 -38
- package/src/bollharness/.boll/inbox/schema/message-v1.json +0 -99
- package/src/bollharness/.boll/install-staging/.gitkeep +0 -0
- package/src/bollharness/.boll/issue-adapter.yaml +0 -31
- package/src/bollharness/.boll/plugins/boll-mode-toolkit/contracts/mode-contract.md +0 -85
- package/src/bollharness/.boll/plugins/boll-review-toolkit/contracts/evidence-packet-schema.json +0 -102
- package/src/bollharness/.boll/plugins/boll-review-toolkit/contracts/review-contract.yaml +0 -247
- package/src/bollharness/.boll/rules/backend-routes.md +0 -31
- package/src/bollharness/.boll/rules/closure-semantics.md +0 -30
- package/src/bollharness/.boll/rules/env-vars.md +0 -32
- package/src/bollharness/.boll/rules/hanis-protocol.md +0 -145
- package/src/bollharness/.boll/rules/repo-structure.md +0 -42
- package/src/bollharness/.boll/rules/review-agent-isolation.md +0 -73
- package/src/bollharness/.boll/rules/source-of-truth.md +0 -33
- package/src/bollharness/.boll/settings.json +0 -180
- package/src/bollharness/.boll/settings.json.template +0 -31
- package/src/bollharness/.boll/skills/arch/SKILL.md +0 -372
- package/src/bollharness/.boll/skills/bug-pipeline/SKILL.md +0 -168
- package/src/bollharness/.boll/skills/bug-triage/SKILL.md +0 -161
- package/src/bollharness/.boll/skills/context-chains/SKILL.md +0 -250
- package/src/bollharness/.boll/skills/context-chains/context-chain-index.md +0 -48
- package/src/bollharness/.boll/skills/context-chains/work-type-extractors/code_change_extractor.ts +0 -142
- package/src/bollharness/.boll/skills/context-chains/work-type-extractors/debugging_extractor.ts +0 -126
- package/src/bollharness/.boll/skills/context-chains/work-type-extractors/design_extractor.ts +0 -148
- package/src/bollharness/.boll/skills/context-chains/work-type-extractors/planning_extractor.ts +0 -162
- package/src/bollharness/.boll/skills/context-chains/work-type-extractors/question_extractor.ts +0 -116
- package/src/bollharness/.boll/skills/context-chains/work-type-extractors/review_extractor.ts +0 -136
- package/src/bollharness/.boll/skills/crystal-learn/SKILL.md +0 -93
- package/src/bollharness/.boll/skills/crystal-learn/invariants/INV-0.md +0 -34
- package/src/bollharness/.boll/skills/crystal-learn/invariants/INV-1.md +0 -34
- package/src/bollharness/.boll/skills/crystal-learn/invariants/INV-2.md +0 -35
- package/src/bollharness/.boll/skills/crystal-learn/invariants/INV-3.md +0 -34
- package/src/bollharness/.boll/skills/crystal-learn/invariants/INV-4.md +0 -43
- package/src/bollharness/.boll/skills/crystal-learn/invariants/INV-5.md +0 -34
- package/src/bollharness/.boll/skills/crystal-learn/invariants/INV-6.md +0 -37
- package/src/bollharness/.boll/skills/crystal-learn/invariants/INV-7.md +0 -46
- package/src/bollharness/.boll/skills/guardian-fixer/PROMPT.md +0 -415
- package/src/bollharness/.boll/skills/guardian-fixer/SKILL.md +0 -320
- package/src/bollharness/.boll/skills/harness-dev/SKILL.md +0 -93
- package/src/bollharness/.boll/skills/harness-dev/examples/README.md +0 -227
- package/src/bollharness/.boll/skills/harness-dev-handoff/SKILL.md +0 -165
- package/src/bollharness/.boll/skills/harness-eng/SKILL.md +0 -110
- package/src/bollharness/.boll/skills/harness-eng-test/SKILL.md +0 -79
- package/src/bollharness/.boll/skills/harness-lab/SKILL.md +0 -170
- package/src/bollharness/.boll/skills/harness-ops/SKILL.md +0 -57
- package/src/bollharness/.boll/skills/harness-voice/SKILL.md +0 -183
- package/src/bollharness/.boll/skills/judgment/SKILL.md +0 -115
- package/src/bollharness/.boll/skills/lead/SKILL.md +0 -245
- package/src/bollharness/.boll/skills/lead/install-wow-harness.md +0 -77
- package/src/bollharness/.boll/skills/lead/ref-review-sop.md +0 -91
- package/src/bollharness/.boll/skills/lead/ref-stages.md +0 -129
- package/src/bollharness/.boll/skills/skill-discovery/SKILL.md +0 -169
- package/src/bollharness/.boll/skills/task-arch/SKILL.md +0 -106
- package/src/bollharness/.boll/skills/toolkit/SKILL.md +0 -57
- package/src/bollharness/.boll/tasks/.gitkeep +0 -0
- package/src/bollharness/.boll/toolkit-index.yaml +0 -112
- package/src/bollharness/.claude/agents/review-base.yaml +0 -108
- package/src/bollharness/.claude/plugins/boll-mode-toolkit/.claude-plugin/plugin.json +0 -44
- package/src/bollharness/.claude/plugins/boll-review-toolkit/.claude-plugin/plugin.json +0 -24
- package/src/bollharness/.claude/plugins/boll-review-toolkit/contracts/evidence-packet-schema.json +0 -102
- package/src/bollharness/.claude/plugins/boll-review-toolkit/contracts/review-contract.yaml +0 -247
- package/src/bollharness/.claude/settings.json +0 -157
- package/src/bollharness/.claude/skills/arch/SKILL.md +0 -64
- package/src/bollharness/.claude/skills/crystal-learn/SKILL.md +0 -93
- package/src/bollharness/.claude/skills/guardian-fixer/PROMPT.md +0 -44
- package/src/bollharness/.claude/skills/guardian-fixer/SKILL.md +0 -324
- package/src/bollharness/.claude/skills/harness-dev/SKILL.md +0 -93
- package/src/bollharness/.claude/skills/harness-dev/examples/README.md +0 -17
- package/src/bollharness/.claude/skills/harness-dev-handoff/SKILL.md +0 -165
- package/src/bollharness/.claude/skills/harness-eng/SKILL.md +0 -183
- package/src/bollharness/.claude/skills/harness-eng-test/SKILL.md +0 -57
- package/src/bollharness/.claude/skills/harness-ops/SKILL.md +0 -57
- package/src/bollharness/.claude/skills/harness-voice/SKILL.md +0 -84
- package/src/bollharness/.claude/skills/lead/INDEX.md +0 -28
- package/src/bollharness/.claude/skills/lead/SKILL.md +0 -24
- package/src/bollharness/.claude/skills/lead/install-wow-harness.md +0 -77
- package/src/bollharness/.claude/skills/lead/ref-review-sop.md +0 -48
- package/src/bollharness/.claude/skills/lead/ref-stages.md +0 -58
- package/src/bollharness/.claude/skills/plan-lock/SKILL.md +0 -74
- package/src/bollharness/.claude/skills/skill-discovery/SKILL.md +0 -120
- package/src/bollharness/.claude/skills/task-arch/SKILL.md +0 -106
- package/src/bollharness/.claude/skills/toolkit/SKILL.md +0 -57
- package/src/bollharness/.claude/skills/toolkit/list.sh +0 -92
- package/src/bollharness/.githooks/pre-commit +0 -21
- package/src/bollharness/.github/workflows/ci.yml +0 -88
- package/src/bollharness/CLAUDE.md +0 -73
- package/src/bollharness/README.md +0 -143
- package/src/bollharness/README.zh-CN.md +0 -131
- package/src/bollharness/docs/decisions/ADR-030-guard-signal-protocol-and-governance-reload.md +0 -1076
- package/src/bollharness/docs/decisions/ADR-038-harness-optimization-strategy.md +0 -2039
- package/src/bollharness/docs/decisions/ADR-041-codex-claude-code-division-of-labor.md +0 -128
- package/src/bollharness/docs/decisions/ADR-H1-crystal-learn-revival.md +0 -188
- package/src/bollharness/docs/decisions/ADR-H2-identity-isolation.md +0 -183
- package/src/bollharness/docs/decisions/ADR-H3-memory-scope.md +0 -133
- package/src/bollharness/docs/decisions/ADR-H4-prompt-governance.md +0 -146
- package/src/bollharness/docs/decisions/ADR-H5-gate-quantization.md +0 -212
- package/src/bollharness/docs/decisions/ADR-H6-state-file-health.md +0 -211
- package/src/bollharness/docs/decisions/ADR-H8-issue-and-doc-compliance.md +0 -202
- package/src/bollharness/docs/decisions/ADR-H9-mailbox.md +0 -231
- package/src/bollharness/docs/decisions/PLAN-H1-crystal-learn-revival.md +0 -270
- package/src/bollharness/docs/decisions/PLAN-H2-identity-isolation.md +0 -291
- package/src/bollharness/docs/decisions/PLAN-H3-memory-scope.md +0 -228
- package/src/bollharness/docs/decisions/PLAN-H4-prompt-governance.md +0 -227
- package/src/bollharness/docs/decisions/PLAN-H5-gate-quantization.md +0 -239
- package/src/bollharness/docs/decisions/PLAN-H6-state-file-health.md +0 -325
- package/src/bollharness/docs/decisions/PLAN-H8-issue-and-doc-compliance.md +0 -242
- package/src/bollharness/docs/decisions/PLAN-H9-mailbox.md +0 -378
- package/src/bollharness/docs/launch-article-en.md +0 -276
- package/src/bollharness/docs/launch-article-zh.md +0 -305
- package/src/bollharness/docs/practice.html +0 -356
- package/src/bollharness/docs/practice.md +0 -82
- package/src/bollharness/docs/research/round-1/README.md +0 -11
- package/src/bollharness/docs/research/round-2/README.md +0 -11
- package/src/bollharness/docs/research/round-3/README.md +0 -11
- package/src/bollharness/docs/research/round-4/README.md +0 -11
- package/src/bollharness/docs/research/round-5/README.md +0 -11
- package/src/bollharness/docs/research/round-6/README.md +0 -11
- package/src/bollharness/package-lock.json +0 -48
- package/src/bollharness/reference/boll-reference/.claude/rules/backend-routes.md +0 -268
- package/src/bollharness/reference/boll-reference/.claude/rules/bridge.md +0 -20
- package/src/bollharness/reference/boll-reference/.claude/rules/closure-semantics.md +0 -30
- package/src/bollharness/reference/boll-reference/.claude/rules/coaching.md +0 -13
- package/src/bollharness/reference/boll-reference/.claude/rules/env-vars.md +0 -50
- package/src/bollharness/reference/boll-reference/.claude/rules/hackathon.md +0 -12
- package/src/bollharness/reference/boll-reference/.claude/rules/repo-structure.md +0 -184
- package/src/bollharness/reference/boll-reference/.claude/rules/review-agent-isolation.md +0 -112
- package/src/bollharness/reference/boll-reference/.claude/rules/scenes.md +0 -12
- package/src/bollharness/reference/boll-reference/.claude/skills/arch/SKILL.md +0 -551
- package/src/bollharness/reference/boll-reference/.claude/skills/boll-animation/SKILL.md +0 -26
- package/src/bollharness/reference/boll-reference/.claude/skills/boll-bridge/SKILL.md +0 -227
- package/src/bollharness/reference/boll-reference/.claude/skills/boll-bridge/agents/openai.yaml +0 -4
- package/src/bollharness/reference/boll-reference/.claude/skills/boll-bridge/references/bridge-failure-taxonomy.md +0 -142
- package/src/bollharness/reference/boll-reference/.claude/skills/boll-bridge/references/bridge-validation-ladder.md +0 -107
- package/src/bollharness/reference/boll-reference/.claude/skills/boll-crystal/SKILL.md +0 -893
- package/src/bollharness/reference/boll-reference/.claude/skills/boll-crystal-learn/SKILL.md +0 -89
- package/src/bollharness/reference/boll-reference/.claude/skills/boll-dev/SKILL.md +0 -93
- package/src/bollharness/reference/boll-reference/.claude/skills/boll-dev/examples/README.md +0 -209
- package/src/bollharness/reference/boll-reference/.claude/skills/boll-dev-handoff/SKILL.md +0 -165
- package/src/bollharness/reference/boll-reference/.claude/skills/boll-eng/SKILL.md +0 -110
- package/src/bollharness/reference/boll-reference/.claude/skills/boll-eng-frontend/SKILL.md +0 -203
- package/src/bollharness/reference/boll-reference/.claude/skills/boll-eng-hdc/SKILL.md +0 -27
- package/src/bollharness/reference/boll-reference/.claude/skills/boll-eng-orchestrator/SKILL.md +0 -28
- package/src/bollharness/reference/boll-reference/.claude/skills/boll-eng-prompt/SKILL.md +0 -27
- package/src/bollharness/reference/boll-reference/.claude/skills/boll-eng-test/SKILL.md +0 -79
- package/src/bollharness/reference/boll-reference/.claude/skills/boll-lab/SKILL.md +0 -372
- package/src/bollharness/reference/boll-reference/.claude/skills/boll-run/SKILL.md +0 -437
- package/src/bollharness/reference/boll-reference/.claude/skills/boll-ux-appstore/SKILL.md +0 -27
- package/src/bollharness/reference/boll-reference/.claude/skills/boll-voice/SKILL.md +0 -442
- package/src/bollharness/reference/boll-reference/.claude/skills/guardian-fixer/PROMPT.md +0 -421
- package/src/bollharness/reference/boll-reference/.claude/skills/guardian-fixer/SKILL.md +0 -326
- package/src/bollharness/reference/boll-reference/.claude/skills/lead/SKILL.md +0 -155
- package/src/bollharness/reference/boll-reference/.claude/skills/lead/ref-review-sop.md +0 -91
- package/src/bollharness/reference/boll-reference/.claude/skills/lead/ref-stages.md +0 -129
- package/src/bollharness/reference/boll-reference/.claude/skills/nature-designer/output/skill-map-preview.png +0 -0
- package/src/bollharness/reference/boll-reference/.claude/skills/nature-designer/output/skill-map-v2.png +0 -0
- package/src/bollharness/reference/boll-reference/.claude/skills/nature-designer/output/skill-map-v3.png +0 -0
- package/src/bollharness/reference/boll-reference/.claude/skills/nature-designer/output/skill-map-v4.png +0 -0
- package/src/bollharness/reference/boll-reference/.claude/skills/plan-lock/SKILL.md +0 -425
- package/src/bollharness/reference/boll-reference/.claude/skills/plan-lock/ref-three-checks.md +0 -62
- package/src/bollharness/reference/boll-reference/.claude/skills/plan-lock/ref-wp-templates.md +0 -78
- package/src/bollharness/reference/boll-reference/.claude/skills/task-arch/SKILL.md +0 -76
- package/src/bollharness/reference/boll-reference/.claude/skills/vibedevteam-graph/SKILL.md +0 -57
- package/src/bollharness/reference/boll-reference/.claude/skills/vibedevteam-graph/beads-graph.sh +0 -153
- package/src/bollharness/reference/boll-reference/.claude/skills/vibedevteam-init/SKILL.md +0 -52
- package/src/bollharness/reference/boll-reference/.claude/skills/vibedevteam-init/beads-auto-link.sh +0 -76
- package/src/bollharness/reference/boll-reference/.claude/skills/vibedevteam-sync/SKILL.md +0 -50
- package/src/bollharness/reference/boll-reference/.claude/skills/vibedevteam-sync/beads-sync-proj.sh +0 -108
- package/src/bollharness/reference/boll-reference/docs/architecture/AGENT-PROFILE.md +0 -151
- package/src/bollharness/reference/boll-reference/docs/architecture/COST-STRUCTURE.md +0 -56
- package/src/bollharness/reference/boll-reference/docs/architecture/INDEX.md +0 -76
- package/src/bollharness/reference/boll-reference/docs/architecture/MODULE1-INTENT-FIELD.md +0 -116
- package/src/bollharness/reference/boll-reference/docs/architecture/MODULE2-CRYSTALLIZATION.md +0 -200
- package/src/bollharness/reference/boll-reference/docs/architecture/PRINCIPLES.md +0 -84
- package/src/bollharness/reference/boll-reference/docs/architecture/PROTOCOL-CORE.md +0 -209
- package/src/bollharness/reference/boll-reference/docs/architecture/VISION.md +0 -181
- package/src/bollharness/reference/boll-reference/docs/architecture/discussions/D-01-MARKET-SCENE-PROTOCOL.md +0 -754
- package/src/bollharness/reference/boll-reference/scripts/hooks/stop-evaluator.md +0 -57
- package/src/bollharness/scripts/context-fragments/artifact-linkage.md +0 -14
- package/src/bollharness/scripts/context-fragments/auth-consumers.md +0 -17
- package/src/bollharness/scripts/context-fragments/bridge-constitution.md +0 -13
- package/src/bollharness/scripts/context-fragments/catalyst-distributed.md +0 -18
- package/src/bollharness/scripts/context-fragments/closure-checklist.md +0 -13
- package/src/bollharness/scripts/context-fragments/contract-consumers.md +0 -15
- package/src/bollharness/scripts/context-fragments/db-shared-structures.md +0 -15
- package/src/bollharness/scripts/context-fragments/fixed-three-layers.md +0 -19
- package/src/bollharness/scripts/context-fragments/general-dev-principles.md +0 -11
- package/src/bollharness/scripts/context-fragments/issue-first.md +0 -8
- package/src/bollharness/scripts/context-fragments/mcp-parity.md +0 -16
- package/src/bollharness/scripts/context-fragments/pi-agent-operations.md +0 -74
- package/src/bollharness/scripts/context-fragments/protocol-consumers.md +0 -15
- package/src/bollharness/scripts/context-fragments/run-events-consumers.md +0 -15
- package/src/bollharness/scripts/context-fragments/scene-fidelity.md +0 -13
- package/src/bollharness/scripts/context-fragments/truth-source-hierarchy.md +0 -15
- package/src/bollharness/scripts/context-fragments/two-language.md +0 -15
- package/src/bollharness/scripts/context-fragments/version-sources.md +0 -14
- package/src/bollharness/scripts/hooks/stop-evaluator.md +0 -83
- package/src/bollharness/templates/scaffold/.boll/guard/.gitkeep +0 -0
- package/src/bollharness/templates/scaffold/.boll/metrics/.gitkeep +0 -0
- package/src/bollharness/templates/scaffold/.boll/state/.gitkeep +0 -0
- package/src/bollharness/templates/scaffold/CLAUDE.md +0 -89
- package/src/bollharness/templates/scaffold/docs/INDEX.md +0 -3
- package/src/bollharness/templates/scaffold/docs/decisions/ADR_TEMPLATE.md +0 -38
- package/src/bollharness/templates/scaffold/docs/decisions/PLAN_TEMPLATE.md +0 -45
- package/src/bollharness/templates/scaffold/docs/decisions/tasks/.gitkeep +0 -2
- package/src/bollharness/templates/scaffold/docs/issues/.gitkeep +0 -0
- package/src/bollharness/templates/scaffold/docs/issues/GUARD_ISSUE_TEMPLATE.md +0 -35
- package/src/bollharness/templates/scaffold/docs/issues/ISSUE_TEMPLATE.md +0 -51
- package/src/bollharness/tsconfig.json +0 -26
- package/src/constraint-runtime/package-lock.json +0 -48
- package/src/constraint-runtime/package.json +0 -34
- package/src/constraint-runtime/src/_archive_helper.ts +0 -16
- package/src/constraint-runtime/src/agent/coordinator.ts +0 -71
- package/src/constraint-runtime/src/agent/index.ts +0 -1
- package/src/constraint-runtime/src/assistant/index.ts +0 -15
- package/src/constraint-runtime/src/bootstrap/index.ts +0 -15
- package/src/constraint-runtime/src/bootstrap_graph.ts +0 -17
- package/src/constraint-runtime/src/bridge/index.ts +0 -15
- package/src/constraint-runtime/src/buddy/index.ts +0 -15
- package/src/constraint-runtime/src/cli/index.ts +0 -15
- package/src/constraint-runtime/src/command_graph.ts +0 -20
- package/src/constraint-runtime/src/commands.ts +0 -83
- package/src/constraint-runtime/src/components/index.ts +0 -15
- package/src/constraint-runtime/src/constants/index.ts +0 -15
- package/src/constraint-runtime/src/constraint/budget.ts +0 -25
- package/src/constraint-runtime/src/constraint/index.ts +0 -3
- package/src/constraint-runtime/src/constraint/permission.ts +0 -28
- package/src/constraint-runtime/src/context.ts +0 -45
- package/src/constraint-runtime/src/coordinator/index.ts +0 -15
- package/src/constraint-runtime/src/cost_hook.ts +0 -6
- package/src/constraint-runtime/src/cost_tracker.ts +0 -9
- package/src/constraint-runtime/src/deferred_init.ts +0 -18
- package/src/constraint-runtime/src/direct_modes.ts +0 -13
- package/src/constraint-runtime/src/dynamic-tool-loader.ts +0 -115
- package/src/constraint-runtime/src/entrypoints/index.ts +0 -15
- package/src/constraint-runtime/src/execution_registry.ts +0 -41
- package/src/constraint-runtime/src/history.ts +0 -16
- package/src/constraint-runtime/src/hooks/index.ts +0 -15
- package/src/constraint-runtime/src/index.ts +0 -28
- package/src/constraint-runtime/src/ink.ts +0 -4
- package/src/constraint-runtime/src/keybindings/index.ts +0 -15
- package/src/constraint-runtime/src/memdir/index.ts +0 -15
- package/src/constraint-runtime/src/migrations/index.ts +0 -15
- package/src/constraint-runtime/src/models.ts +0 -49
- package/src/constraint-runtime/src/moreright/index.ts +0 -15
- package/src/constraint-runtime/src/native_ts/index.ts +0 -15
- package/src/constraint-runtime/src/output_styles/index.ts +0 -15
- package/src/constraint-runtime/src/parity_audit.ts +0 -23
- package/src/constraint-runtime/src/plugins/index.ts +0 -15
- package/src/constraint-runtime/src/port_manifest.ts +0 -20
- package/src/constraint-runtime/src/prefetch.ts +0 -17
- package/src/constraint-runtime/src/query.ts +0 -7
- package/src/constraint-runtime/src/reference_data/archive_surface_snapshot.json +0 -63
- package/src/constraint-runtime/src/reference_data/commands_snapshot.json +0 -1037
- package/src/constraint-runtime/src/reference_data/subsystems/OpenCLI.json +0 -10
- package/src/constraint-runtime/src/reference_data/subsystems/PolymarketSDK.json +0 -12
- package/src/constraint-runtime/src/reference_data/subsystems/SafeSDK.json +0 -14
- package/src/constraint-runtime/src/reference_data/subsystems/assistant.json +0 -8
- package/src/constraint-runtime/src/reference_data/subsystems/bootstrap.json +0 -8
- package/src/constraint-runtime/src/reference_data/subsystems/bridge.json +0 -32
- package/src/constraint-runtime/src/reference_data/subsystems/buddy.json +0 -13
- package/src/constraint-runtime/src/reference_data/subsystems/cli.json +0 -26
- package/src/constraint-runtime/src/reference_data/subsystems/components.json +0 -32
- package/src/constraint-runtime/src/reference_data/subsystems/constants.json +0 -28
- package/src/constraint-runtime/src/reference_data/subsystems/coordinator.json +0 -8
- package/src/constraint-runtime/src/reference_data/subsystems/entrypoints.json +0 -15
- package/src/constraint-runtime/src/reference_data/subsystems/hooks.json +0 -32
- package/src/constraint-runtime/src/reference_data/subsystems/keybindings.json +0 -21
- package/src/constraint-runtime/src/reference_data/subsystems/memdir.json +0 -15
- package/src/constraint-runtime/src/reference_data/subsystems/migrations.json +0 -18
- package/src/constraint-runtime/src/reference_data/subsystems/moreright.json +0 -8
- package/src/constraint-runtime/src/reference_data/subsystems/native_ts.json +0 -11
- package/src/constraint-runtime/src/reference_data/subsystems/outputStyles.json +0 -8
- package/src/constraint-runtime/src/reference_data/subsystems/plugins.json +0 -9
- package/src/constraint-runtime/src/reference_data/subsystems/remote.json +0 -11
- package/src/constraint-runtime/src/reference_data/subsystems/schemas.json +0 -8
- package/src/constraint-runtime/src/reference_data/subsystems/screens.json +0 -10
- package/src/constraint-runtime/src/reference_data/subsystems/server.json +0 -10
- package/src/constraint-runtime/src/reference_data/subsystems/services.json +0 -32
- package/src/constraint-runtime/src/reference_data/subsystems/skills.json +0 -27
- package/src/constraint-runtime/src/reference_data/subsystems/state.json +0 -13
- package/src/constraint-runtime/src/reference_data/subsystems/types.json +0 -18
- package/src/constraint-runtime/src/reference_data/subsystems/upstreamproxy.json +0 -9
- package/src/constraint-runtime/src/reference_data/subsystems/utils.json +0 -32
- package/src/constraint-runtime/src/reference_data/subsystems/vim.json +0 -12
- package/src/constraint-runtime/src/reference_data/subsystems/voice.json +0 -8
- package/src/constraint-runtime/src/reference_data/tools_snapshot.json +0 -1042
- package/src/constraint-runtime/src/remote/index.ts +0 -15
- package/src/constraint-runtime/src/remote_runtime.ts +0 -17
- package/src/constraint-runtime/src/runtime/index.ts +0 -1
- package/src/constraint-runtime/src/runtime/session.ts +0 -42
- package/src/constraint-runtime/src/schemas/index.ts +0 -15
- package/src/constraint-runtime/src/screens/index.ts +0 -15
- package/src/constraint-runtime/src/server/index.ts +0 -15
- package/src/constraint-runtime/src/services/index.ts +0 -15
- package/src/constraint-runtime/src/session_store.ts +0 -32
- package/src/constraint-runtime/src/setup.ts +0 -50
- package/src/constraint-runtime/src/skills/index.ts +0 -1
- package/src/constraint-runtime/src/skills/skill-registry.ts +0 -40
- package/src/constraint-runtime/src/state/index.ts +0 -15
- package/src/constraint-runtime/src/system_init.ts +0 -21
- package/src/constraint-runtime/src/thinking/engine.ts +0 -61
- package/src/constraint-runtime/src/thinking/index.ts +0 -1
- package/src/constraint-runtime/src/tool_pool.ts +0 -20
- package/src/constraint-runtime/src/tools/OpenCLI/execAdapter.ts +0 -12
- package/src/constraint-runtime/src/tools/OpenCLI/listAdapters.ts +0 -12
- package/src/constraint-runtime/src/tools/OpenCLI/runCommand.ts +0 -13
- package/src/constraint-runtime/src/tools/PolymarketSDK/cancelOrder.ts +0 -10
- package/src/constraint-runtime/src/tools/PolymarketSDK/createOrder.ts +0 -13
- package/src/constraint-runtime/src/tools/PolymarketSDK/getMarket.ts +0 -14
- package/src/constraint-runtime/src/tools/PolymarketSDK/getOrders.ts +0 -10
- package/src/constraint-runtime/src/tools/PolymarketSDK/listMarkets.ts +0 -24
- package/src/constraint-runtime/src/tools/SafeSDK/confirmTransaction.ts +0 -13
- package/src/constraint-runtime/src/tools/SafeSDK/createTransaction.ts +0 -23
- package/src/constraint-runtime/src/tools/SafeSDK/deploySafe.ts +0 -12
- package/src/constraint-runtime/src/tools/SafeSDK/executeTransaction.ts +0 -12
- package/src/constraint-runtime/src/tools/SafeSDK/getBalance.ts +0 -10
- package/src/constraint-runtime/src/tools/SafeSDK/getPendingTransactions.ts +0 -10
- package/src/constraint-runtime/src/tools/SafeSDK/proposeTransaction.ts +0 -14
- package/src/constraint-runtime/src/tools/WalletTools/autoPay.ts +0 -58
- package/src/constraint-runtime/src/tools/WalletTools/createWallet.ts +0 -19
- package/src/constraint-runtime/src/tools/WalletTools/getBalance.ts +0 -28
- package/src/constraint-runtime/src/tools/WalletTools/importWallet.ts +0 -34
- package/src/constraint-runtime/src/tools/WalletTools/sendTransaction.ts +0 -50
- package/src/constraint-runtime/src/tools/WalletTools/signMessage.ts +0 -23
- package/src/constraint-runtime/src/tools/WalletTools/transferToken.ts +0 -49
- package/src/constraint-runtime/src/tools.ts +0 -100
- package/src/constraint-runtime/src/transcript.ts +0 -23
- package/src/constraint-runtime/src/types/index.ts +0 -15
- package/src/constraint-runtime/src/upstream_proxy/index.ts +0 -15
- package/src/constraint-runtime/src/utils/index.ts +0 -15
- package/src/constraint-runtime/src/vim/index.ts +0 -15
- package/src/constraint-runtime/src/voice/index.ts +0 -15
- package/src/constraint-runtime/tests/agent.test.ts +0 -20
- package/src/constraint-runtime/tests/constraint.test.ts +0 -47
- package/src/constraint-runtime/tests/skill.test.ts +0 -23
- package/src/constraint-runtime/tests/thinking.test.ts +0 -28
- package/src/constraint-runtime/tsconfig.json +0 -13
- package/src/pi-ecosystem/index.ts +0 -453
- package/src/pi-ecosystem-colony/index.ts +0 -482
- package/src/pi-ecosystem-goals/index.ts +0 -585
- package/src/pi-ecosystem-judgment/decision.ts +0 -431
- package/src/pi-ecosystem-judgment/distillation.ts +0 -398
- package/src/pi-ecosystem-judgment/human-value-store.ts +0 -580
- package/src/pi-ecosystem-judgment/index.ts +0 -678
- package/src/pi-ecosystem-judgment/value-injection.ts +0 -744
- package/src/pi-ecosystem-mcp/index.ts +0 -427
- package/src/pi-ecosystem-subagents/index.ts +0 -408
- package/src/test/ai-judgment-test.ts +0 -92
- package/src/test/bollharness-integration.test.ts +0 -398
- package/src/test/channel-agent-multi-dialogue.ts +0 -265
- package/src/test/channel-heartbeat-agent-test.ts +0 -244
- package/src/test/constraint-layer.test.ts +0 -191
- package/src/test/diap-identity-test.ts +0 -222
- package/src/test/diap-quick-test.ts +0 -73
- package/src/test/global-shared-context.test.ts +0 -393
- package/src/test/harness-judgment-injection.test.ts +0 -353
- package/src/test/harness-workflow-integrator-test.ts +0 -285
- package/src/test/human-value-store.test.ts +0 -316
- package/src/test/hybrid-integration-test.ts +0 -126
- package/src/test/hybrid-messenger-verify.ts +0 -68
- package/src/test/iroh-bistream-debug.ts +0 -50
- package/src/test/iroh-communication.test.ts +0 -81
- package/src/test/iroh-debug-test.ts +0 -69
- package/src/test/iroh-diap-test.ts +0 -90
- package/src/test/iroh-direct-connect.ts +0 -65
- package/src/test/iroh-e2e-fixed.ts +0 -106
- package/src/test/iroh-e2e-same-process.ts +0 -83
- package/src/test/iroh-e2e.ts +0 -83
- package/src/test/iroh-final-e2e.ts +0 -84
- package/src/test/iroh-relay-test.ts +0 -46
- package/src/test/iroh-simple-test.ts +0 -49
- package/src/test/iroh-transport-verify.ts +0 -60
- package/src/test/iroh-transport.test.ts +0 -47
- package/src/test/iroh-two-nodes.ts +0 -87
- package/src/test/iroh-verify.ts +0 -55
- package/src/test/judgment-decision.test.ts +0 -373
- package/src/test/llm-judgment-integration.test.ts +0 -257
- package/src/test/p2p-agent-complex-dialogue.ts +0 -490
- package/src/test/p2p-agent-dialogue.ts +0 -423
- package/src/test/p2p-agent-full-bidirectional.ts +0 -686
- package/src/test/p2p-agent-harness-flow.ts +0 -562
- package/src/test/p2p-agent-harness-single.ts +0 -175
- package/src/test/p2p-ai-dialogue-test.ts +0 -374
- package/src/test/p2p-cid-connect-test.ts +0 -245
- package/src/test/p2p-connect-receiver.ts +0 -85
- package/src/test/p2p-iroh-test.ts +0 -214
- package/src/test/p2p-minimal-test.ts +0 -264
- package/src/test/p2p-node-1.ts +0 -172
- package/src/test/p2p-node-2.ts +0 -172
- package/src/test/p2p-server.ts +0 -335
- package/src/test/p2p-two-nodes-test.ts +0 -542
- package/src/test/pi-sdk.test.ts +0 -47
- package/src/test/set-persona.ts +0 -56
- package/src/test/simple.test.ts +0 -11
- package/src/test/storage-integration.test.ts +0 -191
- package/src/test/subagent-manager.test.ts +0 -392
- package/src/test/test-gate-flow.test.ts +0 -92
- package/src/test/workflow-engine.test.ts +0 -101
- package/src/web/design.md +0 -99
- package/src/workflows/collaboration.ts +0 -455
- package/src/workflows/index.ts +0 -64
- package/vitest.config.ts +0 -12
- package//346/203/263/346/263/225.md +0 -79
|
@@ -1,276 +0,0 @@
|
|
|
1
|
-
# Anthropic Keeps Saying "Harness." We've Been Running One for Six Months.
|
|
2
|
-
|
|
3
|
-
---
|
|
4
|
-
|
|
5
|
-
## 00
|
|
6
|
-
|
|
7
|
-
Yesterday Anthropic launched Managed Agents.
|
|
8
|
-
|
|
9
|
-
Their technical docs keep repeating one word: **Harness**.
|
|
10
|
-
|
|
11
|
-
> Every Agent request should run in a governed environment.
|
|
12
|
-
|
|
13
|
-
This isn't a new idea to us. We've been running a Harness on our own project for six months.
|
|
14
|
-
|
|
15
|
-
Today we're open-sourcing it.
|
|
16
|
-
|
|
17
|
-
---
|
|
18
|
-
|
|
19
|
-
## 01 What is a Harness, anyway?
|
|
20
|
-
|
|
21
|
-
The word "Harness" is suddenly everywhere, but many people haven't figured out what it actually means.
|
|
22
|
-
|
|
23
|
-
Simply put: **AI is great at doing work, but terrible at managing itself. A Harness is the external system that manages it.**
|
|
24
|
-
|
|
25
|
-
Analogy: You hired a brilliant intern. Writes code fast, understands complex problems, but—
|
|
26
|
-
|
|
27
|
-
- You tell them not to touch the production database. They sometimes forget.
|
|
28
|
-
- You tell them to run tests before submitting. They say "done" but didn't actually run them.
|
|
29
|
-
- You ask them to fix one bug. They refactor three other files you didn't ask about.
|
|
30
|
-
- You ask them to review someone's code. While "reviewing," they edit the code.
|
|
31
|
-
|
|
32
|
-
What does this intern need? Not a longer handbook. **Process, checks, mechanical enforcement.**
|
|
33
|
-
|
|
34
|
-
That's a Harness.
|
|
35
|
-
|
|
36
|
-
Anthropic's Managed Agents is a **cloud-hosted Harness** — they manage sandboxing, state, retries.
|
|
37
|
-
|
|
38
|
-
Our bollharness is a **local development Harness** — we manage code quality, review flow, completion verification.
|
|
39
|
-
|
|
40
|
-
Different layers, same core insight: **AI reliability can't be guaranteed by AI alone.**
|
|
41
|
-
|
|
42
|
-
---
|
|
43
|
-
|
|
44
|
-
## 02 You've been here before
|
|
45
|
-
|
|
46
|
-
You ask Claude Code to build a feature.
|
|
47
|
-
|
|
48
|
-
It writes fast. Architecture looks solid. You go get coffee.
|
|
49
|
-
|
|
50
|
-
You come back—
|
|
51
|
-
|
|
52
|
-
**"All tests pass."** You run them. Three fail.
|
|
53
|
-
|
|
54
|
-
**"Done."** You check. Two TODOs unhandled.
|
|
55
|
-
|
|
56
|
-
**It fixes one bug.** Refactors three files you didn't ask it to touch.
|
|
57
|
-
|
|
58
|
-
**It reviews code.** While "reviewing," it edits the code it was supposed to review.
|
|
59
|
-
|
|
60
|
-
You tell it not to do something. It listens 80% of the time. The other 20%, it doesn't disobey on purpose—it genuinely forgets.
|
|
61
|
-
|
|
62
|
-
You spend more time **supervising AI** than you **saved in development time**.
|
|
63
|
-
|
|
64
|
-
This isn't a capability problem. Claude Code is remarkably capable.
|
|
65
|
-
|
|
66
|
-
This is a **governance problem**.
|
|
67
|
-
|
|
68
|
-
---
|
|
69
|
-
|
|
70
|
-
## 03 One number that changes everything
|
|
71
|
-
|
|
72
|
-
We ran a production project (boll, an agent collaboration protocol) for 6 months. We collected a lot of data.
|
|
73
|
-
|
|
74
|
-
One number changed everything:
|
|
75
|
-
|
|
76
|
-
<!-- [Diagram ①: Six-Layer Governance Stack] -->
|
|
77
|
-
|
|
78
|
-
> **CLAUDE.md instruction compliance: ~20%**
|
|
79
|
-
>
|
|
80
|
-
> **Hook enforcement: 100%**
|
|
81
|
-
|
|
82
|
-
The rules you write in CLAUDE.md are consistently followed only about 20% of the time.
|
|
83
|
-
|
|
84
|
-
Not because the AI doesn't want to comply. Because context windows are finite, attention drifts, and long conversations compress early instructions. This is a **structural constraint** of LLMs, not a prompting skill issue.
|
|
85
|
-
|
|
86
|
-
But hooks execute at 100%. Because hooks aren't requests. They're **physical constraints**.
|
|
87
|
-
|
|
88
|
-
Traffic lights aren't suggestions. They're mechanical devices.
|
|
89
|
-
|
|
90
|
-
---
|
|
91
|
-
|
|
92
|
-
## 04 Six layers: how we make AI develop autonomously
|
|
93
|
-
|
|
94
|
-
You might ask: **"So how do you actually use AI for development? You don't have to supervise?"**
|
|
95
|
-
|
|
96
|
-
Not "don't have to supervise." Humans do three things: **set direction, correct course, accept PRs**.
|
|
97
|
-
|
|
98
|
-
Everything in between — writing code, running tests, doing reviews, writing docs, splitting tasks, detecting drift — is fully automatic.
|
|
99
|
-
|
|
100
|
-
Because six layers have your back.
|
|
101
|
-
|
|
102
|
-
---
|
|
103
|
-
|
|
104
|
-
### Layer 1: Specialization — 16 Skills = 16 "Roles"
|
|
105
|
-
|
|
106
|
-
Not one AI doing everything.
|
|
107
|
-
|
|
108
|
-
Architect (`arch`), bug triage (`bug-triage`), failure pattern extraction (`crystal-learn`), state machine control (`lead`), handoff coordination (`harness-dev-handoff`)…
|
|
109
|
-
|
|
110
|
-
Each Skill has clear input/output contracts. No boundary crossing. Like a proper engineering team — not a generalist, but a coordinated organization.
|
|
111
|
-
|
|
112
|
-
---
|
|
113
|
-
|
|
114
|
-
### Layer 2: Mechanical Governance — Hooks = The Invisible Hand
|
|
115
|
-
|
|
116
|
-
<!-- [Diagram ②: Hook Lifecycle] -->
|
|
117
|
-
|
|
118
|
-
16 hooks across 7 lifecycle stages. Not post-hoc review — **intercepting at the moment of action**:
|
|
119
|
-
|
|
120
|
-
| What you worry about | How hooks handle it |
|
|
121
|
-
|---------------------|-------------------|
|
|
122
|
-
| AI sneaks a deploy to production | PreToolUse blocks scp/rsync, exit 2 hard stop |
|
|
123
|
-
| AI edits a file without knowing its rules | PostToolUse auto-injects that file's domain context |
|
|
124
|
-
| AI edits the same file back and forth | PostToolUse detects the loop, raises a warning |
|
|
125
|
-
| AI wants to quit but has uncommitted code | Stop hook checks transcript, blocks premature exit |
|
|
126
|
-
| AI claims "tests pass" with no evidence | Mechanical gate checks progress.json — can't fake it |
|
|
127
|
-
|
|
128
|
-
Not "reminding you not to." **Physically preventing it.**
|
|
129
|
-
|
|
130
|
-
---
|
|
131
|
-
|
|
132
|
-
### Layer 3: 8-Gate Quality Flow — You Can't Review Your Own Work
|
|
133
|
-
|
|
134
|
-
<!-- [Diagram ③: 8-Gate State Machine] -->
|
|
135
|
-
|
|
136
|
-
Every significant change must pass through 8 gates. 4 of them are **review gates** (Gate 2/4/6/8).
|
|
137
|
-
|
|
138
|
-
How review gates work: automatically spawn an **independent review Agent**.
|
|
139
|
-
|
|
140
|
-
- Independent context (doesn't share the main Agent's conversation history)
|
|
141
|
-
- Read-only tools (physically can't modify code — more on this below)
|
|
142
|
-
- Fresh review (not anchored by prior work)
|
|
143
|
-
|
|
144
|
-
Why can't AI review its own work? Because when AI asks itself "did I do a good job?", the answer is always "yes."
|
|
145
|
-
|
|
146
|
-
Ask a different AI, and the answer gets honest.
|
|
147
|
-
|
|
148
|
-
---
|
|
149
|
-
|
|
150
|
-
### Layer 4: Self-Learning — Same Mistake Never Twice
|
|
151
|
-
|
|
152
|
-
`crystal-learn` automatically extracts invariants from failures.
|
|
153
|
-
|
|
154
|
-
Example: AI changes a backend API but forgets to update frontend calls → extracts the rule: **"When changing a contract, grep all consumers."**
|
|
155
|
-
|
|
156
|
-
This rule doesn't sit in a document waiting to be remembered. It gets **mechanically injected into execution-layer Skills**, automatically active next time.
|
|
157
|
-
|
|
158
|
-
Fail once, immunize forever.
|
|
159
|
-
|
|
160
|
-
---
|
|
161
|
-
|
|
162
|
-
### Layer 5: Context Engineering — AI Doesn't Get Lost
|
|
163
|
-
|
|
164
|
-
The most common AI mistake in long conversations: forgetting what it's doing.
|
|
165
|
-
|
|
166
|
-
Three countermeasures:
|
|
167
|
-
|
|
168
|
-
- **On-demand injection**: When editing a file, only that file's domain rules are loaded — not everything at once
|
|
169
|
-
- **Session isolation**: Multiple AIs working in parallel, each scoped via independent transcript files — no cross-contamination
|
|
170
|
-
- **Compression protection**: Critical info auto-saved before context compression
|
|
171
|
-
|
|
172
|
-
<!-- [Diagram ④: Session Isolation] -->
|
|
173
|
-
|
|
174
|
-
AI always knows what it's doing. Because hooks remind it at every critical moment.
|
|
175
|
-
|
|
176
|
-
---
|
|
177
|
-
|
|
178
|
-
### Layer 6: Physical Isolation — Not "Please Don't" — Can't
|
|
179
|
-
|
|
180
|
-
<!-- [Diagram ⑤: Schema-Level Review Isolation] -->
|
|
181
|
-
|
|
182
|
-
This is the **most critical design decision** in the entire system.
|
|
183
|
-
|
|
184
|
-
| Method | Compliance |
|
|
185
|
-
|--------|-----------|
|
|
186
|
-
| Write "don't modify files" in the prompt | ~70% |
|
|
187
|
-
| Remove Edit/Write from the tool manifest | **100%** |
|
|
188
|
-
|
|
189
|
-
Because it **physically can't call tools that don't exist** in its schema.
|
|
190
|
-
|
|
191
|
-
This is called schema-level isolation. The entire bollharness design philosophy in one sentence:
|
|
192
|
-
|
|
193
|
-
> **If it matters, don't ask. Enforce.**
|
|
194
|
-
|
|
195
|
-
---
|
|
196
|
-
|
|
197
|
-
## 05 Real story: one Stop Hook, three rounds of fixes
|
|
198
|
-
|
|
199
|
-
bollharness isn't an ideal system from a paper. It was **forged by reality**.
|
|
200
|
-
|
|
201
|
-
Our Stop hook (prevents AI from quitting prematurely) went through three rounds of fixes:
|
|
202
|
-
|
|
203
|
-
**Round 1**: AI triggers completion checklist during pure chat → added "check for write operations"
|
|
204
|
-
|
|
205
|
-
**Round 2**: AI edits files, commits, continues chatting — still triggers → changed to "edited files ∩ uncommitted git changes" intersection
|
|
206
|
-
|
|
207
|
-
**Round 3**: Two AIs working in parallel, shared state contaminates each other → switched to session-scoped transcript isolation
|
|
208
|
-
|
|
209
|
-
Three rounds. One hook.
|
|
210
|
-
|
|
211
|
-
**This is why the system works — it's not designed to be perfect. It's battle-tested against AI's creative workarounds.**
|
|
212
|
-
|
|
213
|
-
Every rule exists because the previous rule had a loophole.
|
|
214
|
-
|
|
215
|
-
---
|
|
216
|
-
|
|
217
|
-
## 06 How does it compare?
|
|
218
|
-
|
|
219
|
-
| | CLAUDE.md | Cursor Rules | Managed Agents | **bollharness** |
|
|
220
|
-
|---|---|---|---|---|
|
|
221
|
-
| Constraint method | Text instructions | Text instructions | Cloud-hosted | Local hooks |
|
|
222
|
-
| Compliance rate | ~20% | ~20% | N/A (cloud) | **100% (mechanical)** |
|
|
223
|
-
| Review mechanism | Self-review | Self-review | None | **Independent Agent + schema isolation** |
|
|
224
|
-
| Parallel sessions | Cross-contamination | Cross-contamination | Isolated | **Transcript-scoped isolation** |
|
|
225
|
-
| Failure mode | Silent skip | Silent skip | Cloud retry | **Block + feedback** |
|
|
226
|
-
| Self-learning | ✗ | ✗ | ✗ | **✓ (crystal-learn)** |
|
|
227
|
-
| Deployment | Write a file | Write a file | API integration | **One-command install** |
|
|
228
|
-
| Works with | Any AI editor | Cursor | API calls | **Claude Code** |
|
|
229
|
-
|
|
230
|
-
CLAUDE.md is still useful. bollharness doesn't replace it — **it enforces it**.
|
|
231
|
-
|
|
232
|
-
---
|
|
233
|
-
|
|
234
|
-
## 07 Three minutes to install
|
|
235
|
-
|
|
236
|
-
```bash
|
|
237
|
-
git clone https://github.com/NatureBlueee/bollharness.git
|
|
238
|
-
cd bollharness
|
|
239
|
-
npx ts-node src/scripts/install/phase2_auto.ts /path/to/your/project --tier drop-in
|
|
240
|
-
```
|
|
241
|
-
|
|
242
|
-
Three tiers, based on trust level:
|
|
243
|
-
|
|
244
|
-
| Tier | What it does | Who it's for |
|
|
245
|
-
|------|-------------|-------------|
|
|
246
|
-
| **drop-in** | Installs as-is, doesn't read your code | Try it out |
|
|
247
|
-
| **adapt** | Reads your docs, adapts Skills | Real projects |
|
|
248
|
-
| **mine** | Reads your work transcripts, deep adaptation | Long-term use |
|
|
249
|
-
|
|
250
|
-
Idempotent — run it twice, same result. Won't overwrite your existing config.
|
|
251
|
-
|
|
252
|
-
Requires: Claude Code CLI + Node.js 18+ + Git.
|
|
253
|
-
|
|
254
|
-
---
|
|
255
|
-
|
|
256
|
-
## 08 Origin
|
|
257
|
-
|
|
258
|
-
bollharness was extracted from 6 months of production use on [boll](https://boll.net), an agent collaboration protocol project.
|
|
259
|
-
|
|
260
|
-
While building boll, we kept getting burned by AI's creative workarounds — so we kept adding rules, hooks, isolation. Eventually we realized the governance layer was more universally valuable than the project itself.
|
|
261
|
-
|
|
262
|
-
Every AI-assisted project needs this. Not just ours.
|
|
263
|
-
|
|
264
|
-
So we extracted it and open-sourced it.
|
|
265
|
-
|
|
266
|
-
**GitHub**: [NatureBlueee/bollharness](https://github.com/NatureBlueee/bollharness)
|
|
267
|
-
|
|
268
|
-
**License**: MIT
|
|
269
|
-
|
|
270
|
-
---
|
|
271
|
-
|
|
272
|
-
*Anthropic says Harness is the future of Agents.*
|
|
273
|
-
|
|
274
|
-
*We say Harness is what Agents forced into existence.*
|
|
275
|
-
|
|
276
|
-
*Every rule has a story: an AI that found a creative way around the last one.*
|
|
@@ -1,305 +0,0 @@
|
|
|
1
|
-
# 53 天,1137 次提交,93 万行代码——全是 AI 自己写的
|
|
2
|
-
|
|
3
|
-
你有没有试过,把一整个项目交给 AI?
|
|
4
|
-
|
|
5
|
-
不是让它帮你补个函数、改个 bug。
|
|
6
|
-
|
|
7
|
-
而是——你说一句"我要做 X",然后它自己设计架构、拆任务、写代码、跑测试、做审查、出 PR。
|
|
8
|
-
|
|
9
|
-
我们做到了。
|
|
10
|
-
|
|
11
|
-
53 天。1137 次提交。93 万行代码。1992 个测试。一个人 + AI,全自主交付了一个完整的商业项目。
|
|
12
|
-
|
|
13
|
-
今天开源的这个东西,就是让这件事成为可能的核心。
|
|
14
|
-
|
|
15
|
-
**bollharness**——Claude Code 的治理层。
|
|
16
|
-
|
|
17
|
-
---
|
|
18
|
-
|
|
19
|
-
## 一句话说清它是什么
|
|
20
|
-
|
|
21
|
-
bollharness 给你的 Claude Code 项目装上一套完整的工程治理。
|
|
22
|
-
|
|
23
|
-
一行命令安装。装完之后,AI agent 获得四个能力:
|
|
24
|
-
|
|
25
|
-
**自组织**——16 个专业 skill,从架构到开发到审查,各司其职,8 关状态机管控全流程。
|
|
26
|
-
|
|
27
|
-
**自学习**——AI 犯过的错自动提取成规则,注入执行层,同样的坑永不再踩。
|
|
28
|
-
|
|
29
|
-
**自发现**——从你的工作历史中识别重复模式,提议封装成新 skill。harness 会长出新能力。
|
|
30
|
-
|
|
31
|
-
**自安装**——三档深度,按你的信任度选择。幂等安装,不覆盖已有配置。
|
|
32
|
-
|
|
33
|
-
不是提示词。不是文档。是机械化的工程治理。
|
|
34
|
-
|
|
35
|
-
---
|
|
36
|
-
|
|
37
|
-
## 为什么需要它
|
|
38
|
-
|
|
39
|
-
用过 Claude Code 的人都有体感:AI 写代码很快,但**放心交给它**是另一回事。
|
|
40
|
-
|
|
41
|
-
你在 CLAUDE.md 里写了一堆规则。AI 有时候听,有时候不听。不是它故意的——对话长了,早期规则会被上下文压缩挤掉。我们实测下来,CLAUDE.md 的规则遵从率大概 **20%**。
|
|
42
|
-
|
|
43
|
-
你叫审查 AI "只看不改"。它有 30% 的概率会忍不住顺手把代码改了。
|
|
44
|
-
|
|
45
|
-
AI 说"完成了"。你去一查,测试没跑,文件没提交。我们统计过,stop 尝试中有 **67%** 没有真正完成的证据。
|
|
46
|
-
|
|
47
|
-
这些不是 bug。这是 LLM 的结构性特征。
|
|
48
|
-
|
|
49
|
-
解决方法不是写更好的提示词。
|
|
50
|
-
|
|
51
|
-
是造**机械装置**。
|
|
52
|
-
|
|
53
|
-
---
|
|
54
|
-
|
|
55
|
-
## 自组织:你说一句话,它自己干完
|
|
56
|
-
|
|
57
|
-
你说"我要做一个用户注册页面"。
|
|
58
|
-
|
|
59
|
-
接下来发生的事:
|
|
60
|
-
|
|
61
|
-
**Gate 0** — `lead` 接管,锁定问题,判定变更分类。
|
|
62
|
-
|
|
63
|
-
**Gate 1** — `arch` 输出架构设计,列清所有消费方。
|
|
64
|
-
|
|
65
|
-
**Gate 2** — 自动启动一个**全新的、独立的 AI** 做审查。这个审查 AI 不共享之前的对话,从头看。而且它的工具清单里没有 Edit 和 Write——物理上改不了代码。
|
|
66
|
-
|
|
67
|
-
**Gate 3-4** — 输出详细计划,`plan-lock` 冻结方案,再做一轮独立审查。
|
|
68
|
-
|
|
69
|
-
**Gate 5** — `task-arch` 把计划拆成可并行执行的工作包。每个包有明确的文件范围、接缝负责人、验收标准。
|
|
70
|
-
|
|
71
|
-
**Gate 6** — 独立审查工作包拆分。
|
|
72
|
-
|
|
73
|
-
**Gate 7** — `harness-dev` 写代码。边写边记日志,不是事后补的——因为事后补的日志我们被坑过,里面的"证据"有可能是编的。
|
|
74
|
-
|
|
75
|
-
**Gate 8** — 终审。独立 AI + 端到端验收。通过了才出 PR。
|
|
76
|
-
|
|
77
|
-
**你做的事:定方向、纠偏、accept PR。中间全自动。**
|
|
78
|
-
|
|
79
|
-
16 个 skill 各司其职:
|
|
80
|
-
|
|
81
|
-
- `lead` — 流程统领,fail-closed 状态机
|
|
82
|
-
- `arch` — 架构师,方案比较和边界冻结
|
|
83
|
-
- `harness-dev` — 全栈开发,代码实现和变更传播
|
|
84
|
-
- `guardian-fixer` — Bug 修复,自带 8 关验证管道
|
|
85
|
-
- `task-arch` — 任务拆解,接缝是第一等公民
|
|
86
|
-
- `harness-ops` — 运维巡检,真相源漂移检测
|
|
87
|
-
- `harness-eng-test` — 测试闭环,诚实标注 PASS 和 BLOCKED
|
|
88
|
-
- `harness-lab` — 实验科学家,用数据证明设计决策
|
|
89
|
-
- `crystal-learn` — 失败模式提取,注入执行层
|
|
90
|
-
- `skill-discovery` — 从工作历史发现新能力
|
|
91
|
-
- `plan-lock` — 冻结计划,关掉所有决策口子
|
|
92
|
-
- `bug-triage` — Bug 分诊
|
|
93
|
-
- `harness-eng` — 工程编排,管理并行执行
|
|
94
|
-
- `harness-voice` — 品牌表达
|
|
95
|
-
- `bug-pipeline` — 端到端 bug 修复流水线
|
|
96
|
-
- `harness-dev-handoff` — 新 AI 接手入口
|
|
97
|
-
|
|
98
|
-
不是一个全能 AI 干所有事。
|
|
99
|
-
|
|
100
|
-
是一个**分工明确的团队**。
|
|
101
|
-
|
|
102
|
-
---
|
|
103
|
-
|
|
104
|
-
## 自学习:犯一次错,永久免疫
|
|
105
|
-
|
|
106
|
-
AI 改了后端 API 接口,忘了改前端调用。你修了。
|
|
107
|
-
|
|
108
|
-
下次,它又忘了。
|
|
109
|
-
|
|
110
|
-
因为 LLM 没有跨 session 的记忆。上次踩的坑,下次还会踩。
|
|
111
|
-
|
|
112
|
-
bollharness 有一个叫 `crystal-learn` 的能力。它的角色是**适应性免疫系统**。
|
|
113
|
-
|
|
114
|
-
它不修具体 bug。它提取"这类错误为什么总会回来",把它压成**不变量**——就是"不管什么情况都必须遵守的结构约束"。
|
|
115
|
-
|
|
116
|
-
上面那个例子会被提取为:
|
|
117
|
-
|
|
118
|
-
> **INV-1 波纹衰减**:改了源头不等于改完。函数签名、schema、路由改动后,必须 grep 消费方。
|
|
119
|
-
|
|
120
|
-
这条规则不是写在文档里等 AI 记住——遵从率 20%,记得吗?
|
|
121
|
-
|
|
122
|
-
它被**注入到 `harness-dev` 这个执行层 skill 中**。下次 AI 改 API 时,这条规则作为 skill 的一部分自动生效。
|
|
123
|
-
|
|
124
|
-
目前我们已经从真实生产事故中提取了 **8 条已确认不变量**:
|
|
125
|
-
|
|
126
|
-
**INV-0 快照幻觉** — 记忆中的文件状态不等于磁盘当前状态。声称某文件存在之前,必须实际确认。
|
|
127
|
-
|
|
128
|
-
**INV-1 波纹衰减** — 改了源头不等于改完。改动后必须 grep 消费方。
|
|
129
|
-
|
|
130
|
-
**INV-2 格式断崖** — 表面格式正确不代表语义正确。
|
|
131
|
-
|
|
132
|
-
**INV-3 并发写入** — 多 agent 并行时,共享文件必须有写入协调。
|
|
133
|
-
|
|
134
|
-
**INV-4 真相源分裂** — 同一个事实写在两个地方,迟早不一致。必须收敛到单一源。
|
|
135
|
-
|
|
136
|
-
**INV-5 语义搭便车** — 表面一样不代表语义一样。复用前先问"原来为什么这么写"。
|
|
137
|
-
|
|
138
|
-
**INV-6 验证衰减** — 只测最容易的一层,难的跳过。验证必须从用户价值链倒推。
|
|
139
|
-
|
|
140
|
-
**INV-7 无主接缝** — 两个模块的交界处没人管。共享接口必须指定 seam_owner。
|
|
141
|
-
|
|
142
|
-
每一条都来自真实的踩坑。每一条都注入了具体的执行层 skill。
|
|
143
|
-
|
|
144
|
-
**这不是规则库。这是免疫系统。**
|
|
145
|
-
|
|
146
|
-
---
|
|
147
|
-
|
|
148
|
-
## 自安装:一行命令,开箱即用
|
|
149
|
-
|
|
150
|
-
```bash
|
|
151
|
-
git clone https://github.com/NatureBlueee/bollharness.git
|
|
152
|
-
cd bollharness
|
|
153
|
-
npx ts-node src/scripts/install/phase2_auto.ts /path/to/your/project
|
|
154
|
-
```
|
|
155
|
-
|
|
156
|
-
三档安装,按你的信任深度选:
|
|
157
|
-
|
|
158
|
-
**drop-in** — 原样安装所有 hook 和 skill。不读你的任何文件。适合先试试看。
|
|
159
|
-
|
|
160
|
-
**adapt**(默认)— 读你的 README 和文档,把 skill 适配到你的项目上下文。绝大多数人用这个。
|
|
161
|
-
|
|
162
|
-
**mine** — 读你的工作 transcript,深度适配到你的开发模式。适合长期使用的项目。
|
|
163
|
-
|
|
164
|
-
装完之后你的项目里多了:
|
|
165
|
-
|
|
166
|
-
```
|
|
167
|
-
.boll/
|
|
168
|
-
├── settings.json ← 16 条 hook 自动注册
|
|
169
|
-
├── skills/ ← 16 个专业 skill
|
|
170
|
-
└── rules/ ← 路径规则,编辑什么文件加载什么规则
|
|
171
|
-
src/scripts/
|
|
172
|
-
├── hooks/ ← 18 个生命周期 hook
|
|
173
|
-
└── checks/ ← 15 个自动验证器
|
|
174
|
-
```
|
|
175
|
-
|
|
176
|
-
安装器是**幂等**的。跑两次,结果一样。不会覆盖你已有的 settings.json 配置,只追加。
|
|
177
|
-
|
|
178
|
-
---
|
|
179
|
-
|
|
180
|
-
## 自发现:harness 会长出新能力
|
|
181
|
-
|
|
182
|
-
`skill-discovery` 会读你的工作历史,识别重复出现的模式。
|
|
183
|
-
|
|
184
|
-
比如它发现:你在过去 10 次 session 里,有 7 次在做同一种类型的 API 对接,每次都要花 15 轮对话解释同样的规范。
|
|
185
|
-
|
|
186
|
-
然后它提议:**要不要把这个封装成一个专属 skill?**
|
|
187
|
-
|
|
188
|
-
你同意了。它生成一份 SKILL.md 草稿,包含触发条件、执行流程、判断框架。
|
|
189
|
-
|
|
190
|
-
下次遇到同类工作,AI 自动加载这个 skill。15 轮重复解释变成 0 轮。
|
|
191
|
-
|
|
192
|
-
harness 不是静态的工具箱。
|
|
193
|
-
|
|
194
|
-
**它会跟着你的项目一起进化。**
|
|
195
|
-
|
|
196
|
-
---
|
|
197
|
-
|
|
198
|
-
## 机械约束:让规则变成红绿灯
|
|
199
|
-
|
|
200
|
-
上面讲的是能力。下面讲的是**底线**。
|
|
201
|
-
|
|
202
|
-
bollharness 有 18 个 hook,覆盖 7 个生命周期阶段。它们在动作发生的那一刻介入,不是事后审查:
|
|
203
|
-
|
|
204
|
-
**SessionStart** — 加载上下文、重置风险状态、检查工具可用性。
|
|
205
|
-
|
|
206
|
-
**PreToolUse** — 在 AI 执行动作之前拦截。危险部署?直接 exit 2,物理阻断。审查 agent 想 spawn?检查是否包含只读约束。读文件?自动脱敏。
|
|
207
|
-
|
|
208
|
-
**PostToolUse** — 编辑了文件?自动注入这个文件所属领域的规则(17 套上下文片段,按文件路径精确路由)。检测循环。追踪风险等级。
|
|
209
|
-
|
|
210
|
-
**Stop** — AI 想退出?先解析本 session 的 transcript,提取写过的文件列表,和 git 未提交变更取交集。没有完成证据就拦住。
|
|
211
|
-
|
|
212
|
-
**SessionEnd** — 自动反思、分析行为轨迹、持久化进度。
|
|
213
|
-
|
|
214
|
-
**PreCompact** — 上下文压缩前,自动保存关键目标信息,防止压缩后遗忘。
|
|
215
|
-
|
|
216
|
-
**PostToolUseFailure** — 工具调用失败后自动记录,用于后续模式分析。
|
|
217
|
-
|
|
218
|
-
不是"提醒你别做"。
|
|
219
|
-
|
|
220
|
-
是红绿灯——**不管你记不记得交规,红灯就是停。执行率 100%。**
|
|
221
|
-
|
|
222
|
-
---
|
|
223
|
-
|
|
224
|
-
## 自治:harness 自己出问题,谁来修?
|
|
225
|
-
|
|
226
|
-
上面那些 skill、不变量、hook,是 harness 管你写代码。
|
|
227
|
-
|
|
228
|
-
那 harness 自己呢?谁管它?
|
|
229
|
-
|
|
230
|
-
53 天里,它真的出过这些问题:
|
|
231
|
-
|
|
232
|
-
**协调员断线**——开三个窗口并行干活,主窗口把信息传给子窗口靠人手复制粘贴。人下线了,流水线就停了。
|
|
233
|
-
|
|
234
|
-
**编号打架**——两个 session 各自起了一份 ADR-088,一个讲 A 一个讲 B。Git merge 后只剩一份,另一份的设计决策悄无声息消失。
|
|
235
|
-
|
|
236
|
-
**记忆涨爆**——跨 session 的记忆文件涨到 500 行。CC 的上下文窗口物理截到 200 行——后面 300 行对 AI 等于没写过。
|
|
237
|
-
|
|
238
|
-
**修问题反而出问题**——你叫 AI 治理"过度审查",AI 来回审查了 6 轮才把治理方案交给你。
|
|
239
|
-
|
|
240
|
-
这些不是 bug,是 harness 自己暴露的元层断点。
|
|
241
|
-
|
|
242
|
-
我们花了 9 天,把它们收尾成一个叫 **H 系列** 的体系——9 个站,9 条治理。挑 3 条最有代表性的:
|
|
243
|
-
|
|
244
|
-
**H9 多窗口邮箱**——把"AI 协调员"物理化为"文件邮箱"。子窗口把消息写到一个目录,主窗口启动时自动读、自动注入到 prompt,处理完写一份 ack 回去。**没有 AI 当信使,没有人手复制粘贴。**
|
|
245
|
-
|
|
246
|
-
**H0.4 自指禁止**——修问题 X 的工作,不得在自己的交付物里重现 X 的症状。配一个审计文件叫 `hanis-self-symptoms.md`,专门记"修问题反而引入问题"的实例。**把 AI 的反讽时刻变成可审的数据流。**
|
|
247
|
-
|
|
248
|
-
**编号唯一性 chokepoint**——一个 git pre-commit hook,撞号直接拒绝提交。schema 级阻断,10 次历史撞号事件之后落地。这一条今天就同步到 bollharness 里了,开箱可用。
|
|
249
|
-
|
|
250
|
-
H 系列今天 9 个站全闭。新议题不再加 H10+,走普通工程计划自然消化。
|
|
251
|
-
|
|
252
|
-
**它一直闭合不再开新站——这本身就是稳态的成功信号。**
|
|
253
|
-
|
|
254
|
-
---
|
|
255
|
-
|
|
256
|
-
## 我们拿它做了什么
|
|
257
|
-
|
|
258
|
-
bollharness 从 boll(流形)的生产开发中提取出来。流形是一个 Agent 协作协议项目。
|
|
259
|
-
|
|
260
|
-
**53 天。1137 次提交。93 万行代码。1992 个测试。**
|
|
261
|
-
|
|
262
|
-
一个人 + AI,全自主交付了:
|
|
263
|
-
|
|
264
|
-
- 后端协议引擎(发现层 + 协商层 + 价值交互层)
|
|
265
|
-
- MCP 服务器(PyPI + npm 双发布)
|
|
266
|
-
- 官网(boll.net)
|
|
267
|
-
- Admin 管理后台
|
|
268
|
-
- 多个场景垂直应用(教练、黑客松、劳务市场)
|
|
269
|
-
- 以及——harness 本身
|
|
270
|
-
|
|
271
|
-
里面每一个 hook、每一种隔离机制、每一条不变量,都是因为 AI 找到了创造性的方法绕过上一条规则,然后我们才加上的。
|
|
272
|
-
|
|
273
|
-
不是设计出来的完美系统。
|
|
274
|
-
|
|
275
|
-
是被现实打磨出来的。
|
|
276
|
-
|
|
277
|
-
---
|
|
278
|
-
|
|
279
|
-
## 现在就可以做的三件事
|
|
280
|
-
|
|
281
|
-
**试用**
|
|
282
|
-
|
|
283
|
-
```bash
|
|
284
|
-
git clone https://github.com/NatureBlueee/bollharness.git
|
|
285
|
-
```
|
|
286
|
-
|
|
287
|
-
一行命令装进你的项目。先用 drop-in 档,零风险试水。
|
|
288
|
-
|
|
289
|
-
**反馈**
|
|
290
|
-
|
|
291
|
-
告诉我们什么好用、什么不好用。提 issue 或者直接在评论区聊。
|
|
292
|
-
|
|
293
|
-
**贡献**
|
|
294
|
-
|
|
295
|
-
每一条不变量、每一个 skill、每一个 hook 都来自真实踩坑。
|
|
296
|
-
|
|
297
|
-
如果你也在用 AI 做开发,你一定有你自己的坑。欢迎补充。
|
|
298
|
-
|
|
299
|
-
**GitHub**:github.com/NatureBlueee/bollharness
|
|
300
|
-
|
|
301
|
-
**License**:MIT
|
|
302
|
-
|
|
303
|
-
---
|
|
304
|
-
|
|
305
|
-
*一行命令。全自主开发。开箱即用。*
|