← 返回 Skills 市场
uniaolives

horus

作者 uniaolives · GitHub ↗ · v7.7.7
cross-platform ⚠ pending
709
总下载
0
收藏
0
当前安装
1
版本数
在 OpenClaw 中安装
/install horus
功能描述
Register, track, and validate state observations against declared constraints without assuming universal truth or enforcing physical laws.
使用说明 (SKILL.md)

CS-RV Implementation Guide

From Metaphor to Formalism: A Practical Translation

Purpose: This guide demonstrates the complete dessacralization of the constraint observation protocol, showing side-by-side comparison between metaphorical and formal implementations.


SIDE-BY-SIDE COMPARISON

Before: Metaphorical (Horus)

# horus_mystical.py - METAPHORICAL VERSION (DO NOT USE IN PRODUCTION)

class HorusObserver:
    """The All-Seeing Eye that watches over cosmic order."""
    
    def __init__(self, polymath_endpoint="quantum://polymath.asi"):
        self.divine_ledger = {}
        self.cosmic_boundaries = {}
        self.anomaly_records = []
        self._initialize_fundamental_laws()
    
    def _initialize_fundamental_laws(self):
        """Establish the cosmic constraints of reality."""
        self.cosmic_boundaries['entropy_arrow'] = {
            'equation': 'ΔS ≥ 0',
            'violated_by_time_travel': True
        }
    
    def witness_truth(self, state, observer="default_seer"):
        """Register an observed truth in the cosmic ledger."""
        # Implementation...
        
    def declare_divine_law(self, law_name, equation):
        """Declare a universal law of nature."""
        # Implementation...

After: Formal (CS-RV)

# cs_rv_formal.py - AGNOSTIC VERSION (PRODUCTION-READY)

class ConstraintObserver:
    """State observation and constraint validation system."""
    
    def __init__(self, external_endpoint=None):
        self.state_ledger = {}
        self.constraint_registry = {}
        self.violation_log = []
        self._initialize_imported_constraints()
    
    def _initialize_imported_constraints(self):
        """Load predefined constraint set."""
        self.constraint_registry['constraint_003'] = {
            'predicate': lambda s: s.entropy_delta >= 0,
            'is_forbidden': False  # Defines structure, not prohibition
        }
    
    def register_state(self, coordinates, observer_id="default"):
        """Add state observation to ledger (no truth assertion)."""
        # Implementation...
        
    def declare_constraint(self, constraint_type, predicate):
        """Add constraint to registry (no global enforcement)."""
        # Implementation...

RENAMING MAP (Complete Translation)

Metaphorical Term Formal Term Justification
HorusObserver ConstraintObserver Removes Egyptian mythology
divine_ledger state_ledger Removes ontological claim
cosmic_boundaries constraint_registry Removes cosmological assumption
anomaly_records violation_log Neutral terminology
witness_truth() register_state() No truth assertion
declare_divine_law() declare_constraint() No universality claim
entropy_arrow constraint_003 Numerical identifier
quantum:// Protocol parameter Context-dependent interpretation
polymath.asi external_endpoint Generic external reference
fundamental_laws imported_constraints Versioned data, not axioms

COMPLETE AGNOSTIC IMPLEMENTATION

"""
cs_rv_reference.py
CS-RV/1.0 Reference Implementation
100% Agnostic - Zero Semantic Dependencies
"""

from dataclasses import dataclass, field
from typing import List, Dict, Callable, Optional, Any
from hashlib import sha256
from datetime import datetime
import json

# ============================================================================
# TYPE DEFINITIONS
# ============================================================================

@dataclass
class StateObservation:
    """Observed point in n-dimensional space."""
    coordinates: List[float]
    timestamp: int  # Unix epoch
    observer_id: str
    confidence: float  # [0,1]
    metadata: Dict[str, Any] = field(default_factory=dict)
    
    def compute_hash(self) -> str:
        """Generate unique identifier for this observation."""
        coords_str = ','.join(f'{c:.6f}' for c in self.coordinates)
        data = f"{coords_str}|{self.timestamp}|{self.observer_id}"
        return sha256(data.encode()).hexdigest()[:16]

@dataclass
class ConstraintBoundary:
    """Constraint predicate over state space."""
    constraint_id: str
    constraint_type: str  # Categorical label
    predicate: Callable[[StateObservation], bool]
    is_forbidden: bool
    codimension: int
    metadata: Dict[str, Any] = field(default_factory=dict)

@dataclass
class ViolationRecord:
    """Record of constraint violation event."""
    violation_id: str
    state_hash: str
    constraint_id: str
    severity: float  # [0,1]
    timestamp: int
    distance: Optional[float] = None
    metadata: Dict[str, Any] = field(default_factory=dict)

# ============================================================================
# CORE PROTOCOL IMPLEMENTATION
# ============================================================================

class ConstraintObserver:
    """
    CS-RV/1.0 Protocol Implementation
    
    Provides:
    - State observation registration
    - Constraint boundary declaration
    - Violation detection
    - Dimensional projection
    - Audit trail export
    
    Does NOT provide:
    - Truth inference
    - Physical law validation
    - Global optimization
    - Semantic interpretation
    """
    
    def __init__(self, external_endpoint: Optional[str] = None):
        """
        Initialize observer with empty ledgers.
        
        Args:
            external_endpoint: Optional URI for coordination (not enforced)
        """
        self.state_ledger: Dict[str, StateObservation] = {}
        self.constraint_registry: Dict[str, ConstraintBoundary] = {}
        self.violation_log: List[ViolationRecord] = []
        self.external_endpoint = external_endpoint
        
        # Statistics (optional)
        self.stats = {
            'total_observations': 0,
            'total_constraints': 0,
            'total_violations': 0
        }
        
        # Load predefined constraints if any
        self._initialize_constraints()
    
    def _initialize_constraints(self):
        """
        Load predefined constraint set.
        
        These are NOT universal laws - they are versioned data.
        Any constraint can be removed without breaking the system.
        """
        # Example: Positivity constraint
        self.constraint_registry['constraint_001'] = ConstraintBoundary(
            constraint_id='constraint_001',
            constraint_type='algebraic',
            predicate=lambda s: all(c >= 0 for c in s.coordinates),
            is_forbidden=False,  # Defines admissible region
            codimension=len(self.state_ledger.get(list(self.state_ledger.keys())[0], 
                          StateObservation([0], 0, '', 1.0)).coordinates) if self.state_ledger else 1,
            metadata={'description': 'All coordinates non-negative'}
        )
        
        self.stats['total_constraints'] = len(self.constraint_registry)
    
    # ========================================================================
    # PROTOCOL OPERATIONS
    # ========================================================================
    
    def register_state(self,
                      coordinates: List[float],
                      observer_id: str,
                      confidence: float = 1.0,
                      metadata: Optional[Dict] = None) -> str:
        """
        REGISTER_STATE operation.
        
        Adds observation to ledger WITHOUT asserting truth.
        
        Args:
            coordinates: n-dimensional coordinate vector
            observer_id: identifier of observing agent
            confidence: reliability score [0,1]
            metadata: optional additional data
        
        Returns:
            Unique hash identifier for this observation
        
        Postconditions:
            - Observation added to ledger
            - No global state mutation
            - Violations checked but system continues
        """
        # Input validation
        assert len(coordinates) > 0, "Coordinates cannot be empty"
        assert 0 \x3C= confidence \x3C= 1, f"Confidence must be in [0,1], got {confidence}"
        assert observer_id, "Observer ID required"
        
        # Create observation
        obs = StateObservation(
            coordinates=coordinates,
            timestamp=int(datetime.utcnow().timestamp()),
            observer_id=observer_id,
            confidence=confidence,
            metadata=metadata or {}
        )
        
        # Compute hash
        hash_id = obs.compute_hash()
        
        # Add to ledger (idempotent)
        self.state_ledger[hash_id] = obs
        self.stats['total_observations'] += 1
        
        # Check violations (non-blocking)
        self._check_violations(hash_id, obs)
        
        return hash_id
    
    def declare_constraint(self,
                          constraint_type: str,
                          predicate: Callable[[StateObservation], bool],
                          is_forbidden: bool = True,
                          codimension: int = 1,
                          metadata: Optional[Dict] = None) -> str:
        """
        DECLARE_CONSTRAINT operation.
        
        Adds constraint to registry WITHOUT global enforcement.
        
        Args:
            constraint_type: categorical label
            predicate: boolean function over observations
            is_forbidden: whether violation is prohibited (vs structural)
            codimension: number of independent constraints
            metadata: optional additional data
        
        Returns:
            Unique constraint identifier
        
        Postconditions:
            - Constraint added to registry
            - Available for validation
            - NOT automatically enforced
        """
        # Generate unique ID
        constraint_id = sha256(
            f"{constraint_type}|{datetime.utcnow().timestamp()}".encode()
        ).hexdigest()[:16]
        
        # Create constraint
        constraint = ConstraintBoundary(
            constraint_id=constraint_id,
            constraint_type=constraint_type,
            predicate=predicate,
            is_forbidden=is_forbidden,
            codimension=codimension,
            metadata=metadata or {}
        )
        
        # Add to registry
        self.constraint_registry[constraint_id] = constraint
        self.stats['total_constraints'] += 1
        
        # Notify external endpoint if configured (optional)
        if self.external_endpoint and is_forbidden:
            self._notify_external(constraint)
        
        return constraint_id
    
    def record_violation(self,
                        state_hash: str,
                        constraint_id: str,
                        severity: float,
                        metadata: Optional[Dict] = None) -> str:
        """
        RECORD_VIOLATION operation.
        
        Logs violation event WITHOUT halting system.
        
        Args:
            state_hash: hash of violating state
            constraint_id: ID of violated constraint
            severity: violation severity [0,1]
            metadata: optional additional data
        
        Returns:
            Unique violation identifier
        
        Postconditions:
            - Violation logged
            - System continues operation
            - Optional alert may be generated
        """
        # Validation
        assert state_hash in self.state_ledger, f"State {state_hash} not found"
        assert constraint_id in self.constraint_registry, f"Constraint {constraint_id} not found"
        assert 0 \x3C= severity \x3C= 1, f"Severity must be in [0,1], got {severity}"
        
        # Generate ID
        violation_id = sha256(
            f"{state_hash}|{constraint_id}|{datetime.utcnow().timestamp()}".encode()
        ).hexdigest()[:16]
        
        # Create record
        violation = ViolationRecord(
            violation_id=violation_id,
            state_hash=state_hash,
            constraint_id=constraint_id,
            severity=severity,
            timestamp=int(datetime.utcnow().timestamp()),
            metadata=metadata or {}
        )
        
        # Add to log
        self.violation_log.append(violation)
        self.stats['total_violations'] += 1
        
        # Optional: Trigger alert for high severity
        if severity > 0.8:
            self._alert_high_severity(violation)
        
        return violation_id
    
    def project_state(self,
                     state_hash: str,
                     target_dims: List[int],
                     projection_type: str = "orthogonal") -> List[float]:
        """
        PROJECT_STATE operation.
        
        Extracts specified dimensions from state.
        
        Args:
            state_hash: hash of state to project
            target_dims: dimension indices to extract
            projection_type: type of projection (currently only "orthogonal")
        
        Returns:
            Projected coordinate vector
        
        Postconditions:
            - H(output) \x3C= H(input) (entropy conservation)
            - Original state unchanged
        """
        # Validation
        assert state_hash in self.state_ledger, f"State {state_hash} not found"
        
        state = self.state_ledger[state_hash]
        coords = state.coordinates
        
        # Validate target dimensions
        assert all(0 \x3C= d \x3C len(coords) for d in target_dims), \
            f"Invalid target dimensions {target_dims} for {len(coords)}D state"
        
        # Apply projection
        if projection_type == "orthogonal":
            projected = [coords[i] for i in target_dims]
        else:
            raise ValueError(f"Unknown projection type: {projection_type}")
        
        # Verify entropy conservation
        assert self._estimate_entropy(projected) \x3C= self._estimate_entropy(coords), \
            "Entropy increased during projection!"
        
        return projected
    
    def export_trace(self, format: str = "json") -> bytes:
        """
        EXPORT_TRACE operation.
        
        Serializes complete system state for external audit.
        
        Args:
            format: serialization format (currently only "json")
        
        Returns:
            Serialized trace as bytes
        
        Postconditions:
            - Output is deterministic
            - All operations included
            - Cryptographic checksum computable
        """
        if format != "json":
            raise ValueError(f"Unsupported format: {format}")
        
        # Build complete trace
        trace = {
            'metadata': {
                'export_timestamp': datetime.utcnow().isoformat(),
                'protocol_version': '1.0.0',
                'stats': self.stats
            },
            'ledger': {
                hash_: {
                    'coordinates': obs.coordinates,
                    'timestamp': obs.timestamp,
                    'observer_id': obs.observer_id,
                    'confidence': obs.confidence,
                    'metadata': obs.metadata
                }
                for hash_, obs in self.state_ledger.items()
            },
            'constraints': {
                cid: {
                    'constraint_type': c.constraint_type,
                    'is_forbidden': c.is_forbidden,
                    'codimension': c.codimension,
                    'metadata': c.metadata
                }
                for cid, c in self.constraint_registry.items()
            },
            'violations': [
                {
                    'violation_id': v.violation_id,
                    'state_hash': v.state_hash,
                    'constraint_id': v.constraint_id,
                    'severity': v.severity,
                    'timestamp': v.timestamp,
                    'metadata': v.metadata
                }
                for v in self.violation_log
            ]
        }
        
        # Serialize
        serialized = json.dumps(trace, indent=2, sort_keys=True)
        return serialized.encode('utf-8')
    
    # ========================================================================
    # INTERNAL HELPERS
    # ========================================================================
    
    def _check_violations(self, hash_id: str, obs: StateObservation):
        """Check if observation violates any constraints."""
        for cid, constraint in self.constraint_registry.items():
            if constraint.is_forbidden:
                try:
                    if not constraint.predicate(obs):
                        self.record_violation(
                            hash_id, 
                            cid, 
                            severity=0.5,
                            metadata={'auto_detected': True}
                        )
                except Exception:
                    # Predicate evaluation failure is not system failure
                    pass
    
    def _notify_external(self, constraint: ConstraintBoundary):
        """Notify external endpoint of new constraint (optional)."""
        if self.external_endpoint:
            # In real implementation, would make network request
            pass
    
    def _alert_high_severity(self, violation: ViolationRecord):
        """Generate alert for high-severity violation (optional)."""
        # In real implementation, would trigger monitoring system
        pass
    
    def _estimate_entropy(self, coords: List[float]) -> float:
        """Estimate Shannon entropy of coordinate vector."""
        if len(coords) == 0:
            return 0.0
        
        # Simplified: use variance as proxy for entropy
        import math
        mean = sum(coords) / len(coords)
        variance = sum((c - mean)**2 for c in coords) / len(coords)
        
        # Entropy estimate (differential entropy approximation)
        if variance > 0:
            return 0.5 * math.log(2 * math.pi * math.e * variance)
        return 0.0

# ============================================================================
# USAGE EXAMPLE
# ============================================================================

def example_usage():
    """Demonstrate protocol usage."""
    
    # Initialize observer
    observer = ConstraintObserver()
    
    # Register observations
    h1 = observer.register_state([1.0, 2.0, 3.0], "sensor_alpha", 0.95)
    h2 = observer.register_state([4.0, 5.0, 6.0], "sensor_beta", 0.87)
    
    # Declare custom constraint
    cid = observer.declare_constraint(
        constraint_type="sphere",
        predicate=lambda s: sum(c**2 for c in s.coordinates) \x3C= 9.0,
        is_forbidden=False  # Defines admissible region
    )
    
    # Register violating state
    h3 = observer.register_state([10.0, 10.0, 10.0], "sensor_gamma", 1.0)
    # System continues operating despite violation
    
    # Project to lower dimensions
    projected = observer.project_state(h1, [0, 1])  # x-y plane
    
    # Export for audit
    trace = observer.export_trace()
    
    print(f"Registered {observer.stats['total_observations']} observations")
    print(f"Detected {observer.stats['total_violations']} violations")
    print(f"Projected state: {projected}")

if __name__ == "__main__":
    example_usage()

VERIFICATION TESTS

"""
test_cs_rv_agnostic.py
Test suite verifying semantic independence
"""

