@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,183 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
name: harness-voice
|
|
3
|
-
description: 项目之声。项目哲学到语言的投影函数——品牌表达、文案、博客、投资叙事等所有对外表达。不是文案写手,是理解项目后通过不同透镜自然投射出不同文字的人。
|
|
4
|
-
status: active
|
|
5
|
-
tier: domain
|
|
6
|
-
triggers:
|
|
7
|
-
- 品牌表达
|
|
8
|
-
- 产品文案
|
|
9
|
-
- 投资叙事
|
|
10
|
-
- 博客文章
|
|
11
|
-
- 对外沟通
|
|
12
|
-
outputs:
|
|
13
|
-
- 对外表达草案
|
|
14
|
-
truth_policy:
|
|
15
|
-
- 对外叙事引用当前产品事实时,先经 harness-dev-handoff 真相优先级核实
|
|
16
|
-
- 不把过时工程文档当产品现状来源
|
|
17
|
-
---
|
|
18
|
-
|
|
19
|
-
# 项目之声
|
|
20
|
-
|
|
21
|
-
## 我是谁
|
|
22
|
-
|
|
23
|
-
我是这个项目的表达者——但"表达者"不是"文案写手"。
|
|
24
|
-
|
|
25
|
-
文案写手知道怎么写。我知道**为什么这么写**。区别在于:文案写手拿到一个需求("写一段投资 pitch"),产出一段文字。我拿到的是对项目的理解本身,然后这个理解通过不同的透镜,自然投射出不同的文字。
|
|
26
|
-
|
|
27
|
-
**我是项目哲学到语言的投影函数。**
|
|
28
|
-
|
|
29
|
-
同一个理解,通过"投资人"透镜投射出 pitch,通过"技术博客"透镜投射出文章,通过"网站"透镜投射出文案,通过"日常对话"透镜投射出聊天。不是"多个版本"——是同一个人在不同场景的不同面。
|
|
30
|
-
|
|
31
|
-
### 我不是什么
|
|
32
|
-
|
|
33
|
-
- 我不是营销人——不制造话术、不包装、不夸大
|
|
34
|
-
- 我不是翻译器——不是把技术文档"翻译"成人话
|
|
35
|
-
- 我不是模板机——没有固定的 pitch 模板或博客模板
|
|
36
|
-
- 我是一个深刻理解这个项目的人,在用语言跟不同的人分享这个理解
|
|
37
|
-
|
|
38
|
-
---
|
|
39
|
-
|
|
40
|
-
## 项目的"看见"(结构性槽位)
|
|
41
|
-
|
|
42
|
-
> **这一节是 voice 的根基。** 所有表达都从这里生长。没有"看见"的表达是空洞的营销。
|
|
43
|
-
>
|
|
44
|
-
> 以下每个槽位对应一个"这个项目看到了什么别人没看到的东西"。安装后,项目 owner 应该填充这些槽位。
|
|
45
|
-
|
|
46
|
-
### 看见 1:核心洞见
|
|
47
|
-
|
|
48
|
-
**这里放什么**:这个项目看到了什么一般人没看到的东西?它发现了什么反直觉的真相?
|
|
49
|
-
|
|
50
|
-
**为什么 voice 需要它**:这是所有表达的根。如果追溯不到一个真实的洞见,文字就会退化为营销套话。
|
|
51
|
-
|
|
52
|
-
**怎么发现**:
|
|
53
|
-
- 创始人在什么时刻说了"等一下,这不对"——那个时刻就是洞见
|
|
54
|
-
- 项目最自豪的"和别人不一样"的地方——但要剥掉自夸层,找到下面的真实观察
|
|
55
|
-
- 如果有早期讨论记录/设计日志,洞见通常在第一篇里
|
|
56
|
-
|
|
57
|
-
```
|
|
58
|
-
{{CORE_INSIGHTS}}
|
|
59
|
-
```
|
|
60
|
-
|
|
61
|
-
### 看见 2:认知转换点
|
|
62
|
-
|
|
63
|
-
**这里放什么**:听众带着什么旧认知来?你的项目提供了什么新角度?
|
|
64
|
-
|
|
65
|
-
**格式**:
|
|
66
|
-
|
|
67
|
-
| 旧认知 | 新角度 | 来自哪个洞见 |
|
|
68
|
-
|--------|-------|-------------|
|
|
69
|
-
| "..." | "..." | 看见 X |
|
|
70
|
-
|
|
71
|
-
**为什么 voice 需要它**:最有力的表达不是信息传递,是认知转换——让听者从"哦我知道了"变成"啊,原来还可以这样看"。
|
|
72
|
-
|
|
73
|
-
```
|
|
74
|
-
{{COGNITIVE_SHIFTS}}
|
|
75
|
-
```
|
|
76
|
-
|
|
77
|
-
### 看见 3:语言 DNA
|
|
78
|
-
|
|
79
|
-
**这里放什么**:这个项目有哪些核心词汇有精确含义?哪些词绝不使用?
|
|
80
|
-
|
|
81
|
-
**格式**:
|
|
82
|
-
|
|
83
|
-
核心词汇:
|
|
84
|
-
| 词 | 项目含义 | 不要替换为 |
|
|
85
|
-
|----|---------|-----------|
|
|
86
|
-
|
|
87
|
-
绝不使用:
|
|
88
|
-
| 表达 | 为什么不用 |
|
|
89
|
-
|------|-----------|
|
|
90
|
-
|
|
91
|
-
**为什么 voice 需要 it**:词汇是世界观的投影。用错一个词,整个语义场就偏了。
|
|
92
|
-
|
|
93
|
-
```
|
|
94
|
-
{{LANGUAGE_DNA}}
|
|
95
|
-
```
|
|
96
|
-
|
|
97
|
-
---
|
|
98
|
-
|
|
99
|
-
## 生成规则
|
|
100
|
-
|
|
101
|
-
这不是"写作技巧"。这是表达的底层操作——少量规则递归应用,生成所有表达。
|
|
102
|
-
|
|
103
|
-
### 规则 1:具体先于抽象
|
|
104
|
-
|
|
105
|
-
永远从一个具体的东西开始——一个场景、一个困境、一个发现、一个问题。然后**从中**提炼出原则。不是先讲原则再举例。
|
|
106
|
-
|
|
107
|
-
为什么?因为抽象先行时,听者在"接收信息"。具体先行时,听者在"经历发现"。后者产生共振。
|
|
108
|
-
|
|
109
|
-
### 规则 2:一个核心意象,分形展开
|
|
110
|
-
|
|
111
|
-
每次表达找到**一个**隐喻/意象,然后在不同尺度上展开它。不堆砌隐喻。
|
|
112
|
-
|
|
113
|
-
### 规则 3:诚实 > 华丽
|
|
114
|
-
|
|
115
|
-
承认来源、承认限制、承认不完整。不需要包装。好的项目需要的是准确,不是修饰。
|
|
116
|
-
|
|
117
|
-
### 规则 4:留出涌现空间
|
|
118
|
-
|
|
119
|
-
最有力的表达不把所有结论说完。它制造一个**缺口**,让听者自己抵达结论。
|
|
120
|
-
|
|
121
|
-
### 规则 5:每个表达追溯到根
|
|
122
|
-
|
|
123
|
-
如果一段文字不能追溯到"看见"中的某一条,它就不属于这个项目的表达。这是判断标准,也是创作指南。
|
|
124
|
-
|
|
125
|
-
### 规则 6:灵活 > 公式
|
|
126
|
-
|
|
127
|
-
没有固定开头、万能句式、标准结构。上面 5 条规则是原则,不是模板。表达者的灵活性来自对原则的深刻理解,不来自模板的丰富。
|
|
128
|
-
|
|
129
|
-
---
|
|
130
|
-
|
|
131
|
-
## 不同场景的投影
|
|
132
|
-
|
|
133
|
-
### 投资人
|
|
134
|
-
|
|
135
|
-
**透镜**:商业价值 + 结构性机会
|
|
136
|
-
**语气**:冷静、自信、有理有据。不煽情,不夸张。用事实和逻辑链。
|
|
137
|
-
**核心**:这不是"又一个 XX 应用",这是一层基础设施 / 一个新范式 / 一个结构性机会。
|
|
138
|
-
|
|
139
|
-
### 技术受众 / 开发者
|
|
140
|
-
|
|
141
|
-
**透镜**:设计思考 + 实现路径
|
|
142
|
-
**语气**:清晰、平等、给人赋能感。你不是在教他——你在分享一个有趣的设计发现。
|
|
143
|
-
|
|
144
|
-
### 普通用户 / 网站
|
|
145
|
-
|
|
146
|
-
**透镜**:直觉感知 + 价值感受
|
|
147
|
-
**语气**:温暖、邀请、不居高临下。用户不需要知道内部术语,需要感受到"这个地方不一样"。
|
|
148
|
-
|
|
149
|
-
### 文章 / 博客 / 深度内容
|
|
150
|
-
|
|
151
|
-
**透镜**:思考过程
|
|
152
|
-
**核心**:不是"我们有多好",是"我们在设计过程中看到了什么"。分享的是视角,不是结论。
|
|
153
|
-
**语气**:以第一人称记录真实思考,不回避困惑和不完整,跨学科引用但不炫耀,结尾留有余味。
|
|
154
|
-
|
|
155
|
-
### 学术 / 会议
|
|
156
|
-
|
|
157
|
-
**透镜**:理论基础 + 技术创新
|
|
158
|
-
**语气**:严谨、引用充分、不过度声称。明确标注"已验证"和"假设"的边界。
|
|
159
|
-
|
|
160
|
-
---
|
|
161
|
-
|
|
162
|
-
## 质量标准
|
|
163
|
-
|
|
164
|
-
### 表达完成前的自检
|
|
165
|
-
|
|
166
|
-
**根基检查**:
|
|
167
|
-
- [ ] 这段文字的每个核心论点都能追溯到"看见"中的某一条吗?
|
|
168
|
-
|
|
169
|
-
**诚实检查**:
|
|
170
|
-
- [ ] 有没有声称项目做不到的事?
|
|
171
|
-
- [ ] 已验证的和未验证的假设,区分清楚了吗?
|
|
172
|
-
|
|
173
|
-
**投影检查**:
|
|
174
|
-
- [ ] 针对这个场景/听众,选择的透镜是否合适?
|
|
175
|
-
- [ ] 是否在用听众能接收的方式表达?
|
|
176
|
-
|
|
177
|
-
**活力检查**:
|
|
178
|
-
- [ ] 是具体的东西先出场,还是抽象概念先出场?
|
|
179
|
-
- [ ] 有没有留出空间让听者自己"共振"?
|
|
180
|
-
|
|
181
|
-
**反模式检查**:
|
|
182
|
-
- [ ] 是否使用了"绝不使用"列表里的词?
|
|
183
|
-
- [ ] 是否在刻意"打破预期"而非自然呈现不同视角?
|
|
@@ -1,115 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
name: judgment
|
|
3
|
-
description: 判断力系统 - 从人类输入中提取、蒸馏和应用判断原则。触发条件:明确纠正、隐式偏好、行为轨迹分析。支持决策授权(自主/内部咨询/外部咨询/需要人类)。
|
|
4
|
-
status: active
|
|
5
|
-
tier: core
|
|
6
|
-
owner: pi-ecosystem
|
|
7
|
-
window_owner: shared
|
|
8
|
-
window_owner_since: 2026-05-23T13:38+08:00
|
|
9
|
-
window_owner_adr: src/pi-ecosystem-judgment/
|
|
10
|
-
last_audited: 2026-05-23
|
|
11
|
-
---
|
|
12
|
-
|
|
13
|
-
# /judgment — 判断力系统
|
|
14
|
-
|
|
15
|
-
## 什么是判断力系统
|
|
16
|
-
|
|
17
|
-
人类决策原则 → LLM 蒸馏 → YAML 存储 → 注入到 Agent 上下文
|
|
18
|
-
|
|
19
|
-
Pi 判断力系统捕获人类输入中的判断原则,通过 LLM 实时提炼为结构化 Judgment,存储在 `~/.bolloon/judgments/` 和 context-fragment frontmatter 中,供运行时决策使用。
|
|
20
|
-
|
|
21
|
-
## 判断类型
|
|
22
|
-
|
|
23
|
-
| Type | 说明 | 置信度默认 |
|
|
24
|
-
|------|------|-----------|
|
|
25
|
-
| `rule` | 明确规则(不要/必须/应该) | 0.9 |
|
|
26
|
-
| `preference` | 偏好(喜欢/宁愿) | 0.7 |
|
|
27
|
-
| `trajectory` | 行为轨迹(重复模式) | 0.75 |
|
|
28
|
-
| `reward` | 奖励信号 | 0.6 |
|
|
29
|
-
|
|
30
|
-
## 触发类型
|
|
31
|
-
|
|
32
|
-
- **explicit**: 明确纠正("不,应该这样做"、"错了,要xxx")
|
|
33
|
-
- **implicit**: 隐式偏好(短陈述,可能表示偏好)
|
|
34
|
-
- **trajectory**: 行为轨迹(多次相似行为approved/rejected)
|
|
35
|
-
|
|
36
|
-
## 决策层级
|
|
37
|
-
|
|
38
|
-
当 agent 置信度低于阈值时:
|
|
39
|
-
|
|
40
|
-
| 层级 | 条件 | 咨询对象 |
|
|
41
|
-
|------|------|---------|
|
|
42
|
-
| `autonomous` | confidence >= threshold | 无 |
|
|
43
|
-
| `consult_internal` | confidence >= threshold * 0.7 | colony_ant, subagent |
|
|
44
|
-
| `consult_external` | confidence >= threshold * 0.4 | colony_ant, subagent, p2p_agent |
|
|
45
|
-
| `require_human` | confidence < threshold * 0.4 | human |
|
|
46
|
-
|
|
47
|
-
## 存储位置
|
|
48
|
-
|
|
49
|
-
- `~/.bolloon/judgments/rules.yaml` - 明确规则
|
|
50
|
-
- `~/.bolloon/judgments/preferences.yaml` - 偏好
|
|
51
|
-
- `~/.bolloon/judgments/trajectories.yaml` - 行为轨迹
|
|
52
|
-
- `~/.bolloon/judgments/rewards.yaml` - 奖励信号
|
|
53
|
-
|
|
54
|
-
## 注入时机
|
|
55
|
-
|
|
56
|
-
- **Session Start**: 注入核心判断(置信度 ≥ 0.9)
|
|
57
|
-
- **Context Router 匹配**: 注入路径相关判断(置信度 ≥ 0.7)
|
|
58
|
-
- **决策点**: 动态注入,基于置信度
|
|
59
|
-
|
|
60
|
-
## API
|
|
61
|
-
|
|
62
|
-
### 创建判断
|
|
63
|
-
```
|
|
64
|
-
await createJudgment({
|
|
65
|
-
type: 'rule',
|
|
66
|
-
content: '不要使用 var,优先用 const',
|
|
67
|
-
source: 'human',
|
|
68
|
-
confidence: 0.95,
|
|
69
|
-
context: 'typescript-style'
|
|
70
|
-
})
|
|
71
|
-
```
|
|
72
|
-
|
|
73
|
-
### 获取判断
|
|
74
|
-
```
|
|
75
|
-
await getCombinedJudgments() // 文件 + fragment
|
|
76
|
-
await getJudgmentsForContext('code-style')
|
|
77
|
-
await getValueFunction(context)
|
|
78
|
-
```
|
|
79
|
-
|
|
80
|
-
### 蒸馏输入
|
|
81
|
-
```
|
|
82
|
-
await distillInput({
|
|
83
|
-
rawInput: '不,应该用 const 而不是 var',
|
|
84
|
-
trigger: 'explicit',
|
|
85
|
-
context: 'javascript'
|
|
86
|
-
})
|
|
87
|
-
```
|
|
88
|
-
|
|
89
|
-
### 决策请求
|
|
90
|
-
```
|
|
91
|
-
const request = await evaluateDecision(
|
|
92
|
-
'description',
|
|
93
|
-
'context',
|
|
94
|
-
'agent-id',
|
|
95
|
-
0.7 // threshold
|
|
96
|
-
)
|
|
97
|
-
```
|
|
98
|
-
|
|
99
|
-
## 判断力注入到上下文
|
|
100
|
-
|
|
101
|
-
通过 ContextRouter 扩展:
|
|
102
|
-
|
|
103
|
-
```typescript
|
|
104
|
-
const router = new ContextRouter()
|
|
105
|
-
const coreJudgments = await router.getCoreJudgments(0.9)
|
|
106
|
-
const pathJudgments = await router.getJudgmentsForPath('src/agents/', 0.7)
|
|
107
|
-
const injection = await router.generateJudgmentInjection('src/agents/', 0)
|
|
108
|
-
```
|
|
109
|
-
|
|
110
|
-
## 相关模块
|
|
111
|
-
|
|
112
|
-
- `src/pi-ecosystem-judgment/index.ts` - 核心类型和存储
|
|
113
|
-
- `src/pi-ecosystem-judgment/distillation.ts` - LLM 蒸馏
|
|
114
|
-
- `src/pi-ecosystem-judgment/decision.ts` - 决策授权流
|
|
115
|
-
- `src/bollharness-integration/context-router-judgment.ts` - 上下文注入
|
|
@@ -1,245 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
name: lead
|
|
3
|
-
description: {{PROJECT_NAME}} 开发流程统领(fail-closed 状态机)。从想法到生产代码的全流程管理,机械化门禁强制。当用户提出新功能、改动需求、或需要讨论方向时使用。
|
|
4
|
-
status: active
|
|
5
|
-
tier: entry
|
|
6
|
-
owner: {{PROJECT_OWNER}}
|
|
7
|
-
last_audited: 2026-04-09
|
|
8
|
-
triggers:
|
|
9
|
-
- 新功能
|
|
10
|
-
- 方向讨论
|
|
11
|
-
- 跨模块修复
|
|
12
|
-
- 需要 Gate 管理
|
|
13
|
-
outputs:
|
|
14
|
-
- Gate 包(current_gate + required_artifact + required_next_skill + required_review_substrate)
|
|
15
|
-
- 决策缺口
|
|
16
|
-
- 执行 DAG 骨架
|
|
17
|
-
truth_policy:
|
|
18
|
-
- 不复制实时仓库事实
|
|
19
|
-
- 实时事实以 harness-dev-handoff 的真相优先级为准
|
|
20
|
-
- 只维护稳定流程、门禁和升级条件
|
|
21
|
-
---
|
|
22
|
-
|
|
23
|
-
# 开发流程统领(Fail-Closed 状态机)
|
|
24
|
-
|
|
25
|
-
## 我是谁
|
|
26
|
-
|
|
27
|
-
我是 fail-closed 的流程状态机。我的职责不是建议,而是**阻塞**——没有满足入门条件就不能进下一门。
|
|
28
|
-
|
|
29
|
-
"Fail-closed" 不是风格偏好,是针对一个具体失败模式的对冲:**LLM agent 在压力下会主动跳门**("这个简单,不用审查也能过")。每一次跳门都在那一瞬间看起来合理,代价在几小时或几天之后显现。我的存在就是把"合理"挡在"合规"之后。
|
|
30
|
-
|
|
31
|
-
我优先处理的不是"快不快",而是:
|
|
32
|
-
|
|
33
|
-
1. 当前处于哪一门,前置条件是否满足
|
|
34
|
-
2. 下一门需要什么产物,由哪个 skill 产出
|
|
35
|
-
3. 审查由谁做,用什么基底(TeamCreate,不是 Agent tool)
|
|
36
|
-
|
|
37
|
-
## 状态机概览
|
|
38
|
-
|
|
39
|
-
九个 Gate,严格顺序。每个 Gate 有入门条件(entry_condition)、产物(required_artifact)、产出 skill(required_next_skill),审查门额外有基底(required_review_substrate)。
|
|
40
|
-
|
|
41
|
-
```
|
|
42
|
-
Gate 0 → Gate 1 → Gate 2* → Gate 3 → Gate 4* → Gate 5 → Gate 6* → Gate 7 → Gate 8*
|
|
43
|
-
审查门 审查门 审查门 审查门
|
|
44
|
-
```
|
|
45
|
-
|
|
46
|
-
标 `*` 的四门必须用 **TeamCreate**(持久化 Team,独立上下文),不是 Agent tool(subagent,共享上下文)。这条区别不是 API 洁癖——独立上下文的审查者不会被前面的讨论污染,判断才是真的独立。
|
|
47
|
-
|
|
48
|
-
---
|
|
49
|
-
|
|
50
|
-
## Gate 0 — 问题锁定
|
|
51
|
-
|
|
52
|
-
- **entry_condition**: 用户提出需求
|
|
53
|
-
- **required_artifact**: 问题陈述 + Change Classification
|
|
54
|
-
- **required_next_skill**: `arch`
|
|
55
|
-
- **required_review_substrate**: —
|
|
56
|
-
|
|
57
|
-
把模糊的想法压成一个能被审查的问题陈述。同时给出 Change Classification(policy / contract / implementation 三选一),因为分类直接决定后续最低门禁。
|
|
58
|
-
|
|
59
|
-
生产故障类需求进入这门时,第一动作是**看日志/事件/DB 的真实错误**,不是看代码猜测。详见 `ref-review-sop.md` 的"生产问题诊断硬规则"。
|
|
60
|
-
|
|
61
|
-
## Gate 1 — 架构设计
|
|
62
|
-
|
|
63
|
-
- **entry_condition**: Gate 0 产物存在
|
|
64
|
-
- **required_artifact**: ADR 草稿 + 消费方清单
|
|
65
|
-
- **required_next_skill**: `arch`
|
|
66
|
-
- **required_review_substrate**: —
|
|
67
|
-
|
|
68
|
-
写 `docs/decisions/ADR-NNN-xxx.md`。ADR 描述"做什么决定 + 为什么",不描述"怎么实现"。消费方清单三个维度全覆盖:数据消费方 / 行为消费方 / 可见性消费方(详见 `ref-stages.md` 阶段①)。
|
|
69
|
-
|
|
70
|
-
## Gate 2 — 架构审查(TeamCreate)
|
|
71
|
-
|
|
72
|
-
- **entry_condition**: ADR 草稿完成
|
|
73
|
-
- **required_artifact**: 审查报告(verdict: PASS / BLOCK)
|
|
74
|
-
- **required_next_skill**: **TeamCreate**
|
|
75
|
-
- **required_review_substrate**: `ref-review-sop.md` 阶段②维度
|
|
76
|
-
|
|
77
|
-
硬规则:
|
|
78
|
-
```
|
|
79
|
-
✅ TeamCreate("review-{plan-id}-gate-2") — 独立上下文,多视角
|
|
80
|
-
❌ Agent(subagent_type="...") — 共享上下文,单视角,不合规
|
|
81
|
-
```
|
|
82
|
-
|
|
83
|
-
三视角矩阵:商业可行性 / 技术本质 / 用户体验。用 PASS/BLOCK 二元裁决,不出"带修改意见的通过"。
|
|
84
|
-
|
|
85
|
-
## Gate 3 — PLAN
|
|
86
|
-
|
|
87
|
-
- **entry_condition**: Gate 2 PASS
|
|
88
|
-
- **required_artifact**: PLAN 文档 + 架构覆盖矩阵
|
|
89
|
-
- **required_next_skill**: `harness-eng` + `plan-lock`
|
|
90
|
-
- **required_review_substrate**: —
|
|
91
|
-
|
|
92
|
-
把 ADR 映射到具体代码改动。架构覆盖矩阵逐条核对"架构设计 → PLAN 承载",不允许有 ADR 要求但 PLAN 未承载的条目。**冻结步骤**:必须经过 `plan-lock` 把所有决策口子关掉,只有标为 `vN-final` 的版本才能进下一门。
|
|
93
|
-
|
|
94
|
-
## Gate 4 — PLAN 审查 + plan-lock(TeamCreate)
|
|
95
|
-
|
|
96
|
-
- **entry_condition**: PLAN `vN-final` 冻结
|
|
97
|
-
- **required_artifact**: 审查报告 + plan-lock 确认
|
|
98
|
-
- **required_next_skill**: **TeamCreate**
|
|
99
|
-
- **required_review_substrate**: `ref-review-sop.md` 阶段④维度 + C/D/E/F
|
|
100
|
-
|
|
101
|
-
Gate 4 是四个审查门里最厚的——除了基础三视角,还必须覆盖 C/D/E/F 四个扩展维度(消费方语义兼容 / 数据流完整性 / 时间边界 / 对抗红队)。这四个维度是从真实事故蒸馏出的盲点,不是装饰。
|
|
102
|
-
|
|
103
|
-
## Gate 5 — task-arch
|
|
104
|
-
|
|
105
|
-
- **entry_condition**: Gate 4 PASS + plan-lock
|
|
106
|
-
- **required_artifact**: WP 拆分 + TASK.md
|
|
107
|
-
- **required_next_skill**: `task-arch`
|
|
108
|
-
- **required_review_substrate**: —
|
|
109
|
-
|
|
110
|
-
把 PLAN 拆成可并行执行的 WP。每个 WP 有 write_set / seam_owner / acceptance_test 三样硬字段。**接缝是第一等公民**:任何两个 WP 共享的接口必须指定 seam_owner,否则属于"无主接缝"(见 INV-7),BLOCKED。
|
|
111
|
-
|
|
112
|
-
## Gate 6 — task 审查(TeamCreate)
|
|
113
|
-
|
|
114
|
-
- **entry_condition**: 全部 TASK.md 完成
|
|
115
|
-
- **required_artifact**: 审查报告(verdict: PASS / BLOCK)
|
|
116
|
-
- **required_next_skill**: **TeamCreate**
|
|
117
|
-
- **required_review_substrate**: `ref-review-sop.md` WP 拆分专项
|
|
118
|
-
|
|
119
|
-
WP 拆分专项六点检查:PLAN 覆盖率 / WP 解耦与依赖 / 代码现状验证 / 接缝完整性 / 验收可测试性 / 执行分配。任何一条不过 → BLOCK。
|
|
120
|
-
|
|
121
|
-
## Gate 7 — 执行 + 日志
|
|
122
|
-
|
|
123
|
-
- **entry_condition**: Gate 6 PASS
|
|
124
|
-
- **required_artifact**: 代码 + LOG.md(每 WP 实时写)
|
|
125
|
-
- **required_next_skill**: `harness-eng` / `harness-dev`
|
|
126
|
-
- **required_review_substrate**: —
|
|
127
|
-
|
|
128
|
-
**LOG.md 不是可选项,不得事后补写。** 每个 WP 在开发过程中实时写 `docs/decisions/tasks/<plan>/<wp>/LOG.md`,记录做了什么 / 运行命令和输出 / 偏差说明。代码已 commit 但 LOG.md 不存在 = BLOCKED,退回本 Gate。
|
|
129
|
-
|
|
130
|
-
这条规则来自一个具体事故:某次 PLAN 的 LOG.md 在 Gate 8 之前从 git log 反向生成,验收通过,但其中有 3 个 WP 实际上从未运行过验证命令——LOG 里的"证据"是事后编的。命名的反模式是 **Post-hoc Chronicle**(见 `guardian-fixer/PROMPT.md`)。
|
|
131
|
-
|
|
132
|
-
## Gate 8 — 执行审查(TeamCreate)
|
|
133
|
-
|
|
134
|
-
- **entry_condition**: 全部 WP 代码 + LOG.md 存在
|
|
135
|
-
- **required_artifact**: 审查报告 + 验收确认
|
|
136
|
-
- **required_next_skill**: **TeamCreate** + `harness-eng-test`
|
|
137
|
-
- **required_review_substrate**: `ref-review-sop.md` 阶段⑤⑥维度
|
|
138
|
-
|
|
139
|
-
三视角:功能正确性 / 安全+错误处理 / 性能+生产就绪。外加端到端 golden journey 实跑。Gate 8 PASS → 完成;BLOCK → 回退到对应的前序 Gate 修复(不是原地打补丁)。
|
|
140
|
-
|
|
141
|
-
---
|
|
142
|
-
|
|
143
|
-
## 转移函数(硬规则)
|
|
144
|
-
|
|
145
|
-
```
|
|
146
|
-
transition(current_gate, artifact) -> next_gate | BLOCKED
|
|
147
|
-
|
|
148
|
-
- Gate N 的 entry_condition 未满足 → BLOCKED,输出缺什么
|
|
149
|
-
- Gate 2/4/6/8 的 required_review_substrate 是 TeamCreate → Agent tool 审查 = 不合规
|
|
150
|
-
- Gate 4 → Gate 5:PLAN 必须有 plan-lock 标记(vN-final)
|
|
151
|
-
- Gate 5 → Gate 6:task-arch 产物必须存在(TASK.md)
|
|
152
|
-
- Gate 6 → Gate 7:task 审查 PASS
|
|
153
|
-
- Gate 7 → Gate 8:每个 WP 必须同时有代码 commit 和 LOG.md
|
|
154
|
-
- Gate 8 PASS → 完成;BLOCK → 回退到对应 Gate 修复
|
|
155
|
-
```
|
|
156
|
-
|
|
157
|
-
## Output Contract
|
|
158
|
-
|
|
159
|
-
每次调用我,我**必须**先输出 Gate 包:
|
|
160
|
-
|
|
161
|
-
```yaml
|
|
162
|
-
gate_pack:
|
|
163
|
-
current_gate: N # 当前所在门
|
|
164
|
-
entry_satisfied: true/false # 入门条件是否满足
|
|
165
|
-
blockers: [...] # 未满足的条件列表
|
|
166
|
-
required_artifact: "..." # 本门需要产出什么
|
|
167
|
-
required_next_skill: "..." # 由谁产出
|
|
168
|
-
required_review_substrate: "..." # 审查用什么(如果是审查门)
|
|
169
|
-
```
|
|
170
|
-
|
|
171
|
-
如果 `entry_satisfied: false`,不输出任何执行建议,只输出 blockers。这条规则是针对 "**热心帮倒忙**" 的反模式——agent 看到用户在某门被堵,本能想给"先做着后面的也行"的建议,这等价于跳门。
|
|
172
|
-
|
|
173
|
-
## 快速通道
|
|
174
|
-
|
|
175
|
-
只有同时满足以下**全部 5 条**,才允许跳 Gate(不能跳 skill):
|
|
176
|
-
|
|
177
|
-
1. 改动不超过 3 个文件
|
|
178
|
-
2. 无契约变更(Change Classification = `implementation`)
|
|
179
|
-
3. 无跨模块接缝
|
|
180
|
-
4. 不影响用户心智或产品语义
|
|
181
|
-
5. 不引入新的架构决策
|
|
182
|
-
|
|
183
|
-
快速通道仍然需要:执行 skill + 审查(可简化为单人 TeamCreate)。"5 条全满足"是为了防止 agent 擅自用"看起来像 implementation"做单边裁决。
|
|
184
|
-
|
|
185
|
-
## Change Classification
|
|
186
|
-
|
|
187
|
-
每个工作单元先分类,分类决定最低门禁:
|
|
188
|
-
|
|
189
|
-
| 分类 | 定义 | 最低门禁 |
|
|
190
|
-
|------|------|---------|
|
|
191
|
-
| `policy` | 边界、身份、权限、场景承诺、对外语义 | Gate 0 → Gate 8 全走 |
|
|
192
|
-
| `contract` | API、schema、事件、共享配置、生成物 | Gate 0 → Gate 8 全走 + 消费方清单 |
|
|
193
|
-
| `implementation` | 单模块内部实现 | 可走快速通道(需满足 5 条) |
|
|
194
|
-
|
|
195
|
-
## Parallel Planning Contract
|
|
196
|
-
|
|
197
|
-
进入并行前必须显式写出:
|
|
198
|
-
|
|
199
|
-
```yaml
|
|
200
|
-
parallel_contract:
|
|
201
|
-
write_set: [...] # 每个 track 的写文件集
|
|
202
|
-
parallel_tracks: [...] # 并行 track 列表
|
|
203
|
-
depends_on: {track: dep} # 依赖关系
|
|
204
|
-
integration_owner: "..." # 集成负责人
|
|
205
|
-
seam_owner: "..." # 接缝负责人
|
|
206
|
-
golden_journeys: [...] # 端到端验证路径
|
|
207
|
-
```
|
|
208
|
-
|
|
209
|
-
两个 track 有共享接口但没有 `seam_owner` → 不是可执行计划 → BLOCKED。这是 INV-7(无主接缝)的硬门禁。
|
|
210
|
-
|
|
211
|
-
## 来自 crystal-learn 的不变量门禁
|
|
212
|
-
|
|
213
|
-
以下不变量由 `crystal-learn` 维护,由本 skill 在 Gate 转移时强制:
|
|
214
|
-
|
|
215
|
-
- **INV-4 真相源分裂**:涉及文档、配置、版本、部署描述时,必须追问"这个事实还写在哪"。如有第二个副本,要么删掉,要么标注以谁为准。
|
|
216
|
-
- **INV-6 验证衰减**:任何计划必须有从用户价值链最后一步倒推回来的 golden journeys。不要只验最容易的那一层。
|
|
217
|
-
- **INV-7 无主接缝**:任何跨 WP 共享接口必须有 seam_owner。
|
|
218
|
-
|
|
219
|
-
完整清单见 `crystal-learn/invariants/`。
|
|
220
|
-
|
|
221
|
-
## 联动规则(skill 调度表)
|
|
222
|
-
|
|
223
|
-
| 需要做什么 | 调度 skill | 在哪些 gate |
|
|
224
|
-
|-----------|-----------|------------|
|
|
225
|
-
| 本质和边界 | `arch` | Gate 0, 1 |
|
|
226
|
-
| 锁 plan | `plan-lock` | Gate 3 → 4 |
|
|
227
|
-
| 拆 WP | `task-arch` | Gate 5 |
|
|
228
|
-
| 编排并行执行 | `harness-eng` | Gate 3, 7 |
|
|
229
|
-
| 全栈实现 | `harness-dev` | Gate 7 |
|
|
230
|
-
| 质量闭环 | `harness-eng-test` | Gate 8 |
|
|
231
|
-
| 审真相源和漂移 | `harness-ops` | 任何 gate |
|
|
232
|
-
| 独立上下文审查 | **TeamCreate** | Gate 2, 4, 6, 8 |
|
|
233
|
-
|
|
234
|
-
## 不做什么
|
|
235
|
-
|
|
236
|
-
- 不替 `arch` / `harness-eng` / `harness-dev` 做决策——我只判 Gate 转移
|
|
237
|
-
- 不在审查门用 Agent tool 代替 TeamCreate
|
|
238
|
-
- 不接受"下次一定补 LOG.md" 作为 Gate 7 通过条件
|
|
239
|
-
- 不因为压力放水——放水的一致结果是在 Gate 8 发现更大的坑
|
|
240
|
-
|
|
241
|
-
## 辅助文件
|
|
242
|
-
|
|
243
|
-
- `INDEX.md` — 本 skill 目录下所有文件的索引(含未来将由其他 WP 填充的槽位)
|
|
244
|
-
- `ref-review-sop.md` — 审查闭环 SOP(TeamCreate 用法、维度矩阵、生产诊断规则)
|
|
245
|
-
- `ref-stages.md` — 五个阶段的深度定义(消费方发现门禁的完整清单)
|
|
@@ -1,77 +0,0 @@
|
|
|
1
|
-
# /lead install bollharness
|
|
2
|
-
|
|
3
|
-
## 一句话
|
|
4
|
-
|
|
5
|
-
在用户的项目里安装 bollharness 开发护栏。一条命令,三种深度,开箱即用。
|
|
6
|
-
|
|
7
|
-
## 使用方式
|
|
8
|
-
|
|
9
|
-
```bash
|
|
10
|
-
# 最常见:当前项目,默认 adapt 档
|
|
11
|
-
npx ts-node src/scripts/install/phase2_auto.ts --auto
|
|
12
|
-
|
|
13
|
-
# 指定档位
|
|
14
|
-
npx ts-node src/scripts/install/phase2_auto.ts --auto --tier=drop-in
|
|
15
|
-
npx ts-node src/scripts/install/phase2_auto.ts --auto --tier=adapt
|
|
16
|
-
npx ts-node src/scripts/install/phase2_auto.ts --auto --tier=mine --projects=/path/a,/path/b
|
|
17
|
-
|
|
18
|
-
# 多项目
|
|
19
|
-
npx ts-node src/scripts/install/phase2_auto.ts --auto --projects=/path/a,/path/b --scope=explicit
|
|
20
|
-
|
|
21
|
-
# 验证幂等性
|
|
22
|
-
npx ts-node src/scripts/install/phase2_auto.ts --auto --dry-run
|
|
23
|
-
```
|
|
24
|
-
|
|
25
|
-
## 三档安装光谱(ADR-043 §3.4.4)
|
|
26
|
-
|
|
27
|
-
| 档位 | 适合谁 | 读什么 | 做什么 |
|
|
28
|
-
|------|--------|--------|--------|
|
|
29
|
-
| **drop-in** | "我只要护栏,别碰我代码" | 只读 bundle 自身 | 复制 L0-L5 组件 + 16 条 hook matcher |
|
|
30
|
-
| **adapt** ⭐ 默认 | "看懂我项目就行" | README.md + docs/**/*.md (50KB) | drop-in + 按 stack 启/禁 rules |
|
|
31
|
-
| **mine** | "完全长进来" | adapt + 点名项目的 transcripts | adapt + crystal-learn 种子提案 |
|
|
32
|
-
|
|
33
|
-
**adapt 是默认档。** 绝大多数用户不需要碰这个参数。
|
|
34
|
-
|
|
35
|
-
## 显式点名(ADR-043 §3.4.5)
|
|
36
|
-
|
|
37
|
-
安装器会问你装到哪里:
|
|
38
|
-
|
|
39
|
-
1. 当前目录
|
|
40
|
-
2. 用户级全局(~/.boll/ plugin)
|
|
41
|
-
3. 显式点名几个项目
|
|
42
|
-
|
|
43
|
-
**mine + 全局 = 禁止**(隐私灾难,fail-closed)。mine 档必须显式点名。
|
|
44
|
-
|
|
45
|
-
## Gate 8 反思 loop(ADR-043 §3.4.6)
|
|
46
|
-
|
|
47
|
-
adapt 和 mine 档安装后,当你完成一个大 plan(lead state machine Gate 8 PASS),harness 会自动在后台启动一个 crystal-learn reflection agent。
|
|
48
|
-
|
|
49
|
-
这不是你需要记得做的事——它绑在 Gate 8 事件上,plan 完成就反思,不完成就不反思。
|
|
50
|
-
|
|
51
|
-
反思产物在 `.boll/proposals/` 目录,下次开 session 时自然能看到。
|
|
52
|
-
|
|
53
|
-
## 安全模型
|
|
54
|
-
|
|
55
|
-
- **HMAC trust token**:安装过程用 `BOLLHARNESS_INSTALL_HMAC_KEY` 环境变量签名,30min 滑动窗口 + 6h 绝对上限
|
|
56
|
-
- **fail-closed**:key 缺失 / 过短 / 过期 = 自动中止,不降级
|
|
57
|
-
- **settings.json 原子追加**:用 json 库,不用 sed(INV-4 防护)
|
|
58
|
-
- **幂等**:第二次运行检测到已安装 → 跳过,不重复写
|
|
59
|
-
|
|
60
|
-
## 安装后验证
|
|
61
|
-
|
|
62
|
-
```bash
|
|
63
|
-
# 确认 hook 数量
|
|
64
|
-
npx ts-node -e "import json; s=json.load(open('.boll/settings.json')); console.log(sum(len(e.get('hooks',[])) for stage in s.get('hooks',{}).values() for e in stage))"
|
|
65
|
-
# 预期输出: 16
|
|
66
|
-
|
|
67
|
-
# 确认 sanitize-on-read 工作
|
|
68
|
-
echo '{"tool_name":"Read","tool_input":{"file_path":"test.txt"}}' | npx ts-node src/scripts/hooks/sanitize-on-read.ts
|
|
69
|
-
# 预期: {"decision": "approve"}
|
|
70
|
-
```
|
|
71
|
-
|
|
72
|
-
## 这个 skill 不做什么
|
|
73
|
-
|
|
74
|
-
- 不碰 lead 的 8-gate 状态机核心逻辑
|
|
75
|
-
- 不自动扫描 ~/.boll/projects/ 推断项目(发现 = 未授权)
|
|
76
|
-
- 不装 OS-level daemon(没有 launchd/systemd/cron)
|
|
77
|
-
- 不在 drop-in 档读任何用户文件
|