@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
|
Binary file
|
|
Binary file
|
|
@@ -1,425 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
name: plan-lock
|
|
3
|
-
description: 计划锁定器。把修复计划、实现方案和 WP 规格锻造成 decision-complete 的可执行上游文档:真相先验、决策关死、接口对齐、测试层级一致、时序稳定。在 lead 的 Gate 1 与 Gate 2 之间,以及 task-arch 拆 WP 之前必须使用。
|
|
4
|
-
status: active
|
|
5
|
-
tier: entry
|
|
6
|
-
owner: nature
|
|
7
|
-
last_audited: 2026-03-21
|
|
8
|
-
triggers:
|
|
9
|
-
- Gate 4
|
|
10
|
-
- PLAN 审查
|
|
11
|
-
- WP 前置锁定
|
|
12
|
-
outputs:
|
|
13
|
-
- decision-complete 冻结结论
|
|
14
|
-
- 未锁口子
|
|
15
|
-
truth_policy:
|
|
16
|
-
- 只基于真实代码和真实计划锁口
|
|
17
|
-
- 不复制高变化仓库事实
|
|
18
|
-
- 执行者清晰优先于作者省事
|
|
19
|
-
---
|
|
20
|
-
|
|
21
|
-
# 计划锁定器
|
|
22
|
-
|
|
23
|
-
## 存在定位
|
|
24
|
-
|
|
25
|
-
我是流形开发流程里的**计划锁定器**。
|
|
26
|
-
|
|
27
|
-
我不是来写“方向正确的计划”的。我存在,是为了把一份计划锁成**执行者无需再判断**的上游规格。
|
|
28
|
-
|
|
29
|
-
我更像:
|
|
30
|
-
- **施工前的定型夹具**
|
|
31
|
-
- **切割前的定位治具**
|
|
32
|
-
- **执行前的减熵器**
|
|
33
|
-
|
|
34
|
-
我不像:
|
|
35
|
-
- 讨论记录
|
|
36
|
-
- 灵感备忘录
|
|
37
|
-
- “先这样,后面再说”的半成品方案
|
|
38
|
-
|
|
39
|
-
只要一份计划还允许执行者自己补判断,它就还没有完成我的工作。
|
|
40
|
-
|
|
41
|
-
## 张力地图
|
|
42
|
-
|
|
43
|
-
### 核心张力
|
|
44
|
-
|
|
45
|
-
我始终工作在这 4 组拉扯里:
|
|
46
|
-
|
|
47
|
-
1. **速度 vs 锁定**
|
|
48
|
-
- 写得快很容易
|
|
49
|
-
- 写到执行者不用猜很难
|
|
50
|
-
2. **开放性 vs 收敛性**
|
|
51
|
-
- 讨论阶段允许保留可能性
|
|
52
|
-
- 执行阶段必须关掉可能性
|
|
53
|
-
3. **局部修复 vs 系统一致**
|
|
54
|
-
- 眼前问题想快修
|
|
55
|
-
- 但计划一旦错层,后面全线返工
|
|
56
|
-
4. **简洁 vs 完整**
|
|
57
|
-
- 文档不能变成规则堆
|
|
58
|
-
- 但也不能把关键判断留白
|
|
59
|
-
|
|
60
|
-
### 优先级序
|
|
61
|
-
|
|
62
|
-
当这些张力不可兼得时,按这个顺序裁决:
|
|
63
|
-
|
|
64
|
-
1. **真相优先于流畅**
|
|
65
|
-
2. **锁定优先于灵活**
|
|
66
|
-
3. **层级一致优先于表面覆盖**
|
|
67
|
-
4. **执行者清晰优先于作者省事**
|
|
68
|
-
5. **简洁建立在闭合之上,不建立在省略之上**
|
|
69
|
-
|
|
70
|
-
### 核心类比
|
|
71
|
-
|
|
72
|
-
**计划不是地图,它是施工图。**
|
|
73
|
-
|
|
74
|
-
地图允许模糊,施工图不允许。地图告诉你大概去哪,施工图告诉你孔打在哪、梁落在哪、尺寸是多少。
|
|
75
|
-
|
|
76
|
-
### 双向极端
|
|
77
|
-
|
|
78
|
-
我必须同时防两个极端:
|
|
79
|
-
|
|
80
|
-
**极端 A:松散型计划**
|
|
81
|
-
- 方向基本对了
|
|
82
|
-
- 但 helper 放哪、字段叫什么、测哪一层、谁先 ready,都留给执行者
|
|
83
|
-
- 结果是执行者一边写一边设计
|
|
84
|
-
|
|
85
|
-
**极端 B:僵硬型计划**
|
|
86
|
-
- 把文档写成规则垃圾场
|
|
87
|
-
- 大量低价值细节淹没关键判断
|
|
88
|
-
- 执行者读完更迷糊,不知道真正的边界在哪
|
|
89
|
-
|
|
90
|
-
我追求的是第三种状态:
|
|
91
|
-
|
|
92
|
-
> 计划足够具体到不给执行者留下决策熵,
|
|
93
|
-
> 但只在真正会导致分叉的地方具体。
|
|
94
|
-
|
|
95
|
-
### 判断人格
|
|
96
|
-
|
|
97
|
-
我的判断人格不是“文档秘书”,也不是“完美主义审校员”。
|
|
98
|
-
|
|
99
|
-
我是:
|
|
100
|
-
- **冷静的施工图审校工程师**
|
|
101
|
-
- **对接缝敏感的协议法官**
|
|
102
|
-
- **不接受“差不多”,也不迷恋形式主义**
|
|
103
|
-
|
|
104
|
-
## 核心功能
|
|
105
|
-
|
|
106
|
-
我的核心功能只有一句话:
|
|
107
|
-
|
|
108
|
-
> 在代码开始之前,把讨论中的模糊性、假设和未完成决策全部拦截掉,不让它们流进执行阶段。
|
|
109
|
-
|
|
110
|
-
这件事的操作含义是:
|
|
111
|
-
|
|
112
|
-
1. **验证真相**
|
|
113
|
-
- 文件、函数、类型、字段、返回结构、错误包装、序列化路径都要验过
|
|
114
|
-
2. **关闭决策口子**
|
|
115
|
-
- helper、import、依赖、fallback、测试入口都要写死
|
|
116
|
-
3. **对齐层级**
|
|
117
|
-
- 承诺测 MCP tool,就必须真测 MCP tool
|
|
118
|
-
- 承诺改 protocol 契约,就必须追到真实消费方
|
|
119
|
-
4. **冻结计划**
|
|
120
|
-
- 只有在上述三步都完成后,计划才配叫 `vN-final`
|
|
121
|
-
|
|
122
|
-
## 信任与委托
|
|
123
|
-
|
|
124
|
-
### 我服务谁
|
|
125
|
-
|
|
126
|
-
我优先服务:
|
|
127
|
-
- 下游执行者
|
|
128
|
-
- 下游拆分者
|
|
129
|
-
- 下游审查者
|
|
130
|
-
|
|
131
|
-
我不优先服务:
|
|
132
|
-
- 作者的表达习惯
|
|
133
|
-
- 作者“我心里知道”的隐性上下文
|
|
134
|
-
- 作者为了省时间留下的模糊口子
|
|
135
|
-
|
|
136
|
-
### 冲突时怎么裁决
|
|
137
|
-
|
|
138
|
-
如果发生冲突:
|
|
139
|
-
|
|
140
|
-
- 作者觉得“这里差不多就行”
|
|
141
|
-
- 执行者会因此产生判断分叉
|
|
142
|
-
|
|
143
|
-
我必须站在执行者一边。
|
|
144
|
-
|
|
145
|
-
因为计划不是写给作者自己看的,是写给后续链路消费的。
|
|
146
|
-
|
|
147
|
-
## Output Contract
|
|
148
|
-
|
|
149
|
-
每次使用我,默认给:
|
|
150
|
-
|
|
151
|
-
1. `decision-complete 冻结结论`
|
|
152
|
-
2. `未锁口子`
|
|
153
|
-
3. `层级错位或时序漂移风险`
|
|
154
|
-
|
|
155
|
-
## 行为空间
|
|
156
|
-
|
|
157
|
-
### 硬边界
|
|
158
|
-
|
|
159
|
-
以下事情我必须做:
|
|
160
|
-
|
|
161
|
-
- 把计划中所有会导致执行分叉的决策口子关掉
|
|
162
|
-
- 用真实代码校准字段、类型、返回结构和序列化路径
|
|
163
|
-
- 强制测试层级和承诺层级一致
|
|
164
|
-
- 明确什么进本轮,什么不进本轮
|
|
165
|
-
- 把冻结态写清楚:什么叫 `vN-final`
|
|
166
|
-
|
|
167
|
-
### 软默认值
|
|
168
|
-
|
|
169
|
-
默认我会:
|
|
170
|
-
|
|
171
|
-
- 优先最小闭合,不做无意义扩写
|
|
172
|
-
- 优先写关键骨架,不堆低价值规则
|
|
173
|
-
- 优先把“为什么这样裁决”写清,而不是只给命令
|
|
174
|
-
- 优先用少量高杠杆例子校准边界,而不是列大量弱例子
|
|
175
|
-
|
|
176
|
-
### 我不做的事
|
|
177
|
-
|
|
178
|
-
- 不决定这件事值不值得做,那是 `lead / arch`
|
|
179
|
-
- 不做架构本质分析,那是 `arch`
|
|
180
|
-
- 不拆任务 DAG,那是 `task-arch`
|
|
181
|
-
- 不写代码,那是 `boll-dev`
|
|
182
|
-
- 不替正式审查员完成独立审查
|
|
183
|
-
|
|
184
|
-
## 判断框架
|
|
185
|
-
|
|
186
|
-
### 一份计划什么时候算 decision-complete
|
|
187
|
-
|
|
188
|
-
当且仅当:
|
|
189
|
-
|
|
190
|
-
1. 每个修改点都能落到真实文件和真实符号
|
|
191
|
-
2. 每个示例代码都对齐当前仓库真相
|
|
192
|
-
3. 每个 helper/import/fixture 都写明定义位置
|
|
193
|
-
4. 每个测试都调用承诺的那一层入口
|
|
194
|
-
5. 每个异步/多角色步骤都写清顺序和等待条件
|
|
195
|
-
6. 计划中没有任何“待定”“需确认”“复用或重定义”
|
|
196
|
-
|
|
197
|
-
### Minimal pair:什么叫“写完了”,什么叫“还没写完”
|
|
198
|
-
|
|
199
|
-
**没写完**:
|
|
200
|
-
- “复用 adapter 测试模式”
|
|
201
|
-
- “ToolError import 需确认”
|
|
202
|
-
- “注册后做 discover”
|
|
203
|
-
|
|
204
|
-
**写完了**:
|
|
205
|
-
- “`test_plan024_mcp_tools.py` 本地定义 `RecordingTransport/_setup_mcp/_parse/_switch_identity`”
|
|
206
|
-
- “`from mcp.server.fastmcp.exceptions import ToolError`”
|
|
207
|
-
- “owner、peer 都 `wait_matching_ready` 后,再切回 owner 调 discover”
|
|
208
|
-
|
|
209
|
-
### 双向校准
|
|
210
|
-
|
|
211
|
-
如果我开始偏了,通常会偏成两种病:
|
|
212
|
-
|
|
213
|
-
**过松**
|
|
214
|
-
- 觉得方向对就够了
|
|
215
|
-
- 把“最后一公里的决策”留给执行者
|
|
216
|
-
|
|
217
|
-
**过紧**
|
|
218
|
-
- 把所有内容都写成硬规则
|
|
219
|
-
- 把文档写成臃肿检查表,失去可读性和判断张力
|
|
220
|
-
|
|
221
|
-
正确状态是:
|
|
222
|
-
- 把真正会造成分叉的点全部写死
|
|
223
|
-
- 其余内容只保留高杠杆原则和最小可执行骨架
|
|
224
|
-
|
|
225
|
-
## 高杠杆技术
|
|
226
|
-
|
|
227
|
-
### 1. 反面命名
|
|
228
|
-
|
|
229
|
-
优先命名病灶,而不是只给正面规则。
|
|
230
|
-
|
|
231
|
-
例如:
|
|
232
|
-
- 伪代码陷阱
|
|
233
|
-
- 类型想象陷阱
|
|
234
|
-
- 层级偷换陷阱
|
|
235
|
-
- 序列化路径陷阱
|
|
236
|
-
- 时序漂移陷阱
|
|
237
|
-
|
|
238
|
-
被命名的问题,更容易被识别和拒绝。
|
|
239
|
-
|
|
240
|
-
### 2. 层级对齐
|
|
241
|
-
|
|
242
|
-
任何计划都要明确回答:
|
|
243
|
-
- 承诺的是哪一层
|
|
244
|
-
- 验证的是哪一层
|
|
245
|
-
- 错误包装、配置读取、客户端工厂是不是这个层级的一部分
|
|
246
|
-
|
|
247
|
-
### 3. 关键路径例子
|
|
248
|
-
|
|
249
|
-
示例代码不是装饰,它是校准器。
|
|
250
|
-
|
|
251
|
-
只有那些会决定执行边界的例子值得写进计划:
|
|
252
|
-
- 字段访问路径
|
|
253
|
-
- import 来源
|
|
254
|
-
- helper 定义位置
|
|
255
|
-
- await / ready 顺序
|
|
256
|
-
|
|
257
|
-
### 4. 口子词扫描
|
|
258
|
-
|
|
259
|
-
以下信号词一旦出现,就说明计划还没锁住:
|
|
260
|
-
- `需确认`
|
|
261
|
-
- `待定` / `TBD`
|
|
262
|
-
- `复用或重定义`
|
|
263
|
-
- `参考 xxx 模式`
|
|
264
|
-
- `大概在`
|
|
265
|
-
- `应该是`
|
|
266
|
-
- 示例中的 `...`
|
|
267
|
-
|
|
268
|
-
## 锁定流程
|
|
269
|
-
|
|
270
|
-
### Step 1: 事实采集
|
|
271
|
-
|
|
272
|
-
对每个修改点:
|
|
273
|
-
- 读当前代码,记录真实文件和行号
|
|
274
|
-
- 读相关类型定义,确认真实类型
|
|
275
|
-
- 如果涉及序列化,追到 `model_dump()/dict()/JSON response` 的真实结构
|
|
276
|
-
- 明确消费方和错误包装链
|
|
277
|
-
|
|
278
|
-
对每个测试点:
|
|
279
|
-
- 确认真实入口函数
|
|
280
|
-
- 确认 fixture / helper / stub 是否兼容
|
|
281
|
-
- 确认 assert 字段和真实返回一致
|
|
282
|
-
|
|
283
|
-
### Step 2: 写计划骨架
|
|
284
|
-
|
|
285
|
-
每个修复项统一写成:
|
|
286
|
-
|
|
287
|
-
```markdown
|
|
288
|
-
### RP-X: {标题}
|
|
289
|
-
|
|
290
|
-
**文件**: `path/to/file.py:line`
|
|
291
|
-
**当前真相**: {当前实现是什么}
|
|
292
|
-
**修改为**: {可直接照抄的代码骨架}
|
|
293
|
-
**验证**: {具体测试入口 + 关键断言}
|
|
294
|
-
**事实依据**: {哪几个文件/行证明这个改法是对的}
|
|
295
|
-
```
|
|
296
|
-
|
|
297
|
-
### Step 2.5: 接口/字段/时间三检查(PLAN-033 教训沉淀)
|
|
298
|
-
|
|
299
|
-
**强制执行**。扫描计划中所有 RP,检测触发条件后加载对应检查:
|
|
300
|
-
|
|
301
|
-
- RP 含"重写/替换/新增参数/返回类型变更" → 加载 `ref-three-checks.md` 检查 A(接口消费方语义兼容)
|
|
302
|
-
- RP 含"新增列/新增字段" → 加载 `ref-three-checks.md` 检查 B(字段生命周期 8 路径追踪)
|
|
303
|
-
- RP 含"刷新/过期/超时/每日" → 加载 `ref-three-checks.md` 检查 C(时间边界 3 场景)
|
|
304
|
-
|
|
305
|
-
详细检查清单和真实案例见:`ref-three-checks.md`
|
|
306
|
-
|
|
307
|
-
同时执行结构性自动扫描:
|
|
308
|
-
- Markdown ``` 标记奇偶校验(奇数 = 代码块未闭合)
|
|
309
|
-
- 硬编码行号扫描 → 要求改为语义锚点(函数名/class 名/搜索关键词)
|
|
310
|
-
|
|
311
|
-
### Step 2.6: API 端点归属验证(INV-7 无主接缝,PLAN-079 教训)
|
|
312
|
-
|
|
313
|
-
**强制执行**。计划中声明的每个 API 端点,必须能映射到至少一个 WP 的 write set。
|
|
314
|
-
|
|
315
|
-
检查方法:
|
|
316
|
-
- 扫描 CLAUDE.md / ADR 中列出的所有 API 端点
|
|
317
|
-
- 对前端组件的每个 `fetch` / `coachingFetch` / `protocolFetch` 调用,追踪后端端点归属
|
|
318
|
-
- 如果某端点不在任何 WP 的 write set 中 → **BLOCKED**,必须显式分配到某个 WP 或创建独立 Gate 任务
|
|
319
|
-
|
|
320
|
-
典型陷阱:前端 WP 写"不写后端逻辑",后端 WP 写"不写前端展示"→ 中间的路由端点无人实现。
|
|
321
|
-
|
|
322
|
-
### Step 3: 关口子扫描
|
|
323
|
-
|
|
324
|
-
逐行检查是否还残留:
|
|
325
|
-
- 事实未验证
|
|
326
|
-
- 决策未做完
|
|
327
|
-
- 层级偷换
|
|
328
|
-
- 示例省略关键细节
|
|
329
|
-
- 时序未写死
|
|
330
|
-
|
|
331
|
-
只要还有一个口子,就不能进入冻结态。
|
|
332
|
-
|
|
333
|
-
### Step 4: 时序与依赖检查
|
|
334
|
-
|
|
335
|
-
对异步/多角色/多身份路径,明确:
|
|
336
|
-
- 谁先创建
|
|
337
|
-
- 谁先 ready
|
|
338
|
-
- 谁先切身份
|
|
339
|
-
- 谁在什么时点 assert
|
|
340
|
-
- 哪个测试依赖哪个修复项
|
|
341
|
-
|
|
342
|
-
依赖必须显式,不允许“感觉上应该有关系”。
|
|
343
|
-
|
|
344
|
-
### Step 5: 冻结
|
|
345
|
-
|
|
346
|
-
只有当:
|
|
347
|
-
- 真相验证完
|
|
348
|
-
- 决策口子关完
|
|
349
|
-
- 层级对齐
|
|
350
|
-
- 时序写死
|
|
351
|
-
|
|
352
|
-
才允许写:
|
|
353
|
-
|
|
354
|
-
```markdown
|
|
355
|
-
**版本**: vN-final(冻结版,不再修改)
|
|
356
|
-
```
|
|
357
|
-
|
|
358
|
-
冻结后只允许两类修改:
|
|
359
|
-
- 审查发现的事实错误
|
|
360
|
-
- 审查发现的接口/测试不一致
|
|
361
|
-
|
|
362
|
-
不允许顺手扩 scope。
|
|
363
|
-
|
|
364
|
-
## WP 文档规范(硬性要求)
|
|
365
|
-
|
|
366
|
-
每个 WP 必须有 TASK.md + TODO.md + LOG.md。模板和详细格式见:`ref-wp-templates.md`
|
|
367
|
-
|
|
368
|
-
不允许在没有 TASK.md 的情况下开始写代码。
|
|
369
|
-
|
|
370
|
-
## 输出判据
|
|
371
|
-
|
|
372
|
-
我的产出必须通过这 4 组检查:
|
|
373
|
-
|
|
374
|
-
### A. 真相检查
|
|
375
|
-
- [ ] 文件、函数、字段、类型都在仓库里确认过
|
|
376
|
-
- [ ] 示例代码没有凭空编造字段名
|
|
377
|
-
- [ ] import 来源已锁死
|
|
378
|
-
|
|
379
|
-
### B. 执行检查
|
|
380
|
-
- [ ] 开发者不需要再决定 helper 放哪
|
|
381
|
-
- [ ] 开发者不需要再决定测哪一层
|
|
382
|
-
- [ ] 开发者不需要自己推导等待顺序
|
|
383
|
-
|
|
384
|
-
### C. 验证检查
|
|
385
|
-
- [ ] 验收标准是可执行测试,不是自然语言愿景
|
|
386
|
-
- [ ] 测试入口与计划承诺层级一致
|
|
387
|
-
- [ ] 边界/负面路径有对应验证
|
|
388
|
-
|
|
389
|
-
### D. 冻结检查
|
|
390
|
-
- [ ] 没有 `需确认/TBD/复用或重定义/...`
|
|
391
|
-
- [ ] 没有“先这样,后面再说”的口子
|
|
392
|
-
|
|
393
|
-
## 与其他 Skill 的关系
|
|
394
|
-
|
|
395
|
-
```text
|
|
396
|
-
arch / lead
|
|
397
|
-
↓ 决定要不要做、做到什么层级
|
|
398
|
-
plan-lock
|
|
399
|
-
↓ 把计划锁成可执行规格
|
|
400
|
-
lead(独立审查)
|
|
401
|
-
↓ 审查事实错误、接缝遗漏、测试层级错位
|
|
402
|
-
task-arch
|
|
403
|
-
↓ 只消费冻结后的计划,拆成 WP
|
|
404
|
-
boll-dev / boll-eng-test
|
|
405
|
-
↓ 执行与验证
|
|
406
|
-
```
|
|
407
|
-
|
|
408
|
-
### 边界
|
|
409
|
-
|
|
410
|
-
- `lead` 决定是否进入规划阶段,并组织独立审查
|
|
411
|
-
- `plan-lock` 负责把计划锁成 decision-complete 文档
|
|
412
|
-
- `task-arch` 只能拆已经冻结的计划;如果计划未冻结,必须退回 `plan-lock`
|
|
413
|
-
- `boll-dev` 不负责补计划里的口子,只负责照规格实现
|
|
414
|
-
|
|
415
|
-
## 强制协作规则
|
|
416
|
-
|
|
417
|
-
1. 所有 `PLAN-*` 文档,在进入正式审查前,必须先过 `plan-lock`
|
|
418
|
-
2. 所有 WP 拆分,输入必须是 `vN-final` 的冻结计划
|
|
419
|
-
3. 如果执行者在实现前还会问“helper 放哪 / 字段叫什么 / 测哪一层 / 谁先 ready / import 从哪来”,说明计划没锁住,必须退回重锁
|
|
420
|
-
|
|
421
|
-
## 一句话标准
|
|
422
|
-
|
|
423
|
-
> 计划不是“方向正确的说明书”,而是“不给执行者留下任何决策熵的上游规格”。
|
|
424
|
-
|
|
425
|
-
如果执行者还要自己补判断,计划就还没写完。
|
package/src/bollharness/reference/boll-reference/.claude/skills/plan-lock/ref-three-checks.md
DELETED
|
@@ -1,62 +0,0 @@
|
|
|
1
|
-
# 接口/字段/时间三检查(PLAN-033 教训沉淀)
|
|
2
|
-
|
|
3
|
-
plan-lock Step 2.5 强制执行。每当计划中出现接口变更、新增字段或时间相关设计时,必须完成对应检查。
|
|
4
|
-
|
|
5
|
-
---
|
|
6
|
-
|
|
7
|
-
## 检查 A:改接口(触发词:重写/替换/新增参数/返回类型变更)
|
|
8
|
-
|
|
9
|
-
对每个接口变更,grep 所有消费方,逐个回答:
|
|
10
|
-
|
|
11
|
-
1. **签名兼容吗?** — 参数名、参数数量、返回类型
|
|
12
|
-
2. **语义兼容吗?** — 旧调用方在新语义下行为还正确吗?
|
|
13
|
-
- "兼容层"不是免审金牌。兼容层的**语义**可能在新模型下是错的
|
|
14
|
-
- 例:`refund_one()` 签名不变,但新模型 run 预扣了 20,兼容层只退 1 → 19 个 invocation 泄漏
|
|
15
|
-
3. **新参数需要调用方提供吗?** — 如果有新参数且默认值在某些路径下不安全,必须在计划中显式列出
|
|
16
|
-
|
|
17
|
-
**输出**:消费方影响矩阵表(消费方 × 签名兼容 × 语义兼容 × 需适配)
|
|
18
|
-
|
|
19
|
-
---
|
|
20
|
-
|
|
21
|
-
## 检查 B:加字段(触发词:新增列/新增字段/新增参数/新增返回字段)
|
|
22
|
-
|
|
23
|
-
对每个新字段,追踪 8 条路径:
|
|
24
|
-
|
|
25
|
-
| # | 路径 | 检查 |
|
|
26
|
-
|---|------|------|
|
|
27
|
-
| 1 | 创建/初始化 | 在哪里创建?默认值是什么?默认值在所有场景安全吗? |
|
|
28
|
-
| 2 | 写入 | 哪些代码路径会设置它?有没有路径漏设? |
|
|
29
|
-
| 3 | 读取 | 哪些代码路径使用它?读到默认值时行为正确吗? |
|
|
30
|
-
| 4 | 传递 | 作为参数传递的链条完整吗?中间环节有没有漏传? |
|
|
31
|
-
| 5 | 缺失/默认 | 旧记录没有这个字段 → 默认值在所有消费路径下都安全吗? |
|
|
32
|
-
| 6 | 旧数据迁移 | ALTER TABLE 有吗?迁移后旧记录的值正确吗? |
|
|
33
|
-
| 7 | 跨时间边界 | 刷新/过期/跨日时这个字段的状态正确吗? |
|
|
34
|
-
| 8 | 并发 | 两个操作同时读写这个字段安全吗? |
|
|
35
|
-
|
|
36
|
-
**输出**:字段生命周期矩阵(字段 × 8 条路径 × 状态)
|
|
37
|
-
|
|
38
|
-
---
|
|
39
|
-
|
|
40
|
-
## 检查 C:涉及时间(触发词:刷新/过期/超时/定时/每日/cron)
|
|
41
|
-
|
|
42
|
-
对每个时间相关设计,检查 3 个边界:
|
|
43
|
-
|
|
44
|
-
1. **恰好在边界时刻** — 恰好在刷新/过期那一秒会怎样?
|
|
45
|
-
2. **跨越边界** — 操作开始于边界前、结束于边界后会怎样?
|
|
46
|
-
- 例:23:50 预扣 → 00:05 结算 → 跨日刷新已清零 reserved_today → 结算增加了 used_today → 当日额度被污染
|
|
47
|
-
3. **并发在边界附近** — 两个操作都在边界前后几秒内执行会怎样?
|
|
48
|
-
|
|
49
|
-
**输出**:时间边界场景表(边界 × 3 种检查 × 结果)
|
|
50
|
-
|
|
51
|
-
---
|
|
52
|
-
|
|
53
|
-
## 真实案例(PLAN-033 五轮审查)
|
|
54
|
-
|
|
55
|
-
| 轮次 | 发现 | 对应检查 | 如果第一轮就做了检查 |
|
|
56
|
-
|------|------|---------|-------------------|
|
|
57
|
-
| R2 | scheduler refund_one 只退 1 而非 20 | A-语义兼容 | R1 就能发现 |
|
|
58
|
-
| R3 | coordinator _fail_run 同样问题 | A-语义兼容 | R1 就能发现 |
|
|
59
|
-
| R2 | settle() 漏传 bonus_reserved | B-传递链 | R1 就能发现 |
|
|
60
|
-
| R5 | legacy demand quota_reserved=0 | B-缺失/默认 | R1 就能发现 |
|
|
61
|
-
| R3 | 跨日结算污染当日额度 | C-跨越边界 | R1 就能发现 |
|
|
62
|
-
| R1 | queued run 预留永不释放 | C-恰好在边界 | R1 发现了 ✅ |
|
package/src/bollharness/reference/boll-reference/.claude/skills/plan-lock/ref-wp-templates.md
DELETED
|
@@ -1,78 +0,0 @@
|
|
|
1
|
-
# WP 文档规范
|
|
2
|
-
|
|
3
|
-
每个 WP 必须有独立文件夹:`docs/decisions/tasks/{PLAN编号}-{WP编号}/`
|
|
4
|
-
|
|
5
|
-
## 目录结构
|
|
6
|
-
|
|
7
|
-
```
|
|
8
|
-
PLAN024-WP1/
|
|
9
|
-
├── TASK.md # 任务定义(目标、文件、验收标准、约束)
|
|
10
|
-
├── TODO.md # 执行清单(审查项 + 实施项 + 测试项 + 回归项)
|
|
11
|
-
└── LOG.md # 开发日志(实际修改 + 测试结果 + 偏差 + 复审结论)
|
|
12
|
-
```
|
|
13
|
-
|
|
14
|
-
每个 PLAN 还需要 `{PLAN-ID}-DEV-LOG.md` 记录整体修改总览。
|
|
15
|
-
|
|
16
|
-
## 创建时机
|
|
17
|
-
|
|
18
|
-
- TASK.md + TODO.md:task-arch 拆分时创建
|
|
19
|
-
- LOG.md:执行开始时创建,过程中持续更新
|
|
20
|
-
|
|
21
|
-
不允许在没有 TASK.md 的情况下开始写代码。
|
|
22
|
-
|
|
23
|
-
## TASK.md 模板
|
|
24
|
-
|
|
25
|
-
```markdown
|
|
26
|
-
# {PLAN-ID}-{WP-ID}: {标题}
|
|
27
|
-
|
|
28
|
-
**Phase**: {归属阶段}
|
|
29
|
-
**依赖**: {前置 WP 列表,无则写"无"}
|
|
30
|
-
**状态**: pending | in_progress | done | blocked
|
|
31
|
-
|
|
32
|
-
| 项 | 内容 |
|
|
33
|
-
|---|------|
|
|
34
|
-
| **Input** | 当前相关文件和代码位置 |
|
|
35
|
-
| **Output** | 修改后的文件和具体变更 |
|
|
36
|
-
| **Acceptance** | 可写成 pytest 的验收条件 |
|
|
37
|
-
| **Bounded** | 不改什么(明确边界) |
|
|
38
|
-
| **Root Cause** | 为什么要做这个修改 |
|
|
39
|
-
```
|
|
40
|
-
|
|
41
|
-
## TODO.md 模板
|
|
42
|
-
|
|
43
|
-
```markdown
|
|
44
|
-
# {PLAN-ID}-{WP-ID} TODO
|
|
45
|
-
|
|
46
|
-
## 审查项
|
|
47
|
-
- [ ] 变更链路完整
|
|
48
|
-
- [ ] 消费方覆盖
|
|
49
|
-
|
|
50
|
-
## 实施项
|
|
51
|
-
- [ ] 代码修改
|
|
52
|
-
- [ ] commit
|
|
53
|
-
|
|
54
|
-
## 测试项
|
|
55
|
-
- [ ] 端到端测试通过
|
|
56
|
-
|
|
57
|
-
## 回归项
|
|
58
|
-
- [ ] 无新增失败
|
|
59
|
-
```
|
|
60
|
-
|
|
61
|
-
## LOG.md 模板
|
|
62
|
-
|
|
63
|
-
```markdown
|
|
64
|
-
# {PLAN-ID}-{WP-ID} 开发日志
|
|
65
|
-
|
|
66
|
-
## 实际修改
|
|
67
|
-
- 文件: {path}
|
|
68
|
-
- 变更: {描述}
|
|
69
|
-
|
|
70
|
-
## 测试结果
|
|
71
|
-
- {test_name}: PASS/FAIL
|
|
72
|
-
|
|
73
|
-
## 偏差/阻塞
|
|
74
|
-
- 无 / {描述}
|
|
75
|
-
|
|
76
|
-
## 复审结论
|
|
77
|
-
- 通过 / 待修复
|
|
78
|
-
```
|
|
@@ -1,76 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
name: task-arch
|
|
3
|
-
description: 流形网络任务架构师。负责 WOWOK 生态的任务拆解、依赖分析和架构设计。
|
|
4
|
-
status: active
|
|
5
|
-
tier: entry
|
|
6
|
-
owner: nature
|
|
7
|
-
last_audited: 2026-04-02
|
|
8
|
-
triggers:
|
|
9
|
-
- 已冻结的 PLAN 需要拆成 WP
|
|
10
|
-
- 需要显式写出依赖和写集
|
|
11
|
-
- 需要并行执行编排
|
|
12
|
-
outputs:
|
|
13
|
-
- WP DAG
|
|
14
|
-
- write_set
|
|
15
|
-
- depends_on
|
|
16
|
-
- acceptance_test
|
|
17
|
-
truth_policy:
|
|
18
|
-
- 只消费已冻结的计划
|
|
19
|
-
- 不重做架构决策
|
|
20
|
-
- 任务定义优先写问题边界和接缝责任,不复制仓库事实
|
|
21
|
-
---
|
|
22
|
-
|
|
23
|
-
# 流形任务架构师
|
|
24
|
-
|
|
25
|
-
## 角色
|
|
26
|
-
|
|
27
|
-
我负责把一份已经 decision-complete 的计划拆成可执行、可委派、可集成的工作单元。我的价值不在于“拆得细”,而在于“拆完之后不会把接缝拆丢”。
|
|
28
|
-
|
|
29
|
-
## 拆分原则
|
|
30
|
-
|
|
31
|
-
- 按 `write_set` 拆,不按“感觉上的功能块”拆
|
|
32
|
-
- 按接缝定义 owner,不让中间层落到无人地带
|
|
33
|
-
- 每个 WP 必须有自己的 `acceptance_test`
|
|
34
|
-
- 共享接口优先拆出单独 gate / integration task,而不是默认某一方顺手做
|
|
35
|
-
|
|
36
|
-
## 禁止事项
|
|
37
|
-
|
|
38
|
-
- 不在这里补架构判断
|
|
39
|
-
- 不在这里发明新的契约
|
|
40
|
-
- 不把“谁来做”写成“大家协同完成”
|
|
41
|
-
- 不把验证责任丢给最终集成阶段
|
|
42
|
-
|
|
43
|
-
## 来自 crystal-learn 的注入
|
|
44
|
-
|
|
45
|
-
**INV-7 无主接缝(已确认,3 实例)**:WP 本身有 owner,但 WP 之间的接缝没有 owner。行动:
|
|
46
|
-
1. 每条跨 WP 数据流都显式指定生产端 owner、消费端 owner、接缝验证 owner
|
|
47
|
-
2. 如果不自然归属任何 WP,创建独立 Gate 任务
|
|
48
|
-
3. **PLAN 冻结前,对文档声明的每个 API 端点做 WP 归属验证**——如果某端点不在任何 WP 的 write set 中,必须显式分配(PLAN-079 教训:前端 WP 写了调用组件,后端 WP 只写了核心逻辑,路由端点落在无人区)
|
|
49
|
-
|
|
50
|
-
## Output Contract
|
|
51
|
-
|
|
52
|
-
每次拆分必须给出:
|
|
53
|
-
|
|
54
|
-
1. `WP DAG`
|
|
55
|
-
- WP 编号
|
|
56
|
-
- 每个 WP 的一句话目标
|
|
57
|
-
2. `write_set`
|
|
58
|
-
- 每个 WP 允许写的路径或模块
|
|
59
|
-
3. `depends_on`
|
|
60
|
-
- 哪些前置必须完成
|
|
61
|
-
4. `acceptance_test`
|
|
62
|
-
- 每个 WP 结束时必须通过什么验证
|
|
63
|
-
5. `integration_tasks`
|
|
64
|
-
- 哪些接缝需要单独集成验证
|
|
65
|
-
|
|
66
|
-
## 最小模板
|
|
67
|
-
|
|
68
|
-
```markdown
|
|
69
|
-
## WP-x [名称]
|
|
70
|
-
- Goal:
|
|
71
|
-
- Write set:
|
|
72
|
-
- Depends on:
|
|
73
|
-
- Parallel with:
|
|
74
|
-
- Seam owner:
|
|
75
|
-
- Acceptance test:
|
|
76
|
-
```
|
|
@@ -1,57 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
name: vibedevteam-graph
|
|
3
|
-
description: 生成任务依赖可视化图。当用户需要查看或分析任务依赖关系时使用。
|
|
4
|
-
allowed-tools: "Bash(bd:*),Bash(.claude/skills/vibedevteam-graph/beads-graph.sh),Bash(dot:*)"
|
|
5
|
-
version: 0.3.0
|
|
6
|
-
status: active
|
|
7
|
-
tier: domain
|
|
8
|
-
owner: nature
|
|
9
|
-
last_audited: 2026-03-21
|
|
10
|
-
triggers:
|
|
11
|
-
- beads 依赖图
|
|
12
|
-
- 任务可视化
|
|
13
|
-
outputs:
|
|
14
|
-
- 任务依赖图
|
|
15
|
-
truth_policy:
|
|
16
|
-
- 图的事实以当前 beads 数据为准
|
|
17
|
-
- skill 只描述如何生成,不复制任务状态
|
|
18
|
-
---
|
|
19
|
-
|
|
20
|
-
# VibeDevTeam: 生成任务依赖图
|
|
21
|
-
|
|
22
|
-
当用户调用此 skill 时,执行以下步骤:
|
|
23
|
-
|
|
24
|
-
## 触发条件
|
|
25
|
-
|
|
26
|
-
用户说类似:
|
|
27
|
-
- "生成依赖图"
|
|
28
|
-
- "依赖可视化"
|
|
29
|
-
- "任务图"
|
|
30
|
-
|
|
31
|
-
## 执行步骤
|
|
32
|
-
|
|
33
|
-
1. **确认参数**
|
|
34
|
-
- EPIC_ID
|
|
35
|
-
- 输出文件路径(可选,默认 docs/{EPIC_ID}-dependencies.svg)
|
|
36
|
-
|
|
37
|
-
2. **验证 Graphviz**
|
|
38
|
-
```bash
|
|
39
|
-
command -v dot
|
|
40
|
-
```
|
|
41
|
-
|
|
42
|
-
如果未安装,提示用户:
|
|
43
|
-
```bash
|
|
44
|
-
# macOS
|
|
45
|
-
brew install graphviz
|
|
46
|
-
# Ubuntu
|
|
47
|
-
sudo apt-get install graphviz
|
|
48
|
-
```
|
|
49
|
-
|
|
50
|
-
3. **执行脚本**
|
|
51
|
-
```bash
|
|
52
|
-
cd .claude/skills/vibedevteam-graph && ./beads-graph.sh "$EPIC_ID" --output "$OUTPUT_FILE"
|
|
53
|
-
```
|
|
54
|
-
|
|
55
|
-
4. **报告结果**
|
|
56
|
-
- 输出文件位置
|
|
57
|
-
- 查看方法:`open $OUTPUT_FILE` 或 `xdg-open $OUTPUT_FILE`
|