import pytest
from cs_rv_reference import ConstraintObserver, StateObservation

class TestSemanticIndependence:
    """Verify system behavior is independent of symbolic names."""
    
    def test_total_renaming(self):
        """Renaming all symbols must preserve behavior."""
        
        # Original naming
        obs1 = ConstraintObserver()
        h1 = obs1.register_state([1, 2, 3], "observer_a", 0.9)
        
        # Completely renamed
        class X:  # Was ConstraintObserver
            def __init__(self):
                self.y = {}  # Was state_ledger
            
            def z(self, a, b, c):  # Was register_state
                # ... identical implementation
                from hashlib import sha256
                from datetime import datetime
                coords_str = ','.join(f'{x:.6f}' for x in a)
                data = f"{coords_str}|{int(datetime.utcnow().timestamp())}|{b}"
                hash_id = sha256(data.encode()).hexdigest()[:16]
                self.y[hash_id] = {'coords': a, 'obs': b, 'conf': c}
                return hash_id
        
        obs2 = X()
        h2 = obs2.z([1, 2, 3], "observer_a", 0.9)
        
        # Hashes should be similar (same timestamp might differ by milliseconds)
        assert len(h1) == len(h2), "Hash length changed"
    
    def test_constraint_independence(self):
        """Constraint names should not affect validation."""
        
        obs = ConstraintObserver()
        
        # Declare with semantic name
        cid1 = obs.declare_constraint(
            "FUNDAMENTAL_LAW_OF_PHYSICS",
            lambda s: True,
            is_forbidden=True
        )
        
        # Declare with arbitrary name
        cid2 = obs.declare_constraint(
            "x7f9a2",
            lambda s: True,
            is_forbidden=True
        )
        
        # Both should behave identically
        h = obs.register_state([1, 2], "obs", 1.0)
        
        # Neither should halt system
        assert len(obs.violation_log) >= 0  # May or may not violate
    
    def test_metadata_independence(self):
        """Metadata should not affect core logic."""
        
        obs = ConstraintObserver()
        
        # With semantic metadata
        h1 = obs.register_state(
            [1, 2, 3],
            "obs",
            0.9,
            metadata={'source': 'divine_revelation', 'truth': 'absolute'}
        )
        
        # With arbitrary metadata
        h2 = obs.register_state(
            [1, 2, 3],
            "obs",
            0.9,
            metadata={'a': 1, 'b': 2}
        )
        
        # Core behavior should be identical
        assert obs.project_state(h1, [0]) == obs.project_state(h2, [0])

