openmodus 0.0.3__tar.gz → 0.0.4__tar.gz
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.
- openmodus-0.0.4/ARCHITECTURE.md +123 -0
- openmodus-0.0.4/CONTRIBUTING.md +68 -0
- {openmodus-0.0.3 → openmodus-0.0.4}/PKG-INFO +65 -3
- {openmodus-0.0.3 → openmodus-0.0.4}/README.md +63 -1
- {openmodus-0.0.3 → openmodus-0.0.4}/READMEs/README.en.md +65 -1
- openmodus-0.0.4/docs/authoring-contract.md +240 -0
- openmodus-0.0.4/docs/knowledge-lifecycle-boundary.md +281 -0
- {openmodus-0.0.3 → openmodus-0.0.4}/pyproject.toml +12 -2
- openmodus-0.0.4/scripts/README.md +30 -0
- {openmodus-0.0.3 → openmodus-0.0.4}/scripts/release_smoke/archive.py +25 -12
- {openmodus-0.0.3 → openmodus-0.0.4}/scripts/release_smoke/cli.py +14 -10
- {openmodus-0.0.3 → openmodus-0.0.4}/scripts/release_smoke/contracts.py +20 -0
- {openmodus-0.0.3 → openmodus-0.0.4}/scripts/release_smoke/runtime.py +78 -40
- {openmodus-0.0.3 → openmodus-0.0.4}/scripts/release_smoke/verification.py +34 -19
- {openmodus-0.0.3 → openmodus-0.0.4}/scripts/wheel-smoke.sh +8 -8
- {openmodus-0.0.3 → openmodus-0.0.4}/src/modus/__init__.py +1 -1
- openmodus-0.0.4/src/modus/activation_guidance.py +28 -0
- openmodus-0.0.4/src/modus/artifacts_io.py +537 -0
- openmodus-0.0.4/src/modus/atomic_writes.py +529 -0
- {openmodus-0.0.3 → openmodus-0.0.4}/src/modus/cli.py +19 -21
- openmodus-0.0.4/src/modus/cli_commands/__init__.py +1 -0
- {openmodus-0.0.3 → openmodus-0.0.4}/src/modus/cli_commands/analysis.py +66 -53
- openmodus-0.0.4/src/modus/cli_commands/analysis_display.py +73 -0
- openmodus-0.0.4/src/modus/cli_commands/common.py +149 -0
- {openmodus-0.0.3 → openmodus-0.0.4}/src/modus/cli_commands/context.py +15 -16
- {openmodus-0.0.3 → openmodus-0.0.4}/src/modus/cli_commands/discovery.py +17 -10
- {openmodus-0.0.3 → openmodus-0.0.4}/src/modus/cli_commands/initialize.py +60 -61
- {openmodus-0.0.3 → openmodus-0.0.4}/src/modus/cli_commands/knowledge.py +62 -38
- openmodus-0.0.4/src/modus/cli_commands/presentation.py +210 -0
- {openmodus-0.0.3 → openmodus-0.0.4}/src/modus/cli_commands/uninstall.py +78 -37
- {openmodus-0.0.3 → openmodus-0.0.4}/src/modus/cli_commands/update.py +85 -44
- openmodus-0.0.4/src/modus/command_reference.py +417 -0
- {openmodus-0.0.3 → openmodus-0.0.4}/src/modus/commands/help.py +13 -13
- {openmodus-0.0.3 → openmodus-0.0.4}/src/modus/commands/init_project.py +45 -31
- openmodus-0.0.4/src/modus/commands/init_report.py +196 -0
- {openmodus-0.0.3 → openmodus-0.0.4}/src/modus/commands/install_state.py +45 -34
- {openmodus-0.0.3 → openmodus-0.0.4}/src/modus/commands/maintenance_scope.py +3 -0
- {openmodus-0.0.3 → openmodus-0.0.4}/src/modus/commands/reporting.py +9 -8
- {openmodus-0.0.3 → openmodus-0.0.4}/src/modus/commands/seed_business.py +9 -6
- {openmodus-0.0.3 → openmodus-0.0.4}/src/modus/commands/self_update.py +35 -30
- {openmodus-0.0.3 → openmodus-0.0.4}/src/modus/commands/status.py +16 -8
- {openmodus-0.0.3 → openmodus-0.0.4}/src/modus/commands/uninstall.py +29 -1
- {openmodus-0.0.3 → openmodus-0.0.4}/src/modus/commands/uninstall_report.py +44 -39
- {openmodus-0.0.3 → openmodus-0.0.4}/src/modus/commands/uninstall_self.py +14 -21
- {openmodus-0.0.3 → openmodus-0.0.4}/src/modus/commands/update.py +39 -10
- {openmodus-0.0.3 → openmodus-0.0.4}/src/modus/commands/update_report.py +48 -30
- {openmodus-0.0.3 → openmodus-0.0.4}/src/modus/commands/verify_anchors.py +10 -8
- {openmodus-0.0.3 → openmodus-0.0.4}/src/modus/commands/verify_knowledge.py +3 -1
- {openmodus-0.0.3 → openmodus-0.0.4}/src/modus/config.py +89 -35
- openmodus-0.0.4/src/modus/display_labels.py +30 -0
- {openmodus-0.0.3 → openmodus-0.0.4}/src/modus/git_hygiene.py +32 -22
- {openmodus-0.0.3 → openmodus-0.0.4}/src/modus/hooks/bootstrap.py +7 -9
- {openmodus-0.0.3 → openmodus-0.0.4}/src/modus/hooks/contracts.py +3 -3
- {openmodus-0.0.3 → openmodus-0.0.4}/src/modus/hooks/environment.py +3 -2
- {openmodus-0.0.3 → openmodus-0.0.4}/src/modus/hooks/protocol.py +15 -13
- {openmodus-0.0.3 → openmodus-0.0.4}/src/modus/hooks/runtime.py +7 -4
- {openmodus-0.0.3 → openmodus-0.0.4}/src/modus/knowledge_identity.py +11 -0
- {openmodus-0.0.3 → openmodus-0.0.4}/src/modus/knowledge_reader.py +31 -22
- {openmodus-0.0.3 → openmodus-0.0.4}/src/modus/knowledge_seeds.py +4 -16
- {openmodus-0.0.3 → openmodus-0.0.4}/src/modus/knowledge_update.py +24 -13
- {openmodus-0.0.3 → openmodus-0.0.4}/src/modus/knowledge_verification/authoring_card.py +33 -19
- {openmodus-0.0.3 → openmodus-0.0.4}/src/modus/knowledge_verification/discovery.py +67 -47
- {openmodus-0.0.3 → openmodus-0.0.4}/src/modus/knowledge_verification/markdown_integrity.py +39 -11
- {openmodus-0.0.3 → openmodus-0.0.4}/src/modus/knowledge_verification/metadata.py +4 -3
- {openmodus-0.0.3 → openmodus-0.0.4}/src/modus/knowledge_verification/publication.py +67 -31
- {openmodus-0.0.3 → openmodus-0.0.4}/src/modus/knowledge_verification/structure.py +4 -5
- {openmodus-0.0.3 → openmodus-0.0.4}/src/modus/knowledge_write_session.py +22 -23
- openmodus-0.0.4/src/modus/machine/ARCHITECTURE.md +84 -0
- openmodus-0.0.4/src/modus/machine/README.md +107 -0
- openmodus-0.0.4/src/modus/machine/capability/README.md +15 -0
- {openmodus-0.0.3 → openmodus-0.0.4}/src/modus/machine/capability/composition_model.py +4 -0
- {openmodus-0.0.3 → openmodus-0.0.4}/src/modus/machine/capability/input_normalization.py +28 -0
- {openmodus-0.0.3 → openmodus-0.0.4}/src/modus/machine/capability/seed_selection.py +8 -1
- {openmodus-0.0.3 → openmodus-0.0.4}/src/modus/machine/capability/traversal.py +27 -0
- openmodus-0.0.4/src/modus/machine/corpus/README.md +13 -0
- {openmodus-0.0.3 → openmodus-0.0.4}/src/modus/machine/corpus/input_snapshot.py +98 -29
- {openmodus-0.0.3 → openmodus-0.0.4}/src/modus/machine/corpus/lifecycle.py +46 -31
- {openmodus-0.0.3 → openmodus-0.0.4}/src/modus/machine/corpus/scan.py +5 -1
- openmodus-0.0.4/src/modus/machine/corpus/source_coordinates.py +97 -0
- {openmodus-0.0.3 → openmodus-0.0.4}/src/modus/machine/corpus/source_inventory.py +104 -74
- {openmodus-0.0.3 → openmodus-0.0.4}/src/modus/machine/corpus/source_roles.py +9 -0
- openmodus-0.0.4/src/modus/machine/facts/README.md +15 -0
- {openmodus-0.0.3 → openmodus-0.0.4}/src/modus/machine/facts/build_context.py +15 -1
- {openmodus-0.0.3 → openmodus-0.0.4}/src/modus/machine/facts/build_contracts.py +11 -1
- {openmodus-0.0.3 → openmodus-0.0.4}/src/modus/machine/facts/build_resolvers/__init__.py +5 -1
- {openmodus-0.0.3 → openmodus-0.0.4}/src/modus/machine/facts/build_resolvers/base.py +7 -0
- openmodus-0.0.4/src/modus/machine/facts/build_resolvers/cpp_resolver.py +207 -0
- {openmodus-0.0.3 → openmodus-0.0.4}/src/modus/machine/facts/build_resolvers/go_resolver.py +11 -1
- {openmodus-0.0.3 → openmodus-0.0.4}/src/modus/machine/facts/build_resolvers/java_resolver.py +174 -82
- {openmodus-0.0.3 → openmodus-0.0.4}/src/modus/machine/facts/build_resolvers/python_resolver.py +62 -41
- {openmodus-0.0.3 → openmodus-0.0.4}/src/modus/machine/facts/build_resolvers/typescript_resolver.py +64 -45
- {openmodus-0.0.3 → openmodus-0.0.4}/src/modus/machine/facts/build_support.py +45 -1
- {openmodus-0.0.3 → openmodus-0.0.4}/src/modus/machine/facts/compiler/cpp.py +66 -21
- {openmodus-0.0.3 → openmodus-0.0.4}/src/modus/machine/facts/compiler/go.py +11 -0
- {openmodus-0.0.3 → openmodus-0.0.4}/src/modus/machine/facts/compiler/java.py +10 -0
- {openmodus-0.0.3 → openmodus-0.0.4}/src/modus/machine/facts/compiler/merge.py +13 -0
- {openmodus-0.0.3 → openmodus-0.0.4}/src/modus/machine/facts/compiler/models.py +31 -27
- {openmodus-0.0.3 → openmodus-0.0.4}/src/modus/machine/facts/compiler/process.py +18 -2
- {openmodus-0.0.3 → openmodus-0.0.4}/src/modus/machine/facts/compiler/python.py +41 -1
- {openmodus-0.0.3 → openmodus-0.0.4}/src/modus/machine/facts/compiler/typescript.py +7 -1
- {openmodus-0.0.3 → openmodus-0.0.4}/src/modus/machine/facts/contracts.py +14 -10
- {openmodus-0.0.3 → openmodus-0.0.4}/src/modus/machine/facts/entry_contracts.py +14 -0
- {openmodus-0.0.3 → openmodus-0.0.4}/src/modus/machine/facts/entry_observation.py +41 -1
- {openmodus-0.0.3 → openmodus-0.0.4}/src/modus/machine/facts/extension_registry.py +26 -18
- {openmodus-0.0.3 → openmodus-0.0.4}/src/modus/machine/facts/extraction_cache.py +32 -3
- {openmodus-0.0.3 → openmodus-0.0.4}/src/modus/machine/facts/framework_facts.py +102 -41
- openmodus-0.0.4/src/modus/machine/facts/frontend.py +438 -0
- openmodus-0.0.4/src/modus/machine/facts/frontend_context.py +229 -0
- openmodus-0.0.4/src/modus/machine/facts/frontend_server.py +495 -0
- openmodus-0.0.4/src/modus/machine/facts/frontend_state.py +440 -0
- {openmodus-0.0.3 → openmodus-0.0.4}/src/modus/machine/facts/generic.py +1 -0
- {openmodus-0.0.3 → openmodus-0.0.4}/src/modus/machine/facts/lifecycle.py +4 -0
- {openmodus-0.0.3 → openmodus-0.0.4}/src/modus/machine/facts/native_binding.py +188 -125
- openmodus-0.0.4/src/modus/machine/facts/native_parser.py +110 -0
- openmodus-0.0.4/src/modus/machine/facts/native_syntax.py +171 -0
- openmodus-0.0.3/src/modus/machine/facts/native_parser.py → openmodus-0.0.4/src/modus/machine/facts/native_visitor.py +234 -346
- {openmodus-0.0.3 → openmodus-0.0.4}/src/modus/machine/facts/provider_assets/ModusJavaAnalyzer.java +134 -31
- openmodus-0.0.4/src/modus/machine/facts/provider_assets/modus_go_analyzer.go +455 -0
- {openmodus-0.0.3 → openmodus-0.0.4}/src/modus/machine/facts/rule_signals.py +25 -0
- {openmodus-0.0.3 → openmodus-0.0.4}/src/modus/machine/facts/search_metadata.py +3 -0
- {openmodus-0.0.3 → openmodus-0.0.4}/src/modus/machine/facts/semantic_contracts.py +8 -0
- {openmodus-0.0.3 → openmodus-0.0.4}/src/modus/machine/facts/semantic_ir.py +86 -21
- {openmodus-0.0.3 → openmodus-0.0.4}/src/modus/machine/facts/semantic_providers.py +17 -0
- {openmodus-0.0.3 → openmodus-0.0.4}/src/modus/machine/facts/source_contracts.py +18 -4
- {openmodus-0.0.3 → openmodus-0.0.4}/src/modus/machine/facts/source_evidence.py +22 -0
- {openmodus-0.0.3 → openmodus-0.0.4}/src/modus/machine/facts/structural.py +5 -2
- {openmodus-0.0.3 → openmodus-0.0.4}/src/modus/machine/facts/value_summary.py +98 -44
- {openmodus-0.0.3 → openmodus-0.0.4}/src/modus/machine/languages.py +11 -0
- openmodus-0.0.4/src/modus/machine/packet/README.md +15 -0
- {openmodus-0.0.3 → openmodus-0.0.4}/src/modus/machine/packet/context_builder.py +53 -0
- {openmodus-0.0.3 → openmodus-0.0.4}/src/modus/machine/packet/cursor.py +7 -0
- {openmodus-0.0.3 → openmodus-0.0.4}/src/modus/machine/packet/query.py +42 -0
- {openmodus-0.0.3 → openmodus-0.0.4}/src/modus/machine/pipeline.py +8 -2
- openmodus-0.0.4/src/modus/machine/projection/README.md +13 -0
- {openmodus-0.0.3 → openmodus-0.0.4}/src/modus/machine/projection/lifecycle.py +21 -0
- {openmodus-0.0.3 → openmodus-0.0.4}/src/modus/machine/projection/proposals.py +66 -24
- {openmodus-0.0.3 → openmodus-0.0.4}/src/modus/machine/projection/publication.py +2 -0
- {openmodus-0.0.3 → openmodus-0.0.4}/src/modus/machine/projection/scope_candidates.py +41 -0
- {openmodus-0.0.3 → openmodus-0.0.4}/src/modus/machine/projection/scope_profiles.py +20 -0
- {openmodus-0.0.3 → openmodus-0.0.4}/src/modus/machine/projection/views.py +21 -0
- openmodus-0.0.4/src/modus/machine/resolution/README.md +13 -0
- {openmodus-0.0.3 → openmodus-0.0.4}/src/modus/machine/resolution/evidence_graph.py +9 -0
- {openmodus-0.0.3 → openmodus-0.0.4}/src/modus/machine/resolution/lifecycle.py +12 -0
- {openmodus-0.0.3 → openmodus-0.0.4}/src/modus/machine/resolution/method_graph.py +25 -0
- {openmodus-0.0.3 → openmodus-0.0.4}/src/modus/machine/resolution/navigation.py +19 -0
- {openmodus-0.0.3 → openmodus-0.0.4}/src/modus/machine/resolution/reference_outcomes.py +22 -0
- {openmodus-0.0.3 → openmodus-0.0.4}/src/modus/machine/resolution/semantic_reconcile.py +36 -0
- openmodus-0.0.4/src/modus/machine/resolution/topology.py +546 -0
- openmodus-0.0.4/src/modus/machine/resolution/topology_records.py +310 -0
- openmodus-0.0.4/src/modus/machine/resolution/topology_resources.py +365 -0
- openmodus-0.0.4/src/modus/machine/resolution/topology_rules.py +475 -0
- {openmodus-0.0.3 → openmodus-0.0.4}/src/modus/machine/resolution/topology_validation.py +58 -20
- {openmodus-0.0.3 → openmodus-0.0.4}/src/modus/machine/resolution/view_quarantine.py +1 -1
- {openmodus-0.0.3 → openmodus-0.0.4}/src/modus/machine/store/bundle.py +113 -48
- {openmodus-0.0.3 → openmodus-0.0.4}/src/modus/machine/store/bundle_catalogs.py +62 -388
- {openmodus-0.0.3 → openmodus-0.0.4}/src/modus/machine/store/catalog.py +165 -90
- openmodus-0.0.4/src/modus/machine/store/catalog_building.py +100 -0
- {openmodus-0.0.3 → openmodus-0.0.4}/src/modus/machine/store/contracts.py +24 -0
- {openmodus-0.0.3 → openmodus-0.0.4}/src/modus/machine/store/evidence_records.py +25 -0
- {openmodus-0.0.3 → openmodus-0.0.4}/src/modus/machine/store/fingerprint.py +6 -0
- openmodus-0.0.4/src/modus/machine/store/scope_catalog.py +368 -0
- {openmodus-0.0.3 → openmodus-0.0.4}/src/modus/manifest.py +33 -29
- openmodus-0.0.4/src/modus/orchestrator/README.md +47 -0
- {openmodus-0.0.3 → openmodus-0.0.4}/src/modus/orchestrator/context_resolver.py +2 -2
- {openmodus-0.0.3 → openmodus-0.0.4}/src/modus/orchestrator/evidence_search.py +35 -3
- {openmodus-0.0.3 → openmodus-0.0.4}/src/modus/orchestrator/knowledge_sync.py +18 -12
- {openmodus-0.0.3 → openmodus-0.0.4}/src/modus/orchestrator/models.py +4 -14
- {openmodus-0.0.3 → openmodus-0.0.4}/src/modus/orchestrator/module_meta.py +12 -9
- {openmodus-0.0.3 → openmodus-0.0.4}/src/modus/orchestrator/path_scope.py +1 -1
- {openmodus-0.0.3 → openmodus-0.0.4}/src/modus/orchestrator/preflight.py +2 -2
- {openmodus-0.0.3 → openmodus-0.0.4}/src/modus/orchestrator/search_policy.py +11 -0
- {openmodus-0.0.3 → openmodus-0.0.4}/src/modus/paths.py +6 -6
- {openmodus-0.0.3 → openmodus-0.0.4}/src/modus/platforms/codebuddy.py +6 -5
- {openmodus-0.0.3 → openmodus-0.0.4}/src/modus/platforms/cursor.py +4 -2
- openmodus-0.0.4/src/modus/platforms/display.py +20 -0
- {openmodus-0.0.3 → openmodus-0.0.4}/src/modus/platforms/hooks.py +9 -13
- {openmodus-0.0.3 → openmodus-0.0.4}/src/modus/platforms/models.py +22 -26
- {openmodus-0.0.3 → openmodus-0.0.4}/src/modus/platforms/registry.py +4 -7
- {openmodus-0.0.3 → openmodus-0.0.4}/src/modus/platforms/rendering.py +6 -7
- {openmodus-0.0.3 → openmodus-0.0.4}/src/modus/platforms/sections.py +5 -7
- {openmodus-0.0.3 → openmodus-0.0.4}/src/modus/precedence.py +8 -8
- openmodus-0.0.4/src/modus/retrieval/README.md +42 -0
- {openmodus-0.0.3 → openmodus-0.0.4}/src/modus/retrieval/delivery.py +19 -9
- {openmodus-0.0.3 → openmodus-0.0.4}/src/modus/retrieval/index.py +4 -1
- {openmodus-0.0.3 → openmodus-0.0.4}/src/modus/retrieval/pipeline.py +85 -18
- {openmodus-0.0.3 → openmodus-0.0.4}/src/modus/retrieval/query.py +12 -1
- {openmodus-0.0.3 → openmodus-0.0.4}/src/modus/retrieval/routing.py +37 -12
- openmodus-0.0.4/src/modus/retrieval/runtime.py +38 -0
- {openmodus-0.0.3 → openmodus-0.0.4}/src/modus/retrieval/settings.py +2 -2
- {openmodus-0.0.3 → openmodus-0.0.4}/src/modus/retrieval/stages/discovery.py +1 -0
- {openmodus-0.0.3 → openmodus-0.0.4}/src/modus/retrieval/stages/documents.py +74 -31
- {openmodus-0.0.3 → openmodus-0.0.4}/src/modus/retrieval/stages/lexical.py +3 -0
- {openmodus-0.0.3 → openmodus-0.0.4}/src/modus/retrieval/stages/ranking.py +14 -0
- {openmodus-0.0.3 → openmodus-0.0.4}/src/modus/retrieval/stages/selection.py +8 -0
- openmodus-0.0.4/src/modus/scaffold/README.md +49 -0
- {openmodus-0.0.3 → openmodus-0.0.4}/src/modus/scaffold/__init__.py +5 -1
- {openmodus-0.0.3 → openmodus-0.0.4}/src/modus/scaffold/catalog.py +13 -25
- {openmodus-0.0.3 → openmodus-0.0.4}/src/modus/scaffold/project.py +7 -10
- openmodus-0.0.4/src/modus/scaffold/templates/README.md +30 -0
- {openmodus-0.0.3 → openmodus-0.0.4}/src/modus/scaffold/templates/knowledge/business/experience/index.md +4 -0
- {openmodus-0.0.3 → openmodus-0.0.4}/src/modus/scaffold/templates/knowledge/business/index.md +4 -0
- {openmodus-0.0.3 → openmodus-0.0.4}/src/modus/scaffold/templates/knowledge/business/meta/index.md +4 -0
- {openmodus-0.0.3 → openmodus-0.0.4}/src/modus/scaffold/templates/knowledge/business/scenario/index.md +4 -0
- {openmodus-0.0.3 → openmodus-0.0.4}/src/modus/scaffold/templates/knowledge/constraint/global-standard.md +5 -1
- {openmodus-0.0.3 → openmodus-0.0.4}/src/modus/scaffold/templates/knowledge/constraint/team-standard.md +1 -1
- {openmodus-0.0.3 → openmodus-0.0.4}/src/modus/scaffold/templates/knowledge/handbook/SKILL.md +5 -0
- {openmodus-0.0.3 → openmodus-0.0.4}/src/modus/scaffold/templates/skills/modus-init/SKILL.md +1 -1
- {openmodus-0.0.3 → openmodus-0.0.4}/src/modus/scaffold/templates/skills/modus-init/references/constraint-profiles/cpp.md +8 -0
- {openmodus-0.0.3 → openmodus-0.0.4}/src/modus/scaffold/templates/skills/modus-init/references/constraint-profiles/dotnet.md +4 -0
- {openmodus-0.0.3 → openmodus-0.0.4}/src/modus/scaffold/templates/skills/modus-init/references/constraint-profiles/go.md +8 -0
- {openmodus-0.0.3 → openmodus-0.0.4}/src/modus/scaffold/templates/skills/modus-init/references/constraint-profiles/java.md +8 -0
- {openmodus-0.0.3 → openmodus-0.0.4}/src/modus/scaffold/templates/skills/modus-init/references/constraint-profiles/kotlin.md +4 -0
- {openmodus-0.0.3 → openmodus-0.0.4}/src/modus/scaffold/templates/skills/modus-init/references/constraint-profiles/php.md +8 -0
- {openmodus-0.0.3 → openmodus-0.0.4}/src/modus/scaffold/templates/skills/modus-init/references/constraint-profiles/python.md +4 -0
- {openmodus-0.0.3 → openmodus-0.0.4}/src/modus/scaffold/templates/skills/modus-init/references/constraint-profiles/rust.md +4 -0
- {openmodus-0.0.3 → openmodus-0.0.4}/src/modus/scaffold/templates/skills/modus-init/references/constraint-profiles/web.md +8 -0
- {openmodus-0.0.3 → openmodus-0.0.4}/src/modus/scaffold/templates/skills/modus-init/references/global-standard.md +4 -0
- {openmodus-0.0.3 → openmodus-0.0.4}/src/modus/scaffold/templates/skills/modus-init/references/workspace-init.md +10 -1
- {openmodus-0.0.3 → openmodus-0.0.4}/src/modus/scaffold/templates/skills/modus-reinit/SKILL.md +1 -1
- {openmodus-0.0.3 → openmodus-0.0.4}/src/modus/scaffold/templates/skills/modus-sync-knowledge/SKILL.md +1 -1
- {openmodus-0.0.3 → openmodus-0.0.4}/src/modus/scaffold/templates/skills/modus-update-knowledge/SKILL.md +1 -1
- {openmodus-0.0.3 → openmodus-0.0.4}/src/modus/scaffold/templates/skills/using-modus/SKILL.md +6 -1
- {openmodus-0.0.3 → openmodus-0.0.4}/src/modus/scaffold/templates/skills/using-modus/references/authoring/domain-worker-prompt.md +9 -1
- {openmodus-0.0.3 → openmodus-0.0.4}/src/modus/scaffold/templates/skills/using-modus/references/authoring/evidence/index.md +4 -0
- {openmodus-0.0.3 → openmodus-0.0.4}/src/modus/scaffold/templates/skills/using-modus/references/authoring/evidence/language-adapters/dotnet.md +4 -0
- {openmodus-0.0.3 → openmodus-0.0.4}/src/modus/scaffold/templates/skills/using-modus/references/authoring/evidence/language-adapters/generic.md +4 -0
- {openmodus-0.0.3 → openmodus-0.0.4}/src/modus/scaffold/templates/skills/using-modus/references/authoring/evidence/language-adapters/go.md +4 -0
- {openmodus-0.0.3 → openmodus-0.0.4}/src/modus/scaffold/templates/skills/using-modus/references/authoring/evidence/language-adapters/iac.md +4 -0
- {openmodus-0.0.3 → openmodus-0.0.4}/src/modus/scaffold/templates/skills/using-modus/references/authoring/evidence/language-adapters/index.md +5 -1
- {openmodus-0.0.3 → openmodus-0.0.4}/src/modus/scaffold/templates/skills/using-modus/references/authoring/evidence/language-adapters/java.md +4 -0
- {openmodus-0.0.3 → openmodus-0.0.4}/src/modus/scaffold/templates/skills/using-modus/references/authoring/evidence/language-adapters/kotlin.md +4 -0
- {openmodus-0.0.3 → openmodus-0.0.4}/src/modus/scaffold/templates/skills/using-modus/references/authoring/evidence/language-adapters/native.md +4 -0
- {openmodus-0.0.3 → openmodus-0.0.4}/src/modus/scaffold/templates/skills/using-modus/references/authoring/evidence/language-adapters/php.md +4 -0
- {openmodus-0.0.3 → openmodus-0.0.4}/src/modus/scaffold/templates/skills/using-modus/references/authoring/evidence/language-adapters/python.md +4 -0
- {openmodus-0.0.3 → openmodus-0.0.4}/src/modus/scaffold/templates/skills/using-modus/references/authoring/evidence/language-adapters/rust.md +4 -0
- {openmodus-0.0.3 → openmodus-0.0.4}/src/modus/scaffold/templates/skills/using-modus/references/authoring/evidence/language-adapters/typescript.md +4 -0
- {openmodus-0.0.3 → openmodus-0.0.4}/src/modus/scaffold/templates/skills/using-modus/references/authoring/evidence/machine-packet.md +8 -0
- {openmodus-0.0.3 → openmodus-0.0.4}/src/modus/scaffold/templates/skills/using-modus/references/authoring/evidence/scenario-closure.md +6 -0
- {openmodus-0.0.3 → openmodus-0.0.4}/src/modus/scaffold/templates/skills/using-modus/references/authoring/evidence/scope-modeling.md +1 -1
- {openmodus-0.0.3 → openmodus-0.0.4}/src/modus/scaffold/templates/skills/using-modus/references/authoring/framework/deliverables/api.md +6 -1
- {openmodus-0.0.3 → openmodus-0.0.4}/src/modus/scaffold/templates/skills/using-modus/references/authoring/framework/deliverables/business.md +5 -1
- {openmodus-0.0.3 → openmodus-0.0.4}/src/modus/scaffold/templates/skills/using-modus/references/authoring/framework/deliverables/collaboration.md +5 -1
- {openmodus-0.0.3 → openmodus-0.0.4}/src/modus/scaffold/templates/skills/using-modus/references/authoring/framework/deliverables/domain.md +12 -6
- {openmodus-0.0.3 → openmodus-0.0.4}/src/modus/scaffold/templates/skills/using-modus/references/authoring/framework/deliverables/infrastructure.md +6 -1
- {openmodus-0.0.3 → openmodus-0.0.4}/src/modus/scaffold/templates/skills/using-modus/references/authoring/framework/deliverables/module.md +14 -6
- {openmodus-0.0.3 → openmodus-0.0.4}/src/modus/scaffold/templates/skills/using-modus/references/authoring/framework/deliverables/object.md +6 -1
- {openmodus-0.0.3 → openmodus-0.0.4}/src/modus/scaffold/templates/skills/using-modus/references/authoring/framework/deliverables/root.md +10 -4
- {openmodus-0.0.3 → openmodus-0.0.4}/src/modus/scaffold/templates/skills/using-modus/references/authoring/framework/deliverables/rule.md +5 -1
- {openmodus-0.0.3 → openmodus-0.0.4}/src/modus/scaffold/templates/skills/using-modus/references/authoring/framework/deliverables/state-machine.md +6 -1
- {openmodus-0.0.3 → openmodus-0.0.4}/src/modus/scaffold/templates/skills/using-modus/references/authoring/framework/deliverables/team-standard.md +6 -1
- {openmodus-0.0.3 → openmodus-0.0.4}/src/modus/scaffold/templates/skills/using-modus/references/authoring/framework/deliverables/topics.md +5 -0
- {openmodus-0.0.3 → openmodus-0.0.4}/src/modus/scaffold/templates/skills/using-modus/references/authoring/framework/index.md +5 -0
- {openmodus-0.0.3 → openmodus-0.0.4}/src/modus/scaffold/templates/skills/using-modus/references/authoring/framework/layout.md +5 -0
- {openmodus-0.0.3 → openmodus-0.0.4}/src/modus/scaffold/templates/skills/using-modus/references/authoring/framework/localization.md +4 -2
- {openmodus-0.0.3 → openmodus-0.0.4}/src/modus/scaffold/templates/skills/using-modus/references/authoring/framework/surface-profiles.md +5 -1
- {openmodus-0.0.3 → openmodus-0.0.4}/src/modus/scaffold/templates/skills/using-modus/references/authoring/framework/visual-expression.md +7 -0
- {openmodus-0.0.3 → openmodus-0.0.4}/src/modus/scaffold/templates/skills/using-modus/references/authoring/index.md +4 -0
- {openmodus-0.0.3 → openmodus-0.0.4}/src/modus/scaffold/templates/skills/using-modus/references/authoring/parallel-domain-authoring.md +9 -2
- {openmodus-0.0.3 → openmodus-0.0.4}/src/modus/scaffold/templates/skills/using-modus/references/authoring/publication.md +7 -0
- {openmodus-0.0.3 → openmodus-0.0.4}/src/modus/scaffold/templates/skills/using-modus/references/constraint-usage.md +5 -0
- {openmodus-0.0.3 → openmodus-0.0.4}/src/modus/scaffold/templates/skills/using-modus/references/framework-update.md +4 -0
- {openmodus-0.0.3 → openmodus-0.0.4}/src/modus/scaffold/templates/skills/using-modus/references/router-details.md +6 -0
- {openmodus-0.0.3 → openmodus-0.0.4}/src/modus/scaffold/writer.py +5 -9
- {openmodus-0.0.3 → openmodus-0.0.4}/src/modus/schema_resources.py +4 -4
- {openmodus-0.0.3 → openmodus-0.0.4}/src/modus/scope_models.py +66 -40
- {openmodus-0.0.3 → openmodus-0.0.4}/src/modus/scope_resolver.py +4 -0
- {openmodus-0.0.3 → openmodus-0.0.4}/src/modus/sensitive_literals.py +5 -0
- {openmodus-0.0.3 → openmodus-0.0.4}/src/modus/skillmd.py +16 -10
- {openmodus-0.0.3 → openmodus-0.0.4}/src/modus/source_listing.py +7 -0
- {openmodus-0.0.3 → openmodus-0.0.4}/src/modus/surface.py +1 -1
- {openmodus-0.0.3 → openmodus-0.0.4}/src/modus/versioning.py +1 -1
- {openmodus-0.0.3 → openmodus-0.0.4}/src/modus/workspace.py +83 -180
- openmodus-0.0.4/src/modus/workspace_maps.py +172 -0
- openmodus-0.0.4/tests/README.md +41 -0
- {openmodus-0.0.3 → openmodus-0.0.4}/tests/_support/analysis.py +2 -0
- {openmodus-0.0.3 → openmodus-0.0.4}/tests/_support/markdown.py +3 -0
- openmodus-0.0.4/tests/_support/sensitive_samples.py +13 -0
- {openmodus-0.0.3 → openmodus-0.0.4}/tests/fixtures/simple_service/order/order_repo.py +5 -1
- {openmodus-0.0.3 → openmodus-0.0.4}/tests/fixtures/simple_service/order/order_service.py +6 -2
- {openmodus-0.0.3 → openmodus-0.0.4}/tests/fixtures/simple_service/payment/payment_gateway.py +4 -1
- {openmodus-0.0.3 → openmodus-0.0.4}/tests/fixtures/simple_service/payment/payment_service.py +4 -1
- {openmodus-0.0.3 → openmodus-0.0.4}/tests/machine/test_architecture.py +18 -0
- {openmodus-0.0.3 → openmodus-0.0.4}/tests/machine/test_capability_composer.py +15 -0
- {openmodus-0.0.3 → openmodus-0.0.4}/tests/machine/test_context_builder.py +25 -0
- {openmodus-0.0.3 → openmodus-0.0.4}/tests/machine/test_contracts.py +20 -0
- {openmodus-0.0.3 → openmodus-0.0.4}/tests/machine/test_corpus.py +6 -0
- openmodus-0.0.4/tests/machine/test_extraction_cache_identity.py +46 -0
- {openmodus-0.0.3 → openmodus-0.0.4}/tests/machine/test_language_fixtures.py +81 -37
- {openmodus-0.0.3 → openmodus-0.0.4}/tests/machine/test_lifecycle_degradation.py +10 -0
- {openmodus-0.0.3 → openmodus-0.0.4}/tests/machine/test_progress.py +9 -0
- {openmodus-0.0.3 → openmodus-0.0.4}/tests/machine/test_projection.py +18 -0
- {openmodus-0.0.3 → openmodus-0.0.4}/tests/machine/test_public_contracts.py +14 -0
- {openmodus-0.0.3 → openmodus-0.0.4}/tests/machine/test_states.py +10 -0
- {openmodus-0.0.3 → openmodus-0.0.4}/tests/machine/test_store_validation.py +42 -0
- {openmodus-0.0.3 → openmodus-0.0.4}/tests/test_analysis_pipeline.py +39 -0
- {openmodus-0.0.3 → openmodus-0.0.4}/tests/test_cli_boundaries.py +17 -0
- openmodus-0.0.4/tests/test_cli_localization.py +234 -0
- {openmodus-0.0.3 → openmodus-0.0.4}/tests/test_documented_cli.py +13 -0
- {openmodus-0.0.3 → openmodus-0.0.4}/tests/test_evidence_selection.py +32 -0
- {openmodus-0.0.3 → openmodus-0.0.4}/tests/test_hooks.py +21 -5
- {openmodus-0.0.3 → openmodus-0.0.4}/tests/test_install_safety.py +15 -2
- {openmodus-0.0.3 → openmodus-0.0.4}/tests/test_knowledge_retrieval.py +46 -2
- {openmodus-0.0.3 → openmodus-0.0.4}/tests/test_knowledge_update.py +66 -0
- {openmodus-0.0.3 → openmodus-0.0.4}/tests/test_orchestrator.py +12 -3
- {openmodus-0.0.3 → openmodus-0.0.4}/tests/test_platforms.py +14 -3
- {openmodus-0.0.3 → openmodus-0.0.4}/tests/test_project_lifecycle.py +44 -7
- {openmodus-0.0.3 → openmodus-0.0.4}/tests/test_release_smoke.py +20 -5
- {openmodus-0.0.3 → openmodus-0.0.4}/tests/test_scaffold.py +15 -4
- {openmodus-0.0.3 → openmodus-0.0.4}/tests/test_sensitive_literals.py +19 -3
- {openmodus-0.0.3 → openmodus-0.0.4}/tests/test_verify_knowledge.py +35 -2
- {openmodus-0.0.3 → openmodus-0.0.4}/tests/test_workspace_lifecycle.py +14 -0
- {openmodus-0.0.3 → openmodus-0.0.4}/uv.lock +1 -1
- openmodus-0.0.3/ARCHITECTURE.md +0 -122
- openmodus-0.0.3/CONTRIBUTING.md +0 -82
- openmodus-0.0.3/docs/authoring-contract.md +0 -397
- openmodus-0.0.3/docs/knowledge-lifecycle-boundary.md +0 -562
- openmodus-0.0.3/scripts/README.md +0 -34
- openmodus-0.0.3/src/modus/activation_guidance.py +0 -31
- openmodus-0.0.3/src/modus/artifacts_io.py +0 -1066
- openmodus-0.0.3/src/modus/cli_commands/__init__.py +0 -6
- openmodus-0.0.3/src/modus/cli_commands/common.py +0 -130
- openmodus-0.0.3/src/modus/command_reference.py +0 -382
- openmodus-0.0.3/src/modus/commands/init_report.py +0 -193
- openmodus-0.0.3/src/modus/machine/ARCHITECTURE.md +0 -121
- openmodus-0.0.3/src/modus/machine/README.md +0 -142
- openmodus-0.0.3/src/modus/machine/capability/README.md +0 -10
- openmodus-0.0.3/src/modus/machine/corpus/README.md +0 -9
- openmodus-0.0.3/src/modus/machine/corpus/source_coordinates.py +0 -80
- openmodus-0.0.3/src/modus/machine/facts/README.md +0 -11
- openmodus-0.0.3/src/modus/machine/facts/build_resolvers/cpp_resolver.py +0 -173
- openmodus-0.0.3/src/modus/machine/facts/frontend.py +0 -1425
- openmodus-0.0.3/src/modus/machine/facts/provider_assets/modus_go_analyzer.go +0 -367
- openmodus-0.0.3/src/modus/machine/packet/README.md +0 -18
- openmodus-0.0.3/src/modus/machine/projection/README.md +0 -9
- openmodus-0.0.3/src/modus/machine/resolution/README.md +0 -9
- openmodus-0.0.3/src/modus/machine/resolution/topology.py +0 -1539
- openmodus-0.0.3/src/modus/orchestrator/README.md +0 -67
- openmodus-0.0.3/src/modus/retrieval/README.md +0 -64
- openmodus-0.0.3/src/modus/retrieval/runtime.py +0 -39
- openmodus-0.0.3/src/modus/scaffold/README.md +0 -74
- openmodus-0.0.3/src/modus/scaffold/templates/README.md +0 -42
- openmodus-0.0.3/tests/README.md +0 -51
- {openmodus-0.0.3 → openmodus-0.0.4}/.gitignore +0 -0
- {openmodus-0.0.3 → openmodus-0.0.4}/LICENSE +0 -0
- {openmodus-0.0.3 → openmodus-0.0.4}/schemas/machine/analysis-receipt.schema.json +0 -0
- {openmodus-0.0.3 → openmodus-0.0.4}/schemas/machine/authoring-context-packet.schema.json +0 -0
- {openmodus-0.0.3 → openmodus-0.0.4}/schemas/machine/capability-slice.schema.json +0 -0
- {openmodus-0.0.3 → openmodus-0.0.4}/schemas/machine/evidence-page.schema.json +0 -0
- {openmodus-0.0.3 → openmodus-0.0.4}/schemas/module-meta.schema.yaml +0 -0
- {openmodus-0.0.3 → openmodus-0.0.4}/scripts/package_smoke.py +0 -0
- {openmodus-0.0.3 → openmodus-0.0.4}/scripts/release_smoke/__init__.py +0 -0
- {openmodus-0.0.3 → openmodus-0.0.4}/scripts/release_smoke/diagnostics.py +0 -0
- {openmodus-0.0.3 → openmodus-0.0.4}/src/modus/__main__.py +0 -0
- {openmodus-0.0.3 → openmodus-0.0.4}/src/modus/commands/__init__.py +0 -0
- {openmodus-0.0.3 → openmodus-0.0.4}/src/modus/commands/context_cmd.py +0 -0
- {openmodus-0.0.3 → openmodus-0.0.4}/src/modus/commands/permission_errors.py +0 -0
- {openmodus-0.0.3 → openmodus-0.0.4}/src/modus/hooks/__init__.py +0 -0
- {openmodus-0.0.3 → openmodus-0.0.4}/src/modus/hooks/context.py +0 -0
- {openmodus-0.0.3 → openmodus-0.0.4}/src/modus/knowledge_verification/__init__.py +0 -0
- {openmodus-0.0.3 → openmodus-0.0.4}/src/modus/knowledge_verification/models.py +0 -0
- {openmodus-0.0.3 → openmodus-0.0.4}/src/modus/machine/__init__.py +0 -0
- {openmodus-0.0.3 → openmodus-0.0.4}/src/modus/machine/api.py +0 -0
- {openmodus-0.0.3 → openmodus-0.0.4}/src/modus/machine/capability/__init__.py +0 -0
- {openmodus-0.0.3 → openmodus-0.0.4}/src/modus/machine/capability/composer.py +0 -0
- {openmodus-0.0.3 → openmodus-0.0.4}/src/modus/machine/capability/contracts.py +0 -0
- {openmodus-0.0.3 → openmodus-0.0.4}/src/modus/machine/capability/lifecycle.py +0 -0
- {openmodus-0.0.3 → openmodus-0.0.4}/src/modus/machine/corpus/__init__.py +0 -0
- {openmodus-0.0.3 → openmodus-0.0.4}/src/modus/machine/corpus/contracts.py +0 -0
- {openmodus-0.0.3 → openmodus-0.0.4}/src/modus/machine/corpus/source_filters.py +0 -0
- {openmodus-0.0.3 → openmodus-0.0.4}/src/modus/machine/corpus/source_snapshot.py +0 -0
- {openmodus-0.0.3 → openmodus-0.0.4}/src/modus/machine/errors.py +0 -0
- {openmodus-0.0.3 → openmodus-0.0.4}/src/modus/machine/facts/__init__.py +0 -0
- {openmodus-0.0.3 → openmodus-0.0.4}/src/modus/machine/facts/compiler/__init__.py +0 -0
- {openmodus-0.0.3 → openmodus-0.0.4}/src/modus/machine/facts/compiler/cache.py +0 -0
- {openmodus-0.0.3 → openmodus-0.0.4}/src/modus/machine/facts/frontend_frameworks.py +0 -0
- {openmodus-0.0.3 → openmodus-0.0.4}/src/modus/machine/facts/frontend_routes.py +0 -0
- {openmodus-0.0.3 → openmodus-0.0.4}/src/modus/machine/facts/language_capabilities.py +0 -0
- {openmodus-0.0.3 → openmodus-0.0.4}/src/modus/machine/facts/provider_assets/modus_typescript_analyzer.cjs +0 -0
- {openmodus-0.0.3 → openmodus-0.0.4}/src/modus/machine/implementation.py +0 -0
- {openmodus-0.0.3 → openmodus-0.0.4}/src/modus/machine/language-registry.json +0 -0
- {openmodus-0.0.3 → openmodus-0.0.4}/src/modus/machine/packet/__init__.py +0 -0
- {openmodus-0.0.3 → openmodus-0.0.4}/src/modus/machine/packet/contracts.py +0 -0
- {openmodus-0.0.3 → openmodus-0.0.4}/src/modus/machine/packet/lifecycle.py +0 -0
- {openmodus-0.0.3 → openmodus-0.0.4}/src/modus/machine/progress.py +0 -0
- {openmodus-0.0.3 → openmodus-0.0.4}/src/modus/machine/projection/__init__.py +0 -0
- {openmodus-0.0.3 → openmodus-0.0.4}/src/modus/machine/projection/community_signal.py +0 -0
- {openmodus-0.0.3 → openmodus-0.0.4}/src/modus/machine/projection/contracts.py +0 -0
- {openmodus-0.0.3 → openmodus-0.0.4}/src/modus/machine/receipts.py +0 -0
- {openmodus-0.0.3 → openmodus-0.0.4}/src/modus/machine/resolution/__init__.py +0 -0
- {openmodus-0.0.3 → openmodus-0.0.4}/src/modus/machine/resolution/contracts.py +0 -0
- {openmodus-0.0.3 → openmodus-0.0.4}/src/modus/machine/resolution/topology_model.py +0 -0
- {openmodus-0.0.3 → openmodus-0.0.4}/src/modus/machine/runtime/__init__.py +0 -0
- {openmodus-0.0.3 → openmodus-0.0.4}/src/modus/machine/runtime/resources.py +0 -0
- {openmodus-0.0.3 → openmodus-0.0.4}/src/modus/machine/runtime/toolchains.py +0 -0
- {openmodus-0.0.3 → openmodus-0.0.4}/src/modus/machine/states.py +0 -0
- {openmodus-0.0.3 → openmodus-0.0.4}/src/modus/machine/store/__init__.py +0 -0
- {openmodus-0.0.3 → openmodus-0.0.4}/src/modus/machine/store/ids.py +0 -0
- {openmodus-0.0.3 → openmodus-0.0.4}/src/modus/orchestrator/__init__.py +0 -0
- {openmodus-0.0.3 → openmodus-0.0.4}/src/modus/orchestrator/fallback.py +0 -0
- {openmodus-0.0.3 → openmodus-0.0.4}/src/modus/orchestrator/query_terms.py +0 -0
- {openmodus-0.0.3 → openmodus-0.0.4}/src/modus/platforms/__init__.py +0 -0
- {openmodus-0.0.3 → openmodus-0.0.4}/src/modus/platforms/base.py +0 -0
- {openmodus-0.0.3 → openmodus-0.0.4}/src/modus/platforms/claude.py +0 -0
- {openmodus-0.0.3 → openmodus-0.0.4}/src/modus/platforms/codex.py +0 -0
- {openmodus-0.0.3 → openmodus-0.0.4}/src/modus/project_activation.py +0 -0
- {openmodus-0.0.3 → openmodus-0.0.4}/src/modus/py.typed +0 -0
- {openmodus-0.0.3 → openmodus-0.0.4}/src/modus/retrieval/__init__.py +0 -0
- {openmodus-0.0.3 → openmodus-0.0.4}/src/modus/retrieval/budget.py +0 -0
- {openmodus-0.0.3 → openmodus-0.0.4}/src/modus/retrieval/stages/__init__.py +0 -0
- {openmodus-0.0.3 → openmodus-0.0.4}/src/modus/retrieval/stages/sections.py +0 -0
- {openmodus-0.0.3 → openmodus-0.0.4}/src/modus/retrieval/stages/settings.py +0 -0
- {openmodus-0.0.3 → openmodus-0.0.4}/src/modus/scaffold/templates/commands/init.md +0 -0
- {openmodus-0.0.3 → openmodus-0.0.4}/src/modus/scaffold/templates/commands/reinit.md +0 -0
- {openmodus-0.0.3 → openmodus-0.0.4}/src/modus/scaffold/templates/commands/update-knowledge.md +0 -0
- {openmodus-0.0.3 → openmodus-0.0.4}/src/modus/scaffold/templates/skills/modus-init/references/constraint-extraction.md +0 -0
- {openmodus-0.0.3 → openmodus-0.0.4}/src/modus/text_tree.py +0 -0
- {openmodus-0.0.3 → openmodus-0.0.4}/tests/_support/__init__.py +0 -0
- {openmodus-0.0.3 → openmodus-0.0.4}/tests/_support/paths.py +0 -0
|
@@ -0,0 +1,123 @@
|
|
|
1
|
+
# 架构设计
|
|
2
|
+
|
|
3
|
+
Modus 将三个生命周期分开管理:**接入资产让工作流可用,初始化分析提供可丢弃的证据,经过评审的 Markdown 保存长期知识**。日常检索读取当前源码与知识正文,不重建或重开初始化数据。模块围绕各自拥有的数据、失败语义与变更边界划分。
|
|
4
|
+
|
|
5
|
+
<!--
|
|
6
|
+
阅读入口按职责排列;新增入口时核对真实的模块所有者。
|
|
7
|
+
-->
|
|
8
|
+
|
|
9
|
+
## 从这里开始阅读
|
|
10
|
+
|
|
11
|
+
1. [CLI 组合入口](src/modus/cli.py):五个公开命令与供技能调用的内部适配器。
|
|
12
|
+
2. [项目安装](src/modus/commands/init_project.py):预检、计划写入、回滚与清单发布。
|
|
13
|
+
3. [分析 API](src/modus/machine/api.py):构建、验证后打开、证据筛选与创作上下文。
|
|
14
|
+
4. [上下文解析](src/modus/orchestrator/context_resolver.py):一个请求、一个共享预算、一份当前证据。
|
|
15
|
+
5. [知识更新](src/modus/knowledge_update.py)与[写入会话](src/modus/knowledge_write_session.py):所有权、读取时哈希、并发冲突与原子发布。
|
|
16
|
+
|
|
17
|
+
<!--
|
|
18
|
+
依赖方向与写入所有权同时约束扩展,不能仅凭导入无环判断分层。
|
|
19
|
+
-->
|
|
20
|
+
|
|
21
|
+
## 依赖与所有权
|
|
22
|
+
|
|
23
|
+
```mermaid
|
|
24
|
+
flowchart TB
|
|
25
|
+
CLI[CLI 组合入口] --> Terminal[终端适配器]
|
|
26
|
+
Terminal --> Commands[应用命令]
|
|
27
|
+
Terminal --> Machine[初始化分析]
|
|
28
|
+
Terminal --> Display[中文帮助与诊断]
|
|
29
|
+
Commands --> Install[模板与平台适配]
|
|
30
|
+
Commands --> Orchestration[上下文与影响编排]
|
|
31
|
+
Orchestration --> Retrieval[当前 Markdown 与源码检索]
|
|
32
|
+
Commands --> Verify[知识完整性核验]
|
|
33
|
+
Commands --> Writes[知识写入会话]
|
|
34
|
+
Install --> Manifest[所有权清单]
|
|
35
|
+
Machine --> Cache[临时证据包]
|
|
36
|
+
Writes --> Knowledge[长期 Markdown 知识]
|
|
37
|
+
```
|
|
38
|
+
|
|
39
|
+
| 边界 | 所有者 | 扩展规则 |
|
|
40
|
+
| --- | --- | --- |
|
|
41
|
+
| 命令树与全局参数 | `cli.py` | 显式注册公开入口,不承载工作流实现 |
|
|
42
|
+
| 参数、交互、流与退出码 | `cli_commands/` | 按工作流拆分适配器,不修改 Click 全局状态 |
|
|
43
|
+
| 中文帮助与解析错误 | `cli_commands/presentation.py` | 从已注册参数生成帮助,仅适配框架固定句式 |
|
|
44
|
+
| 分析进度与恢复提示 | `cli_commands/analysis_display.py` | 转换展示副本,不改证据、摘要或 JSON 契约 |
|
|
45
|
+
| 协议值的展示名称 | `display_labels.py` | 终端与 Markdown 复用;未知值保留原标识 |
|
|
46
|
+
| 安装与维护事务 | `commands/` | 返回结构化结果,展示由 `*_report.py` 负责 |
|
|
47
|
+
| 平台中立的工作流分发 | `scaffold/` | 验证静态模板并记录资产所有权 |
|
|
48
|
+
| 宿主差异 | `platforms/`、`hooks/` | 声明布局,复用合并与卸载契约;`platforms/display.py` 统一平台显示名与交互顺序 |
|
|
49
|
+
| 初始化分析 | `machine/` | 单向语义阶段,显式覆盖缺口 |
|
|
50
|
+
| 任务编排 | `orchestrator/` | 组合证据与策略,不拥有搜索算法或写入 |
|
|
51
|
+
| 检索 | `retrieval/` | 共享截止时间与输出预算,明确返回部分结果 |
|
|
52
|
+
| 完整性 | `knowledge_verification/` | 报告客观缺陷,不给正文质量打分 |
|
|
53
|
+
| 长期写入 | `knowledge_write_session.py` | 路径约束、所有权、哈希条件写入、锁与原子替换 |
|
|
54
|
+
|
|
55
|
+
<!--
|
|
56
|
+
机器层的确定性不等于业务结论的完整性,二者各有验收责任。
|
|
57
|
+
-->
|
|
58
|
+
|
|
59
|
+
## 分析证据是创作输入
|
|
60
|
+
|
|
61
|
+
```text
|
|
62
|
+
N1 源码基线 → N2 程序事实 → N3 关系解析 → N4 能力模型 → N5 创作投影 → N6 证据包
|
|
63
|
+
```
|
|
64
|
+
|
|
65
|
+
后续阶段消费前序契约。投影与打包不能重新读取源码来补造缺失观察。存储与资源策略不依赖任何语义阶段。[架构测试](tests/machine/test_architecture.py)检查这些方向,包括函数内的延迟导入。
|
|
66
|
+
|
|
67
|
+
可选解析器或编译器缺失,只产生对应范围的覆盖回执。契约、完整性、输入漂移或必需工具失败会中止本轮。完整证据包经过核验后才原子发布;失败不能替换已有完整包,也不能把旧包当作当前证据。消费者必须提供本轮身份,并使用经过认证且有预算限制的查询。
|
|
68
|
+
|
|
69
|
+
[分析层指南](src/modus/machine/README.md)说明扩展注册、进度、摘要与错误码。编译器观察属于 N2;语言适配器无权决定最终业务边界。
|
|
70
|
+
|
|
71
|
+
同一阶段内部继续按责任分解:
|
|
72
|
+
|
|
73
|
+
| 职责 | 组合入口 | 支撑模块 |
|
|
74
|
+
| --- | --- | --- |
|
|
75
|
+
| 原子发布 | [产物 I/O](src/modus/artifacts_io.py) | [原子写入](src/modus/atomic_writes.py)负责描述符绑定与替换;锁与 YAML 加载留在产物 I/O |
|
|
76
|
+
| 文件内解析 | [原生解析器](src/modus/machine/facts/native_parser.py) | [语法契约](src/modus/machine/facts/native_syntax.py)定义语法类别与可移植结果;[访问器](src/modus/machine/facts/native_visitor.py)负责单文件遍历,入口负责解析器选择与生命周期 |
|
|
77
|
+
| 框架观察 | [前端入口](src/modus/machine/facts/frontend.py) | [上下文](src/modus/machine/facts/frontend_context.py)、[状态](src/modus/machine/facts/frontend_state.py)与[服务路由](src/modus/machine/facts/frontend_server.py)共享源码锚点,不执行应用 |
|
|
78
|
+
| 拓扑 | [拓扑组装](src/modus/machine/resolution/topology.py) | [规则](src/modus/machine/resolution/topology_rules.py)、[记录](src/modus/machine/resolution/topology_records.py)与[资源](src/modus/machine/resolution/topology_resources.py)分开处理分类和发布 |
|
|
79
|
+
| 目录投影 | [证据目录](src/modus/machine/store/bundle_catalogs.py) | [范围目录](src/modus/machine/store/scope_catalog.py)拥有范围记录,[构建原语](src/modus/machine/store/catalog_building.py)共享规范化操作 |
|
|
80
|
+
| 工作区地图 | [工作区服务](src/modus/workspace.py) | [地图渲染](src/modus/workspace_maps.py)只消费观察,不读写成员仓库 |
|
|
81
|
+
|
|
82
|
+
移动解析实现时必须同步实现指纹。观察结果的缓存身份要随访问器或语法契约变化而失效,仅以源码内容作为缓存键不够。
|
|
83
|
+
|
|
84
|
+
<!--
|
|
85
|
+
人工正文的所有权与分析缓存不同,重建证据不得覆盖人工知识。
|
|
86
|
+
-->
|
|
87
|
+
|
|
88
|
+
## 长期知识有独立的生命周期
|
|
89
|
+
|
|
90
|
+
| 接入项目中的位置 | 生命周期与权限 |
|
|
91
|
+
| --- | --- |
|
|
92
|
+
| `.modus/` 与平台接入文件 | 框架受管资产,由清单保护用户修改 |
|
|
93
|
+
| `modus/.cache/` | 可丢弃的分析与临时创作状态 |
|
|
94
|
+
| `modus/knowledge/` | 经评审、随项目版本管理的 Markdown |
|
|
95
|
+
| 知识中的 `business/` 与 `constraint/` | 默认由人工维护,自动化修改需要明确授权 |
|
|
96
|
+
|
|
97
|
+
[创作契约](docs/authoring-contract.md)区分证据闭环、面向读者的正文与发布。机器建议指导调查,当前源码、测试、配置与明确材料确立事实。结构核验 `clean` 不等于业务事实正确或正文清晰。
|
|
98
|
+
|
|
99
|
+
写入使用准备修改时观察到的哈希。并发修改形成冲突,不被覆盖。迁移先建立新主定义、修复链接,再删除旧生成文件。知识更新批次按文件报告独立结果,不承诺全批回滚;安装事务则对计划目标创建快照,失败时尝试精确回滚,并明确报告恢复不完整。
|
|
100
|
+
|
|
101
|
+
<!--
|
|
102
|
+
日常读取使用当前项目内容,初始化数据不是长期检索索引。
|
|
103
|
+
-->
|
|
104
|
+
|
|
105
|
+
## 检索始终面向当前项目
|
|
106
|
+
|
|
107
|
+
[编排层](src/modus/orchestrator/README.md)选择范围并组装协议;[检索管线](src/modus/retrieval/README.md)负责渐进发现 Markdown、词法与结构排序、源码采集和交付。整个请求共用一个预算,缺失证据、不安全文件与截断都可见。运行时不能用初始化缓存替代当前源码。
|
|
108
|
+
|
|
109
|
+
仅在执行分析命令时导入分析依赖。帮助、状态、安装和普通源码/Markdown 检索不提前加载解析器、图依赖或分析管线。
|
|
110
|
+
|
|
111
|
+
<!--
|
|
112
|
+
展示语言可本地化,稳定命令、字段和错误码仍保持机器兼容。
|
|
113
|
+
-->
|
|
114
|
+
|
|
115
|
+
## 中文体验与公开契约
|
|
116
|
+
|
|
117
|
+
面向用户的帮助、交互、诊断、生成知识和维护文档默认使用简体中文。命令名、参数、路径、Python 标识、JSON 字段、状态值与稳定错误码保持协议原样。用户明确指定其他正文语言时,创作工作流遵从该要求。
|
|
118
|
+
|
|
119
|
+
中文化在拥有文本的边界完成:命令目录维护语义说明,报告模块维护结果展示,终端层适配框架默认提示,模板维护创作约定。错误信息说明问题与恢复动作,第三方工具的原始诊断可作为细节保留。不得通过全局猴子补丁、整段输出替换或改写传输字段实现本地化。
|
|
120
|
+
|
|
121
|
+
增加宿主时扩展经过验证的平台注册表;增加语言时同步声明、版本化实现与支持/降级夹具;增加检索信号时修改其所属阶段。不要仅为缩短文件创建抽象,只有所有者、生命周期或失败策略不同才拆分。
|
|
122
|
+
|
|
123
|
+
[贡献指南](CONTRIBUTING.md)说明命名、注释与验证要求。[发布工具](scripts/README.md)检查源码包和 wheel,并脱离源码仓库运行已安装产物。
|
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
<!--
|
|
2
|
+
开发工具版本与锁文件一起维护,指南不维护第二套依赖约束。
|
|
3
|
+
评审关注可观察行为与所有权,不用格式改动代替设计说明。
|
|
4
|
+
新增边界应说明输入、失败结果与兼容性。
|
|
5
|
+
语言约定只改变展示,机器字段和稳定路径保持原义。
|
|
6
|
+
本地验证结果需注明环境,未运行的平台不作通过承诺。
|
|
7
|
+
-->
|
|
8
|
+
|
|
9
|
+
# 参与贡献
|
|
10
|
+
|
|
11
|
+
先阅读[架构设计](ARCHITECTURE.md),再进入待修改模块的 README。一项变更应围绕一个可观察行为或一个所有权边界展开。提交说明写清问题、修改后的行为与相关验证,便于未参与讨论的维护者评审。
|
|
12
|
+
|
|
13
|
+
## 本地开发
|
|
14
|
+
|
|
15
|
+
使用 Python 3.11–3.14,在 Git 工作区按已提交的 uv 锁文件安装:
|
|
16
|
+
|
|
17
|
+
```bash
|
|
18
|
+
uv sync --locked --extra test
|
|
19
|
+
uv run --locked --extra test pytest -q
|
|
20
|
+
uv run --locked --extra test ruff check src tests scripts
|
|
21
|
+
uv run --locked --extra test ruff format --check src tests scripts
|
|
22
|
+
uv run --locked --extra test mypy
|
|
23
|
+
git diff --check
|
|
24
|
+
```
|
|
25
|
+
|
|
26
|
+
发布前执行 `./scripts/wheel-smoke.sh`:重新构建 wheel 与源码包、检查内容,并运行独立的 wheel 验收。该脚本不发布安装包。源码包附带测试与发布脚本,下游维护者可复现检查。
|
|
27
|
+
|
|
28
|
+
CI 覆盖 Linux 的 Python 3.11–3.14,以及 macOS、Windows 的最低与最高支持版本;Linux/Python 3.14 还执行风格、类型与分发检查。本地结果只代表实际运行的环境。覆盖率用于分析,没有强制百分比门槛。
|
|
29
|
+
|
|
30
|
+
## 命名与模块设计
|
|
31
|
+
|
|
32
|
+
- 组合入口保持声明式:终端适配器拥有参数、交互、输出流和退出码,服务拥有应用行为,报告模块将结构化结果转为读者可理解的文本。
|
|
33
|
+
- 模块以其职责命名。Python 使用 `snake_case`,类型使用 `PascalCase`,JSON 键遵守既有模式。稳定 ID 与路径独立于中文展示名。
|
|
34
|
+
- 在有意义的边界使用带类型的值对象。优先扩展现有所有者,避免泛化工具层、可变全局注册表和没有消费者的兼容别名。
|
|
35
|
+
- 按数据所有权、生命周期或失败策略拆分模块;不为行数或表面整齐制造层级。
|
|
36
|
+
- 区分精确观察、候选、启发式与未解析关系。可选能力缺口可降级,漂移、损坏和无效契约必须阻止错误结果继续传播。
|
|
37
|
+
- 在能解释异常的边界捕获预期异常,保留异常原因。面向用户说明失败对象、当前结果与恢复动作,不以笼统成功掩盖部分失败。
|
|
38
|
+
- 写入需证明所有权、路径约束与并发行为。逐文件原子性不等于批量事务回滚。
|
|
39
|
+
|
|
40
|
+
## 注释与文档语言
|
|
41
|
+
|
|
42
|
+
默认使用简体中文编写 CLI 提示、维护文档和面向用户的知识。新增或实质修改的注释、文档字符串优先用中文说明**为何如此、边界是什么、失败时谁负责**;不要逐句复述代码。现有解析算法中的英文技术说明可在相关模块改动时逐步整理,外部协议、术语与原始诊断保留必要拼写。
|
|
43
|
+
|
|
44
|
+
[README.md](README.md)是默认中文入口,[英文版](READMEs/README.en.md)是明确独立的翻译版。安装、命令或支持范围变化时同步维护两者。
|
|
45
|
+
|
|
46
|
+
语言边界遵循以下规则:
|
|
47
|
+
|
|
48
|
+
| 内容 | 约定 |
|
|
49
|
+
| --- | --- |
|
|
50
|
+
| 帮助、确认、预览、进度、恢复建议 | 简体中文 |
|
|
51
|
+
| 新创作的知识与生成的工作区导航 | 默认简体中文;用户明确指定其他语言时遵从 |
|
|
52
|
+
| 命令、参数、路径、slug、源码标识 | 保持原样 |
|
|
53
|
+
| JSON 字段、枚举状态、诊断码与摘要 | 保持机器契约;说明文本可使用中文 |
|
|
54
|
+
| 多语言检索词、Unicode 测试数据、第三方错误细节 | 保留原始含义,不机械翻译 |
|
|
55
|
+
|
|
56
|
+
帮助从实际注册参数生成;命令语义放在 `command_reference.py`,通用交互放在 `cli_commands/presentation.py`,分析展示放在 `cli_commands/analysis_display.py`,协议值显示名放在 `display_labels.py`。不得修改 Click/Typer 的全局类、私有常量或整段替换用户输出。
|
|
57
|
+
|
|
58
|
+
`src/modus/scaffold/templates/` 是随包交付的产品契约,Python 直接读取这些资源,不另存一份竞争性正文规范。其[本地化约定](src/modus/scaffold/templates/skills/using-modus/references/authoring/framework/localization.md)规定默认语言与局部修订边界。
|
|
59
|
+
|
|
60
|
+
设计规则放在负责它的文档中,其他指南通过链接引用。文件名保持稳定、含义明确。创作设计与安装后的参考必须同步更新;相对链接和命令示例会按仓库与真实 CLI 注册情况检查。
|
|
61
|
+
|
|
62
|
+
## 测试与扩展
|
|
63
|
+
|
|
64
|
+
参见[测试地图](tests/README.md)。行为修复应覆盖有意义的成功、失败及用户数据保留场景。避免对偶然句式、辅助函数结构或输出长度做质量断言;语言回归可以检查中文语义与协议稳定性。
|
|
65
|
+
|
|
66
|
+
新增平台需覆盖安装、幂等、共享文件、升级、用户修改保护与卸载。新增语言需覆盖声明、实现版本、观察结果与缺失工具链降级。模式或公开 CLI 变更需说明兼容性影响并更新文档。只在安装后才可能暴露的问题放入产物与运行时冒烟检查。
|
|
67
|
+
|
|
68
|
+
迭代时执行最小相关检查,提交前跑完整验证。明确说明未执行的检查与原因,不把本地验证表述为跨平台 CI 已通过。
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
Metadata-Version: 2.5
|
|
2
2
|
Name: openmodus
|
|
3
|
-
Version: 0.0.
|
|
4
|
-
Summary:
|
|
3
|
+
Version: 0.0.4
|
|
4
|
+
Summary: 为编程助手构建有证据支撑、可持续维护的项目知识。
|
|
5
5
|
Author: Modus contributors
|
|
6
6
|
License-Expression: MIT
|
|
7
7
|
License-File: LICENSE
|
|
@@ -76,6 +76,7 @@ Description-Content-Type: text/markdown
|
|
|
76
76
|
|
|
77
77
|
[](https://pypi.org/project/openmodus/)
|
|
78
78
|

|
|
79
|
+
<!-- NOCA:AllFileLicenseCheck(项目许可声明与根目录协议及包元数据一致) -->
|
|
79
80
|
[](LICENSE)
|
|
80
81
|
|
|
81
82
|
[**简体中文**](README.md) · [English](READMEs/README.en.md)
|
|
@@ -94,22 +95,42 @@ Modus 将源码与业务材料梳理成可核验的项目知识库,让 Coding
|
|
|
94
95
|
|
|
95
96
|
---
|
|
96
97
|
|
|
98
|
+
<!--
|
|
99
|
+
产品价值与命令能力对应,维护宣传语时核对当前可执行入口。
|
|
100
|
+
-->
|
|
101
|
+
|
|
97
102
|
## 核心功能
|
|
98
103
|
|
|
99
104
|
Modus 把项目知识作为可维护的工程资产:本地分析提供线索,Agent 与人确认业务含义,Markdown 承载长期结论,日常任务按需使用并随变更修订。
|
|
100
105
|
|
|
106
|
+
<!--
|
|
107
|
+
证据地图说明观察能力,不代表机器已经完成业务知识创作。
|
|
108
|
+
-->
|
|
109
|
+
|
|
101
110
|
### 从证据建立项目地图
|
|
102
111
|
|
|
103
112
|
初始化时,本地分析从源码、构建上下文和可用工具链提取有界证据,帮助定位入口、关系与关键行为。Agent 再回读源码、测试、配置和业务材料,确认系统架构、领域边界与真实场景,将判断写入系统概览、领域、模块及专题文档。
|
|
104
113
|
|
|
114
|
+
<!--
|
|
115
|
+
上下文预算与降级共同约束检索结果,完整性描述必须保留这一前提。
|
|
116
|
+
-->
|
|
117
|
+
|
|
105
118
|
### 为任务渐进装配上下文
|
|
106
119
|
|
|
107
120
|
开发、排障或评审需要项目事实时,Agent 从系统概览进入相关领域、模块与场景,按需联读团队约束,并回到当前源码核验。检索按问题组织知识和实现片段,明确标示证据缺口;日常使用直接读取仓库中的 Markdown 与当前源码,无需重跑初始化分析。
|
|
108
121
|
|
|
122
|
+
<!--
|
|
123
|
+
评审链路依赖普通Markdown与版本控制,不能暗示独立的远端知识服务。
|
|
124
|
+
-->
|
|
125
|
+
|
|
109
126
|
### 让知识进入代码评审链路
|
|
110
127
|
|
|
111
128
|
长期知识以 Markdown 与代码同仓保存。稳定的领域与模块身份、知识链接和结构化源码锚点形成追溯路径;人工维护的业务知识与团队约束有明确所有权,完整性检查负责结构、链接和锚点,让知识变更具有清晰的评审边界。
|
|
112
129
|
|
|
130
|
+
<!--
|
|
131
|
+
维护触发点是长期语义变化,临时实现细节不应沉淀为团队规则。
|
|
132
|
+
-->
|
|
133
|
+
|
|
113
134
|
### 随长期语义变化精确维护
|
|
114
135
|
|
|
115
136
|
代码变更后,Agent 根据本次修改判断职责、契约、规则、状态、依赖、资源或源码锚点是否发生长期变化;确有影响时,在原定义处修订受影响正文并同步相关导航与引用。新增业务材料和局部事实也可以定向更新,使知识随项目演进而保持可用。
|
|
@@ -118,6 +139,10 @@ Modus 把项目知识作为可维护的工程资产:本地分析提供线索
|
|
|
118
139
|
|
|
119
140
|
从源码安装 CLI,接入目标仓库,再由 Agent 基于项目证据创建第一份知识。CLI 负责平台接入;经确认的 Markdown 才是留在仓库中的长期产物。
|
|
120
141
|
|
|
142
|
+
<!--
|
|
143
|
+
安装示例与分发包元数据同步;命令名和Python包名具有不同职责。
|
|
144
|
+
-->
|
|
145
|
+
|
|
121
146
|
### 1. 安装 CLI
|
|
122
147
|
|
|
123
148
|
在 Modus 源码仓库根目录(包含 `pyproject.toml`),使用 [`uv`](https://docs.astral.sh/uv/) 安装 CLI(需要 Python 3.11–3.14):
|
|
@@ -128,6 +153,10 @@ uv tool install .
|
|
|
128
153
|
|
|
129
154
|
也可以从 PyPI 安装发布包:`uv tool install openmodus`。参与 Modus 开发时,使用 `uv tool install --editable .` 可让源码修改直接生效。无论安装来源,命令都是 `modus`。其他安装方式与索引配置见[安装与接入选项](#安装与接入选项)。
|
|
130
155
|
|
|
156
|
+
<!--
|
|
157
|
+
接入过程仅写入框架拥有的资产,用户正文的保护边界保持可见。
|
|
158
|
+
-->
|
|
159
|
+
|
|
131
160
|
### 2. 接入项目
|
|
132
161
|
|
|
133
162
|
进入要使用 Modus 的项目仓库:
|
|
@@ -139,6 +168,10 @@ modus init
|
|
|
139
168
|
|
|
140
169
|
在交互式终端中选择 Claude Code、Codex、Cursor 或 CodeBuddy。CLI 将平台中立的 Skill 与命令安装到项目,再通过对应适配器接入所选平台,并记录受管文件的所有权。脚本接入、多平台接入和安装状态检查见[安装与接入选项](#安装与接入选项)。
|
|
141
170
|
|
|
171
|
+
<!--
|
|
172
|
+
知识创作入口与后续维护入口分开说明,避免将重建作为日常前置。
|
|
173
|
+
-->
|
|
174
|
+
|
|
142
175
|
### 3. 创建项目知识
|
|
143
176
|
|
|
144
177
|
在所选 Coding Agent 中打开该项目,在对话中运行:
|
|
@@ -153,6 +186,10 @@ modus init
|
|
|
153
186
|
|
|
154
187
|
## 为什么需要 Modus
|
|
155
188
|
|
|
189
|
+
<!--
|
|
190
|
+
能力表描述项目已实现的范围,缺失提供方与降级应如实表述。
|
|
191
|
+
-->
|
|
192
|
+
|
|
156
193
|
### 你会得到什么
|
|
157
194
|
|
|
158
195
|
接手一个项目时,找到代码入口只是开始:还需要弄清规则为何存在、什么结果算完成、失败后如何恢复,以及改动要守住哪些边界。Modus 把经源码和可用业务材料核验的长期结论留在仓库,让后续任务从已有理解出发,并继续以当前源码核对实现。
|
|
@@ -170,6 +207,10 @@ modus init
|
|
|
170
207
|
|
|
171
208
|
Modus 需要 Python 3.11–3.14,安装后的命令是 `modus`。下面按平台与语言列出可用范围。
|
|
172
209
|
|
|
210
|
+
<!--
|
|
211
|
+
平台支持列表与安装验收一起维护,不能以模板存在代替平台验证。
|
|
212
|
+
-->
|
|
213
|
+
|
|
173
214
|
#### Coding Agent 平台
|
|
174
215
|
|
|
175
216
|
<p align="center">
|
|
@@ -181,6 +222,10 @@ Modus 需要 Python 3.11–3.14,安装后的命令是 `modus`。下面按平
|
|
|
181
222
|
|
|
182
223
|
每个适配器声明自己的 Skill 目录、常驻说明和 Hook 布局;共享安装器负责确定性写入、所有权清单、升级合并与安全卸载。
|
|
183
224
|
|
|
225
|
+
<!--
|
|
226
|
+
语言识别、结构解析和编译器证据是不同能力,不合并为统一精度承诺。
|
|
227
|
+
-->
|
|
228
|
+
|
|
184
229
|
#### 语言能力
|
|
185
230
|
|
|
186
231
|
不同语言的证据深度明确分层,不以“识别文件后缀”冒充完整语义支持。
|
|
@@ -266,6 +311,10 @@ Modus 把一次性机器分析与长期知识明确分开:`init/reinit` 负责
|
|
|
266
311
|
|
|
267
312
|
以一个需要修改订单回调重试行为的项目为例:在覆盖范围内,初始化证据可指向回调入口、状态写入及相关源码,但“重复通知应返回什么”仍需作者回读实现、测试和可用的业务约定。确认后,幂等条件、失败恢复和验证入口按各自职责写入 Module 与规则、状态专题。下一位开发者沿 Domain、Module 找到这些结论,核对当前源码后动手;若改动改变了重试契约或状态迁移,就原位修订相应主定义和引用,内部重构则无需增加知识。
|
|
268
313
|
|
|
314
|
+
<!--
|
|
315
|
+
知识模型区分稳定身份与展示名称,翻译不能改变协议键。
|
|
316
|
+
-->
|
|
317
|
+
|
|
269
318
|
### 知识模型
|
|
270
319
|
|
|
271
320
|
完成项目知识创作后,`.modus/` 保存平台控制面,`modus/knowledge/` 保存长期知识,`modus/.cache/` 保存可丢弃的分析状态。Modus 的知识模型不是一棵按文件类型堆积的文档树,而是围绕研发任务组织的四种可组合视角。它们是阅读和建模视角,不是要求每个项目复制同一种技术分层。
|
|
@@ -310,6 +359,10 @@ modus/knowledge/
|
|
|
310
359
|
|
|
311
360
|
Modus 优先显式化**高复用、高风险、高隐性**的知识,而不是为每个函数生成摘要。公开契约、核心对象、状态流转、下游交接、兼容红线和验证标准值得长期维护;从当前代码即可低成本读出的普通实现细节仍留在源码中。`business/` 与 `constraint/` 默认受人工所有权保护,自动流程不会用扫描结果覆盖组织经验;生成知识的变更使用读时哈希保护,并接受路径身份、链接与锚点完整性核验。
|
|
312
361
|
|
|
362
|
+
<!--
|
|
363
|
+
架构解释围绕输入、所有权与失败语义,图示跟随真实依赖方向。
|
|
364
|
+
-->
|
|
365
|
+
|
|
313
366
|
### 代码架构
|
|
314
367
|
|
|
315
368
|
Modus 自身也遵守它倡导的边界:入口层保持窄,应用编排与检索算法分离,平台差异通过声明式适配器收口,长期知识与一次性分析状态拥有不同的目录和写入合同。
|
|
@@ -339,6 +392,10 @@ Modus 自身也遵守它倡导的边界:入口层保持窄,应用编排与
|
|
|
339
392
|
|
|
340
393
|
接入后在目标仓库运行 `modus status`:显示 `Installation: installed`(已安装)表示项目资产已就位。CLI 会在 `modus/knowledge/` 放置初始文件,仍需在 Agent 中运行 `/modus-init` 创作正文;`status` 的知识文档数也会计入初始文件,不能单独作为创作完成的依据。
|
|
341
394
|
|
|
395
|
+
<!--
|
|
396
|
+
命令手册与CLI注册同步,示例保留真实参数与退出语义。
|
|
397
|
+
-->
|
|
398
|
+
|
|
342
399
|
### CLI 命令
|
|
343
400
|
|
|
344
401
|
CLI 用于安装、维护和检查 Modus。运行 `modus help` 可以查看当前版本的完整入口。
|
|
@@ -388,9 +445,13 @@ modus uninstall --person --dry-run
|
|
|
388
445
|
|
|
389
446
|
日常使用时,直接向 Agent 提出具体任务,例如“检查订单回调的重复通知与重试规则,找到实现和验证入口,并修复已确认的问题”。Agent 按需沿概览、Domain 和 Module 读取相关知识,再用当前源码核验;若本次修改改变了长期契约、规则、状态或源码锚点,交付前才修订对应正文。你也可以从 `architecture-overview.md` 沿链接手动阅读,遇到文档与实现不一致时以当前源码为准,再定向修订知识。
|
|
390
447
|
|
|
448
|
+
<!--
|
|
449
|
+
开发步骤应能由新环境复现,本地通过不等于全部平台已经验证。
|
|
450
|
+
-->
|
|
451
|
+
|
|
391
452
|
## 开发与贡献
|
|
392
453
|
|
|
393
|
-
先阅读[架构导览](ARCHITECTURE.md)了解依赖方向与设计边界,再按[贡献指南](CONTRIBUTING.md)
|
|
454
|
+
先阅读[架构导览](ARCHITECTURE.md)了解依赖方向与设计边界,再按[贡献指南](CONTRIBUTING.md)运行检查。CLI 帮助、交互提示、诊断、开发文档及新创作知识默认使用简体中文。命令名、参数、路径和 JSON 字段保持稳定,便于脚本与工具集成。
|
|
394
455
|
|
|
395
456
|
Modus 支持 Python 3.11–3.14。开发环境和 CI 使用同一组锁定依赖与质量门禁:
|
|
396
457
|
|
|
@@ -407,4 +468,5 @@ uv run --locked --extra test mypy
|
|
|
407
468
|
|
|
408
469
|
### License
|
|
409
470
|
|
|
471
|
+
<!-- NOCA:AllFileLicenseCheck(项目许可声明与根目录协议及包元数据一致) -->
|
|
410
472
|
Modus 使用 [MIT License](LICENSE)。
|
|
@@ -27,6 +27,7 @@
|
|
|
27
27
|
|
|
28
28
|
[](https://pypi.org/project/openmodus/)
|
|
29
29
|

|
|
30
|
+
<!-- NOCA:AllFileLicenseCheck(项目许可声明与根目录协议及包元数据一致) -->
|
|
30
31
|
[](LICENSE)
|
|
31
32
|
|
|
32
33
|
[**简体中文**](README.md) · [English](READMEs/README.en.md)
|
|
@@ -45,22 +46,42 @@ Modus 将源码与业务材料梳理成可核验的项目知识库,让 Coding
|
|
|
45
46
|
|
|
46
47
|
---
|
|
47
48
|
|
|
49
|
+
<!--
|
|
50
|
+
产品价值与命令能力对应,维护宣传语时核对当前可执行入口。
|
|
51
|
+
-->
|
|
52
|
+
|
|
48
53
|
## 核心功能
|
|
49
54
|
|
|
50
55
|
Modus 把项目知识作为可维护的工程资产:本地分析提供线索,Agent 与人确认业务含义,Markdown 承载长期结论,日常任务按需使用并随变更修订。
|
|
51
56
|
|
|
57
|
+
<!--
|
|
58
|
+
证据地图说明观察能力,不代表机器已经完成业务知识创作。
|
|
59
|
+
-->
|
|
60
|
+
|
|
52
61
|
### 从证据建立项目地图
|
|
53
62
|
|
|
54
63
|
初始化时,本地分析从源码、构建上下文和可用工具链提取有界证据,帮助定位入口、关系与关键行为。Agent 再回读源码、测试、配置和业务材料,确认系统架构、领域边界与真实场景,将判断写入系统概览、领域、模块及专题文档。
|
|
55
64
|
|
|
65
|
+
<!--
|
|
66
|
+
上下文预算与降级共同约束检索结果,完整性描述必须保留这一前提。
|
|
67
|
+
-->
|
|
68
|
+
|
|
56
69
|
### 为任务渐进装配上下文
|
|
57
70
|
|
|
58
71
|
开发、排障或评审需要项目事实时,Agent 从系统概览进入相关领域、模块与场景,按需联读团队约束,并回到当前源码核验。检索按问题组织知识和实现片段,明确标示证据缺口;日常使用直接读取仓库中的 Markdown 与当前源码,无需重跑初始化分析。
|
|
59
72
|
|
|
73
|
+
<!--
|
|
74
|
+
评审链路依赖普通Markdown与版本控制,不能暗示独立的远端知识服务。
|
|
75
|
+
-->
|
|
76
|
+
|
|
60
77
|
### 让知识进入代码评审链路
|
|
61
78
|
|
|
62
79
|
长期知识以 Markdown 与代码同仓保存。稳定的领域与模块身份、知识链接和结构化源码锚点形成追溯路径;人工维护的业务知识与团队约束有明确所有权,完整性检查负责结构、链接和锚点,让知识变更具有清晰的评审边界。
|
|
63
80
|
|
|
81
|
+
<!--
|
|
82
|
+
维护触发点是长期语义变化,临时实现细节不应沉淀为团队规则。
|
|
83
|
+
-->
|
|
84
|
+
|
|
64
85
|
### 随长期语义变化精确维护
|
|
65
86
|
|
|
66
87
|
代码变更后,Agent 根据本次修改判断职责、契约、规则、状态、依赖、资源或源码锚点是否发生长期变化;确有影响时,在原定义处修订受影响正文并同步相关导航与引用。新增业务材料和局部事实也可以定向更新,使知识随项目演进而保持可用。
|
|
@@ -69,6 +90,10 @@ Modus 把项目知识作为可维护的工程资产:本地分析提供线索
|
|
|
69
90
|
|
|
70
91
|
从源码安装 CLI,接入目标仓库,再由 Agent 基于项目证据创建第一份知识。CLI 负责平台接入;经确认的 Markdown 才是留在仓库中的长期产物。
|
|
71
92
|
|
|
93
|
+
<!--
|
|
94
|
+
安装示例与分发包元数据同步;命令名和Python包名具有不同职责。
|
|
95
|
+
-->
|
|
96
|
+
|
|
72
97
|
### 1. 安装 CLI
|
|
73
98
|
|
|
74
99
|
在 Modus 源码仓库根目录(包含 `pyproject.toml`),使用 [`uv`](https://docs.astral.sh/uv/) 安装 CLI(需要 Python 3.11–3.14):
|
|
@@ -79,6 +104,10 @@ uv tool install .
|
|
|
79
104
|
|
|
80
105
|
也可以从 PyPI 安装发布包:`uv tool install openmodus`。参与 Modus 开发时,使用 `uv tool install --editable .` 可让源码修改直接生效。无论安装来源,命令都是 `modus`。其他安装方式与索引配置见[安装与接入选项](#安装与接入选项)。
|
|
81
106
|
|
|
107
|
+
<!--
|
|
108
|
+
接入过程仅写入框架拥有的资产,用户正文的保护边界保持可见。
|
|
109
|
+
-->
|
|
110
|
+
|
|
82
111
|
### 2. 接入项目
|
|
83
112
|
|
|
84
113
|
进入要使用 Modus 的项目仓库:
|
|
@@ -90,6 +119,10 @@ modus init
|
|
|
90
119
|
|
|
91
120
|
在交互式终端中选择 Claude Code、Codex、Cursor 或 CodeBuddy。CLI 将平台中立的 Skill 与命令安装到项目,再通过对应适配器接入所选平台,并记录受管文件的所有权。脚本接入、多平台接入和安装状态检查见[安装与接入选项](#安装与接入选项)。
|
|
92
121
|
|
|
122
|
+
<!--
|
|
123
|
+
知识创作入口与后续维护入口分开说明,避免将重建作为日常前置。
|
|
124
|
+
-->
|
|
125
|
+
|
|
93
126
|
### 3. 创建项目知识
|
|
94
127
|
|
|
95
128
|
在所选 Coding Agent 中打开该项目,在对话中运行:
|
|
@@ -104,6 +137,10 @@ modus init
|
|
|
104
137
|
|
|
105
138
|
## 为什么需要 Modus
|
|
106
139
|
|
|
140
|
+
<!--
|
|
141
|
+
能力表描述项目已实现的范围,缺失提供方与降级应如实表述。
|
|
142
|
+
-->
|
|
143
|
+
|
|
107
144
|
### 你会得到什么
|
|
108
145
|
|
|
109
146
|
接手一个项目时,找到代码入口只是开始:还需要弄清规则为何存在、什么结果算完成、失败后如何恢复,以及改动要守住哪些边界。Modus 把经源码和可用业务材料核验的长期结论留在仓库,让后续任务从已有理解出发,并继续以当前源码核对实现。
|
|
@@ -121,6 +158,10 @@ modus init
|
|
|
121
158
|
|
|
122
159
|
Modus 需要 Python 3.11–3.14,安装后的命令是 `modus`。下面按平台与语言列出可用范围。
|
|
123
160
|
|
|
161
|
+
<!--
|
|
162
|
+
平台支持列表与安装验收一起维护,不能以模板存在代替平台验证。
|
|
163
|
+
-->
|
|
164
|
+
|
|
124
165
|
#### Coding Agent 平台
|
|
125
166
|
|
|
126
167
|
<p align="center">
|
|
@@ -132,6 +173,10 @@ Modus 需要 Python 3.11–3.14,安装后的命令是 `modus`。下面按平
|
|
|
132
173
|
|
|
133
174
|
每个适配器声明自己的 Skill 目录、常驻说明和 Hook 布局;共享安装器负责确定性写入、所有权清单、升级合并与安全卸载。
|
|
134
175
|
|
|
176
|
+
<!--
|
|
177
|
+
语言识别、结构解析和编译器证据是不同能力,不合并为统一精度承诺。
|
|
178
|
+
-->
|
|
179
|
+
|
|
135
180
|
#### 语言能力
|
|
136
181
|
|
|
137
182
|
不同语言的证据深度明确分层,不以“识别文件后缀”冒充完整语义支持。
|
|
@@ -217,6 +262,10 @@ Modus 把一次性机器分析与长期知识明确分开:`init/reinit` 负责
|
|
|
217
262
|
|
|
218
263
|
以一个需要修改订单回调重试行为的项目为例:在覆盖范围内,初始化证据可指向回调入口、状态写入及相关源码,但“重复通知应返回什么”仍需作者回读实现、测试和可用的业务约定。确认后,幂等条件、失败恢复和验证入口按各自职责写入 Module 与规则、状态专题。下一位开发者沿 Domain、Module 找到这些结论,核对当前源码后动手;若改动改变了重试契约或状态迁移,就原位修订相应主定义和引用,内部重构则无需增加知识。
|
|
219
264
|
|
|
265
|
+
<!--
|
|
266
|
+
知识模型区分稳定身份与展示名称,翻译不能改变协议键。
|
|
267
|
+
-->
|
|
268
|
+
|
|
220
269
|
### 知识模型
|
|
221
270
|
|
|
222
271
|
完成项目知识创作后,`.modus/` 保存平台控制面,`modus/knowledge/` 保存长期知识,`modus/.cache/` 保存可丢弃的分析状态。Modus 的知识模型不是一棵按文件类型堆积的文档树,而是围绕研发任务组织的四种可组合视角。它们是阅读和建模视角,不是要求每个项目复制同一种技术分层。
|
|
@@ -261,6 +310,10 @@ modus/knowledge/
|
|
|
261
310
|
|
|
262
311
|
Modus 优先显式化**高复用、高风险、高隐性**的知识,而不是为每个函数生成摘要。公开契约、核心对象、状态流转、下游交接、兼容红线和验证标准值得长期维护;从当前代码即可低成本读出的普通实现细节仍留在源码中。`business/` 与 `constraint/` 默认受人工所有权保护,自动流程不会用扫描结果覆盖组织经验;生成知识的变更使用读时哈希保护,并接受路径身份、链接与锚点完整性核验。
|
|
263
312
|
|
|
313
|
+
<!--
|
|
314
|
+
架构解释围绕输入、所有权与失败语义,图示跟随真实依赖方向。
|
|
315
|
+
-->
|
|
316
|
+
|
|
264
317
|
### 代码架构
|
|
265
318
|
|
|
266
319
|
Modus 自身也遵守它倡导的边界:入口层保持窄,应用编排与检索算法分离,平台差异通过声明式适配器收口,长期知识与一次性分析状态拥有不同的目录和写入合同。
|
|
@@ -290,6 +343,10 @@ Modus 自身也遵守它倡导的边界:入口层保持窄,应用编排与
|
|
|
290
343
|
|
|
291
344
|
接入后在目标仓库运行 `modus status`:显示 `Installation: installed`(已安装)表示项目资产已就位。CLI 会在 `modus/knowledge/` 放置初始文件,仍需在 Agent 中运行 `/modus-init` 创作正文;`status` 的知识文档数也会计入初始文件,不能单独作为创作完成的依据。
|
|
292
345
|
|
|
346
|
+
<!--
|
|
347
|
+
命令手册与CLI注册同步,示例保留真实参数与退出语义。
|
|
348
|
+
-->
|
|
349
|
+
|
|
293
350
|
### CLI 命令
|
|
294
351
|
|
|
295
352
|
CLI 用于安装、维护和检查 Modus。运行 `modus help` 可以查看当前版本的完整入口。
|
|
@@ -339,9 +396,13 @@ modus uninstall --person --dry-run
|
|
|
339
396
|
|
|
340
397
|
日常使用时,直接向 Agent 提出具体任务,例如“检查订单回调的重复通知与重试规则,找到实现和验证入口,并修复已确认的问题”。Agent 按需沿概览、Domain 和 Module 读取相关知识,再用当前源码核验;若本次修改改变了长期契约、规则、状态或源码锚点,交付前才修订对应正文。你也可以从 `architecture-overview.md` 沿链接手动阅读,遇到文档与实现不一致时以当前源码为准,再定向修订知识。
|
|
341
398
|
|
|
399
|
+
<!--
|
|
400
|
+
开发步骤应能由新环境复现,本地通过不等于全部平台已经验证。
|
|
401
|
+
-->
|
|
402
|
+
|
|
342
403
|
## 开发与贡献
|
|
343
404
|
|
|
344
|
-
先阅读[架构导览](ARCHITECTURE.md)了解依赖方向与设计边界,再按[贡献指南](CONTRIBUTING.md)
|
|
405
|
+
先阅读[架构导览](ARCHITECTURE.md)了解依赖方向与设计边界,再按[贡献指南](CONTRIBUTING.md)运行检查。CLI 帮助、交互提示、诊断、开发文档及新创作知识默认使用简体中文。命令名、参数、路径和 JSON 字段保持稳定,便于脚本与工具集成。
|
|
345
406
|
|
|
346
407
|
Modus 支持 Python 3.11–3.14。开发环境和 CI 使用同一组锁定依赖与质量门禁:
|
|
347
408
|
|
|
@@ -358,4 +419,5 @@ uv run --locked --extra test mypy
|
|
|
358
419
|
|
|
359
420
|
### License
|
|
360
421
|
|
|
422
|
+
<!-- NOCA:AllFileLicenseCheck(项目许可声明与根目录协议及包元数据一致) -->
|
|
361
423
|
Modus 使用 [MIT License](LICENSE)。
|