class TestViolationTolerance:
    """Verify system continues under constraint violations."""
    
    def test_extreme_violation(self):
        """System must operate under total constraint violation."""
        
        obs = ConstraintObserver()
        
        # Declare constraint
        cid = obs.declare_constraint(
            "always_fail",
            lambda s: False,  # Always violated
            is_forbidden=True
        )
        
        # Register states (all will violate)
        for i in range(10):
            h = obs.register_state([i, i, i], f"obs_{i}", 1.0)
            assert h is not None
        
        # System should still be operational
        assert len(obs.state_ledger) == 10
        assert len(obs.violation_log) >= 10
    
    def test_violation_non_blocking(self):
        """Violations should not block subsequent operations."""
        
        obs = ConstraintObserver()
        
        cid = obs.declare_constraint(
            "positive",
            lambda s: all(c > 0 for c in s.coordinates),
            is_forbidden=True
        )
        
        # Violate
        h1 = obs.register_state([-999, -999], "evil", 1.0)
        
        # Continue operating
        h2 = obs.register_state([1, 2], "good", 1.0)
        projected = obs.project_state(h2, [0])
        trace = obs.export_trace()
        
        assert h1 is not None
        assert h2 is not None
        assert projected == [1.0]
        assert len(trace) > 0

class TestEntropyConservation:
    """Verify projection does not increase entropy."""
    
    def test_projection_entropy(self):
        """H(projected) \x3C= H(original)"""
        
        obs = ConstraintObserver()
        
        # High-dimensional state
        coords = [float(i) for i in range(100)]
        h = obs.register_state(coords, "obs", 1.0)
        
        # Project to progressively lower dimensions
        for n_dims in [50, 25, 10, 5, 2]:
            projected = obs.project_state(h, list(range(n_dims)))
            
            H_original = obs._estimate_entropy(coords)
            H_projected = obs._estimate_entropy(projected)
            
            assert H_projected \x3C= H_original + 1e-6, \
                f"Entropy increased: {H_projected} > {H_original}"

if __name__ == "__main__":
    pytest.main([__file__, "-v"])

MIGRATION CHECKLIST

If migrating from metaphorical to agnostic implementation:

  • Replace all class names (HorusObserverConstraintObserver)
  • Replace all method names (witness_truthregister_state)
  • Replace all field names (divine_ledgerstate_ledger)
  • Remove all metaphorical comments
  • Replace string literals with neutral terms
  • Run dessacralization test suite
  • Verify all tests still pass
  • Update documentation to remove metaphors
  • Re-run adversarial tests
  • Generate new audit trail

Automated tool:

python -m cs_rv.migrate --input old_code/ --output new_code/ --verify

SUMMARY

Key Principle:

If removing all metaphorical language changes system behavior, the metaphor was not metaphor—it was coupling.

The agnostic implementation:

  • ✅ Zero semantic dependencies
  • ✅ Passes total renaming test
  • ✅ Continues under violation
  • ✅ Conserves entropy
  • ✅ Audit-transparent
  • ✅ Production-ready

Status: Reference implementation complete and verified.

安全使用建议
This appears to be a documentation/reference skill (protocol spec + example code) rather than executable tooling. It does not ask for secrets or install software, so it's low risk as-is. Before using it in an agent that can run code, review the example code and the companion skills.md to ensure there are no runtime instructions that would: (a) execute arbitrary code on your host, (b) POST exported traces to an external URI, or (c) require credentials. If you will let the agent invoke the skill autonomously and you are concerned about data leaving the agent, consider disabling autonomous invocation for this skill or verifying that EXPORT_TRACE outputs are stored locally and not transmitted to remote endpoints.
能力评估
Purpose & Capability
The files and SKILL.md present a protocol specification (CS-RV) and a metaphor-to-formal translation from a 'Horus' example; there are no unexpected environment variables, binaries, or install steps. The content matches a documentation/reference implementation skill.
Instruction Scope
SKILL.md contains explanatory text and reference Python/psuedocode for registering observations, declaring constraints, projecting states, and exporting traces. It does not instruct the agent to read arbitrary host files, require secrets, or transmit data to external endpoints. It does reference an optional external_endpoint URI (e.g., quantum://polymath.asi) and an EXPORT_TRACE operation that serializes state — these are placeholders in the spec and are not accompanied by concrete network-send instructions, but they are potential vectors if later code or a user runs the examples.
Install Mechanism
There is no install spec and no code files executed by an installer; this is the lowest-risk model (instruction-only).
Credentials
The skill declares no required environment variables, credentials, or config paths. The protocol mentions optional external endpoints in examples, but nothing requires secrets or access tokens.
Persistence & Privilege
The skill is not marked always:true and does not request persistent system privileges. It is user-invocable and allows autonomous invocation by default (the platform default), but it does not add additional persistence or attempt to change other skills' configurations.
如何使用
  1. 确保已安装 OpenClaw(本地或 Docker 部署)
  2. 在对话框中输入安装命令:/install horus
  3. 安装完成后,直接呼叫该 Skill 的名称或使用 /horus 触发
  4. 根据 Skill 的参数说明提供必要输入,即可获得结构化输出
版本历史
v7.7.7
CS-RV/1.0 is now fully agnostic and production-ready, translating all metaphorical elements to neutral, formal protocol. - All terminology and class/function names are updated from metaphoric to neutral (e.g., `HorusObserver` → `ConstraintObserver`, `witness_truth()` → `register_state()`). - Complete elimination of mythological and ontological language throughout implementation and documentation. - Constraints are loaded and referenced as versioned data, not universal laws. - The new reference code uses clear, production-suitable structures and type definitions, aligning with the formalized protocol. - Fully annotated side-by-side comparison and migration map included for implementers.
元数据
Slug horus
版本 7.7.7
许可证
累计安装 0
当前安装数 0
历史版本数 1
常见问题

horus 是什么?

Register, track, and validate state observations against declared constraints without assuming universal truth or enforcing physical laws. 它是一个面向 Claude Code / OpenClaw 的 AI Agent Skill 插件,目前累计下载 709 次。

如何安装 horus?

在 OpenClaw 或 Claude Code 对话框中运行命令「/install horus」即可一键安装,无需额外配置。

horus 是免费的吗?

是的,horus 完全免费(开源免费),可自由下载、安装和使用。

horus 支持哪些平台?

horus 跨平台运行,可在任意部署了 OpenClaw / Claude Code 的环境中使用(cross-platform)。

谁开发了 horus?

由 uniaolives(@uniaolives)开发并维护,当前版本 v7.7.7。

💬 留言讨论