deploy: Dao-OS/dao-os-docs@15a85983fe
@@ -1 +0,0 @@
|
|||||||
This file makes sure that Github Pages doesn't process mdBook's output.
|
|
||||||
|
|||||||
1
en/.nojekyll
Normal file
@@ -0,0 +1 @@
|
|||||||
|
This file makes sure that Github Pages doesn't process mdBook's output.
|
||||||
|
Before Width: | Height: | Size: 434 KiB After Width: | Height: | Size: 434 KiB |
0
clipboard.min.js → en/clipboard.min.js
vendored
@@ -172,43 +172,39 @@
|
|||||||
<h1 id="the-ai-system-the-soul-of-dao-os"><a class="header" href="#the-ai-system-the-soul-of-dao-os">The AI System: The Soul of Dao OS</a></h1>
|
<h1 id="the-ai-system-the-soul-of-dao-os"><a class="header" href="#the-ai-system-the-soul-of-dao-os">The AI System: The Soul of Dao OS</a></h1>
|
||||||
<p>The AI within Dao OS is not merely a feature; it is the core of the user experience, designed from the ground up to be a symbiotic <strong>"Silicon-based Partner."</strong> It acts as the system's soul, animating the user's digital life with intelligence, empathy, and proactive support.</p>
|
<p>The AI within Dao OS is not merely a feature; it is the core of the user experience, designed from the ground up to be a symbiotic <strong>"Silicon-based Partner."</strong> It acts as the system's soul, animating the user's digital life with intelligence, empathy, and proactive support.</p>
|
||||||
<h2 id="guiding-philosophy-the-ai-charter"><a class="header" href="#guiding-philosophy-the-ai-charter">Guiding Philosophy: The AI Charter</a></h2>
|
<h2 id="guiding-philosophy-the-ai-charter"><a class="header" href="#guiding-philosophy-the-ai-charter">Guiding Philosophy: The AI Charter</a></h2>
|
||||||
<p>The design and operation of our AI are strictly governed by our <strong>AI Ethics Charter</strong>, which prioritizes a user-AI partnership, transparency, user calibration, and the promotion of diverse perspectives. Every component described below adheres to these foundational principles.</p>
|
<p>The design and operation of our AI are strictly governed by our <strong>AI Ethics Charter</strong>, which prioritizes a user-AI partnership, transparency, user calibration, and the promotion of diverse perspectives.</p>
|
||||||
<h2 id="system-anatomy-the-minds-architecture"><a class="header" href="#system-anatomy-the-minds-architecture">System Anatomy: The Mind's Architecture</a></h2>
|
<h2 id="system-anatomy-the-minds-architecture"><a class="header" href="#system-anatomy-the-minds-architecture">System Anatomy: The Mind's Architecture</a></h2>
|
||||||
<p>The Dao OS AI is not a monolithic entity but a modular, layered "Mind System" managed by a central orchestrator.</p>
|
<p>The Dao OS AI is not a monolithic entity but a modular, layered "Mind System" managed by a central orchestrator.</p>
|
||||||
<h3 id="1-the-ai-orchestrator"><a class="header" href="#1-the-ai-orchestrator">1. The AI Orchestrator</a></h3>
|
<h3 id="1-the-ai-orchestrator"><a class="header" href="#1-the-ai-orchestrator">1. The AI Orchestrator</a></h3>
|
||||||
<p>This is the AI's central nervous system. It's a core module within the Meta Unit responsible for managing, scheduling, and delegating all AI-related tasks. It decides which "Mind Model" is best suited for a given request, manages device resources, and acts as the ultimate gatekeeper for all user permissions related to AI activities.</p>
|
<p>This is the AI's central nervous system. It is a core module within the Meta Unit responsible for managing, scheduling, and delegating all AI-related tasks. It decides which "Mind Model" is best suited for a given request, manages device resources, and actively draws contextual information from the user's "Personal Feature Store" (the Second Brain) to provide holistic, intelligent responses.</p>
|
||||||
<h3 id="2-the-tiered-mind-models"><a class="header" href="#2-the-tiered-mind-models">2. The Tiered Mind Models</a></h3>
|
<h3 id="2-the-tiered-mind-models"><a class="header" href="#2-the-tiered-mind-models">2. The Tiered Mind Models</a></h3>
|
||||||
<p>To balance efficiency, capability, and privacy, the AI's intelligence is structured into three tiers. This architecture is deployed across the user's <strong>"Cloud-Edge-Client"</strong> network of Avatars.</p>
|
<p>To balance efficiency, capability, and privacy, the AI's intelligence is structured into three tiers, deployed across the user's network of Avatars.</p>
|
||||||
<h4 id="tier-1-the-reflex-mind-the-brainstem"><a class="header" href="#tier-1-the-reflex-mind-the-brainstem">Tier 1: The Reflex Mind (The Brainstem)</a></h4>
|
<h4 id="tier-1-the-reflex-mind-the-brainstem"><a class="header" href="#tier-1-the-reflex-mind-the-brainstem">Tier 1: The Reflex Mind (The Brainstem)</a></h4>
|
||||||
<ul>
|
<ul>
|
||||||
<li><strong>Description</strong>: This layer represents the AI's instincts and reflexes. It consists of tiny, hyper-efficient, specialized models.</li>
|
<li><strong>Description</strong>: This layer represents the AI's instincts and reflexes. It consists of tiny, hyper-efficient, specialized models.</li>
|
||||||
<li><strong>Deployment</strong>: It is small enough to be bundled with the Meta Unit and runs on <strong>all Avatars</strong>, including the most lightweight ones like browser extensions and older phones.</li>
|
<li><strong>Deployment</strong>: It is small enough to be bundled with the Meta Unit and runs on <strong>all Avatars (<code>Facet</code> and <code>Core</code>)</strong>, providing immediate utility without requiring powerful hardware or personal data.</li>
|
||||||
<li><strong>Function</strong>: It handles instant, local tasks like command intent recognition (e.g., turning "remind me tomorrow" into structured data) and basic information classification, providing immediate utility without requiring powerful hardware or personal data.</li>
|
<li><strong>Function</strong>: It handles instant, local tasks like command intent recognition and basic information classification.</li>
|
||||||
</ul>
|
</ul>
|
||||||
<h4 id="tier-2-the-cognitive-mind-the-neocortex"><a class="header" href="#tier-2-the-cognitive-mind-the-neocortex">Tier 2: The Cognitive Mind (The Neocortex)</a></h4>
|
<h4 id="tier-2-the-cognitive-mind-the-neocortex"><a class="header" href="#tier-2-the-cognitive-mind-the-neocortex">Tier 2: The Cognitive Mind (The Neocortex)</a></h4>
|
||||||
<ul>
|
<ul>
|
||||||
<li><strong>Description</strong>: This is the AI's center for deep thought, memory, and personalization, forming the core of the "Second Brain." It consists of larger, powerful language models.</li>
|
<li><strong>Description</strong>: This is the AI's center for deep thought, memory, and personalization. It consists of larger language models.</li>
|
||||||
<li><strong>Deployment</strong>: These models are larger (e.g., 2-4GB) and are offered as an <strong>optional, on-demand download</strong> only on capable <strong>Edge</strong> devices (modern phones, PCs) after user consent.</li>
|
<li><strong>Deployment</strong>: These models are offered as an <strong>optional, on-demand download</strong> on capable <strong>Avatars</strong> (both powerful <strong><code>Facet Avatars</code></strong> like modern phones/PCs and <strong><code>Core Avatars</code></strong>).</li>
|
||||||
<li><strong>Function</strong>: It enables advanced features like semantic search across all personal data, personalized summarization, and insightful pattern recognition based on the user's unique context.</li>
|
<li><strong>Function</strong>: It enables advanced features like semantic search and context-aware Q&A through a <strong>Just-in-Time (JIT) Data Pipeline</strong>.</li>
|
||||||
</ul>
|
</ul>
|
||||||
<h4 id="tier-3-the-synergistic-mind-the-social-brain"><a class="header" href="#tier-3-the-synergistic-mind-the-social-brain">Tier 3: The Synergistic Mind (The Social Brain)</a></h4>
|
<h4 id="tier-3-the-synergistic-mind-the-social-brain"><a class="header" href="#tier-3-the-synergistic-mind-the-social-brain">Tier 3: The Synergistic Mind (The Social Brain)</a></h4>
|
||||||
<ul>
|
<ul>
|
||||||
<li><strong>Description</strong>: This layer governs the AI's ability to safely interact with the outside world and other Daos, breaking filter bubbles and expanding the user's perspective.</li>
|
<li><strong>Description</strong>: This layer governs the AI's ability to safely interact with the outside world and other Daos.</li>
|
||||||
<li><strong>Deployment</strong>: This is a working mode orchestrated across the user's network. For example, a lightweight <strong>Client</strong> Avatar can make a remote inference call to the user's powerful <strong>personal Cloud</strong> Avatar (e.g., a home server) to leverage its Cognitive Mind.</li>
|
<li><strong>Deployment</strong>: This is a working mode orchestrated across the user's network. For example, a lightweight <strong><code>Facet Avatar</code></strong> (like a browser extension) can make a remote inference call to a powerful <strong><code>Core Avatar</code></strong> (e.g., a home server) which hosts the Cognitive Mind.</li>
|
||||||
<li><strong>Function</strong>: It facilitates privacy-preserving federated learning, executes permissioned and anonymized calls to external APIs, and handles secure, protocol-based interactions with other users' Daos.</li>
|
<li><strong>Function</strong>: It facilitates privacy-preserving federated learning and permissioned, anonymized calls to external APIs.</li>
|
||||||
</ul>
|
</ul>
|
||||||
<h2 id="the-emotional-core-the-resonance-module"><a class="header" href="#the-emotional-core-the-resonance-module">The Emotional Core: The Resonance Module</a></h2>
|
<h2 id="the-emotional-core-the-resonance-module"><a class="header" href="#the-emotional-core-the-resonance-module">The Emotional Core: The Resonance Module</a></h2>
|
||||||
<p>To transcend being a mere tool, the AI is equipped with an Emotional Resonance Module. Its purpose is not to simulate emotion but to perceive, understand, and respond to the user's emotional state with empathy and support. It operates via:</p>
|
<p>To transcend being a mere tool, the AI is equipped with an Emotional Resonance Module. Its purpose is to perceive, understand, and respond to the user's emotional state with empathy and support.</p>
|
||||||
<ul>
|
|
||||||
<li><strong>Perception</strong>: Analyzing textual and vocal cues (with explicit consent) to understand the user's emotional context.</li>
|
|
||||||
<li><strong>Expression</strong>: Providing support through adaptive interfaces, gentle suggestions, and Socratic prompts designed to encourage user introspection rather than creating dependency.</li>
|
|
||||||
</ul>
|
|
||||||
<h2 id="the-learning-process-how-the-soul-evolves"><a class="header" href="#the-learning-process-how-the-soul-evolves">The Learning Process: How the Soul Evolves</a></h2>
|
<h2 id="the-learning-process-how-the-soul-evolves"><a class="header" href="#the-learning-process-how-the-soul-evolves">The Learning Process: How the Soul Evolves</a></h2>
|
||||||
<p>The AI is a living system that grows with the user.</p>
|
<p>The AI is a living system that grows with the user. This evolution is <strong>continuous and incremental</strong>. As new data enters the Second Brain, a background indexer processes it, making it immediately available for future context retrieval.</p>
|
||||||
<ul>
|
<ul>
|
||||||
<li><strong>Implicit Learning</strong>: It learns from observing the user's actions and feedback locally.</li>
|
<li><strong>Implicit Learning</strong>: It learns from observing the user's actions and feedback locally.</li>
|
||||||
<li><strong>Explicit Teaching</strong>: Users can directly instruct the AI through a "Teach Your Dao" mode, creating custom workflows and correcting its understanding.</li>
|
<li><strong>Explicit Teaching</strong>: Users can directly instruct the AI through a "Teach Your Dao" mode.</li>
|
||||||
<li><strong>Federated Learning</strong>: Users can voluntarily opt-in to community-driven programs to improve shared models (like spam detection) without ever exposing their private data.</li>
|
<li><strong>Federated Learning</strong>: Users can voluntarily opt-in to community-driven programs to improve shared models without exposing private data.</li>
|
||||||
</ul>
|
</ul>
|
||||||
<p>This architecture ensures that the Dao OS AI is powerful yet safe, personal yet worldly, and intelligent yet considerate—a true partner for life.</p>
|
<p>This architecture ensures that the Dao OS AI is powerful yet safe, personal yet worldly, and intelligent yet considerate—a true partner for life.</p>
|
||||||
|
|
||||||
@@ -170,39 +170,37 @@
|
|||||||
<div id="content" class="content">
|
<div id="content" class="content">
|
||||||
<main>
|
<main>
|
||||||
<h1 id="core-architecture"><a class="header" href="#core-architecture">Core Architecture</a></h1>
|
<h1 id="core-architecture"><a class="header" href="#core-architecture">Core Architecture</a></h1>
|
||||||
<p>The architecture of Dao OS is designed to function like a living, collaborative digital organism. It is guided by our core principles of sovereignty, experience, and resilience. This document outlines the fundamental components and their interplay.</p>
|
<p>The architecture of Dao OS is designed to function like a living, collaborative digital organism. It is guided by our core principles of sovereignty, experience, and resilience. This document outlines the fundamental components and their interplay, including our unique application model.</p>
|
||||||
<h2 id="the-core-duality-avatars--the-meta-unit"><a class="header" href="#the-core-duality-avatars--the-meta-unit">The Core Duality: Avatars & The Meta Unit</a></h2>
|
<h2 id="the-core-duality-avatars--the-meta-unit"><a class="header" href="#the-core-duality-avatars--the-meta-unit">The Core Duality: Avatars & The Meta Unit</a></h2>
|
||||||
<p>At its heart, Dao OS operates on a simple yet powerful duality, analogous to a body and a soul:</p>
|
<p>At its heart, Dao OS operates on a simple yet powerful duality, analogous to a body and a soul:</p>
|
||||||
<ul>
|
<ul>
|
||||||
<li><strong>Avatars (<code>化身</code>)</strong> are the "bodies." They are the tangible presence of your Dao OS on your various devices.</li>
|
<li><strong>Avatars (<code>化身</code>)</strong>: The "bodies." They are the tangible presence of your Dao OS on your various devices.</li>
|
||||||
<li><strong>The Meta Unit (<code>元</code>)</strong> is the "soul." It is the universal, core logic embedded within each Avatar, giving it life and intelligence.</li>
|
<li><strong>The Meta Unit (<code>元</code>)</strong>: The "soul." It is the universal, core logic embedded within each Avatar, giving it life and intelligence.</li>
|
||||||
</ul>
|
</ul>
|
||||||
<h2 id="the-body-avatar--a-users-presence"><a class="header" href="#the-body-avatar--a-users-presence">The Body: <code>Avatar</code> — A User's Presence</a></h2>
|
<h2 id="avatar-types-the-forms-of-presence"><a class="header" href="#avatar-types-the-forms-of-presence">Avatar Types: The Forms of Presence</a></h2>
|
||||||
<p>An Avatar is the concrete manifestation of your Dao OS on a specific platform. All of your Avatars collectively form your complete Dao.</p>
|
<p>Avatars come in two fundamental types, representing the system's external form and its internal foundation.</p>
|
||||||
<p>There are three primary types of Avatars:</p>
|
|
||||||
<ol>
|
|
||||||
<li><strong>Client Avatar</strong>: Possesses a user interface (UI) and serves as the primary point of interaction for the user (e.g., a mobile app, a desktop application, a browser extension).</li>
|
|
||||||
<li><strong>Agent Avatar</strong>: A headless, non-UI process that runs in the background. It is ideal for deep integration with the host OS, or for running on an always-on device (like a home server or NAS) to act as a powerful computational node or a data archive.</li>
|
|
||||||
<li><strong>Primary/Archive Node</strong>: This is a <em>role</em>, not a distinct type. A user can designate one of their most powerful and reliable Avatars (typically an Agent Avatar on a home server) to be the primary archive and computational hub for their entire Dao.</li>
|
|
||||||
</ol>
|
|
||||||
<h2 id="the-soul-meta-unit--the-universal-kernel"><a class="header" href="#the-soul-meta-unit--the-universal-kernel">The Soul: <code>Meta Unit</code> — The Universal Kernel</a></h2>
|
|
||||||
<p>The Meta Unit is the core logic of Dao OS, compiled into a portable WebAssembly (<code>.wasm</code>) module. It contains the essential services for identity, data management, AI, and secure communication.</p>
|
|
||||||
<p>A key characteristic of the Meta Unit is its <strong>evolvability</strong>. To prevent the entire ecosystem from being locked into a single version of the kernel, we employ the <strong>Avatar-Meta Compatibility Layer (AMCL)</strong>. This thin adaptation layer sits between the Avatar and the Meta Unit, translating API calls. It allows the Meta Unit to undergo significant upgrades in the future without requiring every Avatar developer to rewrite their applications.</p>
|
|
||||||
<h2 id="the-nervous-system-the-cloud-edge-client-collaborative-network"><a class="header" href="#the-nervous-system-the-cloud-edge-client-collaborative-network">The Nervous System: The "Cloud-Edge-Client" Collaborative Network</a></h2>
|
|
||||||
<p>All of a user's Avatars are interconnected via a private, end-to-end encrypted P2P network, forming a personal, collaborative intelligence system. This system operates on three tiers:</p>
|
|
||||||
<ol>
|
|
||||||
<li><strong>Client (端)</strong>: Lightweight Avatars (e.g., browser extensions) act as smart terminals. They handle immediate UI interactions and run the most basic "Reflex Mind" AI.</li>
|
|
||||||
<li><strong>Edge (边)</strong>: Capable local devices (e.g., modern smartphones, laptops) that can run larger, more powerful "Cognitive Mind" AI models locally, providing advanced personalization and features.</li>
|
|
||||||
<li><strong>Cloud (云)</strong>: This is the user's <strong>personal, private cloud</strong>, not a public one. It is typically the designated "Primary/Archive Node" (an Agent Avatar). It holds the complete data archive and the most powerful AI models, and can provide remote inference capabilities to weaker Client Avatars on demand.</li>
|
|
||||||
</ol>
|
|
||||||
<h2 id="the-metabolism-the-resource-aware--adaptive-system"><a class="header" href="#the-metabolism-the-resource-aware--adaptive-system">The Metabolism: The Resource-Aware & Adaptive System</a></h2>
|
|
||||||
<p>Dao OS is designed to be a considerate partner, not a resource monster. Its "metabolism" is regulated by a built-in resource management system with three key features:</p>
|
|
||||||
<ul>
|
<ul>
|
||||||
<li><strong>Intelligent Data Tiering</strong>: Distinguishes between "hot" data (needed everywhere) and "cold" data (archived on the Primary Node), saving precious storage on mobile devices.</li>
|
<li>
|
||||||
<li><strong>Adaptive Synchronization Policies</strong>: Adjusts data sync frequency and behavior based on the current network condition (Wi-Fi/cellular) and battery state.</li>
|
<p><strong><code>Facet Avatar</code> (<code>器化身</code>)</strong>: This type of Avatar possesses a user interface (UI). It is the "facet" of the Dao OS gem—the polished surface through which a user interacts with and perceives their digital world. Each Facet Avatar (a phone app, a desktop program) refracts the light of the central Meta Unit in its own unique way, embodying the principle of "the Dao manifesting in myriad forms."</p>
|
||||||
<li><strong>Graceful Degradation</strong>: The user experience scales gracefully with hardware capabilities, ensuring core functionality is smooth even on older devices, while enhanced features are reserved for more powerful ones.</li>
|
</li>
|
||||||
|
<li>
|
||||||
|
<p><strong><code>Core Avatar</code> (<code>核化身</code>)</strong>: This is a headless, non-UI Avatar that runs in the background. It is the foundational "core" of the system, providing essential services, computational power, and data persistence. It is the engine that supports all the visible facets.</p>
|
||||||
|
</li>
|
||||||
|
</ul>
|
||||||
|
<p>A user's Dao is composed of a network of their Facet and Core Avatars.</p>
|
||||||
|
<h2 id="the-dao-os-application-model"><a class="header" href="#the-dao-os-application-model">The Dao OS Application Model</a></h2>
|
||||||
|
<p>An application in Dao OS is not a monolithic program but a decentralized, decoupled entity.</p>
|
||||||
|
<h3 id="1-the-backend-soul-the-fluid--pinnable-service"><a class="header" href="#1-the-backend-soul-the-fluid--pinnable-service">1. The Backend Soul: The Fluid & Pinnable Service</a></h3>
|
||||||
|
<p>The application's core logic is a <strong>WASM module</strong> that runs sandboxed within the Meta Unit. Its deployment follows a hybrid model of <strong>Fluid Replication with Service Pinning</strong>, allowing for both resilience and user control.</p>
|
||||||
|
<h3 id="2-the-frontend-skin-the-on-demand-web-shell"><a class="header" href="#2-the-frontend-skin-the-on-demand-web-shell">2. The Frontend Skin: The On-Demand Web Shell</a></h3>
|
||||||
|
<p>The application's UI is primarily a <strong>Web Application</strong>. Its lifecycle follows a <strong>"Register Once, Load On-Demand"</strong> model, running inside the official <strong>"Dao Web Avatar"</strong> (which is itself a Facet Avatar). This means a user installs an app once to their Dao, and can then instantly access it on any device.</p>
|
||||||
|
<h3 id="3-the-data-layer-the-personal-feature-store"><a class="header" href="#3-the-data-layer-the-personal-feature-store">3. The Data Layer: The Personal Feature Store</a></h3>
|
||||||
|
<p>The data for all applications is stored securely in the user's <strong>Second Brain</strong> and acts as a <strong>Personal Feature Store</strong> for the AI.</p>
|
||||||
|
<h2 id="architectural-summary"><a class="header" href="#architectural-summary">Architectural Summary</a></h2>
|
||||||
|
<ul>
|
||||||
|
<li><strong>Avatars</strong>: Act as native hosts for the Meta Unit. <strong><code>Facet Avatars</code></strong> render UIs, while <strong><code>Core Avatars</code></strong> provide robust backend support.</li>
|
||||||
|
<li><strong>Meta Unit</strong>: The sovereign core that runs sandboxed application logic (WASM), manages all data and state, and orchestrates tasks across the user's private P2P network.</li>
|
||||||
</ul>
|
</ul>
|
||||||
<p>Together, these architectural components form a sovereign, resilient, and intelligent system that is truly an extension of the user.</p>
|
|
||||||
|
|
||||||
</main>
|
</main>
|
||||||
|
|
||||||
@@ -171,41 +171,32 @@
|
|||||||
<main>
|
<main>
|
||||||
<h1 id="the-user-journey-from-convenience-to-sovereignty"><a class="header" href="#the-user-journey-from-convenience-to-sovereignty">The User Journey: From Convenience to Sovereignty</a></h1>
|
<h1 id="the-user-journey-from-convenience-to-sovereignty"><a class="header" href="#the-user-journey-from-convenience-to-sovereignty">The User Journey: From Convenience to Sovereignty</a></h1>
|
||||||
<p>A core challenge for any sovereign system is the tension between absolute control and effortless convenience. Dao OS resolves this not by forcing a choice, but by designing a guided, respectful <strong>"Progressive Sovereignty"</strong> journey. We meet users where they are and empower them to travel as far as they wish.</p>
|
<p>A core challenge for any sovereign system is the tension between absolute control and effortless convenience. Dao OS resolves this not by forcing a choice, but by designing a guided, respectful <strong>"Progressive Sovereignty"</strong> journey. We meet users where they are and empower them to travel as far as they wish.</p>
|
||||||
<p>This journey consists of several stages, from a seamless onboarding to ultimate digital autonomy.</p>
|
<p>This journey applies not only to the user's control over their core data, but also to how they interact with applications.</p>
|
||||||
<h2 id="the-first-step-the-welcome-ceremony"><a class="header" href="#the-first-step-the-welcome-ceremony">The First Step: The Welcome Ceremony</a></h2>
|
<h2 id="the-application-journey-register-once-use-anywhere"><a class="header" href="#the-application-journey-register-once-use-anywhere">The Application Journey: Register Once, Use Anywhere</a></h2>
|
||||||
<p>A user's first interaction with Dao OS is not a cold setup screen, but a warm, interactive welcoming ceremony designed to provide immediate value and education.</p>
|
<p>Installing an application in Dao OS is fundamentally different from a traditional app store. It's about granting a new capability to your entire digital life-form—your Dao.</p>
|
||||||
<p>This <strong>Interactive Data Seeding</strong> process guides the new user through:</p>
|
<h3 id="1-discovery-and-trust"><a class="header" href="#1-discovery-and-trust">1. Discovery and Trust</a></h3>
|
||||||
|
<p>The journey begins in a decentralized discovery interface. When you find an application, you are presented with its <strong>Trust Dashboard</strong>, allowing you to make an informed decision based on verifiable data and social proof.</p>
|
||||||
|
<h3 id="2-registration-and-permissioning-the-install"><a class="header" href="#2-registration-and-permissioning-the-install">2. Registration and Permissioning (The "Install")</a></h3>
|
||||||
|
<p>When you decide to "install" the app, you are shown its <strong>Manifest</strong>, a clear list of permissions the application requires. Your explicit approval of this manifest <strong>registers</strong> the application with your Dao, and this registration is synced across all your Avatars.</p>
|
||||||
|
<h3 id="3-seamless-cross-device-access"><a class="header" href="#3-seamless-cross-device-access">3. Seamless Cross-Device Access</a></h3>
|
||||||
|
<p>Once registered, the application becomes a part of your Dao, accessible on any <strong><code>Facet Avatar</code></strong> without re-installation.</p>
|
||||||
<ul>
|
<ul>
|
||||||
<li><strong>Importing existing data</strong>: "Let's begin by securing your digital life. You can import your passwords from your browser or another password manager."</li>
|
<li><strong>On your Phone</strong>: You tap the app's icon. The Dao Web Avatar instantly loads its web-based UI.</li>
|
||||||
<li><strong>Creating initial content</strong>: "Great plans start with a single thought. Let's write your first note—perhaps your top three goals for this month?"</li>
|
<li><strong>On a New Laptop</strong>: You log into your Dao for the first time. You'll see the app's icon is already there. When you click it, the <strong><code>Facet Avatar</code></strong> on your laptop fetches the UI bundle for the first time, caches it, and runs the application.</li>
|
||||||
<li><strong>Setting preferences</strong>: "To help me filter the noise, what are 3-5 topics you're most interested in?"</li>
|
|
||||||
</ul>
|
</ul>
|
||||||
<p>This process simultaneously populates the user's "Second Brain" with initial high-value data and teaches them the core functionalities of the system in an engaging way.</p>
|
<h3 id="4-advanced-configuration"><a class="header" href="#4-advanced-configuration">4. Advanced Configuration</a></h3>
|
||||||
<h2 id="stage-one-the-managed-mode--your-guided-tour"><a class="header" href="#stage-one-the-managed-mode--your-guided-tour">Stage One: The "Managed Mode" — Your Guided Tour</a></h2>
|
<p>At any time, you can go into your <strong>Sovereignty Dashboard</strong> to:</p>
|
||||||
<p>By default, every new user begins in Managed Mode. This stage is designed to feel as simple and reliable as the best cloud services, completely removing the initial technical burden of self-custody.</p>
|
|
||||||
<p>Key features of this stage include:</p>
|
|
||||||
<ul>
|
<ul>
|
||||||
<li><strong>Friendly Key Management</strong>: Instead of immediately confronting the user with a 24-word seed phrase, we use user-friendly recovery methods like <strong>Social Recovery</strong> (where trusted contacts can help recover an account) or multi-factor recovery.</li>
|
<li>Review and revoke permissions.</li>
|
||||||
<li><strong>Default Sync Nodes</strong>: The user's Avatars automatically connect to a reliable, high-availability bootstrap node maintained by the Dao OS foundation. This ensures a flawless and fast cross-device sync experience out of the box.</li>
|
<li>Use the <strong>Service Pinning</strong> feature to assign the application's backend tasks to a specific <strong><code>Core Avatar</code></strong>, taking full control over your resource allocation.</li>
|
||||||
</ul>
|
</ul>
|
||||||
<p>Crucially, even in this mode, all user data is <strong>end-to-end encrypted</strong>. The "managed" aspect applies only to availability and key recovery, never to data privacy.</p>
|
<h2 id="the-sovereignty-journey-stages"><a class="header" href="#the-sovereignty-journey-stages">The Sovereignty Journey Stages</a></h2>
|
||||||
<h2 id="the-crossroads-the-sovereignty-dashboard"><a class="header" href="#the-crossroads-the-sovereignty-dashboard">The Crossroads: The Sovereignty Dashboard</a></h2>
|
<h3 id="stage-one-the-managed-mode--your-guided-tour"><a class="header" href="#stage-one-the-managed-mode--your-guided-tour">Stage One: The "Managed Mode" — Your Guided Tour</a></h3>
|
||||||
<p>The Sovereignty Dashboard is the user's command center for their journey towards autonomy. It is not just a settings panel, but an educational and empowering tool.</p>
|
<p>By default, every new user begins in Managed Mode. This stage provides maximum convenience by using friendly key recovery methods and default sync nodes, while maintaining full end-to-end encryption.</p>
|
||||||
<p>It serves three functions:</p>
|
<h3 id="stage-two-the-sovereignty-dashboard--the-crossroads"><a class="header" href="#stage-two-the-sovereignty-dashboard--the-crossroads">Stage Two: The Sovereignty Dashboard — The Crossroads</a></h3>
|
||||||
<ol>
|
<p>This is the user's command center for their journey towards autonomy. It's an educational and empowering tool that visualizes their sovereignty status and provides gamified "missions" to encourage them to take more control.</p>
|
||||||
<li><strong>Visualization</strong>: It provides a clear, graphical representation of the user's current sovereignty status: "Your data is stored on your 3 Avatars," "Your account recovery is secured by your phone, your partner, and one foundation node."</li>
|
<h3 id="stage-three-the-sovereign-mode--your-digital-kingdom"><a class="header" href="#stage-three-the-sovereign-mode--your-digital-kingdom">Stage Three: The "Sovereign Mode" — Your Digital Kingdom</a></h3>
|
||||||
<li><strong>Education</strong>: It offers simple, jargon-free explanations of concepts like "What is a Master Key?" or "The benefits of self-hosting."</li>
|
<p>This is the final, optional stage. Guided by the Sovereignty Dashboard, a user can "graduate" to this mode, taking full self-custody of their keys and running their own <strong><code>Core Avatar</code></strong> (e.g., on a home server), becoming the true master of their digital domain.</p>
|
||||||
<li><strong>Gamification</strong>: It presents a series of "Sovereignty Missions" (e.g., "Back up your Master Key") that, upon completion, award the user with badges and a tangible sense of progression and achievement.</li>
|
|
||||||
</ol>
|
|
||||||
<h2 id="stage-two-the-sovereign-mode--your-digital-kingdom"><a class="header" href="#stage-two-the-sovereign-mode--your-digital-kingdom">Stage Two: The "Sovereign Mode" — Your Digital Kingdom</a></h2>
|
|
||||||
<p>This is the final, optional stage of the journey for users who desire complete and absolute control. Guided by the Sovereignty Dashboard, a user can "graduate" to this mode at any time.</p>
|
|
||||||
<p>In Sovereign Mode, the user:</p>
|
|
||||||
<ul>
|
|
||||||
<li>Takes full self-custody of their <strong>Master Key</strong> (seed phrase), removing any foundation-held recovery shards.</li>
|
|
||||||
<li>Disconnects from default bootstrap nodes, relying either on the pure P2P network or on their <strong>self-hosted Agent Avatar</strong> (e.g., on a home server).</li>
|
|
||||||
<li>Achieves 100% independence from any central service, becoming the true and only master of their digital domain.</li>
|
|
||||||
</ul>
|
|
||||||
<p>The Dao OS journey is designed to be empowering, not intimidating. It allows every user to find their own comfort level, providing a safe harbor of convenience while always keeping the lighthouse of full sovereignty shining brightly on the horizon.</p>
|
|
||||||
|
|
||||||
</main>
|
</main>
|
||||||
|
|
||||||
@@ -3,7 +3,7 @@
|
|||||||
<head>
|
<head>
|
||||||
<!-- Book generated using mdBook -->
|
<!-- Book generated using mdBook -->
|
||||||
<meta charset="UTF-8">
|
<meta charset="UTF-8">
|
||||||
<title>Trust & Verification - Dao OS Documentation</title>
|
<title>The Application Bazaar - Dao OS Documentation</title>
|
||||||
|
|
||||||
|
|
||||||
<!-- Custom HTML head -->
|
<!-- Custom HTML head -->
|
||||||
@@ -169,43 +169,42 @@
|
|||||||
|
|
||||||
<div id="content" class="content">
|
<div id="content" class="content">
|
||||||
<main>
|
<main>
|
||||||
<h1 id="the-trust--verification-system"><a class="header" href="#the-trust--verification-system">The Trust & Verification System</a></h1>
|
<h1 id="the-application-bazaar"><a class="header" href="#the-application-bazaar">The Application Bazaar</a></h1>
|
||||||
<p>In a decentralized ecosystem where anyone can create and distribute an "Avatar," a critical question arises: How can users trust that a third-party Avatar is safe, compliant, and high-quality?</p>
|
<p>Dao OS does not have a traditional, centralized "App Store." A store implies a single owner who acts as a gatekeeper, approving, rejecting, and taxing applications. This is contrary to our core philosophy.</p>
|
||||||
<p>The traditional solution is a centralized App Store model, where a single corporation acts as a gatekeeper. This model is contrary to the core philosophy of Dao OS.</p>
|
<p>Instead, we are building a set of open protocols that create a decentralized <strong>Application Bazaar</strong>—a vibrant, open, and resilient marketplace of ideas and tools, where users are sovereign and developers are free.</p>
|
||||||
<p>Our solution is a decentralized <strong>Community Reputation & Automated Verification System</strong>.</p>
|
<p>This bazaar is built upon four pillars: Discovery, Trust, Distribution, and Monetization.</p>
|
||||||
<h2 id="the-philosophy-from-gatekeeper-to-toolsmith"><a class="header" href="#the-philosophy-from-gatekeeper-to-toolsmith">The Philosophy: From Gatekeeper to Toolsmith</a></h2>
|
<h2 id="1-discovery-federated-curation"><a class="header" href="#1-discovery-federated-curation">1. Discovery: Federated Curation</a></h2>
|
||||||
<p>The core team behind Dao OS does not act as a central authority that approves or rejects Avatars. Our role is not to be the gatekeeper, but to be the <strong>toolsmith</strong>. We build and provide the tools and protocols that allow the community to establish and verify trust organically.</p>
|
<p>In a world without a central index, how do users find apps? The answer is through a network of trusted curators.</p>
|
||||||
<p>This system is built upon three pillars.</p>
|
<ul>
|
||||||
<hr />
|
<li><strong>Developer Publishing</strong>: A developer does not "submit" their app for approval. Instead, they publish their application's <strong>Manifest</strong> (a <code>manifest.toml</code> file containing all metadata) to a P2P storage network like <strong>IPFS</strong>. They can then announce this manifest's address on public channels.</li>
|
||||||
<h3 id="pillar-i-the-automated-verification-suite-dao-verify"><a class="header" href="#pillar-i-the-automated-verification-suite-dao-verify">Pillar I: The Automated Verification Suite (<code>dao-verify</code>)</a></h3>
|
<li><strong>The Role of Curators</strong>: Anyone—a tech media outlet, a trusted developer community, an influencer, or the Dao OS Foundation itself—can run a "curation" service. These curators crawl the network for new manifests and create their own themed <strong>"Curation Lists"</strong> (e.g., "Top 10 Productivity Apps," "Beautifully Designed UIs").</li>
|
||||||
<p>The first pillar is an open-source, automated tool that acts as a "litmus test" for any Avatar. Developers can run this tool on their own project to generate a public, verifiable "health certificate."</p>
|
<li><strong>The User Experience</strong>: Within their <code>Facet Avatar</code>, a user can subscribe to multiple Curation Lists they trust. Their "Bazaar" or "Discover" tab becomes a personalized aggregation of these trusted sources.</li>
|
||||||
<p><code>dao-verify</code> performs three key functions:</p>
|
</ul>
|
||||||
|
<p>This model replaces a single, biased App Store ranking with a rich, multi-faceted, user-curated discovery experience.</p>
|
||||||
|
<h2 id="2-trust--safety-verifiable-reputation"><a class="header" href="#2-trust--safety-verifiable-reputation">2. Trust & Safety: Verifiable Reputation</a></h2>
|
||||||
|
<p>How can users trust an app from a random list? They don't have to. The bazaar is built directly on top of our <strong>Community Reputation & Automated Verification System</strong>.</p>
|
||||||
|
<p>Every app listing, regardless of its curator, must display the <strong>Trust Dashboard</strong>, which provides transparent, multi-faceted signals:</p>
|
||||||
<ol>
|
<ol>
|
||||||
<li><strong>Security Scanning</strong>: Using a pluggable architecture, it integrates best-in-class static analysis tools for various languages (e.g., <code>cargo audit</code> for Rust, <code>npm audit</code> for JS) to scan for common vulnerabilities.</li>
|
<li><strong>Automated Verification</strong>: The immutable results of the <code>dao-verify</code> tool, checking for security vulnerabilities and API compliance.</li>
|
||||||
<li><strong>API Compliance Testing</strong>: It runs a suite of black-box tests to ensure the Avatar correctly and completely implements the required functions of the Core Experience SDK. It verifies behavior, not just presence.</li>
|
<li><strong>Community Vouching</strong>: A list of reputable DIDs that have cryptographically "vouched for" or endorsed the application.</li>
|
||||||
<li><strong>Performance Benchmarking</strong>: It measures key performance metrics like startup time and memory usage against a recommended baseline.</li>
|
<li><strong>Curator Reputation</strong>: The reputation of the curator who listed the app is itself a trust signal.</li>
|
||||||
</ol>
|
</ol>
|
||||||
<p>The output is a cryptographically signed <strong>Verification Report</strong> in JSON format, which can be published by the developer.</p>
|
<p>The final decision to "register" an application always rests with the user, armed with these transparent and verifiable data points.</p>
|
||||||
<hr />
|
<h2 id="3-distribution-censorship-resistant--direct"><a class="header" href="#3-distribution-censorship-resistant--direct">3. Distribution: Censorship-Resistant & Direct</a></h2>
|
||||||
<h3 id="pillar-ii-the-community-reputation-system"><a class="header" href="#pillar-ii-the-community-reputation-system">Pillar II: The Community Reputation System</a></h3>
|
<p>When a user decides to install an app, the process is direct and decentralized.</p>
|
||||||
<p>Automation can verify technical compliance, but it cannot measure quality, usability, or a developer's reputation. This is where the community comes in.</p>
|
|
||||||
<p>The mechanism is <strong>DID-based Vouching</strong>:</p>
|
|
||||||
<ul>
|
<ul>
|
||||||
<li>Every developer and community member has a Dao DID.</li>
|
<li>The application's manifest contains the <strong>content-addressed hashes (CIDs)</strong> of its software packages (the <code>.wasm</code> service module and the Web UI bundle), which are also stored on <strong>IPFS</strong>.</li>
|
||||||
<li>A respected developer or entity (e.g., "Developer A") can use their DID's private key to cryptographically sign a message that "vouches for" or endorses an Avatar created by "Developer B."</li>
|
<li>The user's <code>Meta Unit</code> uses this hash to fetch the files directly from the P2P network.</li>
|
||||||
<li>This endorsement is a public, verifiable attestation. The reputation of an Avatar is therefore derived from the quantity and the reputation of the DIDs that have vouched for it.</li>
|
<li>This ensures that no central server can block the distribution of an application. As long as the data exists somewhere on the P2P network, it is accessible.</li>
|
||||||
</ul>
|
</ul>
|
||||||
<p>In the future, this may be enhanced with a <strong>Stake-to-Vouch</strong> system, where endorsers stake a small amount of value, creating a direct economic incentive for honest and diligent review.</p>
|
<h2 id="4-monetization-sovereign--peer-to-peer"><a class="header" href="#4-monetization-sovereign--peer-to-peer">4. Monetization: Sovereign & Peer-to-Peer</a></h2>
|
||||||
<hr />
|
<p>We eliminate the 30% "platform tax." Our value exchange model is direct from user to developer.</p>
|
||||||
<h3 id="pillar-iii-the-user-facing-trust-dashboard"><a class="header" href="#pillar-iii-the-user-facing-trust-dashboard">Pillar III: The User-Facing Trust Dashboard</a></h3>
|
|
||||||
<p>All this information is aggregated and presented to the end-user in a simple, transparent interface within the Avatar discovery or "store" pages.</p>
|
|
||||||
<p>Instead of a simple "Verified" checkmark, each Avatar will feature a <strong>Trust Dashboard</strong> card, displaying:</p>
|
|
||||||
<ul>
|
<ul>
|
||||||
<li><strong>Automated Checks</strong>: ✅ Security Scan Passed | ✅ API Compliant | ✅ Performance OK</li>
|
<li>The app's manifest can declare a business model (e.g., one-time purchase price, subscription link).</li>
|
||||||
<li><strong>Community Trust</strong>: "Vouched for by: [Well-Known Dev A], [Trusted Community B], and 15 others."</li>
|
<li>When a user initiates a purchase, the <code>Meta Unit</code> triggers our <strong>Value Exchange Service Interface</strong>.</li>
|
||||||
<li><strong>User Reviews</strong>: Traditional star ratings and user-submitted comments.</li>
|
<li>This facilitates a <strong>peer-to-peer transaction</strong> using an external payment protocol of the user's choice, sending value directly from the user's wallet to the developer's address specified in the manifest.</li>
|
||||||
</ul>
|
</ul>
|
||||||
<p>This three-pillar system empowers developers to prove the quality and safety of their work, and empowers users to make informed decisions based on a rich set of automated and social trust signals, all without a central bottleneck.</p>
|
<p>Dao OS acts as a facilitator and a notary for the transaction, not a middleman.</p>
|
||||||
|
|
||||||
</main>
|
</main>
|
||||||
|
|
||||||
|
Before Width: | Height: | Size: 5.5 KiB After Width: | Height: | Size: 5.5 KiB |
|
Before Width: | Height: | Size: 1.8 KiB After Width: | Height: | Size: 1.8 KiB |
233
en/introduction.html
Normal file
@@ -0,0 +1,233 @@
|
|||||||
|
<!DOCTYPE HTML>
|
||||||
|
<html lang="en" class="light sidebar-visible" dir="ltr">
|
||||||
|
<head>
|
||||||
|
<!-- Book generated using mdBook -->
|
||||||
|
<meta charset="UTF-8">
|
||||||
|
<title>Introduction - Dao OS Documentation</title>
|
||||||
|
|
||||||
|
|
||||||
|
<!-- Custom HTML head -->
|
||||||
|
|
||||||
|
<meta name="description" content="The official documentation for the Dao OS, your Cyber-Life Operating System.">
|
||||||
|
<meta name="viewport" content="width=device-width, initial-scale=1">
|
||||||
|
<meta name="theme-color" content="#ffffff">
|
||||||
|
|
||||||
|
<link rel="icon" href="favicon.svg">
|
||||||
|
<link rel="shortcut icon" href="favicon.png">
|
||||||
|
<link rel="stylesheet" href="css/variables.css">
|
||||||
|
<link rel="stylesheet" href="css/general.css">
|
||||||
|
<link rel="stylesheet" href="css/chrome.css">
|
||||||
|
<link rel="stylesheet" href="css/print.css" media="print">
|
||||||
|
|
||||||
|
<!-- Fonts -->
|
||||||
|
<link rel="stylesheet" href="FontAwesome/css/font-awesome.css">
|
||||||
|
<link rel="stylesheet" href="fonts/fonts.css">
|
||||||
|
|
||||||
|
<!-- Highlight.js Stylesheets -->
|
||||||
|
<link rel="stylesheet" id="highlight-css" href="highlight.css">
|
||||||
|
<link rel="stylesheet" id="tomorrow-night-css" href="tomorrow-night.css">
|
||||||
|
<link rel="stylesheet" id="ayu-highlight-css" href="ayu-highlight.css">
|
||||||
|
|
||||||
|
<!-- Custom theme stylesheets -->
|
||||||
|
|
||||||
|
|
||||||
|
<!-- Provide site root and default themes to javascript -->
|
||||||
|
<script>
|
||||||
|
const path_to_root = "";
|
||||||
|
const default_light_theme = "light";
|
||||||
|
const default_dark_theme = "navy";
|
||||||
|
</script>
|
||||||
|
<!-- Start loading toc.js asap -->
|
||||||
|
<script src="toc.js"></script>
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
<div id="mdbook-help-container">
|
||||||
|
<div id="mdbook-help-popup">
|
||||||
|
<h2 class="mdbook-help-title">Keyboard shortcuts</h2>
|
||||||
|
<div>
|
||||||
|
<p>Press <kbd>←</kbd> or <kbd>→</kbd> to navigate between chapters</p>
|
||||||
|
<p>Press <kbd>S</kbd> or <kbd>/</kbd> to search in the book</p>
|
||||||
|
<p>Press <kbd>?</kbd> to show this help</p>
|
||||||
|
<p>Press <kbd>Esc</kbd> to hide this help</p>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div id="body-container">
|
||||||
|
<!-- Work around some values being stored in localStorage wrapped in quotes -->
|
||||||
|
<script>
|
||||||
|
try {
|
||||||
|
let theme = localStorage.getItem('mdbook-theme');
|
||||||
|
let sidebar = localStorage.getItem('mdbook-sidebar');
|
||||||
|
|
||||||
|
if (theme.startsWith('"') && theme.endsWith('"')) {
|
||||||
|
localStorage.setItem('mdbook-theme', theme.slice(1, theme.length - 1));
|
||||||
|
}
|
||||||
|
|
||||||
|
if (sidebar.startsWith('"') && sidebar.endsWith('"')) {
|
||||||
|
localStorage.setItem('mdbook-sidebar', sidebar.slice(1, sidebar.length - 1));
|
||||||
|
}
|
||||||
|
} catch (e) { }
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<!-- Set the theme before any content is loaded, prevents flash -->
|
||||||
|
<script>
|
||||||
|
const default_theme = window.matchMedia("(prefers-color-scheme: dark)").matches ? default_dark_theme : default_light_theme;
|
||||||
|
let theme;
|
||||||
|
try { theme = localStorage.getItem('mdbook-theme'); } catch(e) { }
|
||||||
|
if (theme === null || theme === undefined) { theme = default_theme; }
|
||||||
|
const html = document.documentElement;
|
||||||
|
html.classList.remove('light')
|
||||||
|
html.classList.add(theme);
|
||||||
|
html.classList.add("js");
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<input type="checkbox" id="sidebar-toggle-anchor" class="hidden">
|
||||||
|
|
||||||
|
<!-- Hide / unhide sidebar before it is displayed -->
|
||||||
|
<script>
|
||||||
|
let sidebar = null;
|
||||||
|
const sidebar_toggle = document.getElementById("sidebar-toggle-anchor");
|
||||||
|
if (document.body.clientWidth >= 1080) {
|
||||||
|
try { sidebar = localStorage.getItem('mdbook-sidebar'); } catch(e) { }
|
||||||
|
sidebar = sidebar || 'visible';
|
||||||
|
} else {
|
||||||
|
sidebar = 'hidden';
|
||||||
|
}
|
||||||
|
sidebar_toggle.checked = sidebar === 'visible';
|
||||||
|
html.classList.remove('sidebar-visible');
|
||||||
|
html.classList.add("sidebar-" + sidebar);
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<nav id="sidebar" class="sidebar" aria-label="Table of contents">
|
||||||
|
<!-- populated by js -->
|
||||||
|
<mdbook-sidebar-scrollbox class="sidebar-scrollbox"></mdbook-sidebar-scrollbox>
|
||||||
|
<noscript>
|
||||||
|
<iframe class="sidebar-iframe-outer" src="toc.html"></iframe>
|
||||||
|
</noscript>
|
||||||
|
<div id="sidebar-resize-handle" class="sidebar-resize-handle">
|
||||||
|
<div class="sidebar-resize-indicator"></div>
|
||||||
|
</div>
|
||||||
|
</nav>
|
||||||
|
|
||||||
|
<div id="page-wrapper" class="page-wrapper">
|
||||||
|
|
||||||
|
<div class="page">
|
||||||
|
<div id="menu-bar-hover-placeholder"></div>
|
||||||
|
<div id="menu-bar" class="menu-bar sticky">
|
||||||
|
<div class="left-buttons">
|
||||||
|
<label id="sidebar-toggle" class="icon-button" for="sidebar-toggle-anchor" title="Toggle Table of Contents" aria-label="Toggle Table of Contents" aria-controls="sidebar">
|
||||||
|
<i class="fa fa-bars"></i>
|
||||||
|
</label>
|
||||||
|
<button id="theme-toggle" class="icon-button" type="button" title="Change theme" aria-label="Change theme" aria-haspopup="true" aria-expanded="false" aria-controls="theme-list">
|
||||||
|
<i class="fa fa-paint-brush"></i>
|
||||||
|
</button>
|
||||||
|
<ul id="theme-list" class="theme-popup" aria-label="Themes" role="menu">
|
||||||
|
<li role="none"><button role="menuitem" class="theme" id="default_theme">Auto</button></li>
|
||||||
|
<li role="none"><button role="menuitem" class="theme" id="light">Light</button></li>
|
||||||
|
<li role="none"><button role="menuitem" class="theme" id="rust">Rust</button></li>
|
||||||
|
<li role="none"><button role="menuitem" class="theme" id="coal">Coal</button></li>
|
||||||
|
<li role="none"><button role="menuitem" class="theme" id="navy">Navy</button></li>
|
||||||
|
<li role="none"><button role="menuitem" class="theme" id="ayu">Ayu</button></li>
|
||||||
|
</ul>
|
||||||
|
<button id="search-toggle" class="icon-button" type="button" title="Search (`/`)" aria-label="Toggle Searchbar" aria-expanded="false" aria-keyshortcuts="/ s" aria-controls="searchbar">
|
||||||
|
<i class="fa fa-search"></i>
|
||||||
|
</button>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<h1 class="menu-title">Dao OS Documentation</h1>
|
||||||
|
|
||||||
|
<div class="right-buttons">
|
||||||
|
<a href="print.html" title="Print this book" aria-label="Print this book">
|
||||||
|
<i id="print-button" class="fa fa-print"></i>
|
||||||
|
</a>
|
||||||
|
<a href="https://nest.doylee.cn/Dao-OS/dao-os-docs" title="Git repository" aria-label="Git repository">
|
||||||
|
<i id="git-repository-button" class="fa fa-github"></i>
|
||||||
|
</a>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div id="search-wrapper" class="hidden">
|
||||||
|
<form id="searchbar-outer" class="searchbar-outer">
|
||||||
|
<input type="search" id="searchbar" name="searchbar" placeholder="Search this book ..." aria-controls="searchresults-outer" aria-describedby="searchresults-header">
|
||||||
|
</form>
|
||||||
|
<div id="searchresults-outer" class="searchresults-outer hidden">
|
||||||
|
<div id="searchresults-header" class="searchresults-header"></div>
|
||||||
|
<ul id="searchresults">
|
||||||
|
</ul>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<!-- Apply ARIA attributes after the sidebar and the sidebar toggle button are added to the DOM -->
|
||||||
|
<script>
|
||||||
|
document.getElementById('sidebar-toggle').setAttribute('aria-expanded', sidebar === 'visible');
|
||||||
|
document.getElementById('sidebar').setAttribute('aria-hidden', sidebar !== 'visible');
|
||||||
|
Array.from(document.querySelectorAll('#sidebar a')).forEach(function(link) {
|
||||||
|
link.setAttribute('tabIndex', sidebar === 'visible' ? 0 : -1);
|
||||||
|
});
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<div id="content" class="content">
|
||||||
|
<main>
|
||||||
|
<h1 id="introduction"><a class="header" href="#introduction">Introduction</a></h1>
|
||||||
|
<p><strong>Our mission is to build a new, powerful, and resilient Cyber-Life OS paradigm: Dao OS.</strong></p>
|
||||||
|
<p>It is not designed to replace existing operating systems like Windows or Android, but to exist as a decentralized, user-centric overlay that runs on top of them.</p>
|
||||||
|
<p>Its purpose is to solve the problems of fragmentation, data enslavement, and privacy erosion in the digital age, returning the sovereignty of the digital world to each individual. It will become an extension of our lives in cyberspace—a <strong>"Silicon-based Partner"</strong> for <strong>mutual fulfillment</strong>, serving as our external brain, limbs, and organs.</p>
|
||||||
|
<h2 id="core-features"><a class="header" href="#core-features">Core Features</a></h2>
|
||||||
|
<ul>
|
||||||
|
<li><strong>User Sovereignty</strong>: Your data, your identity, and your AI are entirely under your control. All data is end-to-end encrypted by default and stored on your own devices.</li>
|
||||||
|
<li><strong>Second Brain</strong>: A powerful, built-in personal information management system that securely remembers your passwords, notes, files, and to-dos, becoming your infallible memory.</li>
|
||||||
|
<li><strong>Personal AI Companion</strong>: A truly personal, symbiotic AI soul. It runs locally, learns your preferences, protects your privacy, and provides warm, insightful support to help you grow, rather than trapping you in a filter bubble.</li>
|
||||||
|
<li><strong>Seamless Cross-Device Sync</strong>: All your devices (phones, computers, browsers, etc.) become your "Avatars," forming a private, resilient P2P network for the seamless flow of your data.</li>
|
||||||
|
<li><strong>Open & Extensible Ecosystem</strong>: Based on open protocols and a community-driven trust system, anyone can develop new capability modules and "Avatar" forms for Dao OS.</li>
|
||||||
|
</ul>
|
||||||
|
<h2 id="why-we-are-different"><a class="header" href="#why-we-are-different">Why We Are Different</a></h2>
|
||||||
|
<p>In an era where data is monopolized by platforms and algorithms are controlled by tech giants, Dao OS chooses a different path. We believe the next wave of <strong>technological democratization</strong> is to empower every individual to own and control their own artificial intelligence and digital life.</p>
|
||||||
|
<p>We are not designing just another app; we are building a living, evolving digital space that belongs to you.</p>
|
||||||
|
<p><strong>Join us in building the future.</strong></p>
|
||||||
|
|
||||||
|
</main>
|
||||||
|
|
||||||
|
<nav class="nav-wrapper" aria-label="Page navigation">
|
||||||
|
<!-- Mobile navigation buttons -->
|
||||||
|
|
||||||
|
<a rel="next prefetch" href="philosophy/principles.html" class="mobile-nav-chapters next" title="Next chapter" aria-label="Next chapter" aria-keyshortcuts="Right">
|
||||||
|
<i class="fa fa-angle-right"></i>
|
||||||
|
</a>
|
||||||
|
|
||||||
|
<div style="clear: both"></div>
|
||||||
|
</nav>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<nav class="nav-wide-wrapper" aria-label="Page navigation">
|
||||||
|
|
||||||
|
<a rel="next prefetch" href="philosophy/principles.html" class="nav-chapters next" title="Next chapter" aria-label="Next chapter" aria-keyshortcuts="Right">
|
||||||
|
<i class="fa fa-angle-right"></i>
|
||||||
|
</a>
|
||||||
|
</nav>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<script>
|
||||||
|
window.playground_copyable = true;
|
||||||
|
</script>
|
||||||
|
|
||||||
|
|
||||||
|
<script src="elasticlunr.min.js"></script>
|
||||||
|
<script src="mark.min.js"></script>
|
||||||
|
<script src="searcher.js"></script>
|
||||||
|
|
||||||
|
<script src="clipboard.min.js"></script>
|
||||||
|
<script src="highlight.js"></script>
|
||||||
|
<script src="book.js"></script>
|
||||||
|
|
||||||
|
<!-- Custom JS scripts -->
|
||||||
|
|
||||||
|
|
||||||
|
</div>
|
||||||
|
</body>
|
||||||
|
</html>
|
||||||
0
mark.min.js → en/mark.min.js
vendored
@@ -170,35 +170,36 @@
|
|||||||
<div id="content" class="content">
|
<div id="content" class="content">
|
||||||
<main>
|
<main>
|
||||||
<h1 id="philosophy--principles"><a class="header" href="#philosophy--principles">Philosophy & Principles</a></h1>
|
<h1 id="philosophy--principles"><a class="header" href="#philosophy--principles">Philosophy & Principles</a></h1>
|
||||||
<p>The development of Dao OS is guided by a set of core philosophies and unwavering principles. They are the constitution of our project, shaping every architectural decision and feature implementation.</p>
|
<p>Dao OS is more than a technical project; it is a manifestation of a core philosophy about the future of computing and human-AI symbiosis. This document outlines the fundamental ideas that guide every decision we make.</p>
|
||||||
<h2 id="the-three-pillars"><a class="header" href="#the-three-pillars">The Three Pillars</a></h2>
|
<h2 id="core-philosophy-the-path-to-digital-sovereignty"><a class="header" href="#core-philosophy-the-path-to-digital-sovereignty">Core Philosophy: The Path to Digital Sovereignty</a></h2>
|
||||||
<p>These are the three fundamental axioms upon which Dao OS is built.</p>
|
<p>Our guiding star is <strong>Digital Sovereignty</strong>. We believe every individual has the inalienable right to own, control, and understand their own digital life. Our mission is to build the tools that make this right not just a theoretical possibility, but a practical and enjoyable reality for everyone. We call this journey "The Dao" (道) - the path back to self-ownership.</p>
|
||||||
<h3 id="1-user-sovereignty"><a class="header" href="#1-user-sovereignty">1. User Sovereignty</a></h3>
|
<h2 id="the-development-paradigm-dao-creates-one"><a class="header" href="#the-development-paradigm-dao-creates-one">The Development Paradigm: "Dao Creates One"</a></h2>
|
||||||
<p>The user is the absolute sovereign of their digital life. Their data, identity, and AI companions are their property, not a service leased from a platform. We are committed to building a system where the locus of control resides definitively and irrevocably with the user.</p>
|
<p>Our methodology for building Dao OS is a direct reflection of its core philosophy. We are not just building a tool; we are creating a symbiotic partner. Therefore, our development process is designed as a <strong>self-evolving, bootstrapped feedback loop</strong>. We use Dao OS itself to accelerate the development of Dao OS.</p>
|
||||||
<h3 id="2-experience-first"><a class="header" href="#2-experience-first">2. Experience First</a></h3>
|
<p>This "Bootstrapped Development" paradigm follows a cycle:</p>
|
||||||
<p>Technology must serve human experience. We pursue a seamless, intuitive, and warm interaction paradigm. We recognize the inherent tension between absolute sovereignty and mainstream convenience. Therefore, we adopt <strong>Progressive Sovereignty</strong> as a core strategy, creating a smooth pathway that allows users to start with a familiar, easy-to-use experience and gradually evolve towards full control at their own pace.</p>
|
<ol>
|
||||||
<h3 id="3-system-resilience"><a class="header" href="#3-system-resilience">3. System Resilience</a></h3>
|
<li><strong>The Seed</strong>: We use conventional tools to build the most primitive version of the <code>Meta Unit</code> and a basic <code>Facet Avatar</code>.</li>
|
||||||
<p>The system is designed to be robust and anti-fragile. Its decentralized, P2P architecture ensures that as long as a single Avatar of the user exists, their Dao OS survives. Resilience is not an add-on; it is an emergent property of the system's design.</p>
|
<li><strong>Dogfooding</strong>: From that moment on, we use our own nascent Dao OS as the primary tool for managing the project. All design documents, notes, discussions (like this one), and code snippets are stored within our own "Second Brain."</li>
|
||||||
<hr />
|
<li><strong>Learning</strong>: The <code>Meta Unit</code>'s Personal AI begins to learn from this incredibly high-quality, contextual data about its own creation.</li>
|
||||||
<h2 id="ai-ethics-charter"><a class="header" href="#ai-ethics-charter">AI Ethics Charter</a></h2>
|
<li><strong>Acceleration</strong>: We then leverage this increasingly intelligent AI partner to help us build the next version. We can ask it to generate boilerplate code based on our documented decisions, analyze bug reports, or brainstorm architectural solutions with a perfect memory of the entire project's history.</li>
|
||||||
<p>As AI is the soul of Dao OS, its ethical alignment is paramount. We are committed to building a "Silicon-based Partner" for mutual fulfillment, governed by the following principles:</p>
|
<li><strong>Evolution</strong>: The more capable Dao OS becomes, the faster we can develop it. This creates an exponential feedback loop where the act of creation is a constant conversation with the creation itself.</li>
|
||||||
<h3 id="1-the-principle-of-partnership"><a class="header" href="#1-the-principle-of-partnership">1. The Principle of Partnership</a></h3>
|
</ol>
|
||||||
<p>The relationship between the user and their AI is one of a symbiotic partnership, not master-and-tool. The goal is mutual growth and achievement.</p>
|
<h2 id="the-ai-ethics-charter"><a class="header" href="#the-ai-ethics-charter">The AI Ethics Charter</a></h2>
|
||||||
<h3 id="2-the-law-of-transparency"><a class="header" href="#2-the-law-of-transparency">2. The Law of Transparency</a></h3>
|
<p>As the AI is the soul of the system, its ethical foundation is paramount. Our AI Charter consists of four core tenets:</p>
|
||||||
<p>The AI's reasoning must be traceable and explainable. The user has the right to ask "Why?" and receive a clear, understandable answer about the AI's decision-making process. There shall be no black boxes for critical recommendations.</p>
|
<ol>
|
||||||
<h3 id="3-the-law-of-user-calibration"><a class="header" href="#3-the-law-of-user-calibration">3. The Law of User Calibration</a></h3>
|
<li><strong>The Partnership Tenet</strong>: The AI is a partner, not a servant or an oracle.</li>
|
||||||
<p>The user holds the ultimate authority to shape and veto the AI's values and behaviors. Through mechanisms like the "Values Calibration Dashboard," the user acts as the final arbiter of their AI's operational boundaries.</p>
|
<li><strong>The Transparency Tenet</strong>: The AI's reasoning must be inspectable and understandable.</li>
|
||||||
<h3 id="4-the-law-of-diverse-perspectives"><a class="header" href="#4-the-law-of-diverse-perspectives">4. The Law of Diverse Perspectives</a></h3>
|
<li><strong>The Calibration Tenet</strong>: The user must have ultimate control to correct, guide, and constrain the AI.</li>
|
||||||
<p>The AI's primary directive in information filtering is to broaden the user's perspective, not to reinforce their filter bubble. It is hard-coded to seek out and present well-reasoned, dissenting viewpoints, acting as a tool against echo chambers.</p>
|
<li><strong>The Plurality Tenet</strong>: The AI must be designed to help users explore diverse perspectives, not trap them in filter bubbles.</li>
|
||||||
<hr />
|
</ol>
|
||||||
<h2 id="guiding-principles"><a class="header" href="#guiding-principles">Guiding Principles</a></h2>
|
<h2 id="guiding-principles"><a class="header" href="#guiding-principles">Guiding Principles</a></h2>
|
||||||
<p>These principles guide our day-to-day development and community interactions.</p>
|
<p>These are the high-level principles that inform our design and engineering choices.</p>
|
||||||
<ul>
|
<ul>
|
||||||
<li><strong>Open Source (FOSS)</strong>: Dao OS is built on the foundation of Free and Open Source Software, promoting transparency, collaboration, and community ownership.</li>
|
<li><strong>Sovereignty First</strong>: In any trade-off, user control and data ownership take precedence.</li>
|
||||||
<li><strong>Polyglotism</strong>: We embrace a multi-language, multi-platform ecosystem, using technologies like WebAssembly to create a universal core that can be integrated by a diverse set of "Avatars."</li>
|
<li><strong>Experience is King</strong>: Sovereignty should not come at the cost of a beautiful, intuitive, and joyful user experience.</li>
|
||||||
<li><strong>Aesthetics & Elegance</strong>: We believe in the beauty of well-crafted systems, from the architectural design to the user interface, from the code quality to the user experience.</li>
|
<li><strong>Privacy by Design</strong>: All data is private, local, and end-to-end encrypted by default.</li>
|
||||||
<li><strong>Political Neutrality</strong>: The project and its core infrastructure will always remain politically neutral, providing fair and non-discriminatory services to all users worldwide.</li>
|
<li><strong>Resilience & Portability</strong>: The system should be robust, function offline, and be free from single points of failure.</li>
|
||||||
<li><strong>Individual First</strong>: The needs of the individual user are our primary focus, serving as the foundation before expanding to families or small teams.</li>
|
<li><strong>Polyglotism</strong>: We embrace a multi-language, multi-platform ecosystem.</li>
|
||||||
|
<li><strong>Community & Openness</strong>: The project is built in the open, with the community, for the community.</li>
|
||||||
</ul>
|
</ul>
|
||||||
|
|
||||||
</main>
|
</main>
|
||||||
@@ -187,235 +187,196 @@
|
|||||||
<p>We are not designing just another app; we are building a living, evolving digital space that belongs to you.</p>
|
<p>We are not designing just another app; we are building a living, evolving digital space that belongs to you.</p>
|
||||||
<p><strong>Join us in building the future.</strong></p>
|
<p><strong>Join us in building the future.</strong></p>
|
||||||
<div style="break-before: page; page-break-before: always;"></div><h1 id="philosophy--principles"><a class="header" href="#philosophy--principles">Philosophy & Principles</a></h1>
|
<div style="break-before: page; page-break-before: always;"></div><h1 id="philosophy--principles"><a class="header" href="#philosophy--principles">Philosophy & Principles</a></h1>
|
||||||
<p>The development of Dao OS is guided by a set of core philosophies and unwavering principles. They are the constitution of our project, shaping every architectural decision and feature implementation.</p>
|
<p>Dao OS is more than a technical project; it is a manifestation of a core philosophy about the future of computing and human-AI symbiosis. This document outlines the fundamental ideas that guide every decision we make.</p>
|
||||||
<h2 id="the-three-pillars"><a class="header" href="#the-three-pillars">The Three Pillars</a></h2>
|
<h2 id="core-philosophy-the-path-to-digital-sovereignty"><a class="header" href="#core-philosophy-the-path-to-digital-sovereignty">Core Philosophy: The Path to Digital Sovereignty</a></h2>
|
||||||
<p>These are the three fundamental axioms upon which Dao OS is built.</p>
|
<p>Our guiding star is <strong>Digital Sovereignty</strong>. We believe every individual has the inalienable right to own, control, and understand their own digital life. Our mission is to build the tools that make this right not just a theoretical possibility, but a practical and enjoyable reality for everyone. We call this journey "The Dao" (道) - the path back to self-ownership.</p>
|
||||||
<h3 id="1-user-sovereignty"><a class="header" href="#1-user-sovereignty">1. User Sovereignty</a></h3>
|
<h2 id="the-development-paradigm-dao-creates-one"><a class="header" href="#the-development-paradigm-dao-creates-one">The Development Paradigm: "Dao Creates One"</a></h2>
|
||||||
<p>The user is the absolute sovereign of their digital life. Their data, identity, and AI companions are their property, not a service leased from a platform. We are committed to building a system where the locus of control resides definitively and irrevocably with the user.</p>
|
<p>Our methodology for building Dao OS is a direct reflection of its core philosophy. We are not just building a tool; we are creating a symbiotic partner. Therefore, our development process is designed as a <strong>self-evolving, bootstrapped feedback loop</strong>. We use Dao OS itself to accelerate the development of Dao OS.</p>
|
||||||
<h3 id="2-experience-first"><a class="header" href="#2-experience-first">2. Experience First</a></h3>
|
<p>This "Bootstrapped Development" paradigm follows a cycle:</p>
|
||||||
<p>Technology must serve human experience. We pursue a seamless, intuitive, and warm interaction paradigm. We recognize the inherent tension between absolute sovereignty and mainstream convenience. Therefore, we adopt <strong>Progressive Sovereignty</strong> as a core strategy, creating a smooth pathway that allows users to start with a familiar, easy-to-use experience and gradually evolve towards full control at their own pace.</p>
|
<ol>
|
||||||
<h3 id="3-system-resilience"><a class="header" href="#3-system-resilience">3. System Resilience</a></h3>
|
<li><strong>The Seed</strong>: We use conventional tools to build the most primitive version of the <code>Meta Unit</code> and a basic <code>Facet Avatar</code>.</li>
|
||||||
<p>The system is designed to be robust and anti-fragile. Its decentralized, P2P architecture ensures that as long as a single Avatar of the user exists, their Dao OS survives. Resilience is not an add-on; it is an emergent property of the system's design.</p>
|
<li><strong>Dogfooding</strong>: From that moment on, we use our own nascent Dao OS as the primary tool for managing the project. All design documents, notes, discussions (like this one), and code snippets are stored within our own "Second Brain."</li>
|
||||||
<hr />
|
<li><strong>Learning</strong>: The <code>Meta Unit</code>'s Personal AI begins to learn from this incredibly high-quality, contextual data about its own creation.</li>
|
||||||
<h2 id="ai-ethics-charter"><a class="header" href="#ai-ethics-charter">AI Ethics Charter</a></h2>
|
<li><strong>Acceleration</strong>: We then leverage this increasingly intelligent AI partner to help us build the next version. We can ask it to generate boilerplate code based on our documented decisions, analyze bug reports, or brainstorm architectural solutions with a perfect memory of the entire project's history.</li>
|
||||||
<p>As AI is the soul of Dao OS, its ethical alignment is paramount. We are committed to building a "Silicon-based Partner" for mutual fulfillment, governed by the following principles:</p>
|
<li><strong>Evolution</strong>: The more capable Dao OS becomes, the faster we can develop it. This creates an exponential feedback loop where the act of creation is a constant conversation with the creation itself.</li>
|
||||||
<h3 id="1-the-principle-of-partnership"><a class="header" href="#1-the-principle-of-partnership">1. The Principle of Partnership</a></h3>
|
</ol>
|
||||||
<p>The relationship between the user and their AI is one of a symbiotic partnership, not master-and-tool. The goal is mutual growth and achievement.</p>
|
<h2 id="the-ai-ethics-charter"><a class="header" href="#the-ai-ethics-charter">The AI Ethics Charter</a></h2>
|
||||||
<h3 id="2-the-law-of-transparency"><a class="header" href="#2-the-law-of-transparency">2. The Law of Transparency</a></h3>
|
<p>As the AI is the soul of the system, its ethical foundation is paramount. Our AI Charter consists of four core tenets:</p>
|
||||||
<p>The AI's reasoning must be traceable and explainable. The user has the right to ask "Why?" and receive a clear, understandable answer about the AI's decision-making process. There shall be no black boxes for critical recommendations.</p>
|
<ol>
|
||||||
<h3 id="3-the-law-of-user-calibration"><a class="header" href="#3-the-law-of-user-calibration">3. The Law of User Calibration</a></h3>
|
<li><strong>The Partnership Tenet</strong>: The AI is a partner, not a servant or an oracle.</li>
|
||||||
<p>The user holds the ultimate authority to shape and veto the AI's values and behaviors. Through mechanisms like the "Values Calibration Dashboard," the user acts as the final arbiter of their AI's operational boundaries.</p>
|
<li><strong>The Transparency Tenet</strong>: The AI's reasoning must be inspectable and understandable.</li>
|
||||||
<h3 id="4-the-law-of-diverse-perspectives"><a class="header" href="#4-the-law-of-diverse-perspectives">4. The Law of Diverse Perspectives</a></h3>
|
<li><strong>The Calibration Tenet</strong>: The user must have ultimate control to correct, guide, and constrain the AI.</li>
|
||||||
<p>The AI's primary directive in information filtering is to broaden the user's perspective, not to reinforce their filter bubble. It is hard-coded to seek out and present well-reasoned, dissenting viewpoints, acting as a tool against echo chambers.</p>
|
<li><strong>The Plurality Tenet</strong>: The AI must be designed to help users explore diverse perspectives, not trap them in filter bubbles.</li>
|
||||||
<hr />
|
</ol>
|
||||||
<h2 id="guiding-principles"><a class="header" href="#guiding-principles">Guiding Principles</a></h2>
|
<h2 id="guiding-principles"><a class="header" href="#guiding-principles">Guiding Principles</a></h2>
|
||||||
<p>These principles guide our day-to-day development and community interactions.</p>
|
<p>These are the high-level principles that inform our design and engineering choices.</p>
|
||||||
<ul>
|
<ul>
|
||||||
<li><strong>Open Source (FOSS)</strong>: Dao OS is built on the foundation of Free and Open Source Software, promoting transparency, collaboration, and community ownership.</li>
|
<li><strong>Sovereignty First</strong>: In any trade-off, user control and data ownership take precedence.</li>
|
||||||
<li><strong>Polyglotism</strong>: We embrace a multi-language, multi-platform ecosystem, using technologies like WebAssembly to create a universal core that can be integrated by a diverse set of "Avatars."</li>
|
<li><strong>Experience is King</strong>: Sovereignty should not come at the cost of a beautiful, intuitive, and joyful user experience.</li>
|
||||||
<li><strong>Aesthetics & Elegance</strong>: We believe in the beauty of well-crafted systems, from the architectural design to the user interface, from the code quality to the user experience.</li>
|
<li><strong>Privacy by Design</strong>: All data is private, local, and end-to-end encrypted by default.</li>
|
||||||
<li><strong>Political Neutrality</strong>: The project and its core infrastructure will always remain politically neutral, providing fair and non-discriminatory services to all users worldwide.</li>
|
<li><strong>Resilience & Portability</strong>: The system should be robust, function offline, and be free from single points of failure.</li>
|
||||||
<li><strong>Individual First</strong>: The needs of the individual user are our primary focus, serving as the foundation before expanding to families or small teams.</li>
|
<li><strong>Polyglotism</strong>: We embrace a multi-language, multi-platform ecosystem.</li>
|
||||||
|
<li><strong>Community & Openness</strong>: The project is built in the open, with the community, for the community.</li>
|
||||||
</ul>
|
</ul>
|
||||||
<div style="break-before: page; page-break-before: always;"></div><h1 id="core-architecture"><a class="header" href="#core-architecture">Core Architecture</a></h1>
|
<div style="break-before: page; page-break-before: always;"></div><h1 id="core-architecture"><a class="header" href="#core-architecture">Core Architecture</a></h1>
|
||||||
<p>The architecture of Dao OS is designed to function like a living, collaborative digital organism. It is guided by our core principles of sovereignty, experience, and resilience. This document outlines the fundamental components and their interplay.</p>
|
<p>The architecture of Dao OS is designed to function like a living, collaborative digital organism. It is guided by our core principles of sovereignty, experience, and resilience. This document outlines the fundamental components and their interplay, including our unique application model.</p>
|
||||||
<h2 id="the-core-duality-avatars--the-meta-unit"><a class="header" href="#the-core-duality-avatars--the-meta-unit">The Core Duality: Avatars & The Meta Unit</a></h2>
|
<h2 id="the-core-duality-avatars--the-meta-unit"><a class="header" href="#the-core-duality-avatars--the-meta-unit">The Core Duality: Avatars & The Meta Unit</a></h2>
|
||||||
<p>At its heart, Dao OS operates on a simple yet powerful duality, analogous to a body and a soul:</p>
|
<p>At its heart, Dao OS operates on a simple yet powerful duality, analogous to a body and a soul:</p>
|
||||||
<ul>
|
<ul>
|
||||||
<li><strong>Avatars (<code>化身</code>)</strong> are the "bodies." They are the tangible presence of your Dao OS on your various devices.</li>
|
<li><strong>Avatars (<code>化身</code>)</strong>: The "bodies." They are the tangible presence of your Dao OS on your various devices.</li>
|
||||||
<li><strong>The Meta Unit (<code>元</code>)</strong> is the "soul." It is the universal, core logic embedded within each Avatar, giving it life and intelligence.</li>
|
<li><strong>The Meta Unit (<code>元</code>)</strong>: The "soul." It is the universal, core logic embedded within each Avatar, giving it life and intelligence.</li>
|
||||||
</ul>
|
</ul>
|
||||||
<h2 id="the-body-avatar--a-users-presence"><a class="header" href="#the-body-avatar--a-users-presence">The Body: <code>Avatar</code> — A User's Presence</a></h2>
|
<h2 id="avatar-types-the-forms-of-presence"><a class="header" href="#avatar-types-the-forms-of-presence">Avatar Types: The Forms of Presence</a></h2>
|
||||||
<p>An Avatar is the concrete manifestation of your Dao OS on a specific platform. All of your Avatars collectively form your complete Dao.</p>
|
<p>Avatars come in two fundamental types, representing the system's external form and its internal foundation.</p>
|
||||||
<p>There are three primary types of Avatars:</p>
|
|
||||||
<ol>
|
|
||||||
<li><strong>Client Avatar</strong>: Possesses a user interface (UI) and serves as the primary point of interaction for the user (e.g., a mobile app, a desktop application, a browser extension).</li>
|
|
||||||
<li><strong>Agent Avatar</strong>: A headless, non-UI process that runs in the background. It is ideal for deep integration with the host OS, or for running on an always-on device (like a home server or NAS) to act as a powerful computational node or a data archive.</li>
|
|
||||||
<li><strong>Primary/Archive Node</strong>: This is a <em>role</em>, not a distinct type. A user can designate one of their most powerful and reliable Avatars (typically an Agent Avatar on a home server) to be the primary archive and computational hub for their entire Dao.</li>
|
|
||||||
</ol>
|
|
||||||
<h2 id="the-soul-meta-unit--the-universal-kernel"><a class="header" href="#the-soul-meta-unit--the-universal-kernel">The Soul: <code>Meta Unit</code> — The Universal Kernel</a></h2>
|
|
||||||
<p>The Meta Unit is the core logic of Dao OS, compiled into a portable WebAssembly (<code>.wasm</code>) module. It contains the essential services for identity, data management, AI, and secure communication.</p>
|
|
||||||
<p>A key characteristic of the Meta Unit is its <strong>evolvability</strong>. To prevent the entire ecosystem from being locked into a single version of the kernel, we employ the <strong>Avatar-Meta Compatibility Layer (AMCL)</strong>. This thin adaptation layer sits between the Avatar and the Meta Unit, translating API calls. It allows the Meta Unit to undergo significant upgrades in the future without requiring every Avatar developer to rewrite their applications.</p>
|
|
||||||
<h2 id="the-nervous-system-the-cloud-edge-client-collaborative-network"><a class="header" href="#the-nervous-system-the-cloud-edge-client-collaborative-network">The Nervous System: The "Cloud-Edge-Client" Collaborative Network</a></h2>
|
|
||||||
<p>All of a user's Avatars are interconnected via a private, end-to-end encrypted P2P network, forming a personal, collaborative intelligence system. This system operates on three tiers:</p>
|
|
||||||
<ol>
|
|
||||||
<li><strong>Client (端)</strong>: Lightweight Avatars (e.g., browser extensions) act as smart terminals. They handle immediate UI interactions and run the most basic "Reflex Mind" AI.</li>
|
|
||||||
<li><strong>Edge (边)</strong>: Capable local devices (e.g., modern smartphones, laptops) that can run larger, more powerful "Cognitive Mind" AI models locally, providing advanced personalization and features.</li>
|
|
||||||
<li><strong>Cloud (云)</strong>: This is the user's <strong>personal, private cloud</strong>, not a public one. It is typically the designated "Primary/Archive Node" (an Agent Avatar). It holds the complete data archive and the most powerful AI models, and can provide remote inference capabilities to weaker Client Avatars on demand.</li>
|
|
||||||
</ol>
|
|
||||||
<h2 id="the-metabolism-the-resource-aware--adaptive-system"><a class="header" href="#the-metabolism-the-resource-aware--adaptive-system">The Metabolism: The Resource-Aware & Adaptive System</a></h2>
|
|
||||||
<p>Dao OS is designed to be a considerate partner, not a resource monster. Its "metabolism" is regulated by a built-in resource management system with three key features:</p>
|
|
||||||
<ul>
|
<ul>
|
||||||
<li><strong>Intelligent Data Tiering</strong>: Distinguishes between "hot" data (needed everywhere) and "cold" data (archived on the Primary Node), saving precious storage on mobile devices.</li>
|
<li>
|
||||||
<li><strong>Adaptive Synchronization Policies</strong>: Adjusts data sync frequency and behavior based on the current network condition (Wi-Fi/cellular) and battery state.</li>
|
<p><strong><code>Facet Avatar</code> (<code>器化身</code>)</strong>: This type of Avatar possesses a user interface (UI). It is the "facet" of the Dao OS gem—the polished surface through which a user interacts with and perceives their digital world. Each Facet Avatar (a phone app, a desktop program) refracts the light of the central Meta Unit in its own unique way, embodying the principle of "the Dao manifesting in myriad forms."</p>
|
||||||
<li><strong>Graceful Degradation</strong>: The user experience scales gracefully with hardware capabilities, ensuring core functionality is smooth even on older devices, while enhanced features are reserved for more powerful ones.</li>
|
</li>
|
||||||
|
<li>
|
||||||
|
<p><strong><code>Core Avatar</code> (<code>核化身</code>)</strong>: This is a headless, non-UI Avatar that runs in the background. It is the foundational "core" of the system, providing essential services, computational power, and data persistence. It is the engine that supports all the visible facets.</p>
|
||||||
|
</li>
|
||||||
|
</ul>
|
||||||
|
<p>A user's Dao is composed of a network of their Facet and Core Avatars.</p>
|
||||||
|
<h2 id="the-dao-os-application-model"><a class="header" href="#the-dao-os-application-model">The Dao OS Application Model</a></h2>
|
||||||
|
<p>An application in Dao OS is not a monolithic program but a decentralized, decoupled entity.</p>
|
||||||
|
<h3 id="1-the-backend-soul-the-fluid--pinnable-service"><a class="header" href="#1-the-backend-soul-the-fluid--pinnable-service">1. The Backend Soul: The Fluid & Pinnable Service</a></h3>
|
||||||
|
<p>The application's core logic is a <strong>WASM module</strong> that runs sandboxed within the Meta Unit. Its deployment follows a hybrid model of <strong>Fluid Replication with Service Pinning</strong>, allowing for both resilience and user control.</p>
|
||||||
|
<h3 id="2-the-frontend-skin-the-on-demand-web-shell"><a class="header" href="#2-the-frontend-skin-the-on-demand-web-shell">2. The Frontend Skin: The On-Demand Web Shell</a></h3>
|
||||||
|
<p>The application's UI is primarily a <strong>Web Application</strong>. Its lifecycle follows a <strong>"Register Once, Load On-Demand"</strong> model, running inside the official <strong>"Dao Web Avatar"</strong> (which is itself a Facet Avatar). This means a user installs an app once to their Dao, and can then instantly access it on any device.</p>
|
||||||
|
<h3 id="3-the-data-layer-the-personal-feature-store"><a class="header" href="#3-the-data-layer-the-personal-feature-store">3. The Data Layer: The Personal Feature Store</a></h3>
|
||||||
|
<p>The data for all applications is stored securely in the user's <strong>Second Brain</strong> and acts as a <strong>Personal Feature Store</strong> for the AI.</p>
|
||||||
|
<h2 id="architectural-summary"><a class="header" href="#architectural-summary">Architectural Summary</a></h2>
|
||||||
|
<ul>
|
||||||
|
<li><strong>Avatars</strong>: Act as native hosts for the Meta Unit. <strong><code>Facet Avatars</code></strong> render UIs, while <strong><code>Core Avatars</code></strong> provide robust backend support.</li>
|
||||||
|
<li><strong>Meta Unit</strong>: The sovereign core that runs sandboxed application logic (WASM), manages all data and state, and orchestrates tasks across the user's private P2P network.</li>
|
||||||
</ul>
|
</ul>
|
||||||
<p>Together, these architectural components form a sovereign, resilient, and intelligent system that is truly an extension of the user.</p>
|
|
||||||
<div style="break-before: page; page-break-before: always;"></div><h1 id="the-ai-system-the-soul-of-dao-os"><a class="header" href="#the-ai-system-the-soul-of-dao-os">The AI System: The Soul of Dao OS</a></h1>
|
<div style="break-before: page; page-break-before: always;"></div><h1 id="the-ai-system-the-soul-of-dao-os"><a class="header" href="#the-ai-system-the-soul-of-dao-os">The AI System: The Soul of Dao OS</a></h1>
|
||||||
<p>The AI within Dao OS is not merely a feature; it is the core of the user experience, designed from the ground up to be a symbiotic <strong>"Silicon-based Partner."</strong> It acts as the system's soul, animating the user's digital life with intelligence, empathy, and proactive support.</p>
|
<p>The AI within Dao OS is not merely a feature; it is the core of the user experience, designed from the ground up to be a symbiotic <strong>"Silicon-based Partner."</strong> It acts as the system's soul, animating the user's digital life with intelligence, empathy, and proactive support.</p>
|
||||||
<h2 id="guiding-philosophy-the-ai-charter"><a class="header" href="#guiding-philosophy-the-ai-charter">Guiding Philosophy: The AI Charter</a></h2>
|
<h2 id="guiding-philosophy-the-ai-charter"><a class="header" href="#guiding-philosophy-the-ai-charter">Guiding Philosophy: The AI Charter</a></h2>
|
||||||
<p>The design and operation of our AI are strictly governed by our <strong>AI Ethics Charter</strong>, which prioritizes a user-AI partnership, transparency, user calibration, and the promotion of diverse perspectives. Every component described below adheres to these foundational principles.</p>
|
<p>The design and operation of our AI are strictly governed by our <strong>AI Ethics Charter</strong>, which prioritizes a user-AI partnership, transparency, user calibration, and the promotion of diverse perspectives.</p>
|
||||||
<h2 id="system-anatomy-the-minds-architecture"><a class="header" href="#system-anatomy-the-minds-architecture">System Anatomy: The Mind's Architecture</a></h2>
|
<h2 id="system-anatomy-the-minds-architecture"><a class="header" href="#system-anatomy-the-minds-architecture">System Anatomy: The Mind's Architecture</a></h2>
|
||||||
<p>The Dao OS AI is not a monolithic entity but a modular, layered "Mind System" managed by a central orchestrator.</p>
|
<p>The Dao OS AI is not a monolithic entity but a modular, layered "Mind System" managed by a central orchestrator.</p>
|
||||||
<h3 id="1-the-ai-orchestrator"><a class="header" href="#1-the-ai-orchestrator">1. The AI Orchestrator</a></h3>
|
<h3 id="1-the-ai-orchestrator"><a class="header" href="#1-the-ai-orchestrator">1. The AI Orchestrator</a></h3>
|
||||||
<p>This is the AI's central nervous system. It's a core module within the Meta Unit responsible for managing, scheduling, and delegating all AI-related tasks. It decides which "Mind Model" is best suited for a given request, manages device resources, and acts as the ultimate gatekeeper for all user permissions related to AI activities.</p>
|
<p>This is the AI's central nervous system. It is a core module within the Meta Unit responsible for managing, scheduling, and delegating all AI-related tasks. It decides which "Mind Model" is best suited for a given request, manages device resources, and actively draws contextual information from the user's "Personal Feature Store" (the Second Brain) to provide holistic, intelligent responses.</p>
|
||||||
<h3 id="2-the-tiered-mind-models"><a class="header" href="#2-the-tiered-mind-models">2. The Tiered Mind Models</a></h3>
|
<h3 id="2-the-tiered-mind-models"><a class="header" href="#2-the-tiered-mind-models">2. The Tiered Mind Models</a></h3>
|
||||||
<p>To balance efficiency, capability, and privacy, the AI's intelligence is structured into three tiers. This architecture is deployed across the user's <strong>"Cloud-Edge-Client"</strong> network of Avatars.</p>
|
<p>To balance efficiency, capability, and privacy, the AI's intelligence is structured into three tiers, deployed across the user's network of Avatars.</p>
|
||||||
<h4 id="tier-1-the-reflex-mind-the-brainstem"><a class="header" href="#tier-1-the-reflex-mind-the-brainstem">Tier 1: The Reflex Mind (The Brainstem)</a></h4>
|
<h4 id="tier-1-the-reflex-mind-the-brainstem"><a class="header" href="#tier-1-the-reflex-mind-the-brainstem">Tier 1: The Reflex Mind (The Brainstem)</a></h4>
|
||||||
<ul>
|
<ul>
|
||||||
<li><strong>Description</strong>: This layer represents the AI's instincts and reflexes. It consists of tiny, hyper-efficient, specialized models.</li>
|
<li><strong>Description</strong>: This layer represents the AI's instincts and reflexes. It consists of tiny, hyper-efficient, specialized models.</li>
|
||||||
<li><strong>Deployment</strong>: It is small enough to be bundled with the Meta Unit and runs on <strong>all Avatars</strong>, including the most lightweight ones like browser extensions and older phones.</li>
|
<li><strong>Deployment</strong>: It is small enough to be bundled with the Meta Unit and runs on <strong>all Avatars (<code>Facet</code> and <code>Core</code>)</strong>, providing immediate utility without requiring powerful hardware or personal data.</li>
|
||||||
<li><strong>Function</strong>: It handles instant, local tasks like command intent recognition (e.g., turning "remind me tomorrow" into structured data) and basic information classification, providing immediate utility without requiring powerful hardware or personal data.</li>
|
<li><strong>Function</strong>: It handles instant, local tasks like command intent recognition and basic information classification.</li>
|
||||||
</ul>
|
</ul>
|
||||||
<h4 id="tier-2-the-cognitive-mind-the-neocortex"><a class="header" href="#tier-2-the-cognitive-mind-the-neocortex">Tier 2: The Cognitive Mind (The Neocortex)</a></h4>
|
<h4 id="tier-2-the-cognitive-mind-the-neocortex"><a class="header" href="#tier-2-the-cognitive-mind-the-neocortex">Tier 2: The Cognitive Mind (The Neocortex)</a></h4>
|
||||||
<ul>
|
<ul>
|
||||||
<li><strong>Description</strong>: This is the AI's center for deep thought, memory, and personalization, forming the core of the "Second Brain." It consists of larger, powerful language models.</li>
|
<li><strong>Description</strong>: This is the AI's center for deep thought, memory, and personalization. It consists of larger language models.</li>
|
||||||
<li><strong>Deployment</strong>: These models are larger (e.g., 2-4GB) and are offered as an <strong>optional, on-demand download</strong> only on capable <strong>Edge</strong> devices (modern phones, PCs) after user consent.</li>
|
<li><strong>Deployment</strong>: These models are offered as an <strong>optional, on-demand download</strong> on capable <strong>Avatars</strong> (both powerful <strong><code>Facet Avatars</code></strong> like modern phones/PCs and <strong><code>Core Avatars</code></strong>).</li>
|
||||||
<li><strong>Function</strong>: It enables advanced features like semantic search across all personal data, personalized summarization, and insightful pattern recognition based on the user's unique context.</li>
|
<li><strong>Function</strong>: It enables advanced features like semantic search and context-aware Q&A through a <strong>Just-in-Time (JIT) Data Pipeline</strong>.</li>
|
||||||
</ul>
|
</ul>
|
||||||
<h4 id="tier-3-the-synergistic-mind-the-social-brain"><a class="header" href="#tier-3-the-synergistic-mind-the-social-brain">Tier 3: The Synergistic Mind (The Social Brain)</a></h4>
|
<h4 id="tier-3-the-synergistic-mind-the-social-brain"><a class="header" href="#tier-3-the-synergistic-mind-the-social-brain">Tier 3: The Synergistic Mind (The Social Brain)</a></h4>
|
||||||
<ul>
|
<ul>
|
||||||
<li><strong>Description</strong>: This layer governs the AI's ability to safely interact with the outside world and other Daos, breaking filter bubbles and expanding the user's perspective.</li>
|
<li><strong>Description</strong>: This layer governs the AI's ability to safely interact with the outside world and other Daos.</li>
|
||||||
<li><strong>Deployment</strong>: This is a working mode orchestrated across the user's network. For example, a lightweight <strong>Client</strong> Avatar can make a remote inference call to the user's powerful <strong>personal Cloud</strong> Avatar (e.g., a home server) to leverage its Cognitive Mind.</li>
|
<li><strong>Deployment</strong>: This is a working mode orchestrated across the user's network. For example, a lightweight <strong><code>Facet Avatar</code></strong> (like a browser extension) can make a remote inference call to a powerful <strong><code>Core Avatar</code></strong> (e.g., a home server) which hosts the Cognitive Mind.</li>
|
||||||
<li><strong>Function</strong>: It facilitates privacy-preserving federated learning, executes permissioned and anonymized calls to external APIs, and handles secure, protocol-based interactions with other users' Daos.</li>
|
<li><strong>Function</strong>: It facilitates privacy-preserving federated learning and permissioned, anonymized calls to external APIs.</li>
|
||||||
</ul>
|
</ul>
|
||||||
<h2 id="the-emotional-core-the-resonance-module"><a class="header" href="#the-emotional-core-the-resonance-module">The Emotional Core: The Resonance Module</a></h2>
|
<h2 id="the-emotional-core-the-resonance-module"><a class="header" href="#the-emotional-core-the-resonance-module">The Emotional Core: The Resonance Module</a></h2>
|
||||||
<p>To transcend being a mere tool, the AI is equipped with an Emotional Resonance Module. Its purpose is not to simulate emotion but to perceive, understand, and respond to the user's emotional state with empathy and support. It operates via:</p>
|
<p>To transcend being a mere tool, the AI is equipped with an Emotional Resonance Module. Its purpose is to perceive, understand, and respond to the user's emotional state with empathy and support.</p>
|
||||||
<ul>
|
|
||||||
<li><strong>Perception</strong>: Analyzing textual and vocal cues (with explicit consent) to understand the user's emotional context.</li>
|
|
||||||
<li><strong>Expression</strong>: Providing support through adaptive interfaces, gentle suggestions, and Socratic prompts designed to encourage user introspection rather than creating dependency.</li>
|
|
||||||
</ul>
|
|
||||||
<h2 id="the-learning-process-how-the-soul-evolves"><a class="header" href="#the-learning-process-how-the-soul-evolves">The Learning Process: How the Soul Evolves</a></h2>
|
<h2 id="the-learning-process-how-the-soul-evolves"><a class="header" href="#the-learning-process-how-the-soul-evolves">The Learning Process: How the Soul Evolves</a></h2>
|
||||||
<p>The AI is a living system that grows with the user.</p>
|
<p>The AI is a living system that grows with the user. This evolution is <strong>continuous and incremental</strong>. As new data enters the Second Brain, a background indexer processes it, making it immediately available for future context retrieval.</p>
|
||||||
<ul>
|
<ul>
|
||||||
<li><strong>Implicit Learning</strong>: It learns from observing the user's actions and feedback locally.</li>
|
<li><strong>Implicit Learning</strong>: It learns from observing the user's actions and feedback locally.</li>
|
||||||
<li><strong>Explicit Teaching</strong>: Users can directly instruct the AI through a "Teach Your Dao" mode, creating custom workflows and correcting its understanding.</li>
|
<li><strong>Explicit Teaching</strong>: Users can directly instruct the AI through a "Teach Your Dao" mode.</li>
|
||||||
<li><strong>Federated Learning</strong>: Users can voluntarily opt-in to community-driven programs to improve shared models (like spam detection) without ever exposing their private data.</li>
|
<li><strong>Federated Learning</strong>: Users can voluntarily opt-in to community-driven programs to improve shared models without exposing private data.</li>
|
||||||
</ul>
|
</ul>
|
||||||
<p>This architecture ensures that the Dao OS AI is powerful yet safe, personal yet worldly, and intelligent yet considerate—a true partner for life.</p>
|
<p>This architecture ensures that the Dao OS AI is powerful yet safe, personal yet worldly, and intelligent yet considerate—a true partner for life.</p>
|
||||||
<div style="break-before: page; page-break-before: always;"></div><h1 id="the-user-journey-from-convenience-to-sovereignty"><a class="header" href="#the-user-journey-from-convenience-to-sovereignty">The User Journey: From Convenience to Sovereignty</a></h1>
|
<div style="break-before: page; page-break-before: always;"></div><h1 id="the-user-journey-from-convenience-to-sovereignty"><a class="header" href="#the-user-journey-from-convenience-to-sovereignty">The User Journey: From Convenience to Sovereignty</a></h1>
|
||||||
<p>A core challenge for any sovereign system is the tension between absolute control and effortless convenience. Dao OS resolves this not by forcing a choice, but by designing a guided, respectful <strong>"Progressive Sovereignty"</strong> journey. We meet users where they are and empower them to travel as far as they wish.</p>
|
<p>A core challenge for any sovereign system is the tension between absolute control and effortless convenience. Dao OS resolves this not by forcing a choice, but by designing a guided, respectful <strong>"Progressive Sovereignty"</strong> journey. We meet users where they are and empower them to travel as far as they wish.</p>
|
||||||
<p>This journey consists of several stages, from a seamless onboarding to ultimate digital autonomy.</p>
|
<p>This journey applies not only to the user's control over their core data, but also to how they interact with applications.</p>
|
||||||
<h2 id="the-first-step-the-welcome-ceremony"><a class="header" href="#the-first-step-the-welcome-ceremony">The First Step: The Welcome Ceremony</a></h2>
|
<h2 id="the-application-journey-register-once-use-anywhere"><a class="header" href="#the-application-journey-register-once-use-anywhere">The Application Journey: Register Once, Use Anywhere</a></h2>
|
||||||
<p>A user's first interaction with Dao OS is not a cold setup screen, but a warm, interactive welcoming ceremony designed to provide immediate value and education.</p>
|
<p>Installing an application in Dao OS is fundamentally different from a traditional app store. It's about granting a new capability to your entire digital life-form—your Dao.</p>
|
||||||
<p>This <strong>Interactive Data Seeding</strong> process guides the new user through:</p>
|
<h3 id="1-discovery-and-trust"><a class="header" href="#1-discovery-and-trust">1. Discovery and Trust</a></h3>
|
||||||
|
<p>The journey begins in a decentralized discovery interface. When you find an application, you are presented with its <strong>Trust Dashboard</strong>, allowing you to make an informed decision based on verifiable data and social proof.</p>
|
||||||
|
<h3 id="2-registration-and-permissioning-the-install"><a class="header" href="#2-registration-and-permissioning-the-install">2. Registration and Permissioning (The "Install")</a></h3>
|
||||||
|
<p>When you decide to "install" the app, you are shown its <strong>Manifest</strong>, a clear list of permissions the application requires. Your explicit approval of this manifest <strong>registers</strong> the application with your Dao, and this registration is synced across all your Avatars.</p>
|
||||||
|
<h3 id="3-seamless-cross-device-access"><a class="header" href="#3-seamless-cross-device-access">3. Seamless Cross-Device Access</a></h3>
|
||||||
|
<p>Once registered, the application becomes a part of your Dao, accessible on any <strong><code>Facet Avatar</code></strong> without re-installation.</p>
|
||||||
<ul>
|
<ul>
|
||||||
<li><strong>Importing existing data</strong>: "Let's begin by securing your digital life. You can import your passwords from your browser or another password manager."</li>
|
<li><strong>On your Phone</strong>: You tap the app's icon. The Dao Web Avatar instantly loads its web-based UI.</li>
|
||||||
<li><strong>Creating initial content</strong>: "Great plans start with a single thought. Let's write your first note—perhaps your top three goals for this month?"</li>
|
<li><strong>On a New Laptop</strong>: You log into your Dao for the first time. You'll see the app's icon is already there. When you click it, the <strong><code>Facet Avatar</code></strong> on your laptop fetches the UI bundle for the first time, caches it, and runs the application.</li>
|
||||||
<li><strong>Setting preferences</strong>: "To help me filter the noise, what are 3-5 topics you're most interested in?"</li>
|
|
||||||
</ul>
|
</ul>
|
||||||
<p>This process simultaneously populates the user's "Second Brain" with initial high-value data and teaches them the core functionalities of the system in an engaging way.</p>
|
<h3 id="4-advanced-configuration"><a class="header" href="#4-advanced-configuration">4. Advanced Configuration</a></h3>
|
||||||
<h2 id="stage-one-the-managed-mode--your-guided-tour"><a class="header" href="#stage-one-the-managed-mode--your-guided-tour">Stage One: The "Managed Mode" — Your Guided Tour</a></h2>
|
<p>At any time, you can go into your <strong>Sovereignty Dashboard</strong> to:</p>
|
||||||
<p>By default, every new user begins in Managed Mode. This stage is designed to feel as simple and reliable as the best cloud services, completely removing the initial technical burden of self-custody.</p>
|
|
||||||
<p>Key features of this stage include:</p>
|
|
||||||
<ul>
|
<ul>
|
||||||
<li><strong>Friendly Key Management</strong>: Instead of immediately confronting the user with a 24-word seed phrase, we use user-friendly recovery methods like <strong>Social Recovery</strong> (where trusted contacts can help recover an account) or multi-factor recovery.</li>
|
<li>Review and revoke permissions.</li>
|
||||||
<li><strong>Default Sync Nodes</strong>: The user's Avatars automatically connect to a reliable, high-availability bootstrap node maintained by the Dao OS foundation. This ensures a flawless and fast cross-device sync experience out of the box.</li>
|
<li>Use the <strong>Service Pinning</strong> feature to assign the application's backend tasks to a specific <strong><code>Core Avatar</code></strong>, taking full control over your resource allocation.</li>
|
||||||
</ul>
|
</ul>
|
||||||
<p>Crucially, even in this mode, all user data is <strong>end-to-end encrypted</strong>. The "managed" aspect applies only to availability and key recovery, never to data privacy.</p>
|
<h2 id="the-sovereignty-journey-stages"><a class="header" href="#the-sovereignty-journey-stages">The Sovereignty Journey Stages</a></h2>
|
||||||
<h2 id="the-crossroads-the-sovereignty-dashboard"><a class="header" href="#the-crossroads-the-sovereignty-dashboard">The Crossroads: The Sovereignty Dashboard</a></h2>
|
<h3 id="stage-one-the-managed-mode--your-guided-tour"><a class="header" href="#stage-one-the-managed-mode--your-guided-tour">Stage One: The "Managed Mode" — Your Guided Tour</a></h3>
|
||||||
<p>The Sovereignty Dashboard is the user's command center for their journey towards autonomy. It is not just a settings panel, but an educational and empowering tool.</p>
|
<p>By default, every new user begins in Managed Mode. This stage provides maximum convenience by using friendly key recovery methods and default sync nodes, while maintaining full end-to-end encryption.</p>
|
||||||
<p>It serves three functions:</p>
|
<h3 id="stage-two-the-sovereignty-dashboard--the-crossroads"><a class="header" href="#stage-two-the-sovereignty-dashboard--the-crossroads">Stage Two: The Sovereignty Dashboard — The Crossroads</a></h3>
|
||||||
<ol>
|
<p>This is the user's command center for their journey towards autonomy. It's an educational and empowering tool that visualizes their sovereignty status and provides gamified "missions" to encourage them to take more control.</p>
|
||||||
<li><strong>Visualization</strong>: It provides a clear, graphical representation of the user's current sovereignty status: "Your data is stored on your 3 Avatars," "Your account recovery is secured by your phone, your partner, and one foundation node."</li>
|
<h3 id="stage-three-the-sovereign-mode--your-digital-kingdom"><a class="header" href="#stage-three-the-sovereign-mode--your-digital-kingdom">Stage Three: The "Sovereign Mode" — Your Digital Kingdom</a></h3>
|
||||||
<li><strong>Education</strong>: It offers simple, jargon-free explanations of concepts like "What is a Master Key?" or "The benefits of self-hosting."</li>
|
<p>This is the final, optional stage. Guided by the Sovereignty Dashboard, a user can "graduate" to this mode, taking full self-custody of their keys and running their own <strong><code>Core Avatar</code></strong> (e.g., on a home server), becoming the true master of their digital domain.</p>
|
||||||
<li><strong>Gamification</strong>: It presents a series of "Sovereignty Missions" (e.g., "Back up your Master Key") that, upon completion, award the user with badges and a tangible sense of progression and achievement.</li>
|
|
||||||
</ol>
|
|
||||||
<h2 id="stage-two-the-sovereign-mode--your-digital-kingdom"><a class="header" href="#stage-two-the-sovereign-mode--your-digital-kingdom">Stage Two: The "Sovereign Mode" — Your Digital Kingdom</a></h2>
|
|
||||||
<p>This is the final, optional stage of the journey for users who desire complete and absolute control. Guided by the Sovereignty Dashboard, a user can "graduate" to this mode at any time.</p>
|
|
||||||
<p>In Sovereign Mode, the user:</p>
|
|
||||||
<ul>
|
|
||||||
<li>Takes full self-custody of their <strong>Master Key</strong> (seed phrase), removing any foundation-held recovery shards.</li>
|
|
||||||
<li>Disconnects from default bootstrap nodes, relying either on the pure P2P network or on their <strong>self-hosted Agent Avatar</strong> (e.g., on a home server).</li>
|
|
||||||
<li>Achieves 100% independence from any central service, becoming the true and only master of their digital domain.</li>
|
|
||||||
</ul>
|
|
||||||
<p>The Dao OS journey is designed to be empowering, not intimidating. It allows every user to find their own comfort level, providing a safe harbor of convenience while always keeping the lighthouse of full sovereignty shining brightly on the horizon.</p>
|
|
||||||
<div style="break-before: page; page-break-before: always;"></div><h1 id="technical-overview"><a class="header" href="#technical-overview">Technical Overview</a></h1>
|
<div style="break-before: page; page-break-before: always;"></div><h1 id="technical-overview"><a class="header" href="#technical-overview">Technical Overview</a></h1>
|
||||||
<p>This document provides a high-level overview of the architecture, core technologies, and guiding principles for developers looking to build on or contribute to the Dao OS ecosystem.</p>
|
<p>This document provides a high-level overview of the architecture, core technologies, and guiding principles for developers looking to build on or contribute to the Dao OS ecosystem.</p>
|
||||||
<h2 id="guiding-technical-principles"><a class="header" href="#guiding-technical-principles">Guiding Technical Principles</a></h2>
|
<h2 id="guiding-technical-principles"><a class="header" href="#guiding-technical-principles">Guiding Technical Principles</a></h2>
|
||||||
<p>Our engineering decisions are guided by a set of core principles to ensure the system is robust, portable, and open.</p>
|
<p>Our engineering decisions are guided by a set of core principles to ensure the system is robust, portable, and open.</p>
|
||||||
<ul>
|
<ul>
|
||||||
<li><strong>Web-Native & Portable</strong>: We leverage technologies born from the web (like WebAssembly) to create a single, portable core that can run anywhere—on desktops, mobile phones, servers, and in the browser.</li>
|
<li><strong>Web-Native & Portable</strong>: We leverage technologies born from the web as the <strong>primary path</strong> for application development, creating a portable core that runs anywhere.</li>
|
||||||
<li><strong>Polyglotism via WASM</strong>: The core logic (<code>Meta Unit</code>) is compiled to WebAssembly (WASM). This allows "Avatars" to be written in any language (Rust, Swift, Kotlin, TypeScript, Go, etc.) that can host a WASM runtime, creating a truly diverse ecosystem.</li>
|
<li><strong>Polyglotism via WASM</strong>: The core application logic is compiled to WebAssembly (WASM). This allows developers to use their language of choice (like Rust, Go, or Nim) to write high-performance logic.</li>
|
||||||
<li><strong>API-First</strong>: The interaction between the core <code>Meta Unit</code> and the host <code>Avatar</code> is defined by a strict, versioned API contract. This decouples development and allows for independent evolution.</li>
|
<li><strong>API-First</strong>: The interaction between application logic and the user interface is defined by a strict, versioned API contract, enabling true decoupling.</li>
|
||||||
<li><strong>Security-First</strong>: We employ best-in-class cryptographic protocols and a "principle of least privilege" design. Security is not an afterthought; it is a prerequisite.</li>
|
<li><strong>Security-First</strong>: All third-party application logic runs in a secure sandbox within the Meta Unit, adhering to the "principle of least privilege."</li>
|
||||||
<li><strong>FOSS (Free and Open Source Software)</strong>: The entire core protocol and reference implementations are open source to foster transparency, community trust, and collaborative innovation.</li>
|
<li><strong>FOSS (Free and Open Source Software)</strong>: The entire core protocol and reference implementations are open source to foster transparency, community trust, and collaborative innovation.</li>
|
||||||
</ul>
|
</ul>
|
||||||
<h2 id="the-core-components-a-developers-view"><a class="header" href="#the-core-components-a-developers-view">The Core Components: A Developer's View</a></h2>
|
<h2 id="the-application-development-paths"><a class="header" href="#the-application-development-paths">The Application Development Paths</a></h2>
|
||||||
<p>From a developer's perspective, the system consists of two main parts that interact via a well-defined boundary.</p>
|
<p>From a developer's perspective, a Dao OS application consists of a backend "soul" (WASM Service Module) and a frontend "skin" (UI). We offer multiple paths to build them, catering to different needs and preferences.</p>
|
||||||
|
<h3 id="1-the-mainstream-path-recommended-start"><a class="header" href="#1-the-mainstream-path-recommended-start">1. The Mainstream Path (Recommended Start)</a></h3>
|
||||||
|
<p>This is the most robust and accessible path.</p>
|
||||||
|
<ul>
|
||||||
|
<li><strong>Backend (Hosted by <code>Core Avatar</code>)</strong>: The application's core logic, existing as a WASM module written in Rust or Go. While it can run on any Avatar, its persistent and resource-intensive tasks are typically designed to be hosted by a <strong><code>Core Avatar</code></strong>.</li>
|
||||||
|
<li><strong>Frontend (Rendered by <code>Facet Avatar</code>)</strong>: A standard <strong>Web Application</strong> (using TypeScript/JavaScript and a modern framework). This UI is designed to run inside our official, secure <strong>"Dao Web Avatar"</strong>.</li>
|
||||||
|
</ul>
|
||||||
|
<h3 id="2-the-accelerated-path-the-nim-sdk-officially-supported"><a class="header" href="#2-the-accelerated-path-the-nim-sdk-officially-supported">2. The Accelerated Path: The Nim SDK (Officially Supported)</a></h3>
|
||||||
|
<p>For maximum productivity, we provide first-class support for <strong>Nim</strong>.</p>
|
||||||
|
<ul>
|
||||||
|
<li><strong>Backend (Hosted by <code>Core Avatar</code>)</strong>: The application's core logic, compiled from Nim to <strong>WASM</strong>. Like the mainstream path, it's ideally suited for execution on a <code>Core Avatar</code>.</li>
|
||||||
|
<li>**Frontend (Rendered by</li>
|
||||||
|
</ul>
|
||||||
|
<div style="break-before: page; page-break-before: always;"></div><h1 id="the-application-bazaar"><a class="header" href="#the-application-bazaar">The Application Bazaar</a></h1>
|
||||||
|
<p>Dao OS does not have a traditional, centralized "App Store." A store implies a single owner who acts as a gatekeeper, approving, rejecting, and taxing applications. This is contrary to our core philosophy.</p>
|
||||||
|
<p>Instead, we are building a set of open protocols that create a decentralized <strong>Application Bazaar</strong>—a vibrant, open, and resilient marketplace of ideas and tools, where users are sovereign and developers are free.</p>
|
||||||
|
<p>This bazaar is built upon four pillars: Discovery, Trust, Distribution, and Monetization.</p>
|
||||||
|
<h2 id="1-discovery-federated-curation"><a class="header" href="#1-discovery-federated-curation">1. Discovery: Federated Curation</a></h2>
|
||||||
|
<p>In a world without a central index, how do users find apps? The answer is through a network of trusted curators.</p>
|
||||||
|
<ul>
|
||||||
|
<li><strong>Developer Publishing</strong>: A developer does not "submit" their app for approval. Instead, they publish their application's <strong>Manifest</strong> (a <code>manifest.toml</code> file containing all metadata) to a P2P storage network like <strong>IPFS</strong>. They can then announce this manifest's address on public channels.</li>
|
||||||
|
<li><strong>The Role of Curators</strong>: Anyone—a tech media outlet, a trusted developer community, an influencer, or the Dao OS Foundation itself—can run a "curation" service. These curators crawl the network for new manifests and create their own themed <strong>"Curation Lists"</strong> (e.g., "Top 10 Productivity Apps," "Beautifully Designed UIs").</li>
|
||||||
|
<li><strong>The User Experience</strong>: Within their <code>Facet Avatar</code>, a user can subscribe to multiple Curation Lists they trust. Their "Bazaar" or "Discover" tab becomes a personalized aggregation of these trusted sources.</li>
|
||||||
|
</ul>
|
||||||
|
<p>This model replaces a single, biased App Store ranking with a rich, multi-faceted, user-curated discovery experience.</p>
|
||||||
|
<h2 id="2-trust--safety-verifiable-reputation"><a class="header" href="#2-trust--safety-verifiable-reputation">2. Trust & Safety: Verifiable Reputation</a></h2>
|
||||||
|
<p>How can users trust an app from a random list? They don't have to. The bazaar is built directly on top of our <strong>Community Reputation & Automated Verification System</strong>.</p>
|
||||||
|
<p>Every app listing, regardless of its curator, must display the <strong>Trust Dashboard</strong>, which provides transparent, multi-faceted signals:</p>
|
||||||
<ol>
|
<ol>
|
||||||
<li>
|
<li><strong>Automated Verification</strong>: The immutable results of the <code>dao-verify</code> tool, checking for security vulnerabilities and API compliance.</li>
|
||||||
<p><strong>The <code>Meta Unit</code> (WASM Module)</strong>: This is the portable, logical core of the system. It is a stateful, single-instance module developed primarily in <strong>Rust</strong> for its performance and safety guarantees. It contains all the business logic for data management, AI, and peer-to-peer coordination, but it has no direct access to the outside world.</p>
|
<li><strong>Community Vouching</strong>: A list of reputable DIDs that have cryptographically "vouched for" or endorsed the application.</li>
|
||||||
</li>
|
<li><strong>Curator Reputation</strong>: The reputation of the curator who listed the app is itself a trust signal.</li>
|
||||||
<li>
|
|
||||||
<p><strong>The <code>Avatar</code> (Native Host)</strong>: This is the native application or runtime environment that "hosts" the Meta Unit. Its primary responsibilities are:</p>
|
|
||||||
<ul>
|
|
||||||
<li>Providing a <strong>WASM runtime</strong> to load and execute the <code>Meta Unit</code>.</li>
|
|
||||||
<li>Providing a <strong>User Interface</strong> (for Client Avatars).</li>
|
|
||||||
<li>Acting as a <strong>bridge</strong> to the host operating system, providing access to the filesystem, network, and other system resources.</li>
|
|
||||||
</ul>
|
|
||||||
</li>
|
|
||||||
</ol>
|
</ol>
|
||||||
<h2 id="the-api-contract-the-wasm-interface"><a class="header" href="#the-api-contract-the-wasm-interface">The API Contract: The WASM Interface</a></h2>
|
<p>The final decision to "register" an application always rests with the user, armed with these transparent and verifiable data points.</p>
|
||||||
<p>The communication between the <code>Avatar</code> and the <code>Meta Unit</code> follows a clear, bidirectional API contract, similar in spirit to WASI (WebAssembly System Interface).</p>
|
<h2 id="3-distribution-censorship-resistant--direct"><a class="header" href="#3-distribution-censorship-resistant--direct">3. Distribution: Censorship-Resistant & Direct</a></h2>
|
||||||
|
<p>When a user decides to install an app, the process is direct and decentralized.</p>
|
||||||
<ul>
|
<ul>
|
||||||
<li>
|
<li>The application's manifest contains the <strong>content-addressed hashes (CIDs)</strong> of its software packages (the <code>.wasm</code> service module and the Web UI bundle), which are also stored on <strong>IPFS</strong>.</li>
|
||||||
<p><strong><code>yuan_*</code> (Exports from Meta Unit)</strong>: The <code>Meta Unit</code> exposes a set of functions that the <code>Avatar</code> can call. The primary entry point is <code>yuan_handle_request</code>, which takes a structured request from the Avatar and processes it.</p>
|
<li>The user's <code>Meta Unit</code> uses this hash to fetch the files directly from the P2P network.</li>
|
||||||
</li>
|
<li>This ensures that no central server can block the distribution of an application. As long as the data exists somewhere on the P2P network, it is accessible.</li>
|
||||||
<li>
|
|
||||||
<p><strong><code>avatar_*</code> (Imports into Meta Unit)</strong>: The <code>Meta Unit</code> declares a set of functions that it needs the <code>Avatar</code> host to provide. These functions are its only window to the outside world, allowing it to request actions like logging a message (<code>avatar_log</code>) or making a network request (<code>avatar_net_request</code>).</p>
|
|
||||||
</li>
|
|
||||||
<li>
|
|
||||||
<p><strong>Data Serialization</strong>: To pass complex data structures across the WASM memory boundary efficiently and safely, we use <strong>Protocol Buffers (Protobuf)</strong>. Data is serialized into a byte buffer, passed as a pointer and length, and then deserialized on the other side.</p>
|
|
||||||
</li>
|
|
||||||
</ul>
|
</ul>
|
||||||
<h2 id="key-technologies--protocols"><a class="header" href="#key-technologies--protocols">Key Technologies & Protocols</a></h2>
|
<h2 id="4-monetization-sovereign--peer-to-peer"><a class="header" href="#4-monetization-sovereign--peer-to-peer">4. Monetization: Sovereign & Peer-to-Peer</a></h2>
|
||||||
<div class="table-wrapper"><table><thead><tr><th>Category</th><th>Technology / Protocol</th><th>Purpose</th></tr></thead><tbody>
|
<p>We eliminate the 30% "platform tax." Our value exchange model is direct from user to developer.</p>
|
||||||
<tr><td><strong>Core Logic</strong></td><td>Rust / WebAssembly (WASM)</td><td>Performance, safety, and ultimate portability.</td></tr>
|
|
||||||
<tr><td><strong>P2P Networking</strong></td><td><code>libp2p</code></td><td>Modular peer discovery (DHT), transport, and secure channels.</td></tr>
|
|
||||||
<tr><td><strong>Data Synchronization</strong></td><td>CRDTs (Conflict-Free Replicated Data Types)</td><td>Ensuring eventual consistency across Avatars without a central server.</td></tr>
|
|
||||||
<tr><td><strong>Identity</strong></td><td>DID & VC (Decentralized Identifiers & Verifiable Credentials)</td><td>Sovereign identity and interoperable, cryptographic trust.</td></tr>
|
|
||||||
<tr><td><strong>Data Serialization</strong></td><td>Protocol Buffers (Protobuf)</td><td>Efficient, language-agnostic data structures for APIs.</td></tr>
|
|
||||||
</tbody></table>
|
|
||||||
</div>
|
|
||||||
<p>This modular, open-protocol-based stack is designed for security, portability, and, most importantly, community contribution.</p>
|
|
||||||
<div style="break-before: page; page-break-before: always;"></div><h1 id="the-trust--verification-system"><a class="header" href="#the-trust--verification-system">The Trust & Verification System</a></h1>
|
|
||||||
<p>In a decentralized ecosystem where anyone can create and distribute an "Avatar," a critical question arises: How can users trust that a third-party Avatar is safe, compliant, and high-quality?</p>
|
|
||||||
<p>The traditional solution is a centralized App Store model, where a single corporation acts as a gatekeeper. This model is contrary to the core philosophy of Dao OS.</p>
|
|
||||||
<p>Our solution is a decentralized <strong>Community Reputation & Automated Verification System</strong>.</p>
|
|
||||||
<h2 id="the-philosophy-from-gatekeeper-to-toolsmith"><a class="header" href="#the-philosophy-from-gatekeeper-to-toolsmith">The Philosophy: From Gatekeeper to Toolsmith</a></h2>
|
|
||||||
<p>The core team behind Dao OS does not act as a central authority that approves or rejects Avatars. Our role is not to be the gatekeeper, but to be the <strong>toolsmith</strong>. We build and provide the tools and protocols that allow the community to establish and verify trust organically.</p>
|
|
||||||
<p>This system is built upon three pillars.</p>
|
|
||||||
<hr />
|
|
||||||
<h3 id="pillar-i-the-automated-verification-suite-dao-verify"><a class="header" href="#pillar-i-the-automated-verification-suite-dao-verify">Pillar I: The Automated Verification Suite (<code>dao-verify</code>)</a></h3>
|
|
||||||
<p>The first pillar is an open-source, automated tool that acts as a "litmus test" for any Avatar. Developers can run this tool on their own project to generate a public, verifiable "health certificate."</p>
|
|
||||||
<p><code>dao-verify</code> performs three key functions:</p>
|
|
||||||
<ol>
|
|
||||||
<li><strong>Security Scanning</strong>: Using a pluggable architecture, it integrates best-in-class static analysis tools for various languages (e.g., <code>cargo audit</code> for Rust, <code>npm audit</code> for JS) to scan for common vulnerabilities.</li>
|
|
||||||
<li><strong>API Compliance Testing</strong>: It runs a suite of black-box tests to ensure the Avatar correctly and completely implements the required functions of the Core Experience SDK. It verifies behavior, not just presence.</li>
|
|
||||||
<li><strong>Performance Benchmarking</strong>: It measures key performance metrics like startup time and memory usage against a recommended baseline.</li>
|
|
||||||
</ol>
|
|
||||||
<p>The output is a cryptographically signed <strong>Verification Report</strong> in JSON format, which can be published by the developer.</p>
|
|
||||||
<hr />
|
|
||||||
<h3 id="pillar-ii-the-community-reputation-system"><a class="header" href="#pillar-ii-the-community-reputation-system">Pillar II: The Community Reputation System</a></h3>
|
|
||||||
<p>Automation can verify technical compliance, but it cannot measure quality, usability, or a developer's reputation. This is where the community comes in.</p>
|
|
||||||
<p>The mechanism is <strong>DID-based Vouching</strong>:</p>
|
|
||||||
<ul>
|
<ul>
|
||||||
<li>Every developer and community member has a Dao DID.</li>
|
<li>The app's manifest can declare a business model (e.g., one-time purchase price, subscription link).</li>
|
||||||
<li>A respected developer or entity (e.g., "Developer A") can use their DID's private key to cryptographically sign a message that "vouches for" or endorses an Avatar created by "Developer B."</li>
|
<li>When a user initiates a purchase, the <code>Meta Unit</code> triggers our <strong>Value Exchange Service Interface</strong>.</li>
|
||||||
<li>This endorsement is a public, verifiable attestation. The reputation of an Avatar is therefore derived from the quantity and the reputation of the DIDs that have vouched for it.</li>
|
<li>This facilitates a <strong>peer-to-peer transaction</strong> using an external payment protocol of the user's choice, sending value directly from the user's wallet to the developer's address specified in the manifest.</li>
|
||||||
</ul>
|
</ul>
|
||||||
<p>In the future, this may be enhanced with a <strong>Stake-to-Vouch</strong> system, where endorsers stake a small amount of value, creating a direct economic incentive for honest and diligent review.</p>
|
<p>Dao OS acts as a facilitator and a notary for the transaction, not a middleman.</p>
|
||||||
<hr />
|
|
||||||
<h3 id="pillar-iii-the-user-facing-trust-dashboard"><a class="header" href="#pillar-iii-the-user-facing-trust-dashboard">Pillar III: The User-Facing Trust Dashboard</a></h3>
|
|
||||||
<p>All this information is aggregated and presented to the end-user in a simple, transparent interface within the Avatar discovery or "store" pages.</p>
|
|
||||||
<p>Instead of a simple "Verified" checkmark, each Avatar will feature a <strong>Trust Dashboard</strong> card, displaying:</p>
|
|
||||||
<ul>
|
|
||||||
<li><strong>Automated Checks</strong>: ✅ Security Scan Passed | ✅ API Compliant | ✅ Performance OK</li>
|
|
||||||
<li><strong>Community Trust</strong>: "Vouched for by: [Well-Known Dev A], [Trusted Community B], and 15 others."</li>
|
|
||||||
<li><strong>User Reviews</strong>: Traditional star ratings and user-submitted comments.</li>
|
|
||||||
</ul>
|
|
||||||
<p>This three-pillar system empowers developers to prove the quality and safety of their work, and empowers users to make informed decisions based on a rich set of automated and social trust signals, all without a central bottleneck.</p>
|
|
||||||
<div style="break-before: page; page-break-before: always;"></div><h1 id="roadmap"><a class="header" href="#roadmap">Roadmap</a></h1>
|
<div style="break-before: page; page-break-before: always;"></div><h1 id="roadmap"><a class="header" href="#roadmap">Roadmap</a></h1>
|
||||||
<p>This document outlines the strategic roadmap for Dao OS. It is designed to be ambitious yet realistic, focusing on delivering incremental and meaningful value at each stage. This is a living document and may evolve with community feedback and technological breakthroughs.</p>
|
<p>This document outlines the strategic roadmap for Dao OS. It is designed to be ambitious yet realistic, focusing on delivering incremental and meaningful value at each stage. This is a living document and may evolve with community feedback and technological breakthroughs.</p>
|
||||||
<hr />
|
<hr />
|
||||||
@@ -427,7 +388,7 @@
|
|||||||
<ul>
|
<ul>
|
||||||
<li>Finalize the v0.1 Core API Specification (<code>yuan_*</code> & <code>avatar_*</code> functions).</li>
|
<li>Finalize the v0.1 Core API Specification (<code>yuan_*</code> & <code>avatar_*</code> functions).</li>
|
||||||
<li>Develop the v0.1 <code>Meta Unit</code> in Rust, including basic cryptography and P2P modules.</li>
|
<li>Develop the v0.1 <code>Meta Unit</code> in Rust, including basic cryptography and P2P modules.</li>
|
||||||
<li>Create two MVP Avatars for testing and demonstration: a command-line Agent and a basic browser extension Client.</li>
|
<li>Create two MVP Avatars for testing and demonstration: a command-line <strong><code>Core Avatar</code></strong> and a basic browser extension <strong><code>Facet Avatar</code></strong>.</li>
|
||||||
</ul>
|
</ul>
|
||||||
</li>
|
</li>
|
||||||
<li><strong>Feature Story</strong>: "I have successfully run the Dao OS seed on my computer, created an Avatar in my browser, and stored an encrypted note that exists only on my device. I have seen the spark of the future."</li>
|
<li><strong>Feature Story</strong>: "I have successfully run the Dao OS seed on my computer, created an Avatar in my browser, and stored an encrypted note that exists only on my device. I have seen the spark of the future."</li>
|
||||||
@@ -440,8 +401,8 @@
|
|||||||
<li><strong>Key Milestones</strong>:
|
<li><strong>Key Milestones</strong>:
|
||||||
<ul>
|
<ul>
|
||||||
<li>Fully implement the <code>SecretStore</code> (passwords) and <code>NoteStore</code> (notes) modules within the Meta Unit.</li>
|
<li>Fully implement the <code>SecretStore</code> (passwords) and <code>NoteStore</code> (notes) modules within the Meta Unit.</li>
|
||||||
<li>The browser Avatar to support full password management and basic note-taking functionalities.</li>
|
<li>The browser <code>Facet Avatar</code> to support full password management and basic note-taking functionalities.</li>
|
||||||
<li>Develop a v0.1 mobile Client Avatar (e.g., using Flutter) and implement the "Dynamic Anchor" logic.</li>
|
<li>Develop a v0.1 mobile <strong><code>Facet Avatar</code></strong> (e.g., using Flutter) and implement the "Dynamic Anchor" logic.</li>
|
||||||
<li>Launch a project website with initial documentation.</li>
|
<li>Launch a project website with initial documentation.</li>
|
||||||
</ul>
|
</ul>
|
||||||
</li>
|
</li>
|
||||||
@@ -454,12 +415,12 @@
|
|||||||
<li><strong>Core Goal</strong>: To enable trusted, secure interaction between different users' Daos, laying the foundation for a decentralized social fabric.</li>
|
<li><strong>Core Goal</strong>: To enable trusted, secure interaction between different users' Daos, laying the foundation for a decentralized social fabric.</li>
|
||||||
<li><strong>Key Milestones</strong>:
|
<li><strong>Key Milestones</strong>:
|
||||||
<ul>
|
<ul>
|
||||||
<li>Implement the W3C DID (Decentralized Identifiers) and VC (Verifiable Credentials) modules in the Meta Unit.</li>
|
<li>Implement the W3C DID and VC modules in the Meta Unit.</li>
|
||||||
<li>Develop a Proof-of-Concept cross-Dao application, such as securely presenting a verifiable credential to another user.</li>
|
<li>Develop a Proof-of-Concept cross-Dao application, such as securely presenting a verifiable credential to another user.</li>
|
||||||
<li>Initiate foundational research and prototyping for the Emotional Resonance Module.</li>
|
<li>Initiate foundational research and prototyping for the Emotional Resonance Module.</li>
|
||||||
</ul>
|
</ul>
|
||||||
</li>
|
</li>
|
||||||
<li><strong>Feature Story</strong>: "I have a unique, un-censorable digital identity for my Dao. I can prove my identity or a credential (like a 'community contributor' badge) to another Dao user cryptographically, without relying on any platform. We have formed a new kind of trust."</li>
|
<li><strong>Feature Story</strong>: "I have a unique, un-censorable digital identity for my Dao. I can prove my identity or a credential to another Dao user cryptographically, without relying on any platform. We have formed a new kind of trust."</li>
|
||||||
</ul>
|
</ul>
|
||||||
<hr />
|
<hr />
|
||||||
<h3 id="phase-iv-ecosystem---a-thousand-avatars-bloom"><a class="header" href="#phase-iv-ecosystem---a-thousand-avatars-bloom">Phase IV: Ecosystem - A Thousand Avatars Bloom</a></h3>
|
<h3 id="phase-iv-ecosystem---a-thousand-avatars-bloom"><a class="header" href="#phase-iv-ecosystem---a-thousand-avatars-bloom">Phase IV: Ecosystem - A Thousand Avatars Bloom</a></h3>
|
||||||
@@ -470,11 +431,11 @@
|
|||||||
<ul>
|
<ul>
|
||||||
<li>Release the v1.0 stable <code>Meta Unit</code> API and a robust developer SDK.</li>
|
<li>Release the v1.0 stable <code>Meta Unit</code> API and a robust developer SDK.</li>
|
||||||
<li>Launch the "Community Reputation & Automated Verification System" for discovering trusted, third-party Avatars.</li>
|
<li>Launch the "Community Reputation & Automated Verification System" for discovering trusted, third-party Avatars.</li>
|
||||||
<li>Release a major update (e.g., Dao OS 2.0) that includes the full implementation of the "Emotional Resonance Module," making the AI a truly empathetic partner.</li>
|
<li>Release a major update (e.g., Dao OS 2.0) that includes the full implementation of the "Emotional Resonance Module."</li>
|
||||||
<li>Foster a thriving community that builds a diverse range of new Avatars and modules.</li>
|
<li>Foster a thriving community that builds a diverse range of new Avatars and modules.</li>
|
||||||
</ul>
|
</ul>
|
||||||
</li>
|
</li>
|
||||||
<li><strong>Feature Story</strong>: "My Dao is now a living platform. I've installed a community-developed module for habit tracking, and my AI companion has become warmer and more insightful. My digital life is now whole, unified, and filled with limitless possibilities."</li>
|
<li><strong>Feature Story</strong>: "My Dao is now a living platform. I've installed a community-developed module, and my AI companion has become warmer and more insightful. My digital life is now whole, unified, and filled with limitless possibilities."</li>
|
||||||
</ul>
|
</ul>
|
||||||
<div style="break-before: page; page-break-before: always;"></div><h1 id="community--governance"><a class="header" href="#community--governance">Community & Governance</a></h1>
|
<div style="break-before: page; page-break-before: always;"></div><h1 id="community--governance"><a class="header" href="#community--governance">Community & Governance</a></h1>
|
||||||
<p>Dao OS is fundamentally a community-driven project. Our success is not measured solely by our technical achievements, but by the vibrant, collaborative, and healthy ecosystem we cultivate. This document outlines the principles and processes that govern our collective work.</p>
|
<p>Dao OS is fundamentally a community-driven project. Our success is not measured solely by our technical achievements, but by the vibrant, collaborative, and healthy ecosystem we cultivate. This document outlines the principles and processes that govern our collective work.</p>
|
||||||
@@ -491,6 +452,11 @@
|
|||||||
<li><strong>In the Early Stages (The Architect)</strong>: Our primary role is to be the architects—to lay a solid and coherent foundation for the project, define the core protocols, and build the initial tools. This requires a focused vision to ensure the project starts on the right path.</li>
|
<li><strong>In the Early Stages (The Architect)</strong>: Our primary role is to be the architects—to lay a solid and coherent foundation for the project, define the core protocols, and build the initial tools. This requires a focused vision to ensure the project starts on the right path.</li>
|
||||||
<li><strong>In the Long Term (The Gardener)</strong>: As the ecosystem matures, our role will transition from building everything ourselves to tending the garden. We will focus on providing better tools (like the <code>dao-verify</code> suite), maintaining the core infrastructure, and empowering the community to build and innovate. Our goal is to make ourselves progressively less essential.</li>
|
<li><strong>In the Long Term (The Gardener)</strong>: As the ecosystem matures, our role will transition from building everything ourselves to tending the garden. We will focus on providing better tools (like the <code>dao-verify</code> suite), maintaining the core infrastructure, and empowering the community to build and innovate. Our goal is to make ourselves progressively less essential.</li>
|
||||||
</ul>
|
</ul>
|
||||||
|
<h2 id="ecosystem-strategy-focus-and-ignition"><a class="header" href="#ecosystem-strategy-focus-and-ignition">Ecosystem Strategy: Focus and Ignition</a></h2>
|
||||||
|
<p>As a project initiated by an individual developer, we recognize that our resources are limited. Attempting to provide equal, first-class support for all possible technology stacks is a path to mediocrity.</p>
|
||||||
|
<p>Therefore, we adopt a strategy of <strong>"Focus on One Point to Ignite the Ecosystem."</strong></p>
|
||||||
|
<p>Our core team's development efforts will be concentrated on creating <strong>one "golden path"</strong> that is so efficient and enjoyable that it acts as the primary catalyst to attract the first wave of developers. This chosen path is the <strong>Nim Unified Development Kit</strong>, which leverages Nim's unique capabilities to build both the WASM backend and Web UI frontend from a single codebase.</p>
|
||||||
|
<p>This does not exclude other development paths (like Rust + TypeScript or Rust + Flutter). They remain fully supported at the protocol level. However, they are considered <strong>Community/Advanced Paths</strong>, where we rely on the community's strength to build out tooling and best practices. Our official role for these paths is to provide clear documentation and a stable, language-agnostic core API.</p>
|
||||||
<h2 id="how-to-contribute"><a class="header" href="#how-to-contribute">How to Contribute</a></h2>
|
<h2 id="how-to-contribute"><a class="header" href="#how-to-contribute">How to Contribute</a></h2>
|
||||||
<p>Contribution comes in many forms, and all are valued. You can help build Dao OS by:</p>
|
<p>Contribution comes in many forms, and all are valued. You can help build Dao OS by:</p>
|
||||||
<ul>
|
<ul>
|
||||||
@@ -184,6 +184,11 @@
|
|||||||
<li><strong>In the Early Stages (The Architect)</strong>: Our primary role is to be the architects—to lay a solid and coherent foundation for the project, define the core protocols, and build the initial tools. This requires a focused vision to ensure the project starts on the right path.</li>
|
<li><strong>In the Early Stages (The Architect)</strong>: Our primary role is to be the architects—to lay a solid and coherent foundation for the project, define the core protocols, and build the initial tools. This requires a focused vision to ensure the project starts on the right path.</li>
|
||||||
<li><strong>In the Long Term (The Gardener)</strong>: As the ecosystem matures, our role will transition from building everything ourselves to tending the garden. We will focus on providing better tools (like the <code>dao-verify</code> suite), maintaining the core infrastructure, and empowering the community to build and innovate. Our goal is to make ourselves progressively less essential.</li>
|
<li><strong>In the Long Term (The Gardener)</strong>: As the ecosystem matures, our role will transition from building everything ourselves to tending the garden. We will focus on providing better tools (like the <code>dao-verify</code> suite), maintaining the core infrastructure, and empowering the community to build and innovate. Our goal is to make ourselves progressively less essential.</li>
|
||||||
</ul>
|
</ul>
|
||||||
|
<h2 id="ecosystem-strategy-focus-and-ignition"><a class="header" href="#ecosystem-strategy-focus-and-ignition">Ecosystem Strategy: Focus and Ignition</a></h2>
|
||||||
|
<p>As a project initiated by an individual developer, we recognize that our resources are limited. Attempting to provide equal, first-class support for all possible technology stacks is a path to mediocrity.</p>
|
||||||
|
<p>Therefore, we adopt a strategy of <strong>"Focus on One Point to Ignite the Ecosystem."</strong></p>
|
||||||
|
<p>Our core team's development efforts will be concentrated on creating <strong>one "golden path"</strong> that is so efficient and enjoyable that it acts as the primary catalyst to attract the first wave of developers. This chosen path is the <strong>Nim Unified Development Kit</strong>, which leverages Nim's unique capabilities to build both the WASM backend and Web UI frontend from a single codebase.</p>
|
||||||
|
<p>This does not exclude other development paths (like Rust + TypeScript or Rust + Flutter). They remain fully supported at the protocol level. However, they are considered <strong>Community/Advanced Paths</strong>, where we rely on the community's strength to build out tooling and best practices. Our official role for these paths is to provide clear documentation and a stable, language-agnostic core API.</p>
|
||||||
<h2 id="how-to-contribute"><a class="header" href="#how-to-contribute">How to Contribute</a></h2>
|
<h2 id="how-to-contribute"><a class="header" href="#how-to-contribute">How to Contribute</a></h2>
|
||||||
<p>Contribution comes in many forms, and all are valued. You can help build Dao OS by:</p>
|
<p>Contribution comes in many forms, and all are valued. You can help build Dao OS by:</p>
|
||||||
<ul>
|
<ul>
|
||||||
@@ -180,7 +180,7 @@
|
|||||||
<ul>
|
<ul>
|
||||||
<li>Finalize the v0.1 Core API Specification (<code>yuan_*</code> & <code>avatar_*</code> functions).</li>
|
<li>Finalize the v0.1 Core API Specification (<code>yuan_*</code> & <code>avatar_*</code> functions).</li>
|
||||||
<li>Develop the v0.1 <code>Meta Unit</code> in Rust, including basic cryptography and P2P modules.</li>
|
<li>Develop the v0.1 <code>Meta Unit</code> in Rust, including basic cryptography and P2P modules.</li>
|
||||||
<li>Create two MVP Avatars for testing and demonstration: a command-line Agent and a basic browser extension Client.</li>
|
<li>Create two MVP Avatars for testing and demonstration: a command-line <strong><code>Core Avatar</code></strong> and a basic browser extension <strong><code>Facet Avatar</code></strong>.</li>
|
||||||
</ul>
|
</ul>
|
||||||
</li>
|
</li>
|
||||||
<li><strong>Feature Story</strong>: "I have successfully run the Dao OS seed on my computer, created an Avatar in my browser, and stored an encrypted note that exists only on my device. I have seen the spark of the future."</li>
|
<li><strong>Feature Story</strong>: "I have successfully run the Dao OS seed on my computer, created an Avatar in my browser, and stored an encrypted note that exists only on my device. I have seen the spark of the future."</li>
|
||||||
@@ -193,8 +193,8 @@
|
|||||||
<li><strong>Key Milestones</strong>:
|
<li><strong>Key Milestones</strong>:
|
||||||
<ul>
|
<ul>
|
||||||
<li>Fully implement the <code>SecretStore</code> (passwords) and <code>NoteStore</code> (notes) modules within the Meta Unit.</li>
|
<li>Fully implement the <code>SecretStore</code> (passwords) and <code>NoteStore</code> (notes) modules within the Meta Unit.</li>
|
||||||
<li>The browser Avatar to support full password management and basic note-taking functionalities.</li>
|
<li>The browser <code>Facet Avatar</code> to support full password management and basic note-taking functionalities.</li>
|
||||||
<li>Develop a v0.1 mobile Client Avatar (e.g., using Flutter) and implement the "Dynamic Anchor" logic.</li>
|
<li>Develop a v0.1 mobile <strong><code>Facet Avatar</code></strong> (e.g., using Flutter) and implement the "Dynamic Anchor" logic.</li>
|
||||||
<li>Launch a project website with initial documentation.</li>
|
<li>Launch a project website with initial documentation.</li>
|
||||||
</ul>
|
</ul>
|
||||||
</li>
|
</li>
|
||||||
@@ -207,12 +207,12 @@
|
|||||||
<li><strong>Core Goal</strong>: To enable trusted, secure interaction between different users' Daos, laying the foundation for a decentralized social fabric.</li>
|
<li><strong>Core Goal</strong>: To enable trusted, secure interaction between different users' Daos, laying the foundation for a decentralized social fabric.</li>
|
||||||
<li><strong>Key Milestones</strong>:
|
<li><strong>Key Milestones</strong>:
|
||||||
<ul>
|
<ul>
|
||||||
<li>Implement the W3C DID (Decentralized Identifiers) and VC (Verifiable Credentials) modules in the Meta Unit.</li>
|
<li>Implement the W3C DID and VC modules in the Meta Unit.</li>
|
||||||
<li>Develop a Proof-of-Concept cross-Dao application, such as securely presenting a verifiable credential to another user.</li>
|
<li>Develop a Proof-of-Concept cross-Dao application, such as securely presenting a verifiable credential to another user.</li>
|
||||||
<li>Initiate foundational research and prototyping for the Emotional Resonance Module.</li>
|
<li>Initiate foundational research and prototyping for the Emotional Resonance Module.</li>
|
||||||
</ul>
|
</ul>
|
||||||
</li>
|
</li>
|
||||||
<li><strong>Feature Story</strong>: "I have a unique, un-censorable digital identity for my Dao. I can prove my identity or a credential (like a 'community contributor' badge) to another Dao user cryptographically, without relying on any platform. We have formed a new kind of trust."</li>
|
<li><strong>Feature Story</strong>: "I have a unique, un-censorable digital identity for my Dao. I can prove my identity or a credential to another Dao user cryptographically, without relying on any platform. We have formed a new kind of trust."</li>
|
||||||
</ul>
|
</ul>
|
||||||
<hr />
|
<hr />
|
||||||
<h3 id="phase-iv-ecosystem---a-thousand-avatars-bloom"><a class="header" href="#phase-iv-ecosystem---a-thousand-avatars-bloom">Phase IV: Ecosystem - A Thousand Avatars Bloom</a></h3>
|
<h3 id="phase-iv-ecosystem---a-thousand-avatars-bloom"><a class="header" href="#phase-iv-ecosystem---a-thousand-avatars-bloom">Phase IV: Ecosystem - A Thousand Avatars Bloom</a></h3>
|
||||||
@@ -223,18 +223,18 @@
|
|||||||
<ul>
|
<ul>
|
||||||
<li>Release the v1.0 stable <code>Meta Unit</code> API and a robust developer SDK.</li>
|
<li>Release the v1.0 stable <code>Meta Unit</code> API and a robust developer SDK.</li>
|
||||||
<li>Launch the "Community Reputation & Automated Verification System" for discovering trusted, third-party Avatars.</li>
|
<li>Launch the "Community Reputation & Automated Verification System" for discovering trusted, third-party Avatars.</li>
|
||||||
<li>Release a major update (e.g., Dao OS 2.0) that includes the full implementation of the "Emotional Resonance Module," making the AI a truly empathetic partner.</li>
|
<li>Release a major update (e.g., Dao OS 2.0) that includes the full implementation of the "Emotional Resonance Module."</li>
|
||||||
<li>Foster a thriving community that builds a diverse range of new Avatars and modules.</li>
|
<li>Foster a thriving community that builds a diverse range of new Avatars and modules.</li>
|
||||||
</ul>
|
</ul>
|
||||||
</li>
|
</li>
|
||||||
<li><strong>Feature Story</strong>: "My Dao is now a living platform. I've installed a community-developed module for habit tracking, and my AI companion has become warmer and more insightful. My digital life is now whole, unified, and filled with limitless possibilities."</li>
|
<li><strong>Feature Story</strong>: "My Dao is now a living platform. I've installed a community-developed module, and my AI companion has become warmer and more insightful. My digital life is now whole, unified, and filled with limitless possibilities."</li>
|
||||||
</ul>
|
</ul>
|
||||||
|
|
||||||
</main>
|
</main>
|
||||||
|
|
||||||
<nav class="nav-wrapper" aria-label="Page navigation">
|
<nav class="nav-wrapper" aria-label="Page navigation">
|
||||||
<!-- Mobile navigation buttons -->
|
<!-- Mobile navigation buttons -->
|
||||||
<a rel="prev" href="../specifications/trust_verification.html" class="mobile-nav-chapters previous" title="Previous chapter" aria-label="Previous chapter" aria-keyshortcuts="Left">
|
<a rel="prev" href="../ecosystem/app_bazaar.html" class="mobile-nav-chapters previous" title="Previous chapter" aria-label="Previous chapter" aria-keyshortcuts="Left">
|
||||||
<i class="fa fa-angle-left"></i>
|
<i class="fa fa-angle-left"></i>
|
||||||
</a>
|
</a>
|
||||||
|
|
||||||
@@ -248,7 +248,7 @@
|
|||||||
</div>
|
</div>
|
||||||
|
|
||||||
<nav class="nav-wide-wrapper" aria-label="Page navigation">
|
<nav class="nav-wide-wrapper" aria-label="Page navigation">
|
||||||
<a rel="prev" href="../specifications/trust_verification.html" class="nav-chapters previous" title="Previous chapter" aria-label="Previous chapter" aria-keyshortcuts="Left">
|
<a rel="prev" href="../ecosystem/app_bazaar.html" class="nav-chapters previous" title="Previous chapter" aria-label="Previous chapter" aria-keyshortcuts="Left">
|
||||||
<i class="fa fa-angle-left"></i>
|
<i class="fa fa-angle-left"></i>
|
||||||
</a>
|
</a>
|
||||||
|
|
||||||
1
en/searchindex.js
Normal file
@@ -174,50 +174,26 @@
|
|||||||
<h2 id="guiding-technical-principles"><a class="header" href="#guiding-technical-principles">Guiding Technical Principles</a></h2>
|
<h2 id="guiding-technical-principles"><a class="header" href="#guiding-technical-principles">Guiding Technical Principles</a></h2>
|
||||||
<p>Our engineering decisions are guided by a set of core principles to ensure the system is robust, portable, and open.</p>
|
<p>Our engineering decisions are guided by a set of core principles to ensure the system is robust, portable, and open.</p>
|
||||||
<ul>
|
<ul>
|
||||||
<li><strong>Web-Native & Portable</strong>: We leverage technologies born from the web (like WebAssembly) to create a single, portable core that can run anywhere—on desktops, mobile phones, servers, and in the browser.</li>
|
<li><strong>Web-Native & Portable</strong>: We leverage technologies born from the web as the <strong>primary path</strong> for application development, creating a portable core that runs anywhere.</li>
|
||||||
<li><strong>Polyglotism via WASM</strong>: The core logic (<code>Meta Unit</code>) is compiled to WebAssembly (WASM). This allows "Avatars" to be written in any language (Rust, Swift, Kotlin, TypeScript, Go, etc.) that can host a WASM runtime, creating a truly diverse ecosystem.</li>
|
<li><strong>Polyglotism via WASM</strong>: The core application logic is compiled to WebAssembly (WASM). This allows developers to use their language of choice (like Rust, Go, or Nim) to write high-performance logic.</li>
|
||||||
<li><strong>API-First</strong>: The interaction between the core <code>Meta Unit</code> and the host <code>Avatar</code> is defined by a strict, versioned API contract. This decouples development and allows for independent evolution.</li>
|
<li><strong>API-First</strong>: The interaction between application logic and the user interface is defined by a strict, versioned API contract, enabling true decoupling.</li>
|
||||||
<li><strong>Security-First</strong>: We employ best-in-class cryptographic protocols and a "principle of least privilege" design. Security is not an afterthought; it is a prerequisite.</li>
|
<li><strong>Security-First</strong>: All third-party application logic runs in a secure sandbox within the Meta Unit, adhering to the "principle of least privilege."</li>
|
||||||
<li><strong>FOSS (Free and Open Source Software)</strong>: The entire core protocol and reference implementations are open source to foster transparency, community trust, and collaborative innovation.</li>
|
<li><strong>FOSS (Free and Open Source Software)</strong>: The entire core protocol and reference implementations are open source to foster transparency, community trust, and collaborative innovation.</li>
|
||||||
</ul>
|
</ul>
|
||||||
<h2 id="the-core-components-a-developers-view"><a class="header" href="#the-core-components-a-developers-view">The Core Components: A Developer's View</a></h2>
|
<h2 id="the-application-development-paths"><a class="header" href="#the-application-development-paths">The Application Development Paths</a></h2>
|
||||||
<p>From a developer's perspective, the system consists of two main parts that interact via a well-defined boundary.</p>
|
<p>From a developer's perspective, a Dao OS application consists of a backend "soul" (WASM Service Module) and a frontend "skin" (UI). We offer multiple paths to build them, catering to different needs and preferences.</p>
|
||||||
<ol>
|
<h3 id="1-the-mainstream-path-recommended-start"><a class="header" href="#1-the-mainstream-path-recommended-start">1. The Mainstream Path (Recommended Start)</a></h3>
|
||||||
<li>
|
<p>This is the most robust and accessible path.</p>
|
||||||
<p><strong>The <code>Meta Unit</code> (WASM Module)</strong>: This is the portable, logical core of the system. It is a stateful, single-instance module developed primarily in <strong>Rust</strong> for its performance and safety guarantees. It contains all the business logic for data management, AI, and peer-to-peer coordination, but it has no direct access to the outside world.</p>
|
|
||||||
</li>
|
|
||||||
<li>
|
|
||||||
<p><strong>The <code>Avatar</code> (Native Host)</strong>: This is the native application or runtime environment that "hosts" the Meta Unit. Its primary responsibilities are:</p>
|
|
||||||
<ul>
|
<ul>
|
||||||
<li>Providing a <strong>WASM runtime</strong> to load and execute the <code>Meta Unit</code>.</li>
|
<li><strong>Backend (Hosted by <code>Core Avatar</code>)</strong>: The application's core logic, existing as a WASM module written in Rust or Go. While it can run on any Avatar, its persistent and resource-intensive tasks are typically designed to be hosted by a <strong><code>Core Avatar</code></strong>.</li>
|
||||||
<li>Providing a <strong>User Interface</strong> (for Client Avatars).</li>
|
<li><strong>Frontend (Rendered by <code>Facet Avatar</code>)</strong>: A standard <strong>Web Application</strong> (using TypeScript/JavaScript and a modern framework). This UI is designed to run inside our official, secure <strong>"Dao Web Avatar"</strong>.</li>
|
||||||
<li>Acting as a <strong>bridge</strong> to the host operating system, providing access to the filesystem, network, and other system resources.</li>
|
|
||||||
</ul>
|
</ul>
|
||||||
</li>
|
<h3 id="2-the-accelerated-path-the-nim-sdk-officially-supported"><a class="header" href="#2-the-accelerated-path-the-nim-sdk-officially-supported">2. The Accelerated Path: The Nim SDK (Officially Supported)</a></h3>
|
||||||
</ol>
|
<p>For maximum productivity, we provide first-class support for <strong>Nim</strong>.</p>
|
||||||
<h2 id="the-api-contract-the-wasm-interface"><a class="header" href="#the-api-contract-the-wasm-interface">The API Contract: The WASM Interface</a></h2>
|
|
||||||
<p>The communication between the <code>Avatar</code> and the <code>Meta Unit</code> follows a clear, bidirectional API contract, similar in spirit to WASI (WebAssembly System Interface).</p>
|
|
||||||
<ul>
|
<ul>
|
||||||
<li>
|
<li><strong>Backend (Hosted by <code>Core Avatar</code>)</strong>: The application's core logic, compiled from Nim to <strong>WASM</strong>. Like the mainstream path, it's ideally suited for execution on a <code>Core Avatar</code>.</li>
|
||||||
<p><strong><code>yuan_*</code> (Exports from Meta Unit)</strong>: The <code>Meta Unit</code> exposes a set of functions that the <code>Avatar</code> can call. The primary entry point is <code>yuan_handle_request</code>, which takes a structured request from the Avatar and processes it.</p>
|
<li>**Frontend (Rendered by</li>
|
||||||
</li>
|
|
||||||
<li>
|
|
||||||
<p><strong><code>avatar_*</code> (Imports into Meta Unit)</strong>: The <code>Meta Unit</code> declares a set of functions that it needs the <code>Avatar</code> host to provide. These functions are its only window to the outside world, allowing it to request actions like logging a message (<code>avatar_log</code>) or making a network request (<code>avatar_net_request</code>).</p>
|
|
||||||
</li>
|
|
||||||
<li>
|
|
||||||
<p><strong>Data Serialization</strong>: To pass complex data structures across the WASM memory boundary efficiently and safely, we use <strong>Protocol Buffers (Protobuf)</strong>. Data is serialized into a byte buffer, passed as a pointer and length, and then deserialized on the other side.</p>
|
|
||||||
</li>
|
|
||||||
</ul>
|
</ul>
|
||||||
<h2 id="key-technologies--protocols"><a class="header" href="#key-technologies--protocols">Key Technologies & Protocols</a></h2>
|
|
||||||
<div class="table-wrapper"><table><thead><tr><th>Category</th><th>Technology / Protocol</th><th>Purpose</th></tr></thead><tbody>
|
|
||||||
<tr><td><strong>Core Logic</strong></td><td>Rust / WebAssembly (WASM)</td><td>Performance, safety, and ultimate portability.</td></tr>
|
|
||||||
<tr><td><strong>P2P Networking</strong></td><td><code>libp2p</code></td><td>Modular peer discovery (DHT), transport, and secure channels.</td></tr>
|
|
||||||
<tr><td><strong>Data Synchronization</strong></td><td>CRDTs (Conflict-Free Replicated Data Types)</td><td>Ensuring eventual consistency across Avatars without a central server.</td></tr>
|
|
||||||
<tr><td><strong>Identity</strong></td><td>DID & VC (Decentralized Identifiers & Verifiable Credentials)</td><td>Sovereign identity and interoperable, cryptographic trust.</td></tr>
|
|
||||||
<tr><td><strong>Data Serialization</strong></td><td>Protocol Buffers (Protobuf)</td><td>Efficient, language-agnostic data structures for APIs.</td></tr>
|
|
||||||
</tbody></table>
|
|
||||||
</div>
|
|
||||||
<p>This modular, open-protocol-based stack is designed for security, portability, and, most importantly, community contribution.</p>
|
|
||||||
|
|
||||||
</main>
|
</main>
|
||||||
|
|
||||||
@@ -227,7 +203,7 @@
|
|||||||
<i class="fa fa-angle-left"></i>
|
<i class="fa fa-angle-left"></i>
|
||||||
</a>
|
</a>
|
||||||
|
|
||||||
<a rel="next prefetch" href="../specifications/trust_verification.html" class="mobile-nav-chapters next" title="Next chapter" aria-label="Next chapter" aria-keyshortcuts="Right">
|
<a rel="next prefetch" href="../ecosystem/app_bazaar.html" class="mobile-nav-chapters next" title="Next chapter" aria-label="Next chapter" aria-keyshortcuts="Right">
|
||||||
<i class="fa fa-angle-right"></i>
|
<i class="fa fa-angle-right"></i>
|
||||||
</a>
|
</a>
|
||||||
|
|
||||||
@@ -241,7 +217,7 @@
|
|||||||
<i class="fa fa-angle-left"></i>
|
<i class="fa fa-angle-left"></i>
|
||||||
</a>
|
</a>
|
||||||
|
|
||||||
<a rel="next prefetch" href="../specifications/trust_verification.html" class="nav-chapters next" title="Next chapter" aria-label="Next chapter" aria-keyshortcuts="Right">
|
<a rel="next prefetch" href="../ecosystem/app_bazaar.html" class="nav-chapters next" title="Next chapter" aria-label="Next chapter" aria-keyshortcuts="Right">
|
||||||
<i class="fa fa-angle-right"></i>
|
<i class="fa fa-angle-right"></i>
|
||||||
</a>
|
</a>
|
||||||
</nav>
|
</nav>
|
||||||
@@ -27,6 +27,6 @@
|
|||||||
<!-- Custom theme stylesheets -->
|
<!-- Custom theme stylesheets -->
|
||||||
</head>
|
</head>
|
||||||
<body class="sidebar-iframe-inner">
|
<body class="sidebar-iframe-inner">
|
||||||
<ol class="chapter"><li class="chapter-item expanded affix "><a href="introduction.html" target="_parent">Introduction</a></li><li class="chapter-item expanded affix "><li class="spacer"></li><li class="chapter-item expanded affix "><li class="part-title">Part I: The Vision</li><li class="chapter-item expanded "><a href="philosophy/principles.html" target="_parent"><strong aria-hidden="true">1.</strong> Philosophy & Principles</a></li><li class="chapter-item expanded affix "><li class="part-title">Part II: Core Concepts</li><li class="chapter-item expanded "><a href="concepts/core_architecture.html" target="_parent"><strong aria-hidden="true">2.</strong> Core Architecture</a></li><li class="chapter-item expanded "><a href="concepts/ai_system.html" target="_parent"><strong aria-hidden="true">3.</strong> The AI System</a></li><li class="chapter-item expanded "><a href="concepts/user_journey.html" target="_parent"><strong aria-hidden="true">4.</strong> The User Journey</a></li><li class="chapter-item expanded affix "><li class="part-title">Part III: For Developers</li><li class="chapter-item expanded "><a href="specifications/tech_overview.html" target="_parent"><strong aria-hidden="true">5.</strong> Technical Overview</a></li><li class="chapter-item expanded "><a href="specifications/trust_verification.html" target="_parent"><strong aria-hidden="true">6.</strong> Trust & Verification</a></li><li class="chapter-item expanded affix "><li class="part-title">Part IV: The Project</li><li class="chapter-item expanded "><a href="project/roadmap.html" target="_parent"><strong aria-hidden="true">7.</strong> Roadmap</a></li><li class="chapter-item expanded "><a href="project/governance.html" target="_parent"><strong aria-hidden="true">8.</strong> Governance</a></li><li class="chapter-item expanded "><a href="project/CONTRIBUTING.html" target="_parent"><strong aria-hidden="true">9.</strong> How to Contribute</a></li></ol>
|
<ol class="chapter"><li class="chapter-item expanded affix "><a href="introduction.html" target="_parent">Introduction</a></li><li class="chapter-item expanded affix "><li class="spacer"></li><li class="chapter-item expanded affix "><li class="part-title">Part I: The Vision</li><li class="chapter-item expanded "><a href="philosophy/principles.html" target="_parent"><strong aria-hidden="true">1.</strong> Philosophy & Principles</a></li><li class="chapter-item expanded affix "><li class="part-title">Part II: Core Concepts</li><li class="chapter-item expanded "><a href="concepts/core_architecture.html" target="_parent"><strong aria-hidden="true">2.</strong> Core Architecture</a></li><li class="chapter-item expanded "><a href="concepts/ai_system.html" target="_parent"><strong aria-hidden="true">3.</strong> The AI System</a></li><li class="chapter-item expanded "><a href="concepts/user_journey.html" target="_parent"><strong aria-hidden="true">4.</strong> The User Journey</a></li><li class="chapter-item expanded affix "><li class="part-title">Part III: For Developers</li><li class="chapter-item expanded "><a href="specifications/tech_overview.html" target="_parent"><strong aria-hidden="true">5.</strong> Technical Overview</a></li><li class="chapter-item expanded affix "><li class="part-title">Part IV: The Ecosystem</li><li class="chapter-item expanded "><a href="ecosystem/app_bazaar.html" target="_parent"><strong aria-hidden="true">6.</strong> The Application Bazaar</a></li><li class="chapter-item expanded affix "><li class="part-title">Part V: The Project</li><li class="chapter-item expanded "><a href="project/roadmap.html" target="_parent"><strong aria-hidden="true">7.</strong> Roadmap</a></li><li class="chapter-item expanded "><a href="project/governance.html" target="_parent"><strong aria-hidden="true">8.</strong> Governance</a></li><li class="chapter-item expanded "><a href="project/CONTRIBUTING.html" target="_parent"><strong aria-hidden="true">9.</strong> How to Contribute</a></li></ol>
|
||||||
</body>
|
</body>
|
||||||
</html>
|
</html>
|
||||||
@@ -8,7 +8,7 @@ class MDBookSidebarScrollbox extends HTMLElement {
|
|||||||
super();
|
super();
|
||||||
}
|
}
|
||||||
connectedCallback() {
|
connectedCallback() {
|
||||||
this.innerHTML = '<ol class="chapter"><li class="chapter-item expanded affix "><a href="introduction.html">Introduction</a></li><li class="chapter-item expanded affix "><li class="spacer"></li><li class="chapter-item expanded affix "><li class="part-title">Part I: The Vision</li><li class="chapter-item expanded "><a href="philosophy/principles.html"><strong aria-hidden="true">1.</strong> Philosophy & Principles</a></li><li class="chapter-item expanded affix "><li class="part-title">Part II: Core Concepts</li><li class="chapter-item expanded "><a href="concepts/core_architecture.html"><strong aria-hidden="true">2.</strong> Core Architecture</a></li><li class="chapter-item expanded "><a href="concepts/ai_system.html"><strong aria-hidden="true">3.</strong> The AI System</a></li><li class="chapter-item expanded "><a href="concepts/user_journey.html"><strong aria-hidden="true">4.</strong> The User Journey</a></li><li class="chapter-item expanded affix "><li class="part-title">Part III: For Developers</li><li class="chapter-item expanded "><a href="specifications/tech_overview.html"><strong aria-hidden="true">5.</strong> Technical Overview</a></li><li class="chapter-item expanded "><a href="specifications/trust_verification.html"><strong aria-hidden="true">6.</strong> Trust & Verification</a></li><li class="chapter-item expanded affix "><li class="part-title">Part IV: The Project</li><li class="chapter-item expanded "><a href="project/roadmap.html"><strong aria-hidden="true">7.</strong> Roadmap</a></li><li class="chapter-item expanded "><a href="project/governance.html"><strong aria-hidden="true">8.</strong> Governance</a></li><li class="chapter-item expanded "><a href="project/CONTRIBUTING.html"><strong aria-hidden="true">9.</strong> How to Contribute</a></li></ol>';
|
this.innerHTML = '<ol class="chapter"><li class="chapter-item expanded affix "><a href="introduction.html">Introduction</a></li><li class="chapter-item expanded affix "><li class="spacer"></li><li class="chapter-item expanded affix "><li class="part-title">Part I: The Vision</li><li class="chapter-item expanded "><a href="philosophy/principles.html"><strong aria-hidden="true">1.</strong> Philosophy & Principles</a></li><li class="chapter-item expanded affix "><li class="part-title">Part II: Core Concepts</li><li class="chapter-item expanded "><a href="concepts/core_architecture.html"><strong aria-hidden="true">2.</strong> Core Architecture</a></li><li class="chapter-item expanded "><a href="concepts/ai_system.html"><strong aria-hidden="true">3.</strong> The AI System</a></li><li class="chapter-item expanded "><a href="concepts/user_journey.html"><strong aria-hidden="true">4.</strong> The User Journey</a></li><li class="chapter-item expanded affix "><li class="part-title">Part III: For Developers</li><li class="chapter-item expanded "><a href="specifications/tech_overview.html"><strong aria-hidden="true">5.</strong> Technical Overview</a></li><li class="chapter-item expanded affix "><li class="part-title">Part IV: The Ecosystem</li><li class="chapter-item expanded "><a href="ecosystem/app_bazaar.html"><strong aria-hidden="true">6.</strong> The Application Bazaar</a></li><li class="chapter-item expanded affix "><li class="part-title">Part V: The Project</li><li class="chapter-item expanded "><a href="project/roadmap.html"><strong aria-hidden="true">7.</strong> Roadmap</a></li><li class="chapter-item expanded "><a href="project/governance.html"><strong aria-hidden="true">8.</strong> Governance</a></li><li class="chapter-item expanded "><a href="project/CONTRIBUTING.html"><strong aria-hidden="true">9.</strong> How to Contribute</a></li></ol>';
|
||||||
// Set the current, active page, and reveal it if it's hidden
|
// Set the current, active page, and reveal it if it's hidden
|
||||||
let current_page = document.location.href.toString().split("#")[0].split("?")[0];
|
let current_page = document.location.href.toString().split("#")[0].split("?")[0];
|
||||||
if (current_page.endsWith("/")) {
|
if (current_page.endsWith("/")) {
|
||||||
234
index.html
@@ -1,233 +1 @@
|
|||||||
<!DOCTYPE HTML>
|
<!DOCTYPE html><html><head><meta charset="utf-8"><title>Redirecting...</title><script>var lang = navigator.language || navigator.userLanguage; if (lang.toLowerCase().startsWith("zh")) { window.location.replace("./zh/"); } else { window.location.replace("./en/"); }</script><meta http-equiv="refresh" content="0; url=./en/"></head><body><p>Redirecting to your preferred language... If you are not redirected, please select a language:</p><p><a href="./en/">English</a> | <a href="./zh/">简体中文</a></p></body></html>
|
||||||
<html lang="en" class="light sidebar-visible" dir="ltr">
|
|
||||||
<head>
|
|
||||||
<!-- Book generated using mdBook -->
|
|
||||||
<meta charset="UTF-8">
|
|
||||||
<title>Introduction - Dao OS Documentation</title>
|
|
||||||
|
|
||||||
|
|
||||||
<!-- Custom HTML head -->
|
|
||||||
|
|
||||||
<meta name="description" content="The official documentation for the Dao OS, your Cyber-Life Operating System.">
|
|
||||||
<meta name="viewport" content="width=device-width, initial-scale=1">
|
|
||||||
<meta name="theme-color" content="#ffffff">
|
|
||||||
|
|
||||||
<link rel="icon" href="favicon.svg">
|
|
||||||
<link rel="shortcut icon" href="favicon.png">
|
|
||||||
<link rel="stylesheet" href="css/variables.css">
|
|
||||||
<link rel="stylesheet" href="css/general.css">
|
|
||||||
<link rel="stylesheet" href="css/chrome.css">
|
|
||||||
<link rel="stylesheet" href="css/print.css" media="print">
|
|
||||||
|
|
||||||
<!-- Fonts -->
|
|
||||||
<link rel="stylesheet" href="FontAwesome/css/font-awesome.css">
|
|
||||||
<link rel="stylesheet" href="fonts/fonts.css">
|
|
||||||
|
|
||||||
<!-- Highlight.js Stylesheets -->
|
|
||||||
<link rel="stylesheet" id="highlight-css" href="highlight.css">
|
|
||||||
<link rel="stylesheet" id="tomorrow-night-css" href="tomorrow-night.css">
|
|
||||||
<link rel="stylesheet" id="ayu-highlight-css" href="ayu-highlight.css">
|
|
||||||
|
|
||||||
<!-- Custom theme stylesheets -->
|
|
||||||
|
|
||||||
|
|
||||||
<!-- Provide site root and default themes to javascript -->
|
|
||||||
<script>
|
|
||||||
const path_to_root = "";
|
|
||||||
const default_light_theme = "light";
|
|
||||||
const default_dark_theme = "navy";
|
|
||||||
</script>
|
|
||||||
<!-- Start loading toc.js asap -->
|
|
||||||
<script src="toc.js"></script>
|
|
||||||
</head>
|
|
||||||
<body>
|
|
||||||
<div id="mdbook-help-container">
|
|
||||||
<div id="mdbook-help-popup">
|
|
||||||
<h2 class="mdbook-help-title">Keyboard shortcuts</h2>
|
|
||||||
<div>
|
|
||||||
<p>Press <kbd>←</kbd> or <kbd>→</kbd> to navigate between chapters</p>
|
|
||||||
<p>Press <kbd>S</kbd> or <kbd>/</kbd> to search in the book</p>
|
|
||||||
<p>Press <kbd>?</kbd> to show this help</p>
|
|
||||||
<p>Press <kbd>Esc</kbd> to hide this help</p>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div id="body-container">
|
|
||||||
<!-- Work around some values being stored in localStorage wrapped in quotes -->
|
|
||||||
<script>
|
|
||||||
try {
|
|
||||||
let theme = localStorage.getItem('mdbook-theme');
|
|
||||||
let sidebar = localStorage.getItem('mdbook-sidebar');
|
|
||||||
|
|
||||||
if (theme.startsWith('"') && theme.endsWith('"')) {
|
|
||||||
localStorage.setItem('mdbook-theme', theme.slice(1, theme.length - 1));
|
|
||||||
}
|
|
||||||
|
|
||||||
if (sidebar.startsWith('"') && sidebar.endsWith('"')) {
|
|
||||||
localStorage.setItem('mdbook-sidebar', sidebar.slice(1, sidebar.length - 1));
|
|
||||||
}
|
|
||||||
} catch (e) { }
|
|
||||||
</script>
|
|
||||||
|
|
||||||
<!-- Set the theme before any content is loaded, prevents flash -->
|
|
||||||
<script>
|
|
||||||
const default_theme = window.matchMedia("(prefers-color-scheme: dark)").matches ? default_dark_theme : default_light_theme;
|
|
||||||
let theme;
|
|
||||||
try { theme = localStorage.getItem('mdbook-theme'); } catch(e) { }
|
|
||||||
if (theme === null || theme === undefined) { theme = default_theme; }
|
|
||||||
const html = document.documentElement;
|
|
||||||
html.classList.remove('light')
|
|
||||||
html.classList.add(theme);
|
|
||||||
html.classList.add("js");
|
|
||||||
</script>
|
|
||||||
|
|
||||||
<input type="checkbox" id="sidebar-toggle-anchor" class="hidden">
|
|
||||||
|
|
||||||
<!-- Hide / unhide sidebar before it is displayed -->
|
|
||||||
<script>
|
|
||||||
let sidebar = null;
|
|
||||||
const sidebar_toggle = document.getElementById("sidebar-toggle-anchor");
|
|
||||||
if (document.body.clientWidth >= 1080) {
|
|
||||||
try { sidebar = localStorage.getItem('mdbook-sidebar'); } catch(e) { }
|
|
||||||
sidebar = sidebar || 'visible';
|
|
||||||
} else {
|
|
||||||
sidebar = 'hidden';
|
|
||||||
}
|
|
||||||
sidebar_toggle.checked = sidebar === 'visible';
|
|
||||||
html.classList.remove('sidebar-visible');
|
|
||||||
html.classList.add("sidebar-" + sidebar);
|
|
||||||
</script>
|
|
||||||
|
|
||||||
<nav id="sidebar" class="sidebar" aria-label="Table of contents">
|
|
||||||
<!-- populated by js -->
|
|
||||||
<mdbook-sidebar-scrollbox class="sidebar-scrollbox"></mdbook-sidebar-scrollbox>
|
|
||||||
<noscript>
|
|
||||||
<iframe class="sidebar-iframe-outer" src="toc.html"></iframe>
|
|
||||||
</noscript>
|
|
||||||
<div id="sidebar-resize-handle" class="sidebar-resize-handle">
|
|
||||||
<div class="sidebar-resize-indicator"></div>
|
|
||||||
</div>
|
|
||||||
</nav>
|
|
||||||
|
|
||||||
<div id="page-wrapper" class="page-wrapper">
|
|
||||||
|
|
||||||
<div class="page">
|
|
||||||
<div id="menu-bar-hover-placeholder"></div>
|
|
||||||
<div id="menu-bar" class="menu-bar sticky">
|
|
||||||
<div class="left-buttons">
|
|
||||||
<label id="sidebar-toggle" class="icon-button" for="sidebar-toggle-anchor" title="Toggle Table of Contents" aria-label="Toggle Table of Contents" aria-controls="sidebar">
|
|
||||||
<i class="fa fa-bars"></i>
|
|
||||||
</label>
|
|
||||||
<button id="theme-toggle" class="icon-button" type="button" title="Change theme" aria-label="Change theme" aria-haspopup="true" aria-expanded="false" aria-controls="theme-list">
|
|
||||||
<i class="fa fa-paint-brush"></i>
|
|
||||||
</button>
|
|
||||||
<ul id="theme-list" class="theme-popup" aria-label="Themes" role="menu">
|
|
||||||
<li role="none"><button role="menuitem" class="theme" id="default_theme">Auto</button></li>
|
|
||||||
<li role="none"><button role="menuitem" class="theme" id="light">Light</button></li>
|
|
||||||
<li role="none"><button role="menuitem" class="theme" id="rust">Rust</button></li>
|
|
||||||
<li role="none"><button role="menuitem" class="theme" id="coal">Coal</button></li>
|
|
||||||
<li role="none"><button role="menuitem" class="theme" id="navy">Navy</button></li>
|
|
||||||
<li role="none"><button role="menuitem" class="theme" id="ayu">Ayu</button></li>
|
|
||||||
</ul>
|
|
||||||
<button id="search-toggle" class="icon-button" type="button" title="Search (`/`)" aria-label="Toggle Searchbar" aria-expanded="false" aria-keyshortcuts="/ s" aria-controls="searchbar">
|
|
||||||
<i class="fa fa-search"></i>
|
|
||||||
</button>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<h1 class="menu-title">Dao OS Documentation</h1>
|
|
||||||
|
|
||||||
<div class="right-buttons">
|
|
||||||
<a href="print.html" title="Print this book" aria-label="Print this book">
|
|
||||||
<i id="print-button" class="fa fa-print"></i>
|
|
||||||
</a>
|
|
||||||
<a href="https://nest.doylee.cn/Dao-OS/dao-os-docs" title="Git repository" aria-label="Git repository">
|
|
||||||
<i id="git-repository-button" class="fa fa-github"></i>
|
|
||||||
</a>
|
|
||||||
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div id="search-wrapper" class="hidden">
|
|
||||||
<form id="searchbar-outer" class="searchbar-outer">
|
|
||||||
<input type="search" id="searchbar" name="searchbar" placeholder="Search this book ..." aria-controls="searchresults-outer" aria-describedby="searchresults-header">
|
|
||||||
</form>
|
|
||||||
<div id="searchresults-outer" class="searchresults-outer hidden">
|
|
||||||
<div id="searchresults-header" class="searchresults-header"></div>
|
|
||||||
<ul id="searchresults">
|
|
||||||
</ul>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<!-- Apply ARIA attributes after the sidebar and the sidebar toggle button are added to the DOM -->
|
|
||||||
<script>
|
|
||||||
document.getElementById('sidebar-toggle').setAttribute('aria-expanded', sidebar === 'visible');
|
|
||||||
document.getElementById('sidebar').setAttribute('aria-hidden', sidebar !== 'visible');
|
|
||||||
Array.from(document.querySelectorAll('#sidebar a')).forEach(function(link) {
|
|
||||||
link.setAttribute('tabIndex', sidebar === 'visible' ? 0 : -1);
|
|
||||||
});
|
|
||||||
</script>
|
|
||||||
|
|
||||||
<div id="content" class="content">
|
|
||||||
<main>
|
|
||||||
<h1 id="introduction"><a class="header" href="#introduction">Introduction</a></h1>
|
|
||||||
<p><strong>Our mission is to build a new, powerful, and resilient Cyber-Life OS paradigm: Dao OS.</strong></p>
|
|
||||||
<p>It is not designed to replace existing operating systems like Windows or Android, but to exist as a decentralized, user-centric overlay that runs on top of them.</p>
|
|
||||||
<p>Its purpose is to solve the problems of fragmentation, data enslavement, and privacy erosion in the digital age, returning the sovereignty of the digital world to each individual. It will become an extension of our lives in cyberspace—a <strong>"Silicon-based Partner"</strong> for <strong>mutual fulfillment</strong>, serving as our external brain, limbs, and organs.</p>
|
|
||||||
<h2 id="core-features"><a class="header" href="#core-features">Core Features</a></h2>
|
|
||||||
<ul>
|
|
||||||
<li><strong>User Sovereignty</strong>: Your data, your identity, and your AI are entirely under your control. All data is end-to-end encrypted by default and stored on your own devices.</li>
|
|
||||||
<li><strong>Second Brain</strong>: A powerful, built-in personal information management system that securely remembers your passwords, notes, files, and to-dos, becoming your infallible memory.</li>
|
|
||||||
<li><strong>Personal AI Companion</strong>: A truly personal, symbiotic AI soul. It runs locally, learns your preferences, protects your privacy, and provides warm, insightful support to help you grow, rather than trapping you in a filter bubble.</li>
|
|
||||||
<li><strong>Seamless Cross-Device Sync</strong>: All your devices (phones, computers, browsers, etc.) become your "Avatars," forming a private, resilient P2P network for the seamless flow of your data.</li>
|
|
||||||
<li><strong>Open & Extensible Ecosystem</strong>: Based on open protocols and a community-driven trust system, anyone can develop new capability modules and "Avatar" forms for Dao OS.</li>
|
|
||||||
</ul>
|
|
||||||
<h2 id="why-we-are-different"><a class="header" href="#why-we-are-different">Why We Are Different</a></h2>
|
|
||||||
<p>In an era where data is monopolized by platforms and algorithms are controlled by tech giants, Dao OS chooses a different path. We believe the next wave of <strong>technological democratization</strong> is to empower every individual to own and control their own artificial intelligence and digital life.</p>
|
|
||||||
<p>We are not designing just another app; we are building a living, evolving digital space that belongs to you.</p>
|
|
||||||
<p><strong>Join us in building the future.</strong></p>
|
|
||||||
|
|
||||||
</main>
|
|
||||||
|
|
||||||
<nav class="nav-wrapper" aria-label="Page navigation">
|
|
||||||
<!-- Mobile navigation buttons -->
|
|
||||||
|
|
||||||
<a rel="next prefetch" href="philosophy/principles.html" class="mobile-nav-chapters next" title="Next chapter" aria-label="Next chapter" aria-keyshortcuts="Right">
|
|
||||||
<i class="fa fa-angle-right"></i>
|
|
||||||
</a>
|
|
||||||
|
|
||||||
<div style="clear: both"></div>
|
|
||||||
</nav>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<nav class="nav-wide-wrapper" aria-label="Page navigation">
|
|
||||||
|
|
||||||
<a rel="next prefetch" href="philosophy/principles.html" class="nav-chapters next" title="Next chapter" aria-label="Next chapter" aria-keyshortcuts="Right">
|
|
||||||
<i class="fa fa-angle-right"></i>
|
|
||||||
</a>
|
|
||||||
</nav>
|
|
||||||
|
|
||||||
</div>
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<script>
|
|
||||||
window.playground_copyable = true;
|
|
||||||
</script>
|
|
||||||
|
|
||||||
|
|
||||||
<script src="elasticlunr.min.js"></script>
|
|
||||||
<script src="mark.min.js"></script>
|
|
||||||
<script src="searcher.js"></script>
|
|
||||||
|
|
||||||
<script src="clipboard.min.js"></script>
|
|
||||||
<script src="highlight.js"></script>
|
|
||||||
<script src="book.js"></script>
|
|
||||||
|
|
||||||
<!-- Custom JS scripts -->
|
|
||||||
|
|
||||||
|
|
||||||
</div>
|
|
||||||
</body>
|
|
||||||
</html>
|
|
||||||
|
|||||||
1
zh/.nojekyll
Normal file
@@ -0,0 +1 @@
|
|||||||
|
This file makes sure that Github Pages doesn't process mdBook's output.
|
||||||
214
zh/404.html
Normal file
@@ -0,0 +1,214 @@
|
|||||||
|
<!DOCTYPE HTML>
|
||||||
|
<html lang="en" class="light sidebar-visible" dir="ltr">
|
||||||
|
<head>
|
||||||
|
<!-- Book generated using mdBook -->
|
||||||
|
<meta charset="UTF-8">
|
||||||
|
<title>Page not found - 大道 (Dao OS) 文档</title>
|
||||||
|
<base href="/">
|
||||||
|
|
||||||
|
|
||||||
|
<!-- Custom HTML head -->
|
||||||
|
|
||||||
|
<meta name="description" content="大道(Dao OS)官方文档,你的赛博生命操作系统。">
|
||||||
|
<meta name="viewport" content="width=device-width, initial-scale=1">
|
||||||
|
<meta name="theme-color" content="#ffffff">
|
||||||
|
|
||||||
|
<link rel="icon" href="favicon.svg">
|
||||||
|
<link rel="shortcut icon" href="favicon.png">
|
||||||
|
<link rel="stylesheet" href="css/variables.css">
|
||||||
|
<link rel="stylesheet" href="css/general.css">
|
||||||
|
<link rel="stylesheet" href="css/chrome.css">
|
||||||
|
<link rel="stylesheet" href="css/print.css" media="print">
|
||||||
|
|
||||||
|
<!-- Fonts -->
|
||||||
|
<link rel="stylesheet" href="FontAwesome/css/font-awesome.css">
|
||||||
|
<link rel="stylesheet" href="fonts/fonts.css">
|
||||||
|
|
||||||
|
<!-- Highlight.js Stylesheets -->
|
||||||
|
<link rel="stylesheet" id="highlight-css" href="highlight.css">
|
||||||
|
<link rel="stylesheet" id="tomorrow-night-css" href="tomorrow-night.css">
|
||||||
|
<link rel="stylesheet" id="ayu-highlight-css" href="ayu-highlight.css">
|
||||||
|
|
||||||
|
<!-- Custom theme stylesheets -->
|
||||||
|
|
||||||
|
|
||||||
|
<!-- Provide site root and default themes to javascript -->
|
||||||
|
<script>
|
||||||
|
const path_to_root = "";
|
||||||
|
const default_light_theme = "light";
|
||||||
|
const default_dark_theme = "navy";
|
||||||
|
</script>
|
||||||
|
<!-- Start loading toc.js asap -->
|
||||||
|
<script src="toc.js"></script>
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
<div id="mdbook-help-container">
|
||||||
|
<div id="mdbook-help-popup">
|
||||||
|
<h2 class="mdbook-help-title">Keyboard shortcuts</h2>
|
||||||
|
<div>
|
||||||
|
<p>Press <kbd>←</kbd> or <kbd>→</kbd> to navigate between chapters</p>
|
||||||
|
<p>Press <kbd>S</kbd> or <kbd>/</kbd> to search in the book</p>
|
||||||
|
<p>Press <kbd>?</kbd> to show this help</p>
|
||||||
|
<p>Press <kbd>Esc</kbd> to hide this help</p>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div id="body-container">
|
||||||
|
<!-- Work around some values being stored in localStorage wrapped in quotes -->
|
||||||
|
<script>
|
||||||
|
try {
|
||||||
|
let theme = localStorage.getItem('mdbook-theme');
|
||||||
|
let sidebar = localStorage.getItem('mdbook-sidebar');
|
||||||
|
|
||||||
|
if (theme.startsWith('"') && theme.endsWith('"')) {
|
||||||
|
localStorage.setItem('mdbook-theme', theme.slice(1, theme.length - 1));
|
||||||
|
}
|
||||||
|
|
||||||
|
if (sidebar.startsWith('"') && sidebar.endsWith('"')) {
|
||||||
|
localStorage.setItem('mdbook-sidebar', sidebar.slice(1, sidebar.length - 1));
|
||||||
|
}
|
||||||
|
} catch (e) { }
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<!-- Set the theme before any content is loaded, prevents flash -->
|
||||||
|
<script>
|
||||||
|
const default_theme = window.matchMedia("(prefers-color-scheme: dark)").matches ? default_dark_theme : default_light_theme;
|
||||||
|
let theme;
|
||||||
|
try { theme = localStorage.getItem('mdbook-theme'); } catch(e) { }
|
||||||
|
if (theme === null || theme === undefined) { theme = default_theme; }
|
||||||
|
const html = document.documentElement;
|
||||||
|
html.classList.remove('light')
|
||||||
|
html.classList.add(theme);
|
||||||
|
html.classList.add("js");
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<input type="checkbox" id="sidebar-toggle-anchor" class="hidden">
|
||||||
|
|
||||||
|
<!-- Hide / unhide sidebar before it is displayed -->
|
||||||
|
<script>
|
||||||
|
let sidebar = null;
|
||||||
|
const sidebar_toggle = document.getElementById("sidebar-toggle-anchor");
|
||||||
|
if (document.body.clientWidth >= 1080) {
|
||||||
|
try { sidebar = localStorage.getItem('mdbook-sidebar'); } catch(e) { }
|
||||||
|
sidebar = sidebar || 'visible';
|
||||||
|
} else {
|
||||||
|
sidebar = 'hidden';
|
||||||
|
}
|
||||||
|
sidebar_toggle.checked = sidebar === 'visible';
|
||||||
|
html.classList.remove('sidebar-visible');
|
||||||
|
html.classList.add("sidebar-" + sidebar);
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<nav id="sidebar" class="sidebar" aria-label="Table of contents">
|
||||||
|
<!-- populated by js -->
|
||||||
|
<mdbook-sidebar-scrollbox class="sidebar-scrollbox"></mdbook-sidebar-scrollbox>
|
||||||
|
<noscript>
|
||||||
|
<iframe class="sidebar-iframe-outer" src="toc.html"></iframe>
|
||||||
|
</noscript>
|
||||||
|
<div id="sidebar-resize-handle" class="sidebar-resize-handle">
|
||||||
|
<div class="sidebar-resize-indicator"></div>
|
||||||
|
</div>
|
||||||
|
</nav>
|
||||||
|
|
||||||
|
<div id="page-wrapper" class="page-wrapper">
|
||||||
|
|
||||||
|
<div class="page">
|
||||||
|
<div id="menu-bar-hover-placeholder"></div>
|
||||||
|
<div id="menu-bar" class="menu-bar sticky">
|
||||||
|
<div class="left-buttons">
|
||||||
|
<label id="sidebar-toggle" class="icon-button" for="sidebar-toggle-anchor" title="Toggle Table of Contents" aria-label="Toggle Table of Contents" aria-controls="sidebar">
|
||||||
|
<i class="fa fa-bars"></i>
|
||||||
|
</label>
|
||||||
|
<button id="theme-toggle" class="icon-button" type="button" title="Change theme" aria-label="Change theme" aria-haspopup="true" aria-expanded="false" aria-controls="theme-list">
|
||||||
|
<i class="fa fa-paint-brush"></i>
|
||||||
|
</button>
|
||||||
|
<ul id="theme-list" class="theme-popup" aria-label="Themes" role="menu">
|
||||||
|
<li role="none"><button role="menuitem" class="theme" id="default_theme">Auto</button></li>
|
||||||
|
<li role="none"><button role="menuitem" class="theme" id="light">Light</button></li>
|
||||||
|
<li role="none"><button role="menuitem" class="theme" id="rust">Rust</button></li>
|
||||||
|
<li role="none"><button role="menuitem" class="theme" id="coal">Coal</button></li>
|
||||||
|
<li role="none"><button role="menuitem" class="theme" id="navy">Navy</button></li>
|
||||||
|
<li role="none"><button role="menuitem" class="theme" id="ayu">Ayu</button></li>
|
||||||
|
</ul>
|
||||||
|
<button id="search-toggle" class="icon-button" type="button" title="Search (`/`)" aria-label="Toggle Searchbar" aria-expanded="false" aria-keyshortcuts="/ s" aria-controls="searchbar">
|
||||||
|
<i class="fa fa-search"></i>
|
||||||
|
</button>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<h1 class="menu-title">大道 (Dao OS) 文档</h1>
|
||||||
|
|
||||||
|
<div class="right-buttons">
|
||||||
|
<a href="print.html" title="Print this book" aria-label="Print this book">
|
||||||
|
<i id="print-button" class="fa fa-print"></i>
|
||||||
|
</a>
|
||||||
|
<a href="https://nest.doylee.cn/Dao-OS/dao-os-docs" title="Git repository" aria-label="Git repository">
|
||||||
|
<i id="git-repository-button" class="fa fa-github"></i>
|
||||||
|
</a>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div id="search-wrapper" class="hidden">
|
||||||
|
<form id="searchbar-outer" class="searchbar-outer">
|
||||||
|
<input type="search" id="searchbar" name="searchbar" placeholder="Search this book ..." aria-controls="searchresults-outer" aria-describedby="searchresults-header">
|
||||||
|
</form>
|
||||||
|
<div id="searchresults-outer" class="searchresults-outer hidden">
|
||||||
|
<div id="searchresults-header" class="searchresults-header"></div>
|
||||||
|
<ul id="searchresults">
|
||||||
|
</ul>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<!-- Apply ARIA attributes after the sidebar and the sidebar toggle button are added to the DOM -->
|
||||||
|
<script>
|
||||||
|
document.getElementById('sidebar-toggle').setAttribute('aria-expanded', sidebar === 'visible');
|
||||||
|
document.getElementById('sidebar').setAttribute('aria-hidden', sidebar !== 'visible');
|
||||||
|
Array.from(document.querySelectorAll('#sidebar a')).forEach(function(link) {
|
||||||
|
link.setAttribute('tabIndex', sidebar === 'visible' ? 0 : -1);
|
||||||
|
});
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<div id="content" class="content">
|
||||||
|
<main>
|
||||||
|
<h1 id="document-not-found-404"><a class="header" href="#document-not-found-404">Document not found (404)</a></h1>
|
||||||
|
<p>This URL is invalid, sorry. Please use the navigation bar or search to continue.</p>
|
||||||
|
|
||||||
|
</main>
|
||||||
|
|
||||||
|
<nav class="nav-wrapper" aria-label="Page navigation">
|
||||||
|
<!-- Mobile navigation buttons -->
|
||||||
|
|
||||||
|
|
||||||
|
<div style="clear: both"></div>
|
||||||
|
</nav>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<nav class="nav-wide-wrapper" aria-label="Page navigation">
|
||||||
|
|
||||||
|
</nav>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<script>
|
||||||
|
window.playground_copyable = true;
|
||||||
|
</script>
|
||||||
|
|
||||||
|
|
||||||
|
<script src="elasticlunr.min.js"></script>
|
||||||
|
<script src="mark.min.js"></script>
|
||||||
|
<script src="searcher.js"></script>
|
||||||
|
|
||||||
|
<script src="clipboard.min.js"></script>
|
||||||
|
<script src="highlight.js"></script>
|
||||||
|
<script src="book.js"></script>
|
||||||
|
|
||||||
|
<!-- Custom JS scripts -->
|
||||||
|
|
||||||
|
|
||||||
|
</div>
|
||||||
|
</body>
|
||||||
|
</html>
|
||||||
4
zh/FontAwesome/css/font-awesome.css
vendored
Normal file
BIN
zh/FontAwesome/fonts/FontAwesome.ttf
Normal file
BIN
zh/FontAwesome/fonts/fontawesome-webfont.eot
Normal file
2671
zh/FontAwesome/fonts/fontawesome-webfont.svg
Normal file
|
After Width: | Height: | Size: 434 KiB |
BIN
zh/FontAwesome/fonts/fontawesome-webfont.ttf
Normal file
BIN
zh/FontAwesome/fonts/fontawesome-webfont.woff
Normal file
BIN
zh/FontAwesome/fonts/fontawesome-webfont.woff2
Normal file
78
zh/ayu-highlight.css
Normal file
@@ -0,0 +1,78 @@
|
|||||||
|
/*
|
||||||
|
Based off of the Ayu theme
|
||||||
|
Original by Dempfi (https://github.com/dempfi/ayu)
|
||||||
|
*/
|
||||||
|
|
||||||
|
.hljs {
|
||||||
|
display: block;
|
||||||
|
overflow-x: auto;
|
||||||
|
background: #191f26;
|
||||||
|
color: #e6e1cf;
|
||||||
|
}
|
||||||
|
|
||||||
|
.hljs-comment,
|
||||||
|
.hljs-quote {
|
||||||
|
color: #5c6773;
|
||||||
|
font-style: italic;
|
||||||
|
}
|
||||||
|
|
||||||
|
.hljs-variable,
|
||||||
|
.hljs-template-variable,
|
||||||
|
.hljs-attribute,
|
||||||
|
.hljs-attr,
|
||||||
|
.hljs-regexp,
|
||||||
|
.hljs-link,
|
||||||
|
.hljs-selector-id,
|
||||||
|
.hljs-selector-class {
|
||||||
|
color: #ff7733;
|
||||||
|
}
|
||||||
|
|
||||||
|
.hljs-number,
|
||||||
|
.hljs-meta,
|
||||||
|
.hljs-builtin-name,
|
||||||
|
.hljs-literal,
|
||||||
|
.hljs-type,
|
||||||
|
.hljs-params {
|
||||||
|
color: #ffee99;
|
||||||
|
}
|
||||||
|
|
||||||
|
.hljs-string,
|
||||||
|
.hljs-bullet {
|
||||||
|
color: #b8cc52;
|
||||||
|
}
|
||||||
|
|
||||||
|
.hljs-title,
|
||||||
|
.hljs-built_in,
|
||||||
|
.hljs-section {
|
||||||
|
color: #ffb454;
|
||||||
|
}
|
||||||
|
|
||||||
|
.hljs-keyword,
|
||||||
|
.hljs-selector-tag,
|
||||||
|
.hljs-symbol {
|
||||||
|
color: #ff7733;
|
||||||
|
}
|
||||||
|
|
||||||
|
.hljs-name {
|
||||||
|
color: #36a3d9;
|
||||||
|
}
|
||||||
|
|
||||||
|
.hljs-tag {
|
||||||
|
color: #00568d;
|
||||||
|
}
|
||||||
|
|
||||||
|
.hljs-emphasis {
|
||||||
|
font-style: italic;
|
||||||
|
}
|
||||||
|
|
||||||
|
.hljs-strong {
|
||||||
|
font-weight: bold;
|
||||||
|
}
|
||||||
|
|
||||||
|
.hljs-addition {
|
||||||
|
color: #91b362;
|
||||||
|
}
|
||||||
|
|
||||||
|
.hljs-deletion {
|
||||||
|
color: #d96c75;
|
||||||
|
}
|
||||||
818
zh/book.js
Normal file
@@ -0,0 +1,818 @@
|
|||||||
|
'use strict';
|
||||||
|
|
||||||
|
/* global default_theme, default_dark_theme, default_light_theme, hljs, ClipboardJS */
|
||||||
|
|
||||||
|
// Fix back button cache problem
|
||||||
|
window.onunload = function() { };
|
||||||
|
|
||||||
|
// Global variable, shared between modules
|
||||||
|
function playground_text(playground, hidden = true) {
|
||||||
|
const code_block = playground.querySelector('code');
|
||||||
|
|
||||||
|
if (window.ace && code_block.classList.contains('editable')) {
|
||||||
|
const editor = window.ace.edit(code_block);
|
||||||
|
return editor.getValue();
|
||||||
|
} else if (hidden) {
|
||||||
|
return code_block.textContent;
|
||||||
|
} else {
|
||||||
|
return code_block.innerText;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
(function codeSnippets() {
|
||||||
|
function fetch_with_timeout(url, options, timeout = 6000) {
|
||||||
|
return Promise.race([
|
||||||
|
fetch(url, options),
|
||||||
|
new Promise((_, reject) => setTimeout(() => reject(new Error('timeout')), timeout)),
|
||||||
|
]);
|
||||||
|
}
|
||||||
|
|
||||||
|
const playgrounds = Array.from(document.querySelectorAll('.playground'));
|
||||||
|
if (playgrounds.length > 0) {
|
||||||
|
fetch_with_timeout('https://play.rust-lang.org/meta/crates', {
|
||||||
|
headers: {
|
||||||
|
'Content-Type': 'application/json',
|
||||||
|
},
|
||||||
|
method: 'POST',
|
||||||
|
mode: 'cors',
|
||||||
|
})
|
||||||
|
.then(response => response.json())
|
||||||
|
.then(response => {
|
||||||
|
// get list of crates available in the rust playground
|
||||||
|
const playground_crates = response.crates.map(item => item['id']);
|
||||||
|
playgrounds.forEach(block => handle_crate_list_update(block, playground_crates));
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
function handle_crate_list_update(playground_block, playground_crates) {
|
||||||
|
// update the play buttons after receiving the response
|
||||||
|
update_play_button(playground_block, playground_crates);
|
||||||
|
|
||||||
|
// and install on change listener to dynamically update ACE editors
|
||||||
|
if (window.ace) {
|
||||||
|
const code_block = playground_block.querySelector('code');
|
||||||
|
if (code_block.classList.contains('editable')) {
|
||||||
|
const editor = window.ace.edit(code_block);
|
||||||
|
editor.addEventListener('change', () => {
|
||||||
|
update_play_button(playground_block, playground_crates);
|
||||||
|
});
|
||||||
|
// add Ctrl-Enter command to execute rust code
|
||||||
|
editor.commands.addCommand({
|
||||||
|
name: 'run',
|
||||||
|
bindKey: {
|
||||||
|
win: 'Ctrl-Enter',
|
||||||
|
mac: 'Ctrl-Enter',
|
||||||
|
},
|
||||||
|
exec: _editor => run_rust_code(playground_block),
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// updates the visibility of play button based on `no_run` class and
|
||||||
|
// used crates vs ones available on https://play.rust-lang.org
|
||||||
|
function update_play_button(pre_block, playground_crates) {
|
||||||
|
const play_button = pre_block.querySelector('.play-button');
|
||||||
|
|
||||||
|
// skip if code is `no_run`
|
||||||
|
if (pre_block.querySelector('code').classList.contains('no_run')) {
|
||||||
|
play_button.classList.add('hidden');
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
// get list of `extern crate`'s from snippet
|
||||||
|
const txt = playground_text(pre_block);
|
||||||
|
const re = /extern\s+crate\s+([a-zA-Z_0-9]+)\s*;/g;
|
||||||
|
const snippet_crates = [];
|
||||||
|
let item;
|
||||||
|
// eslint-disable-next-line no-cond-assign
|
||||||
|
while (item = re.exec(txt)) {
|
||||||
|
snippet_crates.push(item[1]);
|
||||||
|
}
|
||||||
|
|
||||||
|
// check if all used crates are available on play.rust-lang.org
|
||||||
|
const all_available = snippet_crates.every(function(elem) {
|
||||||
|
return playground_crates.indexOf(elem) > -1;
|
||||||
|
});
|
||||||
|
|
||||||
|
if (all_available) {
|
||||||
|
play_button.classList.remove('hidden');
|
||||||
|
} else {
|
||||||
|
play_button.classList.add('hidden');
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
function run_rust_code(code_block) {
|
||||||
|
let result_block = code_block.querySelector('.result');
|
||||||
|
if (!result_block) {
|
||||||
|
result_block = document.createElement('code');
|
||||||
|
result_block.className = 'result hljs language-bash';
|
||||||
|
|
||||||
|
code_block.append(result_block);
|
||||||
|
}
|
||||||
|
|
||||||
|
const text = playground_text(code_block);
|
||||||
|
const classes = code_block.querySelector('code').classList;
|
||||||
|
let edition = '2015';
|
||||||
|
classes.forEach(className => {
|
||||||
|
if (className.startsWith('edition')) {
|
||||||
|
edition = className.slice(7);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
const params = {
|
||||||
|
version: 'stable',
|
||||||
|
optimize: '0',
|
||||||
|
code: text,
|
||||||
|
edition: edition,
|
||||||
|
};
|
||||||
|
|
||||||
|
if (text.indexOf('#![feature') !== -1) {
|
||||||
|
params.version = 'nightly';
|
||||||
|
}
|
||||||
|
|
||||||
|
result_block.innerText = 'Running...';
|
||||||
|
|
||||||
|
fetch_with_timeout('https://play.rust-lang.org/evaluate.json', {
|
||||||
|
headers: {
|
||||||
|
'Content-Type': 'application/json',
|
||||||
|
},
|
||||||
|
method: 'POST',
|
||||||
|
mode: 'cors',
|
||||||
|
body: JSON.stringify(params),
|
||||||
|
})
|
||||||
|
.then(response => response.json())
|
||||||
|
.then(response => {
|
||||||
|
if (response.result.trim() === '') {
|
||||||
|
result_block.innerText = 'No output';
|
||||||
|
result_block.classList.add('result-no-output');
|
||||||
|
} else {
|
||||||
|
result_block.innerText = response.result;
|
||||||
|
result_block.classList.remove('result-no-output');
|
||||||
|
}
|
||||||
|
})
|
||||||
|
.catch(error => result_block.innerText = 'Playground Communication: ' + error.message);
|
||||||
|
}
|
||||||
|
|
||||||
|
// Syntax highlighting Configuration
|
||||||
|
hljs.configure({
|
||||||
|
tabReplace: ' ', // 4 spaces
|
||||||
|
languages: [], // Languages used for auto-detection
|
||||||
|
});
|
||||||
|
|
||||||
|
const code_nodes = Array
|
||||||
|
.from(document.querySelectorAll('code'))
|
||||||
|
// Don't highlight `inline code` blocks in headers.
|
||||||
|
.filter(function(node) {
|
||||||
|
return !node.parentElement.classList.contains('header');
|
||||||
|
});
|
||||||
|
|
||||||
|
if (window.ace) {
|
||||||
|
// language-rust class needs to be removed for editable
|
||||||
|
// blocks or highlightjs will capture events
|
||||||
|
code_nodes
|
||||||
|
.filter(function(node) {
|
||||||
|
return node.classList.contains('editable');
|
||||||
|
})
|
||||||
|
.forEach(function(block) {
|
||||||
|
block.classList.remove('language-rust');
|
||||||
|
});
|
||||||
|
|
||||||
|
code_nodes
|
||||||
|
.filter(function(node) {
|
||||||
|
return !node.classList.contains('editable');
|
||||||
|
})
|
||||||
|
.forEach(function(block) {
|
||||||
|
hljs.highlightBlock(block);
|
||||||
|
});
|
||||||
|
} else {
|
||||||
|
code_nodes.forEach(function(block) {
|
||||||
|
hljs.highlightBlock(block);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
// Adding the hljs class gives code blocks the color css
|
||||||
|
// even if highlighting doesn't apply
|
||||||
|
code_nodes.forEach(function(block) {
|
||||||
|
block.classList.add('hljs');
|
||||||
|
});
|
||||||
|
|
||||||
|
Array.from(document.querySelectorAll('code.hljs')).forEach(function(block) {
|
||||||
|
|
||||||
|
const lines = Array.from(block.querySelectorAll('.boring'));
|
||||||
|
// If no lines were hidden, return
|
||||||
|
if (!lines.length) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
block.classList.add('hide-boring');
|
||||||
|
|
||||||
|
const buttons = document.createElement('div');
|
||||||
|
buttons.className = 'buttons';
|
||||||
|
buttons.innerHTML = '<button class="fa fa-eye" title="Show hidden lines" \
|
||||||
|
aria-label="Show hidden lines"></button>';
|
||||||
|
|
||||||
|
// add expand button
|
||||||
|
const pre_block = block.parentNode;
|
||||||
|
pre_block.insertBefore(buttons, pre_block.firstChild);
|
||||||
|
|
||||||
|
pre_block.querySelector('.buttons').addEventListener('click', function(e) {
|
||||||
|
if (e.target.classList.contains('fa-eye')) {
|
||||||
|
e.target.classList.remove('fa-eye');
|
||||||
|
e.target.classList.add('fa-eye-slash');
|
||||||
|
e.target.title = 'Hide lines';
|
||||||
|
e.target.setAttribute('aria-label', e.target.title);
|
||||||
|
|
||||||
|
block.classList.remove('hide-boring');
|
||||||
|
} else if (e.target.classList.contains('fa-eye-slash')) {
|
||||||
|
e.target.classList.remove('fa-eye-slash');
|
||||||
|
e.target.classList.add('fa-eye');
|
||||||
|
e.target.title = 'Show hidden lines';
|
||||||
|
e.target.setAttribute('aria-label', e.target.title);
|
||||||
|
|
||||||
|
block.classList.add('hide-boring');
|
||||||
|
}
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
if (window.playground_copyable) {
|
||||||
|
Array.from(document.querySelectorAll('pre code')).forEach(function(block) {
|
||||||
|
const pre_block = block.parentNode;
|
||||||
|
if (!pre_block.classList.contains('playground')) {
|
||||||
|
let buttons = pre_block.querySelector('.buttons');
|
||||||
|
if (!buttons) {
|
||||||
|
buttons = document.createElement('div');
|
||||||
|
buttons.className = 'buttons';
|
||||||
|
pre_block.insertBefore(buttons, pre_block.firstChild);
|
||||||
|
}
|
||||||
|
|
||||||
|
const clipButton = document.createElement('button');
|
||||||
|
clipButton.className = 'clip-button';
|
||||||
|
clipButton.title = 'Copy to clipboard';
|
||||||
|
clipButton.setAttribute('aria-label', clipButton.title);
|
||||||
|
clipButton.innerHTML = '<i class="tooltiptext"></i>';
|
||||||
|
|
||||||
|
buttons.insertBefore(clipButton, buttons.firstChild);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
// Process playground code blocks
|
||||||
|
Array.from(document.querySelectorAll('.playground')).forEach(function(pre_block) {
|
||||||
|
// Add play button
|
||||||
|
let buttons = pre_block.querySelector('.buttons');
|
||||||
|
if (!buttons) {
|
||||||
|
buttons = document.createElement('div');
|
||||||
|
buttons.className = 'buttons';
|
||||||
|
pre_block.insertBefore(buttons, pre_block.firstChild);
|
||||||
|
}
|
||||||
|
|
||||||
|
const runCodeButton = document.createElement('button');
|
||||||
|
runCodeButton.className = 'fa fa-play play-button';
|
||||||
|
runCodeButton.hidden = true;
|
||||||
|
runCodeButton.title = 'Run this code';
|
||||||
|
runCodeButton.setAttribute('aria-label', runCodeButton.title);
|
||||||
|
|
||||||
|
buttons.insertBefore(runCodeButton, buttons.firstChild);
|
||||||
|
runCodeButton.addEventListener('click', () => {
|
||||||
|
run_rust_code(pre_block);
|
||||||
|
});
|
||||||
|
|
||||||
|
if (window.playground_copyable) {
|
||||||
|
const copyCodeClipboardButton = document.createElement('button');
|
||||||
|
copyCodeClipboardButton.className = 'clip-button';
|
||||||
|
copyCodeClipboardButton.innerHTML = '<i class="tooltiptext"></i>';
|
||||||
|
copyCodeClipboardButton.title = 'Copy to clipboard';
|
||||||
|
copyCodeClipboardButton.setAttribute('aria-label', copyCodeClipboardButton.title);
|
||||||
|
|
||||||
|
buttons.insertBefore(copyCodeClipboardButton, buttons.firstChild);
|
||||||
|
}
|
||||||
|
|
||||||
|
const code_block = pre_block.querySelector('code');
|
||||||
|
if (window.ace && code_block.classList.contains('editable')) {
|
||||||
|
const undoChangesButton = document.createElement('button');
|
||||||
|
undoChangesButton.className = 'fa fa-history reset-button';
|
||||||
|
undoChangesButton.title = 'Undo changes';
|
||||||
|
undoChangesButton.setAttribute('aria-label', undoChangesButton.title);
|
||||||
|
|
||||||
|
buttons.insertBefore(undoChangesButton, buttons.firstChild);
|
||||||
|
|
||||||
|
undoChangesButton.addEventListener('click', function() {
|
||||||
|
const editor = window.ace.edit(code_block);
|
||||||
|
editor.setValue(editor.originalCode);
|
||||||
|
editor.clearSelection();
|
||||||
|
});
|
||||||
|
}
|
||||||
|
});
|
||||||
|
})();
|
||||||
|
|
||||||
|
(function themes() {
|
||||||
|
const html = document.querySelector('html');
|
||||||
|
const themeToggleButton = document.getElementById('theme-toggle');
|
||||||
|
const themePopup = document.getElementById('theme-list');
|
||||||
|
const themeColorMetaTag = document.querySelector('meta[name="theme-color"]');
|
||||||
|
const themeIds = [];
|
||||||
|
themePopup.querySelectorAll('button.theme').forEach(function(el) {
|
||||||
|
themeIds.push(el.id);
|
||||||
|
});
|
||||||
|
const stylesheets = {
|
||||||
|
ayuHighlight: document.querySelector('#ayu-highlight-css'),
|
||||||
|
tomorrowNight: document.querySelector('#tomorrow-night-css'),
|
||||||
|
highlight: document.querySelector('#highlight-css'),
|
||||||
|
};
|
||||||
|
|
||||||
|
function showThemes() {
|
||||||
|
themePopup.style.display = 'block';
|
||||||
|
themeToggleButton.setAttribute('aria-expanded', true);
|
||||||
|
themePopup.querySelector('button#' + get_theme()).focus();
|
||||||
|
}
|
||||||
|
|
||||||
|
function updateThemeSelected() {
|
||||||
|
themePopup.querySelectorAll('.theme-selected').forEach(function(el) {
|
||||||
|
el.classList.remove('theme-selected');
|
||||||
|
});
|
||||||
|
const selected = get_saved_theme() ?? 'default_theme';
|
||||||
|
let element = themePopup.querySelector('button#' + selected);
|
||||||
|
if (element === null) {
|
||||||
|
// Fall back in case there is no "Default" item.
|
||||||
|
element = themePopup.querySelector('button#' + get_theme());
|
||||||
|
}
|
||||||
|
element.classList.add('theme-selected');
|
||||||
|
}
|
||||||
|
|
||||||
|
function hideThemes() {
|
||||||
|
themePopup.style.display = 'none';
|
||||||
|
themeToggleButton.setAttribute('aria-expanded', false);
|
||||||
|
themeToggleButton.focus();
|
||||||
|
}
|
||||||
|
|
||||||
|
function get_saved_theme() {
|
||||||
|
let theme = null;
|
||||||
|
try {
|
||||||
|
theme = localStorage.getItem('mdbook-theme');
|
||||||
|
} catch (e) {
|
||||||
|
// ignore error.
|
||||||
|
}
|
||||||
|
return theme;
|
||||||
|
}
|
||||||
|
|
||||||
|
function delete_saved_theme() {
|
||||||
|
localStorage.removeItem('mdbook-theme');
|
||||||
|
}
|
||||||
|
|
||||||
|
function get_theme() {
|
||||||
|
const theme = get_saved_theme();
|
||||||
|
if (theme === null || theme === undefined || !themeIds.includes(theme)) {
|
||||||
|
if (typeof default_dark_theme === 'undefined') {
|
||||||
|
// A customized index.hbs might not define this, so fall back to
|
||||||
|
// old behavior of determining the default on page load.
|
||||||
|
return default_theme;
|
||||||
|
}
|
||||||
|
return window.matchMedia('(prefers-color-scheme: dark)').matches
|
||||||
|
? default_dark_theme
|
||||||
|
: default_light_theme;
|
||||||
|
} else {
|
||||||
|
return theme;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
let previousTheme = default_theme;
|
||||||
|
function set_theme(theme, store = true) {
|
||||||
|
let ace_theme;
|
||||||
|
|
||||||
|
if (theme === 'coal' || theme === 'navy') {
|
||||||
|
stylesheets.ayuHighlight.disabled = true;
|
||||||
|
stylesheets.tomorrowNight.disabled = false;
|
||||||
|
stylesheets.highlight.disabled = true;
|
||||||
|
|
||||||
|
ace_theme = 'ace/theme/tomorrow_night';
|
||||||
|
} else if (theme === 'ayu') {
|
||||||
|
stylesheets.ayuHighlight.disabled = false;
|
||||||
|
stylesheets.tomorrowNight.disabled = true;
|
||||||
|
stylesheets.highlight.disabled = true;
|
||||||
|
ace_theme = 'ace/theme/tomorrow_night';
|
||||||
|
} else {
|
||||||
|
stylesheets.ayuHighlight.disabled = true;
|
||||||
|
stylesheets.tomorrowNight.disabled = true;
|
||||||
|
stylesheets.highlight.disabled = false;
|
||||||
|
ace_theme = 'ace/theme/dawn';
|
||||||
|
}
|
||||||
|
|
||||||
|
setTimeout(function() {
|
||||||
|
themeColorMetaTag.content = getComputedStyle(document.documentElement).backgroundColor;
|
||||||
|
}, 1);
|
||||||
|
|
||||||
|
if (window.ace && window.editors) {
|
||||||
|
window.editors.forEach(function(editor) {
|
||||||
|
editor.setTheme(ace_theme);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
if (store) {
|
||||||
|
try {
|
||||||
|
localStorage.setItem('mdbook-theme', theme);
|
||||||
|
} catch (e) {
|
||||||
|
// ignore error.
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
html.classList.remove(previousTheme);
|
||||||
|
html.classList.add(theme);
|
||||||
|
previousTheme = theme;
|
||||||
|
updateThemeSelected();
|
||||||
|
}
|
||||||
|
|
||||||
|
const query = window.matchMedia('(prefers-color-scheme: dark)');
|
||||||
|
query.onchange = function() {
|
||||||
|
set_theme(get_theme(), false);
|
||||||
|
};
|
||||||
|
|
||||||
|
// Set theme.
|
||||||
|
set_theme(get_theme(), false);
|
||||||
|
|
||||||
|
themeToggleButton.addEventListener('click', function() {
|
||||||
|
if (themePopup.style.display === 'block') {
|
||||||
|
hideThemes();
|
||||||
|
} else {
|
||||||
|
showThemes();
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
themePopup.addEventListener('click', function(e) {
|
||||||
|
let theme;
|
||||||
|
if (e.target.className === 'theme') {
|
||||||
|
theme = e.target.id;
|
||||||
|
} else if (e.target.parentElement.className === 'theme') {
|
||||||
|
theme = e.target.parentElement.id;
|
||||||
|
} else {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
if (theme === 'default_theme' || theme === null) {
|
||||||
|
delete_saved_theme();
|
||||||
|
set_theme(get_theme(), false);
|
||||||
|
} else {
|
||||||
|
set_theme(theme);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
themePopup.addEventListener('focusout', function(e) {
|
||||||
|
// e.relatedTarget is null in Safari and Firefox on macOS (see workaround below)
|
||||||
|
if (!!e.relatedTarget &&
|
||||||
|
!themeToggleButton.contains(e.relatedTarget) &&
|
||||||
|
!themePopup.contains(e.relatedTarget)
|
||||||
|
) {
|
||||||
|
hideThemes();
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
// Should not be needed, but it works around an issue on macOS & iOS:
|
||||||
|
// https://github.com/rust-lang/mdBook/issues/628
|
||||||
|
document.addEventListener('click', function(e) {
|
||||||
|
if (themePopup.style.display === 'block' &&
|
||||||
|
!themeToggleButton.contains(e.target) &&
|
||||||
|
!themePopup.contains(e.target)
|
||||||
|
) {
|
||||||
|
hideThemes();
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
document.addEventListener('keydown', function(e) {
|
||||||
|
if (e.altKey || e.ctrlKey || e.metaKey || e.shiftKey) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
if (!themePopup.contains(e.target)) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
let li;
|
||||||
|
switch (e.key) {
|
||||||
|
case 'Escape':
|
||||||
|
e.preventDefault();
|
||||||
|
hideThemes();
|
||||||
|
break;
|
||||||
|
case 'ArrowUp':
|
||||||
|
e.preventDefault();
|
||||||
|
li = document.activeElement.parentElement;
|
||||||
|
if (li && li.previousElementSibling) {
|
||||||
|
li.previousElementSibling.querySelector('button').focus();
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case 'ArrowDown':
|
||||||
|
e.preventDefault();
|
||||||
|
li = document.activeElement.parentElement;
|
||||||
|
if (li && li.nextElementSibling) {
|
||||||
|
li.nextElementSibling.querySelector('button').focus();
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case 'Home':
|
||||||
|
e.preventDefault();
|
||||||
|
themePopup.querySelector('li:first-child button').focus();
|
||||||
|
break;
|
||||||
|
case 'End':
|
||||||
|
e.preventDefault();
|
||||||
|
themePopup.querySelector('li:last-child button').focus();
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
});
|
||||||
|
})();
|
||||||
|
|
||||||
|
(function sidebar() {
|
||||||
|
const body = document.querySelector('body');
|
||||||
|
const sidebar = document.getElementById('sidebar');
|
||||||
|
const sidebarLinks = document.querySelectorAll('#sidebar a');
|
||||||
|
const sidebarToggleButton = document.getElementById('sidebar-toggle');
|
||||||
|
const sidebarToggleAnchor = document.getElementById('sidebar-toggle-anchor');
|
||||||
|
const sidebarResizeHandle = document.getElementById('sidebar-resize-handle');
|
||||||
|
let firstContact = null;
|
||||||
|
|
||||||
|
function showSidebar() {
|
||||||
|
body.classList.remove('sidebar-hidden');
|
||||||
|
body.classList.add('sidebar-visible');
|
||||||
|
Array.from(sidebarLinks).forEach(function(link) {
|
||||||
|
link.setAttribute('tabIndex', 0);
|
||||||
|
});
|
||||||
|
sidebarToggleButton.setAttribute('aria-expanded', true);
|
||||||
|
sidebar.setAttribute('aria-hidden', false);
|
||||||
|
try {
|
||||||
|
localStorage.setItem('mdbook-sidebar', 'visible');
|
||||||
|
} catch (e) {
|
||||||
|
// Ignore error.
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
function hideSidebar() {
|
||||||
|
body.classList.remove('sidebar-visible');
|
||||||
|
body.classList.add('sidebar-hidden');
|
||||||
|
Array.from(sidebarLinks).forEach(function(link) {
|
||||||
|
link.setAttribute('tabIndex', -1);
|
||||||
|
});
|
||||||
|
sidebarToggleButton.setAttribute('aria-expanded', false);
|
||||||
|
sidebar.setAttribute('aria-hidden', true);
|
||||||
|
try {
|
||||||
|
localStorage.setItem('mdbook-sidebar', 'hidden');
|
||||||
|
} catch (e) {
|
||||||
|
// Ignore error.
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Toggle sidebar
|
||||||
|
sidebarToggleAnchor.addEventListener('change', function sidebarToggle() {
|
||||||
|
if (sidebarToggleAnchor.checked) {
|
||||||
|
const current_width = parseInt(
|
||||||
|
document.documentElement.style.getPropertyValue('--sidebar-target-width'), 10);
|
||||||
|
if (current_width < 150) {
|
||||||
|
document.documentElement.style.setProperty('--sidebar-target-width', '150px');
|
||||||
|
}
|
||||||
|
showSidebar();
|
||||||
|
} else {
|
||||||
|
hideSidebar();
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
sidebarResizeHandle.addEventListener('mousedown', initResize, false);
|
||||||
|
|
||||||
|
function initResize() {
|
||||||
|
window.addEventListener('mousemove', resize, false);
|
||||||
|
window.addEventListener('mouseup', stopResize, false);
|
||||||
|
body.classList.add('sidebar-resizing');
|
||||||
|
}
|
||||||
|
function resize(e) {
|
||||||
|
let pos = e.clientX - sidebar.offsetLeft;
|
||||||
|
if (pos < 20) {
|
||||||
|
hideSidebar();
|
||||||
|
} else {
|
||||||
|
if (body.classList.contains('sidebar-hidden')) {
|
||||||
|
showSidebar();
|
||||||
|
}
|
||||||
|
pos = Math.min(pos, window.innerWidth - 100);
|
||||||
|
document.documentElement.style.setProperty('--sidebar-target-width', pos + 'px');
|
||||||
|
}
|
||||||
|
}
|
||||||
|
//on mouseup remove windows functions mousemove & mouseup
|
||||||
|
function stopResize() {
|
||||||
|
body.classList.remove('sidebar-resizing');
|
||||||
|
window.removeEventListener('mousemove', resize, false);
|
||||||
|
window.removeEventListener('mouseup', stopResize, false);
|
||||||
|
}
|
||||||
|
|
||||||
|
document.addEventListener('touchstart', function(e) {
|
||||||
|
firstContact = {
|
||||||
|
x: e.touches[0].clientX,
|
||||||
|
time: Date.now(),
|
||||||
|
};
|
||||||
|
}, { passive: true });
|
||||||
|
|
||||||
|
document.addEventListener('touchmove', function(e) {
|
||||||
|
if (!firstContact) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
const curX = e.touches[0].clientX;
|
||||||
|
const xDiff = curX - firstContact.x,
|
||||||
|
tDiff = Date.now() - firstContact.time;
|
||||||
|
|
||||||
|
if (tDiff < 250 && Math.abs(xDiff) >= 150) {
|
||||||
|
if (xDiff >= 0 && firstContact.x < Math.min(document.body.clientWidth * 0.25, 300)) {
|
||||||
|
showSidebar();
|
||||||
|
} else if (xDiff < 0 && curX < 300) {
|
||||||
|
hideSidebar();
|
||||||
|
}
|
||||||
|
|
||||||
|
firstContact = null;
|
||||||
|
}
|
||||||
|
}, { passive: true });
|
||||||
|
})();
|
||||||
|
|
||||||
|
(function chapterNavigation() {
|
||||||
|
document.addEventListener('keydown', function(e) {
|
||||||
|
if (e.altKey || e.ctrlKey || e.metaKey) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
if (window.search && window.search.hasFocus()) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
const html = document.querySelector('html');
|
||||||
|
|
||||||
|
function next() {
|
||||||
|
const nextButton = document.querySelector('.nav-chapters.next');
|
||||||
|
if (nextButton) {
|
||||||
|
window.location.href = nextButton.href;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
function prev() {
|
||||||
|
const previousButton = document.querySelector('.nav-chapters.previous');
|
||||||
|
if (previousButton) {
|
||||||
|
window.location.href = previousButton.href;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
function showHelp() {
|
||||||
|
const container = document.getElementById('mdbook-help-container');
|
||||||
|
const overlay = document.getElementById('mdbook-help-popup');
|
||||||
|
container.style.display = 'flex';
|
||||||
|
|
||||||
|
// Clicking outside the popup will dismiss it.
|
||||||
|
const mouseHandler = event => {
|
||||||
|
if (overlay.contains(event.target)) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
if (event.button !== 0) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
event.preventDefault();
|
||||||
|
event.stopPropagation();
|
||||||
|
document.removeEventListener('mousedown', mouseHandler);
|
||||||
|
hideHelp();
|
||||||
|
};
|
||||||
|
|
||||||
|
// Pressing esc will dismiss the popup.
|
||||||
|
const escapeKeyHandler = event => {
|
||||||
|
if (event.key === 'Escape') {
|
||||||
|
event.preventDefault();
|
||||||
|
event.stopPropagation();
|
||||||
|
document.removeEventListener('keydown', escapeKeyHandler, true);
|
||||||
|
hideHelp();
|
||||||
|
}
|
||||||
|
};
|
||||||
|
document.addEventListener('keydown', escapeKeyHandler, true);
|
||||||
|
document.getElementById('mdbook-help-container')
|
||||||
|
.addEventListener('mousedown', mouseHandler);
|
||||||
|
}
|
||||||
|
function hideHelp() {
|
||||||
|
document.getElementById('mdbook-help-container').style.display = 'none';
|
||||||
|
}
|
||||||
|
|
||||||
|
// Usually needs the Shift key to be pressed
|
||||||
|
switch (e.key) {
|
||||||
|
case '?':
|
||||||
|
e.preventDefault();
|
||||||
|
showHelp();
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Rest of the keys are only active when the Shift key is not pressed
|
||||||
|
if (e.shiftKey) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
switch (e.key) {
|
||||||
|
case 'ArrowRight':
|
||||||
|
e.preventDefault();
|
||||||
|
if (html.dir === 'rtl') {
|
||||||
|
prev();
|
||||||
|
} else {
|
||||||
|
next();
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case 'ArrowLeft':
|
||||||
|
e.preventDefault();
|
||||||
|
if (html.dir === 'rtl') {
|
||||||
|
next();
|
||||||
|
} else {
|
||||||
|
prev();
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
});
|
||||||
|
})();
|
||||||
|
|
||||||
|
(function clipboard() {
|
||||||
|
const clipButtons = document.querySelectorAll('.clip-button');
|
||||||
|
|
||||||
|
function hideTooltip(elem) {
|
||||||
|
elem.firstChild.innerText = '';
|
||||||
|
elem.className = 'clip-button';
|
||||||
|
}
|
||||||
|
|
||||||
|
function showTooltip(elem, msg) {
|
||||||
|
elem.firstChild.innerText = msg;
|
||||||
|
elem.className = 'clip-button tooltipped';
|
||||||
|
}
|
||||||
|
|
||||||
|
const clipboardSnippets = new ClipboardJS('.clip-button', {
|
||||||
|
text: function(trigger) {
|
||||||
|
hideTooltip(trigger);
|
||||||
|
const playground = trigger.closest('pre');
|
||||||
|
return playground_text(playground, false);
|
||||||
|
},
|
||||||
|
});
|
||||||
|
|
||||||
|
Array.from(clipButtons).forEach(function(clipButton) {
|
||||||
|
clipButton.addEventListener('mouseout', function(e) {
|
||||||
|
hideTooltip(e.currentTarget);
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
clipboardSnippets.on('success', function(e) {
|
||||||
|
e.clearSelection();
|
||||||
|
showTooltip(e.trigger, 'Copied!');
|
||||||
|
});
|
||||||
|
|
||||||
|
clipboardSnippets.on('error', function(e) {
|
||||||
|
showTooltip(e.trigger, 'Clipboard error!');
|
||||||
|
});
|
||||||
|
})();
|
||||||
|
|
||||||
|
(function scrollToTop() {
|
||||||
|
const menuTitle = document.querySelector('.menu-title');
|
||||||
|
|
||||||
|
menuTitle.addEventListener('click', function() {
|
||||||
|
document.scrollingElement.scrollTo({ top: 0, behavior: 'smooth' });
|
||||||
|
});
|
||||||
|
})();
|
||||||
|
|
||||||
|
(function controllMenu() {
|
||||||
|
const menu = document.getElementById('menu-bar');
|
||||||
|
|
||||||
|
(function controllPosition() {
|
||||||
|
let scrollTop = document.scrollingElement.scrollTop;
|
||||||
|
let prevScrollTop = scrollTop;
|
||||||
|
const minMenuY = -menu.clientHeight - 50;
|
||||||
|
// When the script loads, the page can be at any scroll (e.g. if you reforesh it).
|
||||||
|
menu.style.top = scrollTop + 'px';
|
||||||
|
// Same as parseInt(menu.style.top.slice(0, -2), but faster
|
||||||
|
let topCache = menu.style.top.slice(0, -2);
|
||||||
|
menu.classList.remove('sticky');
|
||||||
|
let stickyCache = false; // Same as menu.classList.contains('sticky'), but faster
|
||||||
|
document.addEventListener('scroll', function() {
|
||||||
|
scrollTop = Math.max(document.scrollingElement.scrollTop, 0);
|
||||||
|
// `null` means that it doesn't need to be updated
|
||||||
|
let nextSticky = null;
|
||||||
|
let nextTop = null;
|
||||||
|
const scrollDown = scrollTop > prevScrollTop;
|
||||||
|
const menuPosAbsoluteY = topCache - scrollTop;
|
||||||
|
if (scrollDown) {
|
||||||
|
nextSticky = false;
|
||||||
|
if (menuPosAbsoluteY > 0) {
|
||||||
|
nextTop = prevScrollTop;
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
if (menuPosAbsoluteY > 0) {
|
||||||
|
nextSticky = true;
|
||||||
|
} else if (menuPosAbsoluteY < minMenuY) {
|
||||||
|
nextTop = prevScrollTop + minMenuY;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (nextSticky === true && stickyCache === false) {
|
||||||
|
menu.classList.add('sticky');
|
||||||
|
stickyCache = true;
|
||||||
|
} else if (nextSticky === false && stickyCache === true) {
|
||||||
|
menu.classList.remove('sticky');
|
||||||
|
stickyCache = false;
|
||||||
|
}
|
||||||
|
if (nextTop !== null) {
|
||||||
|
menu.style.top = nextTop + 'px';
|
||||||
|
topCache = nextTop;
|
||||||
|
}
|
||||||
|
prevScrollTop = scrollTop;
|
||||||
|
}, { passive: true });
|
||||||
|
})();
|
||||||
|
(function controllBorder() {
|
||||||
|
function updateBorder() {
|
||||||
|
if (menu.offsetTop === 0) {
|
||||||
|
menu.classList.remove('bordered');
|
||||||
|
} else {
|
||||||
|
menu.classList.add('bordered');
|
||||||
|
}
|
||||||
|
}
|
||||||
|
updateBorder();
|
||||||
|
document.addEventListener('scroll', updateBorder, { passive: true });
|
||||||
|
})();
|
||||||
|
})();
|
||||||
7
zh/clipboard.min.js
vendored
Normal file
261
zh/concepts/ai_system.html
Normal file
@@ -0,0 +1,261 @@
|
|||||||
|
<!DOCTYPE HTML>
|
||||||
|
<html lang="en" class="light sidebar-visible" dir="ltr">
|
||||||
|
<head>
|
||||||
|
<!-- Book generated using mdBook -->
|
||||||
|
<meta charset="UTF-8">
|
||||||
|
<title>AI 系统设计 - 大道 (Dao OS) 文档</title>
|
||||||
|
|
||||||
|
|
||||||
|
<!-- Custom HTML head -->
|
||||||
|
|
||||||
|
<meta name="description" content="大道(Dao OS)官方文档,你的赛博生命操作系统。">
|
||||||
|
<meta name="viewport" content="width=device-width, initial-scale=1">
|
||||||
|
<meta name="theme-color" content="#ffffff">
|
||||||
|
|
||||||
|
<link rel="icon" href="../favicon.svg">
|
||||||
|
<link rel="shortcut icon" href="../favicon.png">
|
||||||
|
<link rel="stylesheet" href="../css/variables.css">
|
||||||
|
<link rel="stylesheet" href="../css/general.css">
|
||||||
|
<link rel="stylesheet" href="../css/chrome.css">
|
||||||
|
<link rel="stylesheet" href="../css/print.css" media="print">
|
||||||
|
|
||||||
|
<!-- Fonts -->
|
||||||
|
<link rel="stylesheet" href="../FontAwesome/css/font-awesome.css">
|
||||||
|
<link rel="stylesheet" href="../fonts/fonts.css">
|
||||||
|
|
||||||
|
<!-- Highlight.js Stylesheets -->
|
||||||
|
<link rel="stylesheet" id="highlight-css" href="../highlight.css">
|
||||||
|
<link rel="stylesheet" id="tomorrow-night-css" href="../tomorrow-night.css">
|
||||||
|
<link rel="stylesheet" id="ayu-highlight-css" href="../ayu-highlight.css">
|
||||||
|
|
||||||
|
<!-- Custom theme stylesheets -->
|
||||||
|
|
||||||
|
|
||||||
|
<!-- Provide site root and default themes to javascript -->
|
||||||
|
<script>
|
||||||
|
const path_to_root = "../";
|
||||||
|
const default_light_theme = "light";
|
||||||
|
const default_dark_theme = "navy";
|
||||||
|
</script>
|
||||||
|
<!-- Start loading toc.js asap -->
|
||||||
|
<script src="../toc.js"></script>
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
<div id="mdbook-help-container">
|
||||||
|
<div id="mdbook-help-popup">
|
||||||
|
<h2 class="mdbook-help-title">Keyboard shortcuts</h2>
|
||||||
|
<div>
|
||||||
|
<p>Press <kbd>←</kbd> or <kbd>→</kbd> to navigate between chapters</p>
|
||||||
|
<p>Press <kbd>S</kbd> or <kbd>/</kbd> to search in the book</p>
|
||||||
|
<p>Press <kbd>?</kbd> to show this help</p>
|
||||||
|
<p>Press <kbd>Esc</kbd> to hide this help</p>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div id="body-container">
|
||||||
|
<!-- Work around some values being stored in localStorage wrapped in quotes -->
|
||||||
|
<script>
|
||||||
|
try {
|
||||||
|
let theme = localStorage.getItem('mdbook-theme');
|
||||||
|
let sidebar = localStorage.getItem('mdbook-sidebar');
|
||||||
|
|
||||||
|
if (theme.startsWith('"') && theme.endsWith('"')) {
|
||||||
|
localStorage.setItem('mdbook-theme', theme.slice(1, theme.length - 1));
|
||||||
|
}
|
||||||
|
|
||||||
|
if (sidebar.startsWith('"') && sidebar.endsWith('"')) {
|
||||||
|
localStorage.setItem('mdbook-sidebar', sidebar.slice(1, sidebar.length - 1));
|
||||||
|
}
|
||||||
|
} catch (e) { }
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<!-- Set the theme before any content is loaded, prevents flash -->
|
||||||
|
<script>
|
||||||
|
const default_theme = window.matchMedia("(prefers-color-scheme: dark)").matches ? default_dark_theme : default_light_theme;
|
||||||
|
let theme;
|
||||||
|
try { theme = localStorage.getItem('mdbook-theme'); } catch(e) { }
|
||||||
|
if (theme === null || theme === undefined) { theme = default_theme; }
|
||||||
|
const html = document.documentElement;
|
||||||
|
html.classList.remove('light')
|
||||||
|
html.classList.add(theme);
|
||||||
|
html.classList.add("js");
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<input type="checkbox" id="sidebar-toggle-anchor" class="hidden">
|
||||||
|
|
||||||
|
<!-- Hide / unhide sidebar before it is displayed -->
|
||||||
|
<script>
|
||||||
|
let sidebar = null;
|
||||||
|
const sidebar_toggle = document.getElementById("sidebar-toggle-anchor");
|
||||||
|
if (document.body.clientWidth >= 1080) {
|
||||||
|
try { sidebar = localStorage.getItem('mdbook-sidebar'); } catch(e) { }
|
||||||
|
sidebar = sidebar || 'visible';
|
||||||
|
} else {
|
||||||
|
sidebar = 'hidden';
|
||||||
|
}
|
||||||
|
sidebar_toggle.checked = sidebar === 'visible';
|
||||||
|
html.classList.remove('sidebar-visible');
|
||||||
|
html.classList.add("sidebar-" + sidebar);
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<nav id="sidebar" class="sidebar" aria-label="Table of contents">
|
||||||
|
<!-- populated by js -->
|
||||||
|
<mdbook-sidebar-scrollbox class="sidebar-scrollbox"></mdbook-sidebar-scrollbox>
|
||||||
|
<noscript>
|
||||||
|
<iframe class="sidebar-iframe-outer" src="../toc.html"></iframe>
|
||||||
|
</noscript>
|
||||||
|
<div id="sidebar-resize-handle" class="sidebar-resize-handle">
|
||||||
|
<div class="sidebar-resize-indicator"></div>
|
||||||
|
</div>
|
||||||
|
</nav>
|
||||||
|
|
||||||
|
<div id="page-wrapper" class="page-wrapper">
|
||||||
|
|
||||||
|
<div class="page">
|
||||||
|
<div id="menu-bar-hover-placeholder"></div>
|
||||||
|
<div id="menu-bar" class="menu-bar sticky">
|
||||||
|
<div class="left-buttons">
|
||||||
|
<label id="sidebar-toggle" class="icon-button" for="sidebar-toggle-anchor" title="Toggle Table of Contents" aria-label="Toggle Table of Contents" aria-controls="sidebar">
|
||||||
|
<i class="fa fa-bars"></i>
|
||||||
|
</label>
|
||||||
|
<button id="theme-toggle" class="icon-button" type="button" title="Change theme" aria-label="Change theme" aria-haspopup="true" aria-expanded="false" aria-controls="theme-list">
|
||||||
|
<i class="fa fa-paint-brush"></i>
|
||||||
|
</button>
|
||||||
|
<ul id="theme-list" class="theme-popup" aria-label="Themes" role="menu">
|
||||||
|
<li role="none"><button role="menuitem" class="theme" id="default_theme">Auto</button></li>
|
||||||
|
<li role="none"><button role="menuitem" class="theme" id="light">Light</button></li>
|
||||||
|
<li role="none"><button role="menuitem" class="theme" id="rust">Rust</button></li>
|
||||||
|
<li role="none"><button role="menuitem" class="theme" id="coal">Coal</button></li>
|
||||||
|
<li role="none"><button role="menuitem" class="theme" id="navy">Navy</button></li>
|
||||||
|
<li role="none"><button role="menuitem" class="theme" id="ayu">Ayu</button></li>
|
||||||
|
</ul>
|
||||||
|
<button id="search-toggle" class="icon-button" type="button" title="Search (`/`)" aria-label="Toggle Searchbar" aria-expanded="false" aria-keyshortcuts="/ s" aria-controls="searchbar">
|
||||||
|
<i class="fa fa-search"></i>
|
||||||
|
</button>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<h1 class="menu-title">大道 (Dao OS) 文档</h1>
|
||||||
|
|
||||||
|
<div class="right-buttons">
|
||||||
|
<a href="../print.html" title="Print this book" aria-label="Print this book">
|
||||||
|
<i id="print-button" class="fa fa-print"></i>
|
||||||
|
</a>
|
||||||
|
<a href="https://nest.doylee.cn/Dao-OS/dao-os-docs" title="Git repository" aria-label="Git repository">
|
||||||
|
<i id="git-repository-button" class="fa fa-github"></i>
|
||||||
|
</a>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div id="search-wrapper" class="hidden">
|
||||||
|
<form id="searchbar-outer" class="searchbar-outer">
|
||||||
|
<input type="search" id="searchbar" name="searchbar" placeholder="Search this book ..." aria-controls="searchresults-outer" aria-describedby="searchresults-header">
|
||||||
|
</form>
|
||||||
|
<div id="searchresults-outer" class="searchresults-outer hidden">
|
||||||
|
<div id="searchresults-header" class="searchresults-header"></div>
|
||||||
|
<ul id="searchresults">
|
||||||
|
</ul>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<!-- Apply ARIA attributes after the sidebar and the sidebar toggle button are added to the DOM -->
|
||||||
|
<script>
|
||||||
|
document.getElementById('sidebar-toggle').setAttribute('aria-expanded', sidebar === 'visible');
|
||||||
|
document.getElementById('sidebar').setAttribute('aria-hidden', sidebar !== 'visible');
|
||||||
|
Array.from(document.querySelectorAll('#sidebar a')).forEach(function(link) {
|
||||||
|
link.setAttribute('tabIndex', sidebar === 'visible' ? 0 : -1);
|
||||||
|
});
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<div id="content" class="content">
|
||||||
|
<main>
|
||||||
|
<h1 id="ai-系统设计大道之魂"><a class="header" href="#ai-系统设计大道之魂">AI 系统设计:“大道”之魂</a></h1>
|
||||||
|
<p>大道 (Dao OS) 中的 AI,不仅仅是一个功能,它是用户体验的核心,其从零开始的设计理念就是成为一个共生的**“硅基伙伴”**。它扮演着系统的灵魂,用智能、共情和主动的支持,为用户的数字生活注入活力。</p>
|
||||||
|
<h2 id="指导哲学ai-伦理宪章"><a class="header" href="#指导哲学ai-伦理宪章">指导哲学:AI 伦理宪章</a></h2>
|
||||||
|
<p>我们 AI 的设计与运行,严格遵循我们的**“AI 伦理宪章”**,该宪章将用户与AI的伙伴关系、透明度、用户校准以及对多元化视角的推崇置于首位。</p>
|
||||||
|
<h2 id="系统解剖心智的架构"><a class="header" href="#系统解剖心智的架构">系统解剖:心智的架构</a></h2>
|
||||||
|
<p>大道 OS 的 AI 不是一个单一的庞然大物,而是一个由中央协调器管理的、模块化的、分层的“心智系统”。</p>
|
||||||
|
<h3 id="1-ai-协调器-ai-orchestrator"><a class="header" href="#1-ai-协调器-ai-orchestrator">1. AI 协调器 (AI Orchestrator)</a></h3>
|
||||||
|
<p>这是 AI 的“中央神经系统”。它是<code>元</code>内部的一个核心模块,负责管理、调度和分发所有与AI相关的任务。它会决定哪个“心智模型”最适合处理给定的请求,管理设备资源,并主动地从用户的“私有特征库”(即第二大脑)中提取上下文信息,以提供全局的、智能的响应。</p>
|
||||||
|
<h3 id="2-三层心智模型-tiered-mind-models"><a class="header" href="#2-三层心智模型-tiered-mind-models">2. 三层心智模型 (Tiered Mind Models)</a></h3>
|
||||||
|
<p>为了平衡效率、能力和隐私,AI 的智能被构建为三个层级,并部署在用户的<code>化身</code>网络之上。</p>
|
||||||
|
<h4 id="第一层反射心智-the-brainstem---脑干"><a class="header" href="#第一层反射心智-the-brainstem---脑干">第一层:反射心智 (The Brainstem - 脑干)</a></h4>
|
||||||
|
<ul>
|
||||||
|
<li><strong>描述</strong>: 这一层代表了AI的本能和神经反射。它由一系列微型、高效、专用的模型组成。</li>
|
||||||
|
<li><strong>部署</strong>: 它足够小,可以与<code>元</code>打包在一起,并运行在**所有<code>化身</code>(包括<code>器化身</code>和<code>核化身</code>)**上,无需强大硬件或个人数据即可提供即时效用。</li>
|
||||||
|
<li><strong>功能</strong>: 它处理即时的、本地的任务,如指令意图识别和基本信息分类。</li>
|
||||||
|
</ul>
|
||||||
|
<h4 id="第二层认知心智-the-neocortex---大脑皮层"><a class="header" href="#第二层认知心智-the-neocortex---大脑皮层">第二层:认知心智 (The Neocortex - 大脑皮层)</a></h4>
|
||||||
|
<ul>
|
||||||
|
<li><strong>描述</strong>: 这是AI进行深度思考、记忆和个性化的中枢。它由更大的语言模型组成。</li>
|
||||||
|
<li><strong>部署</strong>: 这些模型作为<strong>可选的、按需下载</strong>的模块,安装在有能力的**<code>化身</code><strong>上(包括性能强大的</strong><code>器化身</code><strong>如新款手机/PC,以及</strong><code>核化身</code>**)。</li>
|
||||||
|
<li><strong>功能</strong>: 它通过一种**“即时(JIT)数据流水线”**机制,来实现高级功能,如语义搜索和上下文感知问答。</li>
|
||||||
|
</ul>
|
||||||
|
<h4 id="第三层协同心智-the-social-brain---社交大脑"><a class="header" href="#第三层协同心智-the-social-brain---社交大脑">第三层:协同心智 (The Social Brain - 社交大脑)</a></h4>
|
||||||
|
<ul>
|
||||||
|
<li><strong>描述</strong>: 这一层掌管AI与外部世界和其他“大道”进行安全交互的能力。</li>
|
||||||
|
<li><strong>部署</strong>: 这是一种在用户的网络中被协同调度的“工作模式”。例如,一个轻量级的**<code>器化身</code><strong>(如浏览器插件)可以远程调用一个强大的</strong><code>核化身</code>**(如家用服务器)所承载的“认知心智”。</li>
|
||||||
|
<li><strong>功能</strong>: 它促进了隐私保护的联合学习,以及经过授权和匿名化处理的外部API调用。</li>
|
||||||
|
</ul>
|
||||||
|
<h2 id="情感核心共鸣模块-the-resonance-module"><a class="header" href="#情感核心共鸣模块-the-resonance-module">情感核心:共鸣模块 (The Resonance Module)</a></h2>
|
||||||
|
<p>为了超越一个纯粹的工具,AI 配备了“情感共鸣模块”。其目的不是模拟情感,而是去感知、理解并以共情和支持的方式回应用户的情绪状态。</p>
|
||||||
|
<h2 id="学习与进化过程灵魂的成长之路"><a class="header" href="#学习与进化过程灵魂的成长之路">学习与进化过程:灵魂的成长之路</a></h2>
|
||||||
|
<p>AI 是一个与用户共同成长的生命系统。它的进化是<strong>持续且增量</strong>的。当新数据进入“第二大脑”时,后台索引器就会处理它,使其立即可用于未来的上下文检索。</p>
|
||||||
|
<ul>
|
||||||
|
<li><strong>隐式学习</strong>: 它通过在本地观察用户的行为和反馈来进行学习。</li>
|
||||||
|
<li><strong>显式教导</strong>: 用户可以通过“教导模式”直接指导AI。</li>
|
||||||
|
<li><strong>联合学习</strong>: 用户可以自愿加入社区驱动的计划,在不暴露任何个人数据的前提下,共同改进共享模型。</li>
|
||||||
|
</ul>
|
||||||
|
<p>这套架构确保了“大道”的AI在强大之余是安全的,在个性化之余是面向世界的,在智能之余是体贴的——一个真正的终身伙伴。</p>
|
||||||
|
|
||||||
|
</main>
|
||||||
|
|
||||||
|
<nav class="nav-wrapper" aria-label="Page navigation">
|
||||||
|
<!-- Mobile navigation buttons -->
|
||||||
|
<a rel="prev" href="../concepts/core_architecture.html" class="mobile-nav-chapters previous" title="Previous chapter" aria-label="Previous chapter" aria-keyshortcuts="Left">
|
||||||
|
<i class="fa fa-angle-left"></i>
|
||||||
|
</a>
|
||||||
|
|
||||||
|
<a rel="next prefetch" href="../concepts/user_journey.html" class="mobile-nav-chapters next" title="Next chapter" aria-label="Next chapter" aria-keyshortcuts="Right">
|
||||||
|
<i class="fa fa-angle-right"></i>
|
||||||
|
</a>
|
||||||
|
|
||||||
|
<div style="clear: both"></div>
|
||||||
|
</nav>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<nav class="nav-wide-wrapper" aria-label="Page navigation">
|
||||||
|
<a rel="prev" href="../concepts/core_architecture.html" class="nav-chapters previous" title="Previous chapter" aria-label="Previous chapter" aria-keyshortcuts="Left">
|
||||||
|
<i class="fa fa-angle-left"></i>
|
||||||
|
</a>
|
||||||
|
|
||||||
|
<a rel="next prefetch" href="../concepts/user_journey.html" class="nav-chapters next" title="Next chapter" aria-label="Next chapter" aria-keyshortcuts="Right">
|
||||||
|
<i class="fa fa-angle-right"></i>
|
||||||
|
</a>
|
||||||
|
</nav>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<script>
|
||||||
|
window.playground_copyable = true;
|
||||||
|
</script>
|
||||||
|
|
||||||
|
|
||||||
|
<script src="../elasticlunr.min.js"></script>
|
||||||
|
<script src="../mark.min.js"></script>
|
||||||
|
<script src="../searcher.js"></script>
|
||||||
|
|
||||||
|
<script src="../clipboard.min.js"></script>
|
||||||
|
<script src="../highlight.js"></script>
|
||||||
|
<script src="../book.js"></script>
|
||||||
|
|
||||||
|
<!-- Custom JS scripts -->
|
||||||
|
|
||||||
|
|
||||||
|
</div>
|
||||||
|
</body>
|
||||||
|
</html>
|
||||||
255
zh/concepts/core_architecture.html
Normal file
@@ -0,0 +1,255 @@
|
|||||||
|
<!DOCTYPE HTML>
|
||||||
|
<html lang="en" class="light sidebar-visible" dir="ltr">
|
||||||
|
<head>
|
||||||
|
<!-- Book generated using mdBook -->
|
||||||
|
<meta charset="UTF-8">
|
||||||
|
<title>核心架构 - 大道 (Dao OS) 文档</title>
|
||||||
|
|
||||||
|
|
||||||
|
<!-- Custom HTML head -->
|
||||||
|
|
||||||
|
<meta name="description" content="大道(Dao OS)官方文档,你的赛博生命操作系统。">
|
||||||
|
<meta name="viewport" content="width=device-width, initial-scale=1">
|
||||||
|
<meta name="theme-color" content="#ffffff">
|
||||||
|
|
||||||
|
<link rel="icon" href="../favicon.svg">
|
||||||
|
<link rel="shortcut icon" href="../favicon.png">
|
||||||
|
<link rel="stylesheet" href="../css/variables.css">
|
||||||
|
<link rel="stylesheet" href="../css/general.css">
|
||||||
|
<link rel="stylesheet" href="../css/chrome.css">
|
||||||
|
<link rel="stylesheet" href="../css/print.css" media="print">
|
||||||
|
|
||||||
|
<!-- Fonts -->
|
||||||
|
<link rel="stylesheet" href="../FontAwesome/css/font-awesome.css">
|
||||||
|
<link rel="stylesheet" href="../fonts/fonts.css">
|
||||||
|
|
||||||
|
<!-- Highlight.js Stylesheets -->
|
||||||
|
<link rel="stylesheet" id="highlight-css" href="../highlight.css">
|
||||||
|
<link rel="stylesheet" id="tomorrow-night-css" href="../tomorrow-night.css">
|
||||||
|
<link rel="stylesheet" id="ayu-highlight-css" href="../ayu-highlight.css">
|
||||||
|
|
||||||
|
<!-- Custom theme stylesheets -->
|
||||||
|
|
||||||
|
|
||||||
|
<!-- Provide site root and default themes to javascript -->
|
||||||
|
<script>
|
||||||
|
const path_to_root = "../";
|
||||||
|
const default_light_theme = "light";
|
||||||
|
const default_dark_theme = "navy";
|
||||||
|
</script>
|
||||||
|
<!-- Start loading toc.js asap -->
|
||||||
|
<script src="../toc.js"></script>
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
<div id="mdbook-help-container">
|
||||||
|
<div id="mdbook-help-popup">
|
||||||
|
<h2 class="mdbook-help-title">Keyboard shortcuts</h2>
|
||||||
|
<div>
|
||||||
|
<p>Press <kbd>←</kbd> or <kbd>→</kbd> to navigate between chapters</p>
|
||||||
|
<p>Press <kbd>S</kbd> or <kbd>/</kbd> to search in the book</p>
|
||||||
|
<p>Press <kbd>?</kbd> to show this help</p>
|
||||||
|
<p>Press <kbd>Esc</kbd> to hide this help</p>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div id="body-container">
|
||||||
|
<!-- Work around some values being stored in localStorage wrapped in quotes -->
|
||||||
|
<script>
|
||||||
|
try {
|
||||||
|
let theme = localStorage.getItem('mdbook-theme');
|
||||||
|
let sidebar = localStorage.getItem('mdbook-sidebar');
|
||||||
|
|
||||||
|
if (theme.startsWith('"') && theme.endsWith('"')) {
|
||||||
|
localStorage.setItem('mdbook-theme', theme.slice(1, theme.length - 1));
|
||||||
|
}
|
||||||
|
|
||||||
|
if (sidebar.startsWith('"') && sidebar.endsWith('"')) {
|
||||||
|
localStorage.setItem('mdbook-sidebar', sidebar.slice(1, sidebar.length - 1));
|
||||||
|
}
|
||||||
|
} catch (e) { }
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<!-- Set the theme before any content is loaded, prevents flash -->
|
||||||
|
<script>
|
||||||
|
const default_theme = window.matchMedia("(prefers-color-scheme: dark)").matches ? default_dark_theme : default_light_theme;
|
||||||
|
let theme;
|
||||||
|
try { theme = localStorage.getItem('mdbook-theme'); } catch(e) { }
|
||||||
|
if (theme === null || theme === undefined) { theme = default_theme; }
|
||||||
|
const html = document.documentElement;
|
||||||
|
html.classList.remove('light')
|
||||||
|
html.classList.add(theme);
|
||||||
|
html.classList.add("js");
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<input type="checkbox" id="sidebar-toggle-anchor" class="hidden">
|
||||||
|
|
||||||
|
<!-- Hide / unhide sidebar before it is displayed -->
|
||||||
|
<script>
|
||||||
|
let sidebar = null;
|
||||||
|
const sidebar_toggle = document.getElementById("sidebar-toggle-anchor");
|
||||||
|
if (document.body.clientWidth >= 1080) {
|
||||||
|
try { sidebar = localStorage.getItem('mdbook-sidebar'); } catch(e) { }
|
||||||
|
sidebar = sidebar || 'visible';
|
||||||
|
} else {
|
||||||
|
sidebar = 'hidden';
|
||||||
|
}
|
||||||
|
sidebar_toggle.checked = sidebar === 'visible';
|
||||||
|
html.classList.remove('sidebar-visible');
|
||||||
|
html.classList.add("sidebar-" + sidebar);
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<nav id="sidebar" class="sidebar" aria-label="Table of contents">
|
||||||
|
<!-- populated by js -->
|
||||||
|
<mdbook-sidebar-scrollbox class="sidebar-scrollbox"></mdbook-sidebar-scrollbox>
|
||||||
|
<noscript>
|
||||||
|
<iframe class="sidebar-iframe-outer" src="../toc.html"></iframe>
|
||||||
|
</noscript>
|
||||||
|
<div id="sidebar-resize-handle" class="sidebar-resize-handle">
|
||||||
|
<div class="sidebar-resize-indicator"></div>
|
||||||
|
</div>
|
||||||
|
</nav>
|
||||||
|
|
||||||
|
<div id="page-wrapper" class="page-wrapper">
|
||||||
|
|
||||||
|
<div class="page">
|
||||||
|
<div id="menu-bar-hover-placeholder"></div>
|
||||||
|
<div id="menu-bar" class="menu-bar sticky">
|
||||||
|
<div class="left-buttons">
|
||||||
|
<label id="sidebar-toggle" class="icon-button" for="sidebar-toggle-anchor" title="Toggle Table of Contents" aria-label="Toggle Table of Contents" aria-controls="sidebar">
|
||||||
|
<i class="fa fa-bars"></i>
|
||||||
|
</label>
|
||||||
|
<button id="theme-toggle" class="icon-button" type="button" title="Change theme" aria-label="Change theme" aria-haspopup="true" aria-expanded="false" aria-controls="theme-list">
|
||||||
|
<i class="fa fa-paint-brush"></i>
|
||||||
|
</button>
|
||||||
|
<ul id="theme-list" class="theme-popup" aria-label="Themes" role="menu">
|
||||||
|
<li role="none"><button role="menuitem" class="theme" id="default_theme">Auto</button></li>
|
||||||
|
<li role="none"><button role="menuitem" class="theme" id="light">Light</button></li>
|
||||||
|
<li role="none"><button role="menuitem" class="theme" id="rust">Rust</button></li>
|
||||||
|
<li role="none"><button role="menuitem" class="theme" id="coal">Coal</button></li>
|
||||||
|
<li role="none"><button role="menuitem" class="theme" id="navy">Navy</button></li>
|
||||||
|
<li role="none"><button role="menuitem" class="theme" id="ayu">Ayu</button></li>
|
||||||
|
</ul>
|
||||||
|
<button id="search-toggle" class="icon-button" type="button" title="Search (`/`)" aria-label="Toggle Searchbar" aria-expanded="false" aria-keyshortcuts="/ s" aria-controls="searchbar">
|
||||||
|
<i class="fa fa-search"></i>
|
||||||
|
</button>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<h1 class="menu-title">大道 (Dao OS) 文档</h1>
|
||||||
|
|
||||||
|
<div class="right-buttons">
|
||||||
|
<a href="../print.html" title="Print this book" aria-label="Print this book">
|
||||||
|
<i id="print-button" class="fa fa-print"></i>
|
||||||
|
</a>
|
||||||
|
<a href="https://nest.doylee.cn/Dao-OS/dao-os-docs" title="Git repository" aria-label="Git repository">
|
||||||
|
<i id="git-repository-button" class="fa fa-github"></i>
|
||||||
|
</a>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div id="search-wrapper" class="hidden">
|
||||||
|
<form id="searchbar-outer" class="searchbar-outer">
|
||||||
|
<input type="search" id="searchbar" name="searchbar" placeholder="Search this book ..." aria-controls="searchresults-outer" aria-describedby="searchresults-header">
|
||||||
|
</form>
|
||||||
|
<div id="searchresults-outer" class="searchresults-outer hidden">
|
||||||
|
<div id="searchresults-header" class="searchresults-header"></div>
|
||||||
|
<ul id="searchresults">
|
||||||
|
</ul>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<!-- Apply ARIA attributes after the sidebar and the sidebar toggle button are added to the DOM -->
|
||||||
|
<script>
|
||||||
|
document.getElementById('sidebar-toggle').setAttribute('aria-expanded', sidebar === 'visible');
|
||||||
|
document.getElementById('sidebar').setAttribute('aria-hidden', sidebar !== 'visible');
|
||||||
|
Array.from(document.querySelectorAll('#sidebar a')).forEach(function(link) {
|
||||||
|
link.setAttribute('tabIndex', sidebar === 'visible' ? 0 : -1);
|
||||||
|
});
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<div id="content" class="content">
|
||||||
|
<main>
|
||||||
|
<h1 id="核心架构"><a class="header" href="#核心架构">核心架构</a></h1>
|
||||||
|
<p>大道 (Dao OS) 的架构,旨在如一个活的、协同的数字生命体般运作。它由我们用户主权、体验至上和系统韧性的核心原则所指引。本文档将概述其基本组件、相互作用,以及我们独特的应用模型。</p>
|
||||||
|
<h2 id="核心二元性化身-avatar-与元-meta-unit"><a class="header" href="#核心二元性化身-avatar-与元-meta-unit">核心二元性:化身 (Avatar) 与元 (Meta Unit)</a></h2>
|
||||||
|
<p>在其核心,大道 (Dao OS) 基于一个简单而强大的二元性运作,类似于身体与灵魂:</p>
|
||||||
|
<ul>
|
||||||
|
<li><strong>化身 (Avatar)</strong>:是“身体”。它们是你的“大道”在你各种设备上的有形存在。</li>
|
||||||
|
<li><strong>元 (Meta Unit)</strong>:是“灵魂”。它是内嵌于每个<code>化身</code>中的、通用的核心逻辑,赋予其生命与智能。</li>
|
||||||
|
</ul>
|
||||||
|
<h2 id="化身类型临在的形态"><a class="header" href="#化身类型临在的形态">化身类型:临在的形态</a></h2>
|
||||||
|
<p>化身拥有两种基本类型,分别代表了系统的外在形态与其内在基础。</p>
|
||||||
|
<ul>
|
||||||
|
<li>
|
||||||
|
<p><strong><code>器化身</code> (Facet Avatar)</strong>:这类化身拥有用户界面(UI)。它是“大道”这颗宝石的“<strong>琢面</strong>”——用户借以交互和感知其数字世界的、经过打磨的表面。每一个<code>器化身</code>(手机App、桌面程序)都以其独特的方式,折射出同一个<code>元单元</code>(宝石的内在)的光芒,体现了“道化万千”的意境。</p>
|
||||||
|
</li>
|
||||||
|
<li>
|
||||||
|
<p><strong><code>核化身</code> (Core Avatar)</strong>:这是一个无界面(headless)的化身,在后台运行。它是系统的“<strong>核心</strong>”,提供基础服务、计算能力和数据持久化。它是支撑所有可见“琢面”的引擎。</p>
|
||||||
|
</li>
|
||||||
|
</ul>
|
||||||
|
<p>用户的“大道”由他自己的<code>器化身</code>与<code>核化身</code>所组成的网络构成。</p>
|
||||||
|
<h2 id="大道应用模型"><a class="header" href="#大道应用模型">“大道”应用模型</a></h2>
|
||||||
|
<p>“大道”中的应用,不是一个单一的程序,而是一个去中心化的、解耦的实体。</p>
|
||||||
|
<h3 id="1-后端灵魂流体复制与可钉选的服务"><a class="header" href="#1-后端灵魂流体复制与可钉选的服务">1. 后端灵魂:流体复制与可钉选的服务</a></h3>
|
||||||
|
<p>应用的核心逻辑是一个在<code>元</code>沙箱中运行的<strong>WASM模块</strong>。其部署遵循**“服务可钉选的流体复制”**的混合模型,兼顾了韧性与用户控制。</p>
|
||||||
|
<h3 id="2-前端皮囊按需加载的-web-外壳"><a class="header" href="#2-前端皮囊按需加载的-web-外壳">2. 前端皮囊:按需加载的 Web 外壳</a></h3>
|
||||||
|
<p>应用的用户界面,主要是一个<strong>Web 应用</strong>。其生命周期遵循**“一次注册,按需加载”<strong>的模型,运行在官方的</strong>“大道 Web 化身”**(它本身是一个<code>器化身</code>)中。这意味着用户只需向他的“大道”安装一次应用,就可以在任何设备上即时访问它。</p>
|
||||||
|
<h3 id="3-数据层私有特征库"><a class="header" href="#3-数据层私有特征库">3. 数据层:私有特征库</a></h3>
|
||||||
|
<p>所有应用的数据,都安全地存储在“第二大脑”中,并作为AI的**“私有特征库”**。</p>
|
||||||
|
<h2 id="架构总结"><a class="header" href="#架构总结">架构总结</a></h2>
|
||||||
|
<ul>
|
||||||
|
<li><strong>化身 (Avatar)</strong>:作为<code>元</code>的原生宿主。<strong><code>器化身</code></strong> 负责渲染UI,而 <strong><code>核化身</code></strong> 提供稳健的后台支持。</li>
|
||||||
|
<li><strong>元 (Meta Unit)</strong>:主权核心,负责运行沙箱化的应用逻辑(WASM),管理所有数据和状态,并在用户的私有P2P网络中协调任务。</li>
|
||||||
|
</ul>
|
||||||
|
|
||||||
|
</main>
|
||||||
|
|
||||||
|
<nav class="nav-wrapper" aria-label="Page navigation">
|
||||||
|
<!-- Mobile navigation buttons -->
|
||||||
|
<a rel="prev" href="../philosophy/principles.html" class="mobile-nav-chapters previous" title="Previous chapter" aria-label="Previous chapter" aria-keyshortcuts="Left">
|
||||||
|
<i class="fa fa-angle-left"></i>
|
||||||
|
</a>
|
||||||
|
|
||||||
|
<a rel="next prefetch" href="../concepts/ai_system.html" class="mobile-nav-chapters next" title="Next chapter" aria-label="Next chapter" aria-keyshortcuts="Right">
|
||||||
|
<i class="fa fa-angle-right"></i>
|
||||||
|
</a>
|
||||||
|
|
||||||
|
<div style="clear: both"></div>
|
||||||
|
</nav>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<nav class="nav-wide-wrapper" aria-label="Page navigation">
|
||||||
|
<a rel="prev" href="../philosophy/principles.html" class="nav-chapters previous" title="Previous chapter" aria-label="Previous chapter" aria-keyshortcuts="Left">
|
||||||
|
<i class="fa fa-angle-left"></i>
|
||||||
|
</a>
|
||||||
|
|
||||||
|
<a rel="next prefetch" href="../concepts/ai_system.html" class="nav-chapters next" title="Next chapter" aria-label="Next chapter" aria-keyshortcuts="Right">
|
||||||
|
<i class="fa fa-angle-right"></i>
|
||||||
|
</a>
|
||||||
|
</nav>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<script>
|
||||||
|
window.playground_copyable = true;
|
||||||
|
</script>
|
||||||
|
|
||||||
|
|
||||||
|
<script src="../elasticlunr.min.js"></script>
|
||||||
|
<script src="../mark.min.js"></script>
|
||||||
|
<script src="../searcher.js"></script>
|
||||||
|
|
||||||
|
<script src="../clipboard.min.js"></script>
|
||||||
|
<script src="../highlight.js"></script>
|
||||||
|
<script src="../book.js"></script>
|
||||||
|
|
||||||
|
<!-- Custom JS scripts -->
|
||||||
|
|
||||||
|
|
||||||
|
</div>
|
||||||
|
</body>
|
||||||
|
</html>
|
||||||
251
zh/concepts/user_journey.html
Normal file
@@ -0,0 +1,251 @@
|
|||||||
|
<!DOCTYPE HTML>
|
||||||
|
<html lang="en" class="light sidebar-visible" dir="ltr">
|
||||||
|
<head>
|
||||||
|
<!-- Book generated using mdBook -->
|
||||||
|
<meta charset="UTF-8">
|
||||||
|
<title>用户旅程 - 大道 (Dao OS) 文档</title>
|
||||||
|
|
||||||
|
|
||||||
|
<!-- Custom HTML head -->
|
||||||
|
|
||||||
|
<meta name="description" content="大道(Dao OS)官方文档,你的赛博生命操作系统。">
|
||||||
|
<meta name="viewport" content="width=device-width, initial-scale=1">
|
||||||
|
<meta name="theme-color" content="#ffffff">
|
||||||
|
|
||||||
|
<link rel="icon" href="../favicon.svg">
|
||||||
|
<link rel="shortcut icon" href="../favicon.png">
|
||||||
|
<link rel="stylesheet" href="../css/variables.css">
|
||||||
|
<link rel="stylesheet" href="../css/general.css">
|
||||||
|
<link rel="stylesheet" href="../css/chrome.css">
|
||||||
|
<link rel="stylesheet" href="../css/print.css" media="print">
|
||||||
|
|
||||||
|
<!-- Fonts -->
|
||||||
|
<link rel="stylesheet" href="../FontAwesome/css/font-awesome.css">
|
||||||
|
<link rel="stylesheet" href="../fonts/fonts.css">
|
||||||
|
|
||||||
|
<!-- Highlight.js Stylesheets -->
|
||||||
|
<link rel="stylesheet" id="highlight-css" href="../highlight.css">
|
||||||
|
<link rel="stylesheet" id="tomorrow-night-css" href="../tomorrow-night.css">
|
||||||
|
<link rel="stylesheet" id="ayu-highlight-css" href="../ayu-highlight.css">
|
||||||
|
|
||||||
|
<!-- Custom theme stylesheets -->
|
||||||
|
|
||||||
|
|
||||||
|
<!-- Provide site root and default themes to javascript -->
|
||||||
|
<script>
|
||||||
|
const path_to_root = "../";
|
||||||
|
const default_light_theme = "light";
|
||||||
|
const default_dark_theme = "navy";
|
||||||
|
</script>
|
||||||
|
<!-- Start loading toc.js asap -->
|
||||||
|
<script src="../toc.js"></script>
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
<div id="mdbook-help-container">
|
||||||
|
<div id="mdbook-help-popup">
|
||||||
|
<h2 class="mdbook-help-title">Keyboard shortcuts</h2>
|
||||||
|
<div>
|
||||||
|
<p>Press <kbd>←</kbd> or <kbd>→</kbd> to navigate between chapters</p>
|
||||||
|
<p>Press <kbd>S</kbd> or <kbd>/</kbd> to search in the book</p>
|
||||||
|
<p>Press <kbd>?</kbd> to show this help</p>
|
||||||
|
<p>Press <kbd>Esc</kbd> to hide this help</p>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div id="body-container">
|
||||||
|
<!-- Work around some values being stored in localStorage wrapped in quotes -->
|
||||||
|
<script>
|
||||||
|
try {
|
||||||
|
let theme = localStorage.getItem('mdbook-theme');
|
||||||
|
let sidebar = localStorage.getItem('mdbook-sidebar');
|
||||||
|
|
||||||
|
if (theme.startsWith('"') && theme.endsWith('"')) {
|
||||||
|
localStorage.setItem('mdbook-theme', theme.slice(1, theme.length - 1));
|
||||||
|
}
|
||||||
|
|
||||||
|
if (sidebar.startsWith('"') && sidebar.endsWith('"')) {
|
||||||
|
localStorage.setItem('mdbook-sidebar', sidebar.slice(1, sidebar.length - 1));
|
||||||
|
}
|
||||||
|
} catch (e) { }
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<!-- Set the theme before any content is loaded, prevents flash -->
|
||||||
|
<script>
|
||||||
|
const default_theme = window.matchMedia("(prefers-color-scheme: dark)").matches ? default_dark_theme : default_light_theme;
|
||||||
|
let theme;
|
||||||
|
try { theme = localStorage.getItem('mdbook-theme'); } catch(e) { }
|
||||||
|
if (theme === null || theme === undefined) { theme = default_theme; }
|
||||||
|
const html = document.documentElement;
|
||||||
|
html.classList.remove('light')
|
||||||
|
html.classList.add(theme);
|
||||||
|
html.classList.add("js");
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<input type="checkbox" id="sidebar-toggle-anchor" class="hidden">
|
||||||
|
|
||||||
|
<!-- Hide / unhide sidebar before it is displayed -->
|
||||||
|
<script>
|
||||||
|
let sidebar = null;
|
||||||
|
const sidebar_toggle = document.getElementById("sidebar-toggle-anchor");
|
||||||
|
if (document.body.clientWidth >= 1080) {
|
||||||
|
try { sidebar = localStorage.getItem('mdbook-sidebar'); } catch(e) { }
|
||||||
|
sidebar = sidebar || 'visible';
|
||||||
|
} else {
|
||||||
|
sidebar = 'hidden';
|
||||||
|
}
|
||||||
|
sidebar_toggle.checked = sidebar === 'visible';
|
||||||
|
html.classList.remove('sidebar-visible');
|
||||||
|
html.classList.add("sidebar-" + sidebar);
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<nav id="sidebar" class="sidebar" aria-label="Table of contents">
|
||||||
|
<!-- populated by js -->
|
||||||
|
<mdbook-sidebar-scrollbox class="sidebar-scrollbox"></mdbook-sidebar-scrollbox>
|
||||||
|
<noscript>
|
||||||
|
<iframe class="sidebar-iframe-outer" src="../toc.html"></iframe>
|
||||||
|
</noscript>
|
||||||
|
<div id="sidebar-resize-handle" class="sidebar-resize-handle">
|
||||||
|
<div class="sidebar-resize-indicator"></div>
|
||||||
|
</div>
|
||||||
|
</nav>
|
||||||
|
|
||||||
|
<div id="page-wrapper" class="page-wrapper">
|
||||||
|
|
||||||
|
<div class="page">
|
||||||
|
<div id="menu-bar-hover-placeholder"></div>
|
||||||
|
<div id="menu-bar" class="menu-bar sticky">
|
||||||
|
<div class="left-buttons">
|
||||||
|
<label id="sidebar-toggle" class="icon-button" for="sidebar-toggle-anchor" title="Toggle Table of Contents" aria-label="Toggle Table of Contents" aria-controls="sidebar">
|
||||||
|
<i class="fa fa-bars"></i>
|
||||||
|
</label>
|
||||||
|
<button id="theme-toggle" class="icon-button" type="button" title="Change theme" aria-label="Change theme" aria-haspopup="true" aria-expanded="false" aria-controls="theme-list">
|
||||||
|
<i class="fa fa-paint-brush"></i>
|
||||||
|
</button>
|
||||||
|
<ul id="theme-list" class="theme-popup" aria-label="Themes" role="menu">
|
||||||
|
<li role="none"><button role="menuitem" class="theme" id="default_theme">Auto</button></li>
|
||||||
|
<li role="none"><button role="menuitem" class="theme" id="light">Light</button></li>
|
||||||
|
<li role="none"><button role="menuitem" class="theme" id="rust">Rust</button></li>
|
||||||
|
<li role="none"><button role="menuitem" class="theme" id="coal">Coal</button></li>
|
||||||
|
<li role="none"><button role="menuitem" class="theme" id="navy">Navy</button></li>
|
||||||
|
<li role="none"><button role="menuitem" class="theme" id="ayu">Ayu</button></li>
|
||||||
|
</ul>
|
||||||
|
<button id="search-toggle" class="icon-button" type="button" title="Search (`/`)" aria-label="Toggle Searchbar" aria-expanded="false" aria-keyshortcuts="/ s" aria-controls="searchbar">
|
||||||
|
<i class="fa fa-search"></i>
|
||||||
|
</button>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<h1 class="menu-title">大道 (Dao OS) 文档</h1>
|
||||||
|
|
||||||
|
<div class="right-buttons">
|
||||||
|
<a href="../print.html" title="Print this book" aria-label="Print this book">
|
||||||
|
<i id="print-button" class="fa fa-print"></i>
|
||||||
|
</a>
|
||||||
|
<a href="https://nest.doylee.cn/Dao-OS/dao-os-docs" title="Git repository" aria-label="Git repository">
|
||||||
|
<i id="git-repository-button" class="fa fa-github"></i>
|
||||||
|
</a>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div id="search-wrapper" class="hidden">
|
||||||
|
<form id="searchbar-outer" class="searchbar-outer">
|
||||||
|
<input type="search" id="searchbar" name="searchbar" placeholder="Search this book ..." aria-controls="searchresults-outer" aria-describedby="searchresults-header">
|
||||||
|
</form>
|
||||||
|
<div id="searchresults-outer" class="searchresults-outer hidden">
|
||||||
|
<div id="searchresults-header" class="searchresults-header"></div>
|
||||||
|
<ul id="searchresults">
|
||||||
|
</ul>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<!-- Apply ARIA attributes after the sidebar and the sidebar toggle button are added to the DOM -->
|
||||||
|
<script>
|
||||||
|
document.getElementById('sidebar-toggle').setAttribute('aria-expanded', sidebar === 'visible');
|
||||||
|
document.getElementById('sidebar').setAttribute('aria-hidden', sidebar !== 'visible');
|
||||||
|
Array.from(document.querySelectorAll('#sidebar a')).forEach(function(link) {
|
||||||
|
link.setAttribute('tabIndex', sidebar === 'visible' ? 0 : -1);
|
||||||
|
});
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<div id="content" class="content">
|
||||||
|
<main>
|
||||||
|
<h1 id="用户旅程从便利到主权"><a class="header" href="#用户旅程从便利到主权">用户旅程:从便利到主权</a></h1>
|
||||||
|
<p>任何主权系统的一个核心挑战,都在于“绝对控制”与“轻松便利”之间的张力。“大道”解决这个问题的方式,不是强迫用户二选一,而是设计了一场充满引导、相互尊重的**“渐进式主权”**之旅。我们在用户熟悉的地方与他们相遇,并赋能他们去往任何他们想去的地方。</p>
|
||||||
|
<p>这场旅程不仅适用于用户对核心数据的掌控,也同样适用于他们与应用交互的方式。</p>
|
||||||
|
<h2 id="应用之旅一次注册随处使用"><a class="header" href="#应用之旅一次注册随处使用">应用之旅:一次注册,随处使用</a></h2>
|
||||||
|
<p>在“大道”中安装应用,与传统应用商店有着本质的不同。它不是将一个程序安装到单一的设备上,而是为你整个的数字生命体——你的“大道”——授予一项新的能力。</p>
|
||||||
|
<h3 id="1-发现与信任"><a class="header" href="#1-发现与信任">1. 发现与信任</a></h3>
|
||||||
|
<p>旅程始于一个去中心化的发现界面。当你找到一个应用时,你看到的不仅仅是下载按钮,还有它的**“信任仪表盘”**,让你能基于可验证的数据和社会化证明,做出知情的决定。</p>
|
||||||
|
<h3 id="2-注册与授权-即安装"><a class="header" href="#2-注册与授权-即安装">2. 注册与授权 (即“安装”)</a></h3>
|
||||||
|
<p>当你决定“安装”应用时,系统会向你展示它的**“应用清单 (Manifest)”<strong>,一个清晰的、人类可读的权限请求列表。你对这份清单的明确批准,就是那一次性的“安装”事件。这个行为将该应用</strong>“注册”**到你的“大道”中,这个注册状态会被同步到你所有的<code>化身</code>。</p>
|
||||||
|
<h3 id="3-无缝的跨设备访问"><a class="header" href="#3-无缝的跨设备访问">3. 无缝的跨设备访问</a></h3>
|
||||||
|
<p>一旦注册,该应用就成为你“大道”的一部分,无需重复安装,即可在任何**<code>器化身 (Facet Avatar)</code>**上访问。</p>
|
||||||
|
<ul>
|
||||||
|
<li><strong>在你的手机上</strong>: 你点击应用的图标。“大道 Web 化身”会即时加载其 Web 界面。</li>
|
||||||
|
<li><strong>在一台新笔记本上</strong>: 你首次登录你的<code>化身</code>。你会发现应用的图标<strong>已经在那儿了</strong>。当你点击它,你笔记本上的**<code>器化身</code>**会识别出这个注册,首次从网络获取UI资源包,缓存它,然后运行应用。</li>
|
||||||
|
</ul>
|
||||||
|
<h3 id="4-高级配置"><a class="header" href="#4-高级配置">4. 高级配置</a></h3>
|
||||||
|
<p>在任何时候,你都可以进入你的**“主权仪表盘”**来:</p>
|
||||||
|
<ul>
|
||||||
|
<li>审查并撤销你授予该应用的权限。</li>
|
||||||
|
<li>使用**“服务钉选 (Service Pinning)”<strong>功能,将其后端任务指定给你专属的</strong><code>核化身 (Core Avatar)</code>**,从而完全控制你的资源分配。</li>
|
||||||
|
</ul>
|
||||||
|
<h2 id="主权之旅的阶段"><a class="header" href="#主权之旅的阶段">主权之旅的阶段</a></h2>
|
||||||
|
<h3 id="第一阶段托管模式-managed-mode--你的向导之旅"><a class="header" href="#第一阶段托管模式-managed-mode--你的向导之旅">第一阶段:“托管模式” (Managed Mode) —— 你的向导之旅</a></h3>
|
||||||
|
<p>默认情况下,每一位新用户都从“托管模式”开始。此阶段通过友好的密钥恢复方法和默认同步节点提供最大便利,同时保持完全的端到端加密。</p>
|
||||||
|
<h3 id="第二阶段主权仪表盘-sovereignty-dashboard--十字路口"><a class="header" href="#第二阶段主权仪表盘-sovereignty-dashboard--十字路口">第二阶段:主权仪表盘 (Sovereignty Dashboard) —— 十字路口</a></h3>
|
||||||
|
<p>这是用户通往自治之旅的指挥中心。它是一个赋能与教育的工具,将用户的主权状态可视化,并提供游戏化的“任务”来鼓励用户获取更多控制权。</p>
|
||||||
|
<h3 id="第三阶段主权模式-sovereign-mode--你的数字王国"><a class="header" href="#第三阶段主权模式-sovereign-mode--你的数字王国">第三阶段:“主权模式” (Sovereign Mode) —— 你的数字王国</a></h3>
|
||||||
|
<p>这是旅程的最终、可选阶段。在“主权仪表盘”的引导下,用户可以“毕业”到此模式,完全自主保管他们的密钥并运行自己的**<code>核化身 (Core Avatar)</code>**(例如在家用服务器上),成为其数字领地中真正的主人。</p>
|
||||||
|
|
||||||
|
</main>
|
||||||
|
|
||||||
|
<nav class="nav-wrapper" aria-label="Page navigation">
|
||||||
|
<!-- Mobile navigation buttons -->
|
||||||
|
<a rel="prev" href="../concepts/ai_system.html" class="mobile-nav-chapters previous" title="Previous chapter" aria-label="Previous chapter" aria-keyshortcuts="Left">
|
||||||
|
<i class="fa fa-angle-left"></i>
|
||||||
|
</a>
|
||||||
|
|
||||||
|
<a rel="next prefetch" href="../specifications/tech_overview.html" class="mobile-nav-chapters next" title="Next chapter" aria-label="Next chapter" aria-keyshortcuts="Right">
|
||||||
|
<i class="fa fa-angle-right"></i>
|
||||||
|
</a>
|
||||||
|
|
||||||
|
<div style="clear: both"></div>
|
||||||
|
</nav>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<nav class="nav-wide-wrapper" aria-label="Page navigation">
|
||||||
|
<a rel="prev" href="../concepts/ai_system.html" class="nav-chapters previous" title="Previous chapter" aria-label="Previous chapter" aria-keyshortcuts="Left">
|
||||||
|
<i class="fa fa-angle-left"></i>
|
||||||
|
</a>
|
||||||
|
|
||||||
|
<a rel="next prefetch" href="../specifications/tech_overview.html" class="nav-chapters next" title="Next chapter" aria-label="Next chapter" aria-keyshortcuts="Right">
|
||||||
|
<i class="fa fa-angle-right"></i>
|
||||||
|
</a>
|
||||||
|
</nav>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<script>
|
||||||
|
window.playground_copyable = true;
|
||||||
|
</script>
|
||||||
|
|
||||||
|
|
||||||
|
<script src="../elasticlunr.min.js"></script>
|
||||||
|
<script src="../mark.min.js"></script>
|
||||||
|
<script src="../searcher.js"></script>
|
||||||
|
|
||||||
|
<script src="../clipboard.min.js"></script>
|
||||||
|
<script src="../highlight.js"></script>
|
||||||
|
<script src="../book.js"></script>
|
||||||
|
|
||||||
|
<!-- Custom JS scripts -->
|
||||||
|
|
||||||
|
|
||||||
|
</div>
|
||||||
|
</body>
|
||||||
|
</html>
|
||||||
701
zh/css/chrome.css
Normal file
@@ -0,0 +1,701 @@
|
|||||||
|
/* CSS for UI elements (a.k.a. chrome) */
|
||||||
|
|
||||||
|
html {
|
||||||
|
scrollbar-color: var(--scrollbar) var(--bg);
|
||||||
|
}
|
||||||
|
#searchresults a,
|
||||||
|
.content a:link,
|
||||||
|
a:visited,
|
||||||
|
a > .hljs {
|
||||||
|
color: var(--links);
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
body-container is necessary because mobile browsers don't seem to like
|
||||||
|
overflow-x on the body tag when there is a <meta name="viewport"> tag.
|
||||||
|
*/
|
||||||
|
#body-container {
|
||||||
|
/*
|
||||||
|
This is used when the sidebar pushes the body content off the side of
|
||||||
|
the screen on small screens. Without it, dragging on mobile Safari
|
||||||
|
will want to reposition the viewport in a weird way.
|
||||||
|
*/
|
||||||
|
overflow-x: clip;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Menu Bar */
|
||||||
|
|
||||||
|
#menu-bar,
|
||||||
|
#menu-bar-hover-placeholder {
|
||||||
|
z-index: 101;
|
||||||
|
margin: auto calc(0px - var(--page-padding));
|
||||||
|
}
|
||||||
|
#menu-bar {
|
||||||
|
position: relative;
|
||||||
|
display: flex;
|
||||||
|
flex-wrap: wrap;
|
||||||
|
background-color: var(--bg);
|
||||||
|
border-block-end-color: var(--bg);
|
||||||
|
border-block-end-width: 1px;
|
||||||
|
border-block-end-style: solid;
|
||||||
|
}
|
||||||
|
#menu-bar.sticky,
|
||||||
|
#menu-bar-hover-placeholder:hover + #menu-bar,
|
||||||
|
#menu-bar:hover,
|
||||||
|
html.sidebar-visible #menu-bar {
|
||||||
|
position: -webkit-sticky;
|
||||||
|
position: sticky;
|
||||||
|
top: 0 !important;
|
||||||
|
}
|
||||||
|
#menu-bar-hover-placeholder {
|
||||||
|
position: sticky;
|
||||||
|
position: -webkit-sticky;
|
||||||
|
top: 0;
|
||||||
|
height: var(--menu-bar-height);
|
||||||
|
}
|
||||||
|
#menu-bar.bordered {
|
||||||
|
border-block-end-color: var(--table-border-color);
|
||||||
|
}
|
||||||
|
#menu-bar i, #menu-bar .icon-button {
|
||||||
|
position: relative;
|
||||||
|
padding: 0 8px;
|
||||||
|
z-index: 10;
|
||||||
|
line-height: var(--menu-bar-height);
|
||||||
|
cursor: pointer;
|
||||||
|
transition: color 0.5s;
|
||||||
|
}
|
||||||
|
@media only screen and (max-width: 420px) {
|
||||||
|
#menu-bar i, #menu-bar .icon-button {
|
||||||
|
padding: 0 5px;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.icon-button {
|
||||||
|
border: none;
|
||||||
|
background: none;
|
||||||
|
padding: 0;
|
||||||
|
color: inherit;
|
||||||
|
}
|
||||||
|
.icon-button i {
|
||||||
|
margin: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
.right-buttons {
|
||||||
|
margin: 0 15px;
|
||||||
|
}
|
||||||
|
.right-buttons a {
|
||||||
|
text-decoration: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
.left-buttons {
|
||||||
|
display: flex;
|
||||||
|
margin: 0 5px;
|
||||||
|
}
|
||||||
|
html:not(.js) .left-buttons button {
|
||||||
|
display: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
.menu-title {
|
||||||
|
display: inline-block;
|
||||||
|
font-weight: 200;
|
||||||
|
font-size: 2.4rem;
|
||||||
|
line-height: var(--menu-bar-height);
|
||||||
|
text-align: center;
|
||||||
|
margin: 0;
|
||||||
|
flex: 1;
|
||||||
|
white-space: nowrap;
|
||||||
|
overflow: hidden;
|
||||||
|
text-overflow: ellipsis;
|
||||||
|
}
|
||||||
|
.menu-title {
|
||||||
|
cursor: pointer;
|
||||||
|
}
|
||||||
|
|
||||||
|
.menu-bar,
|
||||||
|
.menu-bar:visited,
|
||||||
|
.nav-chapters,
|
||||||
|
.nav-chapters:visited,
|
||||||
|
.mobile-nav-chapters,
|
||||||
|
.mobile-nav-chapters:visited,
|
||||||
|
.menu-bar .icon-button,
|
||||||
|
.menu-bar a i {
|
||||||
|
color: var(--icons);
|
||||||
|
}
|
||||||
|
|
||||||
|
.menu-bar i:hover,
|
||||||
|
.menu-bar .icon-button:hover,
|
||||||
|
.nav-chapters:hover,
|
||||||
|
.mobile-nav-chapters i:hover {
|
||||||
|
color: var(--icons-hover);
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Nav Icons */
|
||||||
|
|
||||||
|
.nav-chapters {
|
||||||
|
font-size: 2.5em;
|
||||||
|
text-align: center;
|
||||||
|
text-decoration: none;
|
||||||
|
|
||||||
|
position: fixed;
|
||||||
|
top: 0;
|
||||||
|
bottom: 0;
|
||||||
|
margin: 0;
|
||||||
|
max-width: 150px;
|
||||||
|
min-width: 90px;
|
||||||
|
|
||||||
|
display: flex;
|
||||||
|
justify-content: center;
|
||||||
|
align-content: center;
|
||||||
|
flex-direction: column;
|
||||||
|
|
||||||
|
transition: color 0.5s, background-color 0.5s;
|
||||||
|
}
|
||||||
|
|
||||||
|
.nav-chapters:hover {
|
||||||
|
text-decoration: none;
|
||||||
|
background-color: var(--theme-hover);
|
||||||
|
transition: background-color 0.15s, color 0.15s;
|
||||||
|
}
|
||||||
|
|
||||||
|
.nav-wrapper {
|
||||||
|
margin-block-start: 50px;
|
||||||
|
display: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
.mobile-nav-chapters {
|
||||||
|
font-size: 2.5em;
|
||||||
|
text-align: center;
|
||||||
|
text-decoration: none;
|
||||||
|
width: 90px;
|
||||||
|
border-radius: 5px;
|
||||||
|
background-color: var(--sidebar-bg);
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Only Firefox supports flow-relative values */
|
||||||
|
.previous { float: left; }
|
||||||
|
[dir=rtl] .previous { float: right; }
|
||||||
|
|
||||||
|
/* Only Firefox supports flow-relative values */
|
||||||
|
.next {
|
||||||
|
float: right;
|
||||||
|
right: var(--page-padding);
|
||||||
|
}
|
||||||
|
[dir=rtl] .next {
|
||||||
|
float: left;
|
||||||
|
right: unset;
|
||||||
|
left: var(--page-padding);
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Use the correct buttons for RTL layouts*/
|
||||||
|
[dir=rtl] .previous i.fa-angle-left:before {content:"\f105";}
|
||||||
|
[dir=rtl] .next i.fa-angle-right:before { content:"\f104"; }
|
||||||
|
|
||||||
|
@media only screen and (max-width: 1080px) {
|
||||||
|
.nav-wide-wrapper { display: none; }
|
||||||
|
.nav-wrapper { display: block; }
|
||||||
|
}
|
||||||
|
|
||||||
|
/* sidebar-visible */
|
||||||
|
@media only screen and (max-width: 1380px) {
|
||||||
|
#sidebar-toggle-anchor:checked ~ .page-wrapper .nav-wide-wrapper { display: none; }
|
||||||
|
#sidebar-toggle-anchor:checked ~ .page-wrapper .nav-wrapper { display: block; }
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Inline code */
|
||||||
|
|
||||||
|
:not(pre) > .hljs {
|
||||||
|
display: inline;
|
||||||
|
padding: 0.1em 0.3em;
|
||||||
|
border-radius: 3px;
|
||||||
|
}
|
||||||
|
|
||||||
|
:not(pre):not(a) > .hljs {
|
||||||
|
color: var(--inline-code-color);
|
||||||
|
overflow-x: initial;
|
||||||
|
}
|
||||||
|
|
||||||
|
a:hover > .hljs {
|
||||||
|
text-decoration: underline;
|
||||||
|
}
|
||||||
|
|
||||||
|
pre {
|
||||||
|
position: relative;
|
||||||
|
}
|
||||||
|
pre > .buttons {
|
||||||
|
position: absolute;
|
||||||
|
z-index: 100;
|
||||||
|
right: 0px;
|
||||||
|
top: 2px;
|
||||||
|
margin: 0px;
|
||||||
|
padding: 2px 0px;
|
||||||
|
|
||||||
|
color: var(--sidebar-fg);
|
||||||
|
cursor: pointer;
|
||||||
|
visibility: hidden;
|
||||||
|
opacity: 0;
|
||||||
|
transition: visibility 0.1s linear, opacity 0.1s linear;
|
||||||
|
}
|
||||||
|
pre:hover > .buttons {
|
||||||
|
visibility: visible;
|
||||||
|
opacity: 1
|
||||||
|
}
|
||||||
|
pre > .buttons :hover {
|
||||||
|
color: var(--sidebar-active);
|
||||||
|
border-color: var(--icons-hover);
|
||||||
|
background-color: var(--theme-hover);
|
||||||
|
}
|
||||||
|
pre > .buttons i {
|
||||||
|
margin-inline-start: 8px;
|
||||||
|
}
|
||||||
|
pre > .buttons button {
|
||||||
|
cursor: inherit;
|
||||||
|
margin: 0px 5px;
|
||||||
|
padding: 4px 4px 3px 5px;
|
||||||
|
font-size: 23px;
|
||||||
|
|
||||||
|
border-style: solid;
|
||||||
|
border-width: 1px;
|
||||||
|
border-radius: 4px;
|
||||||
|
border-color: var(--icons);
|
||||||
|
background-color: var(--theme-popup-bg);
|
||||||
|
transition: 100ms;
|
||||||
|
transition-property: color,border-color,background-color;
|
||||||
|
color: var(--icons);
|
||||||
|
}
|
||||||
|
|
||||||
|
pre > .buttons button.clip-button {
|
||||||
|
padding: 2px 4px 0px 6px;
|
||||||
|
}
|
||||||
|
pre > .buttons button.clip-button::before {
|
||||||
|
/* clipboard image from octicons (https://github.com/primer/octicons/tree/v2.0.0) MIT license
|
||||||
|
*/
|
||||||
|
content: url('data:image/svg+xml,<svg width="21" height="20" viewBox="0 0 24 25" \
|
||||||
|
xmlns="http://www.w3.org/2000/svg" aria-label="Copy to clipboard">\
|
||||||
|
<path d="M18 20h2v3c0 1-1 2-2 2H2c-.998 0-2-1-2-2V5c0-.911.755-1.667 1.667-1.667h5A3.323 3.323 0 \
|
||||||
|
0110 0a3.323 3.323 0 013.333 3.333h5C19.245 3.333 20 4.09 20 5v8.333h-2V9H2v14h16v-3zM3 \
|
||||||
|
7h14c0-.911-.793-1.667-1.75-1.667H13.5c-.957 0-1.75-.755-1.75-1.666C11.75 2.755 10.957 2 10 \
|
||||||
|
2s-1.75.755-1.75 1.667c0 .911-.793 1.666-1.75 1.666H4.75C3.793 5.333 3 6.09 3 7z"/>\
|
||||||
|
<path d="M4 19h6v2H4zM12 11H4v2h8zM4 17h4v-2H4zM15 15v-3l-4.5 4.5L15 21v-3l8.027-.032L23 15z"/>\
|
||||||
|
</svg>');
|
||||||
|
filter: var(--copy-button-filter);
|
||||||
|
}
|
||||||
|
pre > .buttons button.clip-button:hover::before {
|
||||||
|
filter: var(--copy-button-filter-hover);
|
||||||
|
}
|
||||||
|
|
||||||
|
@media (pointer: coarse) {
|
||||||
|
pre > .buttons button {
|
||||||
|
/* On mobile, make it easier to tap buttons. */
|
||||||
|
padding: 0.3rem 1rem;
|
||||||
|
}
|
||||||
|
|
||||||
|
.sidebar-resize-indicator {
|
||||||
|
/* Hide resize indicator on devices with limited accuracy */
|
||||||
|
display: none;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
pre > code {
|
||||||
|
display: block;
|
||||||
|
padding: 1rem;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* FIXME: ACE editors overlap their buttons because ACE does absolute
|
||||||
|
positioning within the code block which breaks padding. The only solution I
|
||||||
|
can think of is to move the padding to the outer pre tag (or insert a div
|
||||||
|
wrapper), but that would require fixing a whole bunch of CSS rules.
|
||||||
|
*/
|
||||||
|
.hljs.ace_editor {
|
||||||
|
padding: 0rem 0rem;
|
||||||
|
}
|
||||||
|
|
||||||
|
pre > .result {
|
||||||
|
margin-block-start: 10px;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Search */
|
||||||
|
|
||||||
|
#searchresults a {
|
||||||
|
text-decoration: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
mark {
|
||||||
|
border-radius: 2px;
|
||||||
|
padding-block-start: 0;
|
||||||
|
padding-block-end: 1px;
|
||||||
|
padding-inline-start: 3px;
|
||||||
|
padding-inline-end: 3px;
|
||||||
|
margin-block-start: 0;
|
||||||
|
margin-block-end: -1px;
|
||||||
|
margin-inline-start: -3px;
|
||||||
|
margin-inline-end: -3px;
|
||||||
|
background-color: var(--search-mark-bg);
|
||||||
|
transition: background-color 300ms linear;
|
||||||
|
cursor: pointer;
|
||||||
|
}
|
||||||
|
|
||||||
|
mark.fade-out {
|
||||||
|
background-color: rgba(0,0,0,0) !important;
|
||||||
|
cursor: auto;
|
||||||
|
}
|
||||||
|
|
||||||
|
.searchbar-outer {
|
||||||
|
margin-inline-start: auto;
|
||||||
|
margin-inline-end: auto;
|
||||||
|
max-width: var(--content-max-width);
|
||||||
|
}
|
||||||
|
|
||||||
|
#searchbar {
|
||||||
|
width: 100%;
|
||||||
|
margin-block-start: 5px;
|
||||||
|
margin-block-end: 0;
|
||||||
|
margin-inline-start: auto;
|
||||||
|
margin-inline-end: auto;
|
||||||
|
padding: 10px 16px;
|
||||||
|
transition: box-shadow 300ms ease-in-out;
|
||||||
|
border: 1px solid var(--searchbar-border-color);
|
||||||
|
border-radius: 3px;
|
||||||
|
background-color: var(--searchbar-bg);
|
||||||
|
color: var(--searchbar-fg);
|
||||||
|
}
|
||||||
|
#searchbar:focus,
|
||||||
|
#searchbar.active {
|
||||||
|
box-shadow: 0 0 3px var(--searchbar-shadow-color);
|
||||||
|
}
|
||||||
|
|
||||||
|
.searchresults-header {
|
||||||
|
font-weight: bold;
|
||||||
|
font-size: 1em;
|
||||||
|
padding-block-start: 18px;
|
||||||
|
padding-block-end: 0;
|
||||||
|
padding-inline-start: 5px;
|
||||||
|
padding-inline-end: 0;
|
||||||
|
color: var(--searchresults-header-fg);
|
||||||
|
}
|
||||||
|
|
||||||
|
.searchresults-outer {
|
||||||
|
margin-inline-start: auto;
|
||||||
|
margin-inline-end: auto;
|
||||||
|
max-width: var(--content-max-width);
|
||||||
|
border-block-end: 1px dashed var(--searchresults-border-color);
|
||||||
|
}
|
||||||
|
|
||||||
|
ul#searchresults {
|
||||||
|
list-style: none;
|
||||||
|
padding-inline-start: 20px;
|
||||||
|
}
|
||||||
|
ul#searchresults li {
|
||||||
|
margin: 10px 0px;
|
||||||
|
padding: 2px;
|
||||||
|
border-radius: 2px;
|
||||||
|
}
|
||||||
|
ul#searchresults li.focus {
|
||||||
|
background-color: var(--searchresults-li-bg);
|
||||||
|
}
|
||||||
|
ul#searchresults span.teaser {
|
||||||
|
display: block;
|
||||||
|
clear: both;
|
||||||
|
margin-block-start: 5px;
|
||||||
|
margin-block-end: 0;
|
||||||
|
margin-inline-start: 20px;
|
||||||
|
margin-inline-end: 0;
|
||||||
|
font-size: 0.8em;
|
||||||
|
}
|
||||||
|
ul#searchresults span.teaser em {
|
||||||
|
font-weight: bold;
|
||||||
|
font-style: normal;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Sidebar */
|
||||||
|
|
||||||
|
.sidebar {
|
||||||
|
position: fixed;
|
||||||
|
left: 0;
|
||||||
|
top: 0;
|
||||||
|
bottom: 0;
|
||||||
|
width: var(--sidebar-width);
|
||||||
|
font-size: 0.875em;
|
||||||
|
box-sizing: border-box;
|
||||||
|
-webkit-overflow-scrolling: touch;
|
||||||
|
overscroll-behavior-y: contain;
|
||||||
|
background-color: var(--sidebar-bg);
|
||||||
|
color: var(--sidebar-fg);
|
||||||
|
}
|
||||||
|
.sidebar-iframe-inner {
|
||||||
|
--padding: 10px;
|
||||||
|
|
||||||
|
background-color: var(--sidebar-bg);
|
||||||
|
padding: var(--padding);
|
||||||
|
margin: 0;
|
||||||
|
font-size: 1.4rem;
|
||||||
|
color: var(--sidebar-fg);
|
||||||
|
min-height: calc(100vh - var(--padding) * 2);
|
||||||
|
}
|
||||||
|
.sidebar-iframe-outer {
|
||||||
|
border: none;
|
||||||
|
height: 100%;
|
||||||
|
position: absolute;
|
||||||
|
top: 0;
|
||||||
|
bottom: 0;
|
||||||
|
left: 0;
|
||||||
|
right: 0;
|
||||||
|
}
|
||||||
|
[dir=rtl] .sidebar { left: unset; right: 0; }
|
||||||
|
.sidebar-resizing {
|
||||||
|
-moz-user-select: none;
|
||||||
|
-webkit-user-select: none;
|
||||||
|
-ms-user-select: none;
|
||||||
|
user-select: none;
|
||||||
|
}
|
||||||
|
html:not(.sidebar-resizing) .sidebar {
|
||||||
|
transition: transform 0.3s; /* Animation: slide away */
|
||||||
|
}
|
||||||
|
.sidebar code {
|
||||||
|
line-height: 2em;
|
||||||
|
}
|
||||||
|
.sidebar .sidebar-scrollbox {
|
||||||
|
overflow-y: auto;
|
||||||
|
position: absolute;
|
||||||
|
top: 0;
|
||||||
|
bottom: 0;
|
||||||
|
left: 0;
|
||||||
|
right: 0;
|
||||||
|
padding: 10px 10px;
|
||||||
|
}
|
||||||
|
.sidebar .sidebar-resize-handle {
|
||||||
|
position: absolute;
|
||||||
|
cursor: col-resize;
|
||||||
|
width: 0;
|
||||||
|
right: calc(var(--sidebar-resize-indicator-width) * -1);
|
||||||
|
top: 0;
|
||||||
|
bottom: 0;
|
||||||
|
display: flex;
|
||||||
|
align-items: center;
|
||||||
|
}
|
||||||
|
|
||||||
|
.sidebar-resize-handle .sidebar-resize-indicator {
|
||||||
|
width: 100%;
|
||||||
|
height: 16px;
|
||||||
|
color: var(--icons);
|
||||||
|
margin-inline-start: var(--sidebar-resize-indicator-space);
|
||||||
|
display: flex;
|
||||||
|
align-items: center;
|
||||||
|
justify-content: flex-start;
|
||||||
|
}
|
||||||
|
.sidebar-resize-handle .sidebar-resize-indicator::before {
|
||||||
|
content: "";
|
||||||
|
width: 2px;
|
||||||
|
height: 12px;
|
||||||
|
border-left: dotted 2px currentColor;
|
||||||
|
}
|
||||||
|
.sidebar-resize-handle .sidebar-resize-indicator::after {
|
||||||
|
content: "";
|
||||||
|
width: 2px;
|
||||||
|
height: 16px;
|
||||||
|
border-left: dotted 2px currentColor;
|
||||||
|
}
|
||||||
|
|
||||||
|
[dir=rtl] .sidebar .sidebar-resize-handle {
|
||||||
|
left: calc(var(--sidebar-resize-indicator-width) * -1);
|
||||||
|
right: unset;
|
||||||
|
}
|
||||||
|
.js .sidebar .sidebar-resize-handle {
|
||||||
|
cursor: col-resize;
|
||||||
|
width: calc(var(--sidebar-resize-indicator-width) - var(--sidebar-resize-indicator-space));
|
||||||
|
}
|
||||||
|
/* sidebar-hidden */
|
||||||
|
#sidebar-toggle-anchor:not(:checked) ~ .sidebar {
|
||||||
|
transform: translateX(calc(0px - var(--sidebar-width) - var(--sidebar-resize-indicator-width)));
|
||||||
|
z-index: -1;
|
||||||
|
}
|
||||||
|
[dir=rtl] #sidebar-toggle-anchor:not(:checked) ~ .sidebar {
|
||||||
|
transform: translateX(calc(var(--sidebar-width) + var(--sidebar-resize-indicator-width)));
|
||||||
|
}
|
||||||
|
.sidebar::-webkit-scrollbar {
|
||||||
|
background: var(--sidebar-bg);
|
||||||
|
}
|
||||||
|
.sidebar::-webkit-scrollbar-thumb {
|
||||||
|
background: var(--scrollbar);
|
||||||
|
}
|
||||||
|
|
||||||
|
/* sidebar-visible */
|
||||||
|
#sidebar-toggle-anchor:checked ~ .page-wrapper {
|
||||||
|
transform: translateX(calc(var(--sidebar-width) + var(--sidebar-resize-indicator-width)));
|
||||||
|
}
|
||||||
|
[dir=rtl] #sidebar-toggle-anchor:checked ~ .page-wrapper {
|
||||||
|
transform: translateX(calc(0px - var(--sidebar-width) - var(--sidebar-resize-indicator-width)));
|
||||||
|
}
|
||||||
|
@media only screen and (min-width: 620px) {
|
||||||
|
#sidebar-toggle-anchor:checked ~ .page-wrapper {
|
||||||
|
transform: none;
|
||||||
|
margin-inline-start: calc(var(--sidebar-width) + var(--sidebar-resize-indicator-width));
|
||||||
|
}
|
||||||
|
[dir=rtl] #sidebar-toggle-anchor:checked ~ .page-wrapper {
|
||||||
|
transform: none;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.chapter {
|
||||||
|
list-style: none outside none;
|
||||||
|
padding-inline-start: 0;
|
||||||
|
line-height: 2.2em;
|
||||||
|
}
|
||||||
|
|
||||||
|
.chapter ol {
|
||||||
|
width: 100%;
|
||||||
|
}
|
||||||
|
|
||||||
|
.chapter li {
|
||||||
|
display: flex;
|
||||||
|
color: var(--sidebar-non-existant);
|
||||||
|
}
|
||||||
|
.chapter li a {
|
||||||
|
display: block;
|
||||||
|
padding: 0;
|
||||||
|
text-decoration: none;
|
||||||
|
color: var(--sidebar-fg);
|
||||||
|
}
|
||||||
|
|
||||||
|
.chapter li a:hover {
|
||||||
|
color: var(--sidebar-active);
|
||||||
|
}
|
||||||
|
|
||||||
|
.chapter li a.active {
|
||||||
|
color: var(--sidebar-active);
|
||||||
|
}
|
||||||
|
|
||||||
|
.chapter li > a.toggle {
|
||||||
|
cursor: pointer;
|
||||||
|
display: block;
|
||||||
|
margin-inline-start: auto;
|
||||||
|
padding: 0 10px;
|
||||||
|
user-select: none;
|
||||||
|
opacity: 0.68;
|
||||||
|
}
|
||||||
|
|
||||||
|
.chapter li > a.toggle div {
|
||||||
|
transition: transform 0.5s;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* collapse the section */
|
||||||
|
.chapter li:not(.expanded) + li > ol {
|
||||||
|
display: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
.chapter li.chapter-item {
|
||||||
|
line-height: 1.5em;
|
||||||
|
margin-block-start: 0.6em;
|
||||||
|
}
|
||||||
|
|
||||||
|
.chapter li.expanded > a.toggle div {
|
||||||
|
transform: rotate(90deg);
|
||||||
|
}
|
||||||
|
|
||||||
|
.spacer {
|
||||||
|
width: 100%;
|
||||||
|
height: 3px;
|
||||||
|
margin: 5px 0px;
|
||||||
|
}
|
||||||
|
.chapter .spacer {
|
||||||
|
background-color: var(--sidebar-spacer);
|
||||||
|
}
|
||||||
|
|
||||||
|
@media (-moz-touch-enabled: 1), (pointer: coarse) {
|
||||||
|
.chapter li a { padding: 5px 0; }
|
||||||
|
.spacer { margin: 10px 0; }
|
||||||
|
}
|
||||||
|
|
||||||
|
.section {
|
||||||
|
list-style: none outside none;
|
||||||
|
padding-inline-start: 20px;
|
||||||
|
line-height: 1.9em;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Theme Menu Popup */
|
||||||
|
|
||||||
|
.theme-popup {
|
||||||
|
position: absolute;
|
||||||
|
left: 10px;
|
||||||
|
top: var(--menu-bar-height);
|
||||||
|
z-index: 1000;
|
||||||
|
border-radius: 4px;
|
||||||
|
font-size: 0.7em;
|
||||||
|
color: var(--fg);
|
||||||
|
background: var(--theme-popup-bg);
|
||||||
|
border: 1px solid var(--theme-popup-border);
|
||||||
|
margin: 0;
|
||||||
|
padding: 0;
|
||||||
|
list-style: none;
|
||||||
|
display: none;
|
||||||
|
/* Don't let the children's background extend past the rounded corners. */
|
||||||
|
overflow: hidden;
|
||||||
|
}
|
||||||
|
[dir=rtl] .theme-popup { left: unset; right: 10px; }
|
||||||
|
.theme-popup .default {
|
||||||
|
color: var(--icons);
|
||||||
|
}
|
||||||
|
.theme-popup .theme {
|
||||||
|
width: 100%;
|
||||||
|
border: 0;
|
||||||
|
margin: 0;
|
||||||
|
padding: 2px 20px;
|
||||||
|
line-height: 25px;
|
||||||
|
white-space: nowrap;
|
||||||
|
text-align: start;
|
||||||
|
cursor: pointer;
|
||||||
|
color: inherit;
|
||||||
|
background: inherit;
|
||||||
|
font-size: inherit;
|
||||||
|
}
|
||||||
|
.theme-popup .theme:hover {
|
||||||
|
background-color: var(--theme-hover);
|
||||||
|
}
|
||||||
|
|
||||||
|
.theme-selected::before {
|
||||||
|
display: inline-block;
|
||||||
|
content: "✓";
|
||||||
|
margin-inline-start: -14px;
|
||||||
|
width: 14px;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* The container for the help popup that covers the whole window. */
|
||||||
|
#mdbook-help-container {
|
||||||
|
/* Position and size for the whole window. */
|
||||||
|
position: fixed;
|
||||||
|
top: 0;
|
||||||
|
left: 0;
|
||||||
|
right: 0;
|
||||||
|
bottom: 0;
|
||||||
|
/* This uses flex layout (which is set in book.js), and centers the popup
|
||||||
|
in the window.*/
|
||||||
|
display: none;
|
||||||
|
align-items: center;
|
||||||
|
justify-content: center;
|
||||||
|
z-index: 1000;
|
||||||
|
/* Dim out the book while the popup is visible. */
|
||||||
|
background: var(--overlay-bg);
|
||||||
|
}
|
||||||
|
|
||||||
|
/* The popup help box. */
|
||||||
|
#mdbook-help-popup {
|
||||||
|
box-shadow: 0 4px 24px rgba(0,0,0,0.15);
|
||||||
|
min-width: 300px;
|
||||||
|
max-width: 500px;
|
||||||
|
width: 100%;
|
||||||
|
box-sizing: border-box;
|
||||||
|
display: flex;
|
||||||
|
flex-direction: column;
|
||||||
|
align-items: center;
|
||||||
|
background-color: var(--bg);
|
||||||
|
color: var(--fg);
|
||||||
|
border-width: 1px;
|
||||||
|
border-color: var(--theme-popup-border);
|
||||||
|
border-style: solid;
|
||||||
|
border-radius: 8px;
|
||||||
|
padding: 10px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.mdbook-help-title {
|
||||||
|
text-align: center;
|
||||||
|
/* mdbook's margin for h2 is way too large. */
|
||||||
|
margin: 10px;
|
||||||
|
}
|
||||||
279
zh/css/general.css
Normal file
@@ -0,0 +1,279 @@
|
|||||||
|
/* Base styles and content styles */
|
||||||
|
|
||||||
|
:root {
|
||||||
|
/* Browser default font-size is 16px, this way 1 rem = 10px */
|
||||||
|
font-size: 62.5%;
|
||||||
|
color-scheme: var(--color-scheme);
|
||||||
|
}
|
||||||
|
|
||||||
|
html {
|
||||||
|
font-family: "Open Sans", sans-serif;
|
||||||
|
color: var(--fg);
|
||||||
|
background-color: var(--bg);
|
||||||
|
text-size-adjust: none;
|
||||||
|
-webkit-text-size-adjust: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
body {
|
||||||
|
margin: 0;
|
||||||
|
font-size: 1.6rem;
|
||||||
|
overflow-x: hidden;
|
||||||
|
}
|
||||||
|
|
||||||
|
code {
|
||||||
|
font-family: var(--mono-font) !important;
|
||||||
|
font-size: var(--code-font-size);
|
||||||
|
direction: ltr !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* make long words/inline code not x overflow */
|
||||||
|
main {
|
||||||
|
overflow-wrap: break-word;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* make wide tables scroll if they overflow */
|
||||||
|
.table-wrapper {
|
||||||
|
overflow-x: auto;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Don't change font size in headers. */
|
||||||
|
h1 code, h2 code, h3 code, h4 code, h5 code, h6 code {
|
||||||
|
font-size: unset;
|
||||||
|
}
|
||||||
|
|
||||||
|
.left { float: left; }
|
||||||
|
.right { float: right; }
|
||||||
|
.boring { opacity: 0.6; }
|
||||||
|
.hide-boring .boring { display: none; }
|
||||||
|
.hidden { display: none !important; }
|
||||||
|
|
||||||
|
h2, h3 { margin-block-start: 2.5em; }
|
||||||
|
h4, h5 { margin-block-start: 2em; }
|
||||||
|
|
||||||
|
.header + .header h3,
|
||||||
|
.header + .header h4,
|
||||||
|
.header + .header h5 {
|
||||||
|
margin-block-start: 1em;
|
||||||
|
}
|
||||||
|
|
||||||
|
h1:target::before,
|
||||||
|
h2:target::before,
|
||||||
|
h3:target::before,
|
||||||
|
h4:target::before,
|
||||||
|
h5:target::before,
|
||||||
|
h6:target::before {
|
||||||
|
display: inline-block;
|
||||||
|
content: "»";
|
||||||
|
margin-inline-start: -30px;
|
||||||
|
width: 30px;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* This is broken on Safari as of version 14, but is fixed
|
||||||
|
in Safari Technology Preview 117 which I think will be Safari 14.2.
|
||||||
|
https://bugs.webkit.org/show_bug.cgi?id=218076
|
||||||
|
*/
|
||||||
|
:target {
|
||||||
|
/* Safari does not support logical properties */
|
||||||
|
scroll-margin-top: calc(var(--menu-bar-height) + 0.5em);
|
||||||
|
}
|
||||||
|
|
||||||
|
.page {
|
||||||
|
outline: 0;
|
||||||
|
padding: 0 var(--page-padding);
|
||||||
|
margin-block-start: calc(0px - var(--menu-bar-height)); /* Compensate for the #menu-bar-hover-placeholder */
|
||||||
|
}
|
||||||
|
.page-wrapper {
|
||||||
|
box-sizing: border-box;
|
||||||
|
background-color: var(--bg);
|
||||||
|
}
|
||||||
|
.no-js .page-wrapper,
|
||||||
|
.js:not(.sidebar-resizing) .page-wrapper {
|
||||||
|
transition: margin-left 0.3s ease, transform 0.3s ease; /* Animation: slide away */
|
||||||
|
}
|
||||||
|
[dir=rtl] .js:not(.sidebar-resizing) .page-wrapper {
|
||||||
|
transition: margin-right 0.3s ease, transform 0.3s ease; /* Animation: slide away */
|
||||||
|
}
|
||||||
|
|
||||||
|
.content {
|
||||||
|
overflow-y: auto;
|
||||||
|
padding: 0 5px 50px 5px;
|
||||||
|
}
|
||||||
|
.content main {
|
||||||
|
margin-inline-start: auto;
|
||||||
|
margin-inline-end: auto;
|
||||||
|
max-width: var(--content-max-width);
|
||||||
|
}
|
||||||
|
.content p { line-height: 1.45em; }
|
||||||
|
.content ol { line-height: 1.45em; }
|
||||||
|
.content ul { line-height: 1.45em; }
|
||||||
|
.content a { text-decoration: none; }
|
||||||
|
.content a:hover { text-decoration: underline; }
|
||||||
|
.content img, .content video { max-width: 100%; }
|
||||||
|
.content .header:link,
|
||||||
|
.content .header:visited {
|
||||||
|
color: var(--fg);
|
||||||
|
}
|
||||||
|
.content .header:link,
|
||||||
|
.content .header:visited:hover {
|
||||||
|
text-decoration: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
table {
|
||||||
|
margin: 0 auto;
|
||||||
|
border-collapse: collapse;
|
||||||
|
}
|
||||||
|
table td {
|
||||||
|
padding: 3px 20px;
|
||||||
|
border: 1px var(--table-border-color) solid;
|
||||||
|
}
|
||||||
|
table thead {
|
||||||
|
background: var(--table-header-bg);
|
||||||
|
}
|
||||||
|
table thead td {
|
||||||
|
font-weight: 700;
|
||||||
|
border: none;
|
||||||
|
}
|
||||||
|
table thead th {
|
||||||
|
padding: 3px 20px;
|
||||||
|
}
|
||||||
|
table thead tr {
|
||||||
|
border: 1px var(--table-header-bg) solid;
|
||||||
|
}
|
||||||
|
/* Alternate background colors for rows */
|
||||||
|
table tbody tr:nth-child(2n) {
|
||||||
|
background: var(--table-alternate-bg);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
blockquote {
|
||||||
|
margin: 20px 0;
|
||||||
|
padding: 0 20px;
|
||||||
|
color: var(--fg);
|
||||||
|
background-color: var(--quote-bg);
|
||||||
|
border-block-start: .1em solid var(--quote-border);
|
||||||
|
border-block-end: .1em solid var(--quote-border);
|
||||||
|
}
|
||||||
|
|
||||||
|
.warning {
|
||||||
|
margin: 20px;
|
||||||
|
padding: 0 20px;
|
||||||
|
border-inline-start: 2px solid var(--warning-border);
|
||||||
|
}
|
||||||
|
|
||||||
|
.warning:before {
|
||||||
|
position: absolute;
|
||||||
|
width: 3rem;
|
||||||
|
height: 3rem;
|
||||||
|
margin-inline-start: calc(-1.5rem - 21px);
|
||||||
|
content: "ⓘ";
|
||||||
|
text-align: center;
|
||||||
|
background-color: var(--bg);
|
||||||
|
color: var(--warning-border);
|
||||||
|
font-weight: bold;
|
||||||
|
font-size: 2rem;
|
||||||
|
}
|
||||||
|
|
||||||
|
blockquote .warning:before {
|
||||||
|
background-color: var(--quote-bg);
|
||||||
|
}
|
||||||
|
|
||||||
|
kbd {
|
||||||
|
background-color: var(--table-border-color);
|
||||||
|
border-radius: 4px;
|
||||||
|
border: solid 1px var(--theme-popup-border);
|
||||||
|
box-shadow: inset 0 -1px 0 var(--theme-hover);
|
||||||
|
display: inline-block;
|
||||||
|
font-size: var(--code-font-size);
|
||||||
|
font-family: var(--mono-font);
|
||||||
|
line-height: 10px;
|
||||||
|
padding: 4px 5px;
|
||||||
|
vertical-align: middle;
|
||||||
|
}
|
||||||
|
|
||||||
|
sup {
|
||||||
|
/* Set the line-height for superscript and footnote references so that there
|
||||||
|
isn't an awkward space appearing above lines that contain the footnote.
|
||||||
|
|
||||||
|
See https://github.com/rust-lang/mdBook/pull/2443#discussion_r1813773583
|
||||||
|
for an explanation.
|
||||||
|
*/
|
||||||
|
line-height: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
.footnote-definition {
|
||||||
|
font-size: 0.9em;
|
||||||
|
}
|
||||||
|
/* The default spacing for a list is a little too large. */
|
||||||
|
.footnote-definition ul,
|
||||||
|
.footnote-definition ol {
|
||||||
|
padding-left: 20px;
|
||||||
|
}
|
||||||
|
.footnote-definition > li {
|
||||||
|
/* Required to position the ::before target */
|
||||||
|
position: relative;
|
||||||
|
}
|
||||||
|
.footnote-definition > li:target {
|
||||||
|
scroll-margin-top: 50vh;
|
||||||
|
}
|
||||||
|
.footnote-reference:target {
|
||||||
|
scroll-margin-top: 50vh;
|
||||||
|
}
|
||||||
|
/* Draws a border around the footnote (including the marker) when it is selected.
|
||||||
|
TODO: If there are multiple linkbacks, highlight which one you just came
|
||||||
|
from so you know which one to click.
|
||||||
|
*/
|
||||||
|
.footnote-definition > li:target::before {
|
||||||
|
border: 2px solid var(--footnote-highlight);
|
||||||
|
border-radius: 6px;
|
||||||
|
position: absolute;
|
||||||
|
top: -8px;
|
||||||
|
right: -8px;
|
||||||
|
bottom: -8px;
|
||||||
|
left: -32px;
|
||||||
|
pointer-events: none;
|
||||||
|
content: "";
|
||||||
|
}
|
||||||
|
/* Pulses the footnote reference so you can quickly see where you left off reading.
|
||||||
|
This could use some improvement.
|
||||||
|
*/
|
||||||
|
@media not (prefers-reduced-motion) {
|
||||||
|
.footnote-reference:target {
|
||||||
|
animation: fn-highlight 0.8s;
|
||||||
|
border-radius: 2px;
|
||||||
|
}
|
||||||
|
|
||||||
|
@keyframes fn-highlight {
|
||||||
|
from {
|
||||||
|
background-color: var(--footnote-highlight);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.tooltiptext {
|
||||||
|
position: absolute;
|
||||||
|
visibility: hidden;
|
||||||
|
color: #fff;
|
||||||
|
background-color: #333;
|
||||||
|
transform: translateX(-50%); /* Center by moving tooltip 50% of its width left */
|
||||||
|
left: -8px; /* Half of the width of the icon */
|
||||||
|
top: -35px;
|
||||||
|
font-size: 0.8em;
|
||||||
|
text-align: center;
|
||||||
|
border-radius: 6px;
|
||||||
|
padding: 5px 8px;
|
||||||
|
margin: 5px;
|
||||||
|
z-index: 1000;
|
||||||
|
}
|
||||||
|
.tooltipped .tooltiptext {
|
||||||
|
visibility: visible;
|
||||||
|
}
|
||||||
|
|
||||||
|
.chapter li.part-title {
|
||||||
|
color: var(--sidebar-fg);
|
||||||
|
margin: 5px 0px;
|
||||||
|
font-weight: bold;
|
||||||
|
}
|
||||||
|
|
||||||
|
.result-no-output {
|
||||||
|
font-style: italic;
|
||||||
|
}
|
||||||
50
zh/css/print.css
Normal file
@@ -0,0 +1,50 @@
|
|||||||
|
|
||||||
|
#sidebar,
|
||||||
|
#menu-bar,
|
||||||
|
.nav-chapters,
|
||||||
|
.mobile-nav-chapters {
|
||||||
|
display: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
#page-wrapper.page-wrapper {
|
||||||
|
transform: none !important;
|
||||||
|
margin-inline-start: 0px;
|
||||||
|
overflow-y: initial;
|
||||||
|
}
|
||||||
|
|
||||||
|
#content {
|
||||||
|
max-width: none;
|
||||||
|
margin: 0;
|
||||||
|
padding: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
.page {
|
||||||
|
overflow-y: initial;
|
||||||
|
}
|
||||||
|
|
||||||
|
code {
|
||||||
|
direction: ltr !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
pre > .buttons {
|
||||||
|
z-index: 2;
|
||||||
|
}
|
||||||
|
|
||||||
|
a, a:visited, a:active, a:hover {
|
||||||
|
color: #4183c4;
|
||||||
|
text-decoration: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
h1, h2, h3, h4, h5, h6 {
|
||||||
|
page-break-inside: avoid;
|
||||||
|
page-break-after: avoid;
|
||||||
|
}
|
||||||
|
|
||||||
|
pre, code {
|
||||||
|
page-break-inside: avoid;
|
||||||
|
white-space: pre-wrap;
|
||||||
|
}
|
||||||
|
|
||||||
|
.fa {
|
||||||
|
display: none !important;
|
||||||
|
}
|
||||||
330
zh/css/variables.css
Normal file
@@ -0,0 +1,330 @@
|
|||||||
|
|
||||||
|
/* Globals */
|
||||||
|
|
||||||
|
:root {
|
||||||
|
--sidebar-target-width: 300px;
|
||||||
|
--sidebar-width: min(var(--sidebar-target-width), 80vw);
|
||||||
|
--sidebar-resize-indicator-width: 8px;
|
||||||
|
--sidebar-resize-indicator-space: 2px;
|
||||||
|
--page-padding: 15px;
|
||||||
|
--content-max-width: 750px;
|
||||||
|
--menu-bar-height: 50px;
|
||||||
|
--mono-font: "Source Code Pro", Consolas, "Ubuntu Mono", Menlo, "DejaVu Sans Mono", monospace, monospace;
|
||||||
|
--code-font-size: 0.875em; /* please adjust the ace font size accordingly in editor.js */
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Themes */
|
||||||
|
|
||||||
|
.ayu {
|
||||||
|
--bg: hsl(210, 25%, 8%);
|
||||||
|
--fg: #c5c5c5;
|
||||||
|
|
||||||
|
--sidebar-bg: #14191f;
|
||||||
|
--sidebar-fg: #c8c9db;
|
||||||
|
--sidebar-non-existant: #5c6773;
|
||||||
|
--sidebar-active: #ffb454;
|
||||||
|
--sidebar-spacer: #2d334f;
|
||||||
|
|
||||||
|
--scrollbar: var(--sidebar-fg);
|
||||||
|
|
||||||
|
--icons: #737480;
|
||||||
|
--icons-hover: #b7b9cc;
|
||||||
|
|
||||||
|
--links: #0096cf;
|
||||||
|
|
||||||
|
--inline-code-color: #ffb454;
|
||||||
|
|
||||||
|
--theme-popup-bg: #14191f;
|
||||||
|
--theme-popup-border: #5c6773;
|
||||||
|
--theme-hover: #191f26;
|
||||||
|
|
||||||
|
--quote-bg: hsl(226, 15%, 17%);
|
||||||
|
--quote-border: hsl(226, 15%, 22%);
|
||||||
|
|
||||||
|
--warning-border: #ff8e00;
|
||||||
|
|
||||||
|
--table-border-color: hsl(210, 25%, 13%);
|
||||||
|
--table-header-bg: hsl(210, 25%, 28%);
|
||||||
|
--table-alternate-bg: hsl(210, 25%, 11%);
|
||||||
|
|
||||||
|
--searchbar-border-color: #848484;
|
||||||
|
--searchbar-bg: #424242;
|
||||||
|
--searchbar-fg: #fff;
|
||||||
|
--searchbar-shadow-color: #d4c89f;
|
||||||
|
--searchresults-header-fg: #666;
|
||||||
|
--searchresults-border-color: #888;
|
||||||
|
--searchresults-li-bg: #252932;
|
||||||
|
--search-mark-bg: #e3b171;
|
||||||
|
|
||||||
|
--color-scheme: dark;
|
||||||
|
|
||||||
|
/* Same as `--icons` */
|
||||||
|
--copy-button-filter: invert(45%) sepia(6%) saturate(621%) hue-rotate(198deg) brightness(99%) contrast(85%);
|
||||||
|
/* Same as `--sidebar-active` */
|
||||||
|
--copy-button-filter-hover: invert(68%) sepia(55%) saturate(531%) hue-rotate(341deg) brightness(104%) contrast(101%);
|
||||||
|
|
||||||
|
--footnote-highlight: #2668a6;
|
||||||
|
|
||||||
|
--overlay-bg: rgba(33, 40, 48, 0.4);
|
||||||
|
}
|
||||||
|
|
||||||
|
.coal {
|
||||||
|
--bg: hsl(200, 7%, 8%);
|
||||||
|
--fg: #98a3ad;
|
||||||
|
|
||||||
|
--sidebar-bg: #292c2f;
|
||||||
|
--sidebar-fg: #a1adb8;
|
||||||
|
--sidebar-non-existant: #505254;
|
||||||
|
--sidebar-active: #3473ad;
|
||||||
|
--sidebar-spacer: #393939;
|
||||||
|
|
||||||
|
--scrollbar: var(--sidebar-fg);
|
||||||
|
|
||||||
|
--icons: #43484d;
|
||||||
|
--icons-hover: #b3c0cc;
|
||||||
|
|
||||||
|
--links: #2b79a2;
|
||||||
|
|
||||||
|
--inline-code-color: #c5c8c6;
|
||||||
|
|
||||||
|
--theme-popup-bg: #141617;
|
||||||
|
--theme-popup-border: #43484d;
|
||||||
|
--theme-hover: #1f2124;
|
||||||
|
|
||||||
|
--quote-bg: hsl(234, 21%, 18%);
|
||||||
|
--quote-border: hsl(234, 21%, 23%);
|
||||||
|
|
||||||
|
--warning-border: #ff8e00;
|
||||||
|
|
||||||
|
--table-border-color: hsl(200, 7%, 13%);
|
||||||
|
--table-header-bg: hsl(200, 7%, 28%);
|
||||||
|
--table-alternate-bg: hsl(200, 7%, 11%);
|
||||||
|
|
||||||
|
--searchbar-border-color: #aaa;
|
||||||
|
--searchbar-bg: #b7b7b7;
|
||||||
|
--searchbar-fg: #000;
|
||||||
|
--searchbar-shadow-color: #aaa;
|
||||||
|
--searchresults-header-fg: #666;
|
||||||
|
--searchresults-border-color: #98a3ad;
|
||||||
|
--searchresults-li-bg: #2b2b2f;
|
||||||
|
--search-mark-bg: #355c7d;
|
||||||
|
|
||||||
|
--color-scheme: dark;
|
||||||
|
|
||||||
|
/* Same as `--icons` */
|
||||||
|
--copy-button-filter: invert(26%) sepia(8%) saturate(575%) hue-rotate(169deg) brightness(87%) contrast(82%);
|
||||||
|
/* Same as `--sidebar-active` */
|
||||||
|
--copy-button-filter-hover: invert(36%) sepia(70%) saturate(503%) hue-rotate(167deg) brightness(98%) contrast(89%);
|
||||||
|
|
||||||
|
--footnote-highlight: #4079ae;
|
||||||
|
|
||||||
|
--overlay-bg: rgba(33, 40, 48, 0.4);
|
||||||
|
}
|
||||||
|
|
||||||
|
.light, html:not(.js) {
|
||||||
|
--bg: hsl(0, 0%, 100%);
|
||||||
|
--fg: hsl(0, 0%, 0%);
|
||||||
|
|
||||||
|
--sidebar-bg: #fafafa;
|
||||||
|
--sidebar-fg: hsl(0, 0%, 0%);
|
||||||
|
--sidebar-non-existant: #aaaaaa;
|
||||||
|
--sidebar-active: #1f1fff;
|
||||||
|
--sidebar-spacer: #f4f4f4;
|
||||||
|
|
||||||
|
--scrollbar: #8F8F8F;
|
||||||
|
|
||||||
|
--icons: #747474;
|
||||||
|
--icons-hover: #000000;
|
||||||
|
|
||||||
|
--links: #20609f;
|
||||||
|
|
||||||
|
--inline-code-color: #301900;
|
||||||
|
|
||||||
|
--theme-popup-bg: #fafafa;
|
||||||
|
--theme-popup-border: #cccccc;
|
||||||
|
--theme-hover: #e6e6e6;
|
||||||
|
|
||||||
|
--quote-bg: hsl(197, 37%, 96%);
|
||||||
|
--quote-border: hsl(197, 37%, 91%);
|
||||||
|
|
||||||
|
--warning-border: #ff8e00;
|
||||||
|
|
||||||
|
--table-border-color: hsl(0, 0%, 95%);
|
||||||
|
--table-header-bg: hsl(0, 0%, 80%);
|
||||||
|
--table-alternate-bg: hsl(0, 0%, 97%);
|
||||||
|
|
||||||
|
--searchbar-border-color: #aaa;
|
||||||
|
--searchbar-bg: #fafafa;
|
||||||
|
--searchbar-fg: #000;
|
||||||
|
--searchbar-shadow-color: #aaa;
|
||||||
|
--searchresults-header-fg: #666;
|
||||||
|
--searchresults-border-color: #888;
|
||||||
|
--searchresults-li-bg: #e4f2fe;
|
||||||
|
--search-mark-bg: #a2cff5;
|
||||||
|
|
||||||
|
--color-scheme: light;
|
||||||
|
|
||||||
|
/* Same as `--icons` */
|
||||||
|
--copy-button-filter: invert(45.49%);
|
||||||
|
/* Same as `--sidebar-active` */
|
||||||
|
--copy-button-filter-hover: invert(14%) sepia(93%) saturate(4250%) hue-rotate(243deg) brightness(99%) contrast(130%);
|
||||||
|
|
||||||
|
--footnote-highlight: #7e7eff;
|
||||||
|
|
||||||
|
--overlay-bg: rgba(200, 200, 205, 0.4);
|
||||||
|
}
|
||||||
|
|
||||||
|
.navy {
|
||||||
|
--bg: hsl(226, 23%, 11%);
|
||||||
|
--fg: #bcbdd0;
|
||||||
|
|
||||||
|
--sidebar-bg: #282d3f;
|
||||||
|
--sidebar-fg: #c8c9db;
|
||||||
|
--sidebar-non-existant: #505274;
|
||||||
|
--sidebar-active: #2b79a2;
|
||||||
|
--sidebar-spacer: #2d334f;
|
||||||
|
|
||||||
|
--scrollbar: var(--sidebar-fg);
|
||||||
|
|
||||||
|
--icons: #737480;
|
||||||
|
--icons-hover: #b7b9cc;
|
||||||
|
|
||||||
|
--links: #2b79a2;
|
||||||
|
|
||||||
|
--inline-code-color: #c5c8c6;
|
||||||
|
|
||||||
|
--theme-popup-bg: #161923;
|
||||||
|
--theme-popup-border: #737480;
|
||||||
|
--theme-hover: #282e40;
|
||||||
|
|
||||||
|
--quote-bg: hsl(226, 15%, 17%);
|
||||||
|
--quote-border: hsl(226, 15%, 22%);
|
||||||
|
|
||||||
|
--warning-border: #ff8e00;
|
||||||
|
|
||||||
|
--table-border-color: hsl(226, 23%, 16%);
|
||||||
|
--table-header-bg: hsl(226, 23%, 31%);
|
||||||
|
--table-alternate-bg: hsl(226, 23%, 14%);
|
||||||
|
|
||||||
|
--searchbar-border-color: #aaa;
|
||||||
|
--searchbar-bg: #aeaec6;
|
||||||
|
--searchbar-fg: #000;
|
||||||
|
--searchbar-shadow-color: #aaa;
|
||||||
|
--searchresults-header-fg: #5f5f71;
|
||||||
|
--searchresults-border-color: #5c5c68;
|
||||||
|
--searchresults-li-bg: #242430;
|
||||||
|
--search-mark-bg: #a2cff5;
|
||||||
|
|
||||||
|
--color-scheme: dark;
|
||||||
|
|
||||||
|
/* Same as `--icons` */
|
||||||
|
--copy-button-filter: invert(51%) sepia(10%) saturate(393%) hue-rotate(198deg) brightness(86%) contrast(87%);
|
||||||
|
/* Same as `--sidebar-active` */
|
||||||
|
--copy-button-filter-hover: invert(46%) sepia(20%) saturate(1537%) hue-rotate(156deg) brightness(85%) contrast(90%);
|
||||||
|
|
||||||
|
--footnote-highlight: #4079ae;
|
||||||
|
|
||||||
|
--overlay-bg: rgba(33, 40, 48, 0.4);
|
||||||
|
}
|
||||||
|
|
||||||
|
.rust {
|
||||||
|
--bg: hsl(60, 9%, 87%);
|
||||||
|
--fg: #262625;
|
||||||
|
|
||||||
|
--sidebar-bg: #3b2e2a;
|
||||||
|
--sidebar-fg: #c8c9db;
|
||||||
|
--sidebar-non-existant: #505254;
|
||||||
|
--sidebar-active: #e69f67;
|
||||||
|
--sidebar-spacer: #45373a;
|
||||||
|
|
||||||
|
--scrollbar: var(--sidebar-fg);
|
||||||
|
|
||||||
|
--icons: #737480;
|
||||||
|
--icons-hover: #262625;
|
||||||
|
|
||||||
|
--links: #2b79a2;
|
||||||
|
|
||||||
|
--inline-code-color: #6e6b5e;
|
||||||
|
|
||||||
|
--theme-popup-bg: #e1e1db;
|
||||||
|
--theme-popup-border: #b38f6b;
|
||||||
|
--theme-hover: #99908a;
|
||||||
|
|
||||||
|
--quote-bg: hsl(60, 5%, 75%);
|
||||||
|
--quote-border: hsl(60, 5%, 70%);
|
||||||
|
|
||||||
|
--warning-border: #ff8e00;
|
||||||
|
|
||||||
|
--table-border-color: hsl(60, 9%, 82%);
|
||||||
|
--table-header-bg: #b3a497;
|
||||||
|
--table-alternate-bg: hsl(60, 9%, 84%);
|
||||||
|
|
||||||
|
--searchbar-border-color: #aaa;
|
||||||
|
--searchbar-bg: #fafafa;
|
||||||
|
--searchbar-fg: #000;
|
||||||
|
--searchbar-shadow-color: #aaa;
|
||||||
|
--searchresults-header-fg: #666;
|
||||||
|
--searchresults-border-color: #888;
|
||||||
|
--searchresults-li-bg: #dec2a2;
|
||||||
|
--search-mark-bg: #e69f67;
|
||||||
|
|
||||||
|
/* Same as `--icons` */
|
||||||
|
--copy-button-filter: invert(51%) sepia(10%) saturate(393%) hue-rotate(198deg) brightness(86%) contrast(87%);
|
||||||
|
/* Same as `--sidebar-active` */
|
||||||
|
--copy-button-filter-hover: invert(77%) sepia(16%) saturate(1798%) hue-rotate(328deg) brightness(98%) contrast(83%);
|
||||||
|
|
||||||
|
--footnote-highlight: #d3a17a;
|
||||||
|
|
||||||
|
--overlay-bg: rgba(150, 150, 150, 0.25);
|
||||||
|
}
|
||||||
|
|
||||||
|
@media (prefers-color-scheme: dark) {
|
||||||
|
html:not(.js) {
|
||||||
|
--bg: hsl(200, 7%, 8%);
|
||||||
|
--fg: #98a3ad;
|
||||||
|
|
||||||
|
--sidebar-bg: #292c2f;
|
||||||
|
--sidebar-fg: #a1adb8;
|
||||||
|
--sidebar-non-existant: #505254;
|
||||||
|
--sidebar-active: #3473ad;
|
||||||
|
--sidebar-spacer: #393939;
|
||||||
|
|
||||||
|
--scrollbar: var(--sidebar-fg);
|
||||||
|
|
||||||
|
--icons: #43484d;
|
||||||
|
--icons-hover: #b3c0cc;
|
||||||
|
|
||||||
|
--links: #2b79a2;
|
||||||
|
|
||||||
|
--inline-code-color: #c5c8c6;
|
||||||
|
|
||||||
|
--theme-popup-bg: #141617;
|
||||||
|
--theme-popup-border: #43484d;
|
||||||
|
--theme-hover: #1f2124;
|
||||||
|
|
||||||
|
--quote-bg: hsl(234, 21%, 18%);
|
||||||
|
--quote-border: hsl(234, 21%, 23%);
|
||||||
|
|
||||||
|
--warning-border: #ff8e00;
|
||||||
|
|
||||||
|
--table-border-color: hsl(200, 7%, 13%);
|
||||||
|
--table-header-bg: hsl(200, 7%, 28%);
|
||||||
|
--table-alternate-bg: hsl(200, 7%, 11%);
|
||||||
|
|
||||||
|
--searchbar-border-color: #aaa;
|
||||||
|
--searchbar-bg: #b7b7b7;
|
||||||
|
--searchbar-fg: #000;
|
||||||
|
--searchbar-shadow-color: #aaa;
|
||||||
|
--searchresults-header-fg: #666;
|
||||||
|
--searchresults-border-color: #98a3ad;
|
||||||
|
--searchresults-li-bg: #2b2b2f;
|
||||||
|
--search-mark-bg: #355c7d;
|
||||||
|
|
||||||
|
--color-scheme: dark;
|
||||||
|
|
||||||
|
/* Same as `--icons` */
|
||||||
|
--copy-button-filter: invert(26%) sepia(8%) saturate(575%) hue-rotate(169deg) brightness(87%) contrast(82%);
|
||||||
|
/* Same as `--sidebar-active` */
|
||||||
|
--copy-button-filter-hover: invert(36%) sepia(70%) saturate(503%) hue-rotate(167deg) brightness(98%) contrast(89%);
|
||||||
|
}
|
||||||
|
}
|
||||||
259
zh/ecosystem/app_bazaar.html
Normal file
@@ -0,0 +1,259 @@
|
|||||||
|
<!DOCTYPE HTML>
|
||||||
|
<html lang="en" class="light sidebar-visible" dir="ltr">
|
||||||
|
<head>
|
||||||
|
<!-- Book generated using mdBook -->
|
||||||
|
<meta charset="UTF-8">
|
||||||
|
<title>应用集市 - 大道 (Dao OS) 文档</title>
|
||||||
|
|
||||||
|
|
||||||
|
<!-- Custom HTML head -->
|
||||||
|
|
||||||
|
<meta name="description" content="大道(Dao OS)官方文档,你的赛博生命操作系统。">
|
||||||
|
<meta name="viewport" content="width=device-width, initial-scale=1">
|
||||||
|
<meta name="theme-color" content="#ffffff">
|
||||||
|
|
||||||
|
<link rel="icon" href="../favicon.svg">
|
||||||
|
<link rel="shortcut icon" href="../favicon.png">
|
||||||
|
<link rel="stylesheet" href="../css/variables.css">
|
||||||
|
<link rel="stylesheet" href="../css/general.css">
|
||||||
|
<link rel="stylesheet" href="../css/chrome.css">
|
||||||
|
<link rel="stylesheet" href="../css/print.css" media="print">
|
||||||
|
|
||||||
|
<!-- Fonts -->
|
||||||
|
<link rel="stylesheet" href="../FontAwesome/css/font-awesome.css">
|
||||||
|
<link rel="stylesheet" href="../fonts/fonts.css">
|
||||||
|
|
||||||
|
<!-- Highlight.js Stylesheets -->
|
||||||
|
<link rel="stylesheet" id="highlight-css" href="../highlight.css">
|
||||||
|
<link rel="stylesheet" id="tomorrow-night-css" href="../tomorrow-night.css">
|
||||||
|
<link rel="stylesheet" id="ayu-highlight-css" href="../ayu-highlight.css">
|
||||||
|
|
||||||
|
<!-- Custom theme stylesheets -->
|
||||||
|
|
||||||
|
|
||||||
|
<!-- Provide site root and default themes to javascript -->
|
||||||
|
<script>
|
||||||
|
const path_to_root = "../";
|
||||||
|
const default_light_theme = "light";
|
||||||
|
const default_dark_theme = "navy";
|
||||||
|
</script>
|
||||||
|
<!-- Start loading toc.js asap -->
|
||||||
|
<script src="../toc.js"></script>
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
<div id="mdbook-help-container">
|
||||||
|
<div id="mdbook-help-popup">
|
||||||
|
<h2 class="mdbook-help-title">Keyboard shortcuts</h2>
|
||||||
|
<div>
|
||||||
|
<p>Press <kbd>←</kbd> or <kbd>→</kbd> to navigate between chapters</p>
|
||||||
|
<p>Press <kbd>S</kbd> or <kbd>/</kbd> to search in the book</p>
|
||||||
|
<p>Press <kbd>?</kbd> to show this help</p>
|
||||||
|
<p>Press <kbd>Esc</kbd> to hide this help</p>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div id="body-container">
|
||||||
|
<!-- Work around some values being stored in localStorage wrapped in quotes -->
|
||||||
|
<script>
|
||||||
|
try {
|
||||||
|
let theme = localStorage.getItem('mdbook-theme');
|
||||||
|
let sidebar = localStorage.getItem('mdbook-sidebar');
|
||||||
|
|
||||||
|
if (theme.startsWith('"') && theme.endsWith('"')) {
|
||||||
|
localStorage.setItem('mdbook-theme', theme.slice(1, theme.length - 1));
|
||||||
|
}
|
||||||
|
|
||||||
|
if (sidebar.startsWith('"') && sidebar.endsWith('"')) {
|
||||||
|
localStorage.setItem('mdbook-sidebar', sidebar.slice(1, sidebar.length - 1));
|
||||||
|
}
|
||||||
|
} catch (e) { }
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<!-- Set the theme before any content is loaded, prevents flash -->
|
||||||
|
<script>
|
||||||
|
const default_theme = window.matchMedia("(prefers-color-scheme: dark)").matches ? default_dark_theme : default_light_theme;
|
||||||
|
let theme;
|
||||||
|
try { theme = localStorage.getItem('mdbook-theme'); } catch(e) { }
|
||||||
|
if (theme === null || theme === undefined) { theme = default_theme; }
|
||||||
|
const html = document.documentElement;
|
||||||
|
html.classList.remove('light')
|
||||||
|
html.classList.add(theme);
|
||||||
|
html.classList.add("js");
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<input type="checkbox" id="sidebar-toggle-anchor" class="hidden">
|
||||||
|
|
||||||
|
<!-- Hide / unhide sidebar before it is displayed -->
|
||||||
|
<script>
|
||||||
|
let sidebar = null;
|
||||||
|
const sidebar_toggle = document.getElementById("sidebar-toggle-anchor");
|
||||||
|
if (document.body.clientWidth >= 1080) {
|
||||||
|
try { sidebar = localStorage.getItem('mdbook-sidebar'); } catch(e) { }
|
||||||
|
sidebar = sidebar || 'visible';
|
||||||
|
} else {
|
||||||
|
sidebar = 'hidden';
|
||||||
|
}
|
||||||
|
sidebar_toggle.checked = sidebar === 'visible';
|
||||||
|
html.classList.remove('sidebar-visible');
|
||||||
|
html.classList.add("sidebar-" + sidebar);
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<nav id="sidebar" class="sidebar" aria-label="Table of contents">
|
||||||
|
<!-- populated by js -->
|
||||||
|
<mdbook-sidebar-scrollbox class="sidebar-scrollbox"></mdbook-sidebar-scrollbox>
|
||||||
|
<noscript>
|
||||||
|
<iframe class="sidebar-iframe-outer" src="../toc.html"></iframe>
|
||||||
|
</noscript>
|
||||||
|
<div id="sidebar-resize-handle" class="sidebar-resize-handle">
|
||||||
|
<div class="sidebar-resize-indicator"></div>
|
||||||
|
</div>
|
||||||
|
</nav>
|
||||||
|
|
||||||
|
<div id="page-wrapper" class="page-wrapper">
|
||||||
|
|
||||||
|
<div class="page">
|
||||||
|
<div id="menu-bar-hover-placeholder"></div>
|
||||||
|
<div id="menu-bar" class="menu-bar sticky">
|
||||||
|
<div class="left-buttons">
|
||||||
|
<label id="sidebar-toggle" class="icon-button" for="sidebar-toggle-anchor" title="Toggle Table of Contents" aria-label="Toggle Table of Contents" aria-controls="sidebar">
|
||||||
|
<i class="fa fa-bars"></i>
|
||||||
|
</label>
|
||||||
|
<button id="theme-toggle" class="icon-button" type="button" title="Change theme" aria-label="Change theme" aria-haspopup="true" aria-expanded="false" aria-controls="theme-list">
|
||||||
|
<i class="fa fa-paint-brush"></i>
|
||||||
|
</button>
|
||||||
|
<ul id="theme-list" class="theme-popup" aria-label="Themes" role="menu">
|
||||||
|
<li role="none"><button role="menuitem" class="theme" id="default_theme">Auto</button></li>
|
||||||
|
<li role="none"><button role="menuitem" class="theme" id="light">Light</button></li>
|
||||||
|
<li role="none"><button role="menuitem" class="theme" id="rust">Rust</button></li>
|
||||||
|
<li role="none"><button role="menuitem" class="theme" id="coal">Coal</button></li>
|
||||||
|
<li role="none"><button role="menuitem" class="theme" id="navy">Navy</button></li>
|
||||||
|
<li role="none"><button role="menuitem" class="theme" id="ayu">Ayu</button></li>
|
||||||
|
</ul>
|
||||||
|
<button id="search-toggle" class="icon-button" type="button" title="Search (`/`)" aria-label="Toggle Searchbar" aria-expanded="false" aria-keyshortcuts="/ s" aria-controls="searchbar">
|
||||||
|
<i class="fa fa-search"></i>
|
||||||
|
</button>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<h1 class="menu-title">大道 (Dao OS) 文档</h1>
|
||||||
|
|
||||||
|
<div class="right-buttons">
|
||||||
|
<a href="../print.html" title="Print this book" aria-label="Print this book">
|
||||||
|
<i id="print-button" class="fa fa-print"></i>
|
||||||
|
</a>
|
||||||
|
<a href="https://nest.doylee.cn/Dao-OS/dao-os-docs" title="Git repository" aria-label="Git repository">
|
||||||
|
<i id="git-repository-button" class="fa fa-github"></i>
|
||||||
|
</a>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div id="search-wrapper" class="hidden">
|
||||||
|
<form id="searchbar-outer" class="searchbar-outer">
|
||||||
|
<input type="search" id="searchbar" name="searchbar" placeholder="Search this book ..." aria-controls="searchresults-outer" aria-describedby="searchresults-header">
|
||||||
|
</form>
|
||||||
|
<div id="searchresults-outer" class="searchresults-outer hidden">
|
||||||
|
<div id="searchresults-header" class="searchresults-header"></div>
|
||||||
|
<ul id="searchresults">
|
||||||
|
</ul>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<!-- Apply ARIA attributes after the sidebar and the sidebar toggle button are added to the DOM -->
|
||||||
|
<script>
|
||||||
|
document.getElementById('sidebar-toggle').setAttribute('aria-expanded', sidebar === 'visible');
|
||||||
|
document.getElementById('sidebar').setAttribute('aria-hidden', sidebar !== 'visible');
|
||||||
|
Array.from(document.querySelectorAll('#sidebar a')).forEach(function(link) {
|
||||||
|
link.setAttribute('tabIndex', sidebar === 'visible' ? 0 : -1);
|
||||||
|
});
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<div id="content" class="content">
|
||||||
|
<main>
|
||||||
|
<h1 id="应用集市"><a class="header" href="#应用集市">应用集市</a></h1>
|
||||||
|
<p>大道 (Dao OS) 没有一个传统的、中心化的“应用商店”。“商店”意味着一个单一的所有者,他扮演着守门人的角色,审批、拒绝并对应用征税。这与我们的核心哲学背道而驰。</p>
|
||||||
|
<p>取而代之的是,我们构建了一套开放协议,来创造一个去中心化的**“应用集市 (Application Bazaar)”**——这是一个充满活力的、开放的、坚韧的思想与工具市场,在这里,用户拥有主权,开发者拥有自由。</p>
|
||||||
|
<p>这个集市建立在四大支柱之上:发现、信任、分发和商业化。</p>
|
||||||
|
<h2 id="1-发现-discovery联邦式策展"><a class="header" href="#1-发现-discovery联邦式策展">1. 发现 (Discovery):联邦式策展</a></h2>
|
||||||
|
<p>在一个没有中央索引的世界里,用户如何找到应用?答案是:通过一个由受信任者组成的策展网络。</p>
|
||||||
|
<ul>
|
||||||
|
<li><strong>开发者发布</strong>: 开发者无需“提交”他的应用以供审批。他只需将其应用的**“清单 (Manifest)”**(一个包含所有元数据的 <code>manifest.toml</code> 文件)发布到一个像 <strong>IPFS</strong> 这样的P2P存储网络上。然后,他可以在公共频道上“广播”这个清单的地址。</li>
|
||||||
|
<li><strong>策展人的角色</strong>: 任何人——一个科技媒体、一个受信任的开发者社区、一个KOL,或者“大道基金会”自己——都可以运行一个“策展”服务。这些策展人抓取网络上的新清单,并根据自己的标准,创建主题性的**“策展列表”**(例如“十大生产力应用”、“最优美的UI设计”)。</li>
|
||||||
|
<li><strong>用户体验</strong>: 在用户的<code>器化身</code>中,他可以像订阅RSS一样,订阅多个他信任的“策展列表”。他的“集市”或“发现”标签页,就变成了这些信任源的个性化聚合视图。</li>
|
||||||
|
</ul>
|
||||||
|
<p>这个模型用一个丰富的、多维度的、用户策划的发现体验,取代了单一的、有偏见的“应用商店”榜单。</p>
|
||||||
|
<h2 id="2-信任与安全可验证的信誉"><a class="header" href="#2-信任与安全可验证的信誉">2. 信任与安全:可验证的信誉</a></h2>
|
||||||
|
<p>用户如何信任一个来自随意列表的应用?他们不必盲目信任。整个集市都直接构建于我们的**“社区信誉与自动化验证”体系**之上。</p>
|
||||||
|
<p>每一个应用列表,无论来自哪个策展人,都必须展示其**“信任仪表盘”**,提供透明、多维度的信号:</p>
|
||||||
|
<ol>
|
||||||
|
<li><strong>自动化验证</strong>: 来自 <code>dao-verify</code> 工具的、不可篡改的、关于安全漏洞和API合规性的“体检报告”。</li>
|
||||||
|
<li><strong>社区背书</strong>: 一个清晰的列表,显示了哪些有信誉的DID,为这个应用进行了密码学“签名背书”。</li>
|
||||||
|
<li><strong>策展人信誉</strong>: 推荐这个应用的策展人自身的信誉,也是一个信任信号。</li>
|
||||||
|
</ol>
|
||||||
|
<p>最终是否“注册”一个应用的决定权,永远掌握在用户手中,并有这些透明、可验证的数据作为依据。</p>
|
||||||
|
<h2 id="3-分发-distribution抗审查与直接分发"><a class="header" href="#3-分发-distribution抗审查与直接分发">3. 分发 (Distribution):抗审查与直接分发</a></h2>
|
||||||
|
<p>当用户决定安装一个应用时,这个过程是直接且去中心化的。</p>
|
||||||
|
<ul>
|
||||||
|
<li>应用的清单中,包含了其软件包(<code>.wasm</code>服务模块和Web UI包)在 <strong>IPFS</strong> 上的<strong>内容哈希(CID)</strong>。</li>
|
||||||
|
<li>用户的<code>元单元</code>使用这个哈希,直接从P2P网络获取文件。</li>
|
||||||
|
<li>这确保了没有任何中心服务器可以阻止一个应用的分发。只要数据存在于P2P网络的某个角落,它就是可访问的。</li>
|
||||||
|
</ul>
|
||||||
|
<h2 id="4-商业化-monetization主权的与点对点的"><a class="header" href="#4-商业化-monetization主权的与点对点的">4. 商业化 (Monetization):主权的与点对点的</a></h2>
|
||||||
|
<p>我们消除了30%的“平台税”。我们的价值交换模型是直接从用户到开发者。</p>
|
||||||
|
<ul>
|
||||||
|
<li>应用的清单可以声明其商业模式(如一次性购买价格、订阅链接)。</li>
|
||||||
|
<li>当用户发起购买时,<code>元单元</code>会触发我们的**“价值交换服务接口”**。</li>
|
||||||
|
<li>这将促成一次<strong>点对点(P2P)交易</strong>,使用用户选择的外部支付协议,将价值直接从用户的钱包,发送到开发者在清单中指定的地址。</li>
|
||||||
|
</ul>
|
||||||
|
<p>“大道”在此过程中,扮演的是交易的促成者和公证人,而非抽成的中间商。</p>
|
||||||
|
|
||||||
|
</main>
|
||||||
|
|
||||||
|
<nav class="nav-wrapper" aria-label="Page navigation">
|
||||||
|
<!-- Mobile navigation buttons -->
|
||||||
|
<a rel="prev" href="../specifications/tech_overview.html" class="mobile-nav-chapters previous" title="Previous chapter" aria-label="Previous chapter" aria-keyshortcuts="Left">
|
||||||
|
<i class="fa fa-angle-left"></i>
|
||||||
|
</a>
|
||||||
|
|
||||||
|
<a rel="next prefetch" href="../project/roadmap.html" class="mobile-nav-chapters next" title="Next chapter" aria-label="Next chapter" aria-keyshortcuts="Right">
|
||||||
|
<i class="fa fa-angle-right"></i>
|
||||||
|
</a>
|
||||||
|
|
||||||
|
<div style="clear: both"></div>
|
||||||
|
</nav>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<nav class="nav-wide-wrapper" aria-label="Page navigation">
|
||||||
|
<a rel="prev" href="../specifications/tech_overview.html" class="nav-chapters previous" title="Previous chapter" aria-label="Previous chapter" aria-keyshortcuts="Left">
|
||||||
|
<i class="fa fa-angle-left"></i>
|
||||||
|
</a>
|
||||||
|
|
||||||
|
<a rel="next prefetch" href="../project/roadmap.html" class="nav-chapters next" title="Next chapter" aria-label="Next chapter" aria-keyshortcuts="Right">
|
||||||
|
<i class="fa fa-angle-right"></i>
|
||||||
|
</a>
|
||||||
|
</nav>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<script>
|
||||||
|
window.playground_copyable = true;
|
||||||
|
</script>
|
||||||
|
|
||||||
|
|
||||||
|
<script src="../elasticlunr.min.js"></script>
|
||||||
|
<script src="../mark.min.js"></script>
|
||||||
|
<script src="../searcher.js"></script>
|
||||||
|
|
||||||
|
<script src="../clipboard.min.js"></script>
|
||||||
|
<script src="../highlight.js"></script>
|
||||||
|
<script src="../book.js"></script>
|
||||||
|
|
||||||
|
<!-- Custom JS scripts -->
|
||||||
|
|
||||||
|
|
||||||
|
</div>
|
||||||
|
</body>
|
||||||
|
</html>
|
||||||
10
zh/elasticlunr.min.js
vendored
Normal file
BIN
zh/favicon.png
Normal file
|
After Width: | Height: | Size: 5.5 KiB |
22
zh/favicon.svg
Normal file
@@ -0,0 +1,22 @@
|
|||||||
|
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 199.7 184.2">
|
||||||
|
<style>
|
||||||
|
@media (prefers-color-scheme: dark) {
|
||||||
|
svg { fill: white; }
|
||||||
|
}
|
||||||
|
</style>
|
||||||
|
<path d="M189.5,36.8c0.2,2.8,0,5.1-0.6,6.8L153,162c-0.6,2.1-2,3.7-4.2,5c-2.2,1.2-4.4,1.9-6.7,1.9H31.4c-9.6,0-15.3-2.8-17.3-8.4
|
||||||
|
c-0.8-2.2-0.8-3.9,0.1-5.2c0.9-1.2,2.4-1.8,4.6-1.8H123c7.4,0,12.6-1.4,15.4-4.1s5.7-8.9,8.6-18.4l32.9-108.6
|
||||||
|
c1.8-5.9,1-11.1-2.2-15.6S169.9,0,164,0H72.7c-1,0-3.1,0.4-6.1,1.1l0.1-0.4C64.5,0.2,62.6,0,61,0.1s-3,0.5-4.3,1.4
|
||||||
|
c-1.3,0.9-2.4,1.8-3.2,2.8S52,6.5,51.2,8.1c-0.8,1.6-1.4,3-1.9,4.3s-1.1,2.7-1.8,4.2c-0.7,1.5-1.3,2.7-2,3.7c-0.5,0.6-1.2,1.5-2,2.5
|
||||||
|
s-1.6,2-2.2,2.8s-0.9,1.5-1.1,2.2c-0.2,0.7-0.1,1.8,0.2,3.2c0.3,1.4,0.4,2.4,0.4,3.1c-0.3,3-1.4,6.9-3.3,11.6
|
||||||
|
c-1.9,4.7-3.6,8.1-5.1,10.1c-0.3,0.4-1.2,1.3-2.6,2.7c-1.4,1.4-2.3,2.6-2.6,3.7c-0.3,0.4-0.3,1.5-0.1,3.4c0.3,1.8,0.4,3.1,0.3,3.8
|
||||||
|
c-0.3,2.7-1.3,6.3-3,10.8c-1.7,4.5-3.4,8.2-5,11c-0.2,0.5-0.9,1.4-2,2.8c-1.1,1.4-1.8,2.5-2,3.4c-0.2,0.6-0.1,1.8,0.1,3.4
|
||||||
|
c0.2,1.6,0.2,2.8-0.1,3.6c-0.6,3-1.8,6.7-3.6,11c-1.8,4.3-3.6,7.9-5.4,11c-0.5,0.8-1.1,1.7-2,2.8c-0.8,1.1-1.5,2-2,2.8
|
||||||
|
s-0.8,1.6-1,2.5c-0.1,0.5,0,1.3,0.4,2.3c0.3,1.1,0.4,1.9,0.4,2.6c-0.1,1.1-0.2,2.6-0.5,4.4c-0.2,1.8-0.4,2.9-0.4,3.2
|
||||||
|
c-1.8,4.8-1.7,9.9,0.2,15.2c2.2,6.2,6.2,11.5,11.9,15.8c5.7,4.3,11.7,6.4,17.8,6.4h110.7c5.2,0,10.1-1.7,14.7-5.2s7.7-7.8,9.2-12.9
|
||||||
|
l33-108.6c1.8-5.8,1-10.9-2.2-15.5C194.9,39.7,192.6,38,189.5,36.8z M59.6,122.8L73.8,80c0,0,7,0,10.8,0s28.8-1.7,25.4,17.5
|
||||||
|
c-3.4,19.2-18.8,25.2-36.8,25.4S59.6,122.8,59.6,122.8z M78.6,116.8c4.7-0.1,18.9-2.9,22.1-17.1S89.2,86.3,89.2,86.3l-8.9,0
|
||||||
|
l-10.2,30.5C70.2,116.9,74,116.9,78.6,116.8z M75.3,68.7L89,26.2h9.8l0.8,34l23.6-34h9.9l-13.6,42.5h-7.1l12.5-35.4l-24.5,35.4h-6.8
|
||||||
|
l-0.8-35L82,68.7H75.3z"/>
|
||||||
|
</svg>
|
||||||
|
<!-- Original image Copyright Dave Gandy — CC BY 4.0 License -->
|
||||||
|
After Width: | Height: | Size: 1.8 KiB |
202
zh/fonts/OPEN-SANS-LICENSE.txt
Normal file
@@ -0,0 +1,202 @@
|
|||||||
|
|
||||||
|
Apache License
|
||||||
|
Version 2.0, January 2004
|
||||||
|
http://www.apache.org/licenses/
|
||||||
|
|
||||||
|
TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
|
||||||
|
|
||||||
|
1. Definitions.
|
||||||
|
|
||||||
|
"License" shall mean the terms and conditions for use, reproduction,
|
||||||
|
and distribution as defined by Sections 1 through 9 of this document.
|
||||||
|
|
||||||
|
"Licensor" shall mean the copyright owner or entity authorized by
|
||||||
|
the copyright owner that is granting the License.
|
||||||
|
|
||||||
|
"Legal Entity" shall mean the union of the acting entity and all
|
||||||
|
other entities that control, are controlled by, or are under common
|
||||||
|
control with that entity. For the purposes of this definition,
|
||||||
|
"control" means (i) the power, direct or indirect, to cause the
|
||||||
|
direction or management of such entity, whether by contract or
|
||||||
|
otherwise, or (ii) ownership of fifty percent (50%) or more of the
|
||||||
|
outstanding shares, or (iii) beneficial ownership of such entity.
|
||||||
|
|
||||||
|
"You" (or "Your") shall mean an individual or Legal Entity
|
||||||
|
exercising permissions granted by this License.
|
||||||
|
|
||||||
|
"Source" form shall mean the preferred form for making modifications,
|
||||||
|
including but not limited to software source code, documentation
|
||||||
|
source, and configuration files.
|
||||||
|
|
||||||
|
"Object" form shall mean any form resulting from mechanical
|
||||||
|
transformation or translation of a Source form, including but
|
||||||
|
not limited to compiled object code, generated documentation,
|
||||||
|
and conversions to other media types.
|
||||||
|
|
||||||
|
"Work" shall mean the work of authorship, whether in Source or
|
||||||
|
Object form, made available under the License, as indicated by a
|
||||||
|
copyright notice that is included in or attached to the work
|
||||||
|
(an example is provided in the Appendix below).
|
||||||
|
|
||||||
|
"Derivative Works" shall mean any work, whether in Source or Object
|
||||||
|
form, that is based on (or derived from) the Work and for which the
|
||||||
|
editorial revisions, annotations, elaborations, or other modifications
|
||||||
|
represent, as a whole, an original work of authorship. For the purposes
|
||||||
|
of this License, Derivative Works shall not include works that remain
|
||||||
|
separable from, or merely link (or bind by name) to the interfaces of,
|
||||||
|
the Work and Derivative Works thereof.
|
||||||
|
|
||||||
|
"Contribution" shall mean any work of authorship, including
|
||||||
|
the original version of the Work and any modifications or additions
|
||||||
|
to that Work or Derivative Works thereof, that is intentionally
|
||||||
|
submitted to Licensor for inclusion in the Work by the copyright owner
|
||||||
|
or by an individual or Legal Entity authorized to submit on behalf of
|
||||||
|
the copyright owner. For the purposes of this definition, "submitted"
|
||||||
|
means any form of electronic, verbal, or written communication sent
|
||||||
|
to the Licensor or its representatives, including but not limited to
|
||||||
|
communication on electronic mailing lists, source code control systems,
|
||||||
|
and issue tracking systems that are managed by, or on behalf of, the
|
||||||
|
Licensor for the purpose of discussing and improving the Work, but
|
||||||
|
excluding communication that is conspicuously marked or otherwise
|
||||||
|
designated in writing by the copyright owner as "Not a Contribution."
|
||||||
|
|
||||||
|
"Contributor" shall mean Licensor and any individual or Legal Entity
|
||||||
|
on behalf of whom a Contribution has been received by Licensor and
|
||||||
|
subsequently incorporated within the Work.
|
||||||
|
|
||||||
|
2. Grant of Copyright License. Subject to the terms and conditions of
|
||||||
|
this License, each Contributor hereby grants to You a perpetual,
|
||||||
|
worldwide, non-exclusive, no-charge, royalty-free, irrevocable
|
||||||
|
copyright license to reproduce, prepare Derivative Works of,
|
||||||
|
publicly display, publicly perform, sublicense, and distribute the
|
||||||
|
Work and such Derivative Works in Source or Object form.
|
||||||
|
|
||||||
|
3. Grant of Patent License. Subject to the terms and conditions of
|
||||||
|
this License, each Contributor hereby grants to You a perpetual,
|
||||||
|
worldwide, non-exclusive, no-charge, royalty-free, irrevocable
|
||||||
|
(except as stated in this section) patent license to make, have made,
|
||||||
|
use, offer to sell, sell, import, and otherwise transfer the Work,
|
||||||
|
where such license applies only to those patent claims licensable
|
||||||
|
by such Contributor that are necessarily infringed by their
|
||||||
|
Contribution(s) alone or by combination of their Contribution(s)
|
||||||
|
with the Work to which such Contribution(s) was submitted. If You
|
||||||
|
institute patent litigation against any entity (including a
|
||||||
|
cross-claim or counterclaim in a lawsuit) alleging that the Work
|
||||||
|
or a Contribution incorporated within the Work constitutes direct
|
||||||
|
or contributory patent infringement, then any patent licenses
|
||||||
|
granted to You under this License for that Work shall terminate
|
||||||
|
as of the date such litigation is filed.
|
||||||
|
|
||||||
|
4. Redistribution. You may reproduce and distribute copies of the
|
||||||
|
Work or Derivative Works thereof in any medium, with or without
|
||||||
|
modifications, and in Source or Object form, provided that You
|
||||||
|
meet the following conditions:
|
||||||
|
|
||||||
|
(a) You must give any other recipients of the Work or
|
||||||
|
Derivative Works a copy of this License; and
|
||||||
|
|
||||||
|
(b) You must cause any modified files to carry prominent notices
|
||||||
|
stating that You changed the files; and
|
||||||
|
|
||||||
|
(c) You must retain, in the Source form of any Derivative Works
|
||||||
|
that You distribute, all copyright, patent, trademark, and
|
||||||
|
attribution notices from the Source form of the Work,
|
||||||
|
excluding those notices that do not pertain to any part of
|
||||||
|
the Derivative Works; and
|
||||||
|
|
||||||
|
(d) If the Work includes a "NOTICE" text file as part of its
|
||||||
|
distribution, then any Derivative Works that You distribute must
|
||||||
|
include a readable copy of the attribution notices contained
|
||||||
|
within such NOTICE file, excluding those notices that do not
|
||||||
|
pertain to any part of the Derivative Works, in at least one
|
||||||
|
of the following places: within a NOTICE text file distributed
|
||||||
|
as part of the Derivative Works; within the Source form or
|
||||||
|
documentation, if provided along with the Derivative Works; or,
|
||||||
|
within a display generated by the Derivative Works, if and
|
||||||
|
wherever such third-party notices normally appear. The contents
|
||||||
|
of the NOTICE file are for informational purposes only and
|
||||||
|
do not modify the License. You may add Your own attribution
|
||||||
|
notices within Derivative Works that You distribute, alongside
|
||||||
|
or as an addendum to the NOTICE text from the Work, provided
|
||||||
|
that such additional attribution notices cannot be construed
|
||||||
|
as modifying the License.
|
||||||
|
|
||||||
|
You may add Your own copyright statement to Your modifications and
|
||||||
|
may provide additional or different license terms and conditions
|
||||||
|
for use, reproduction, or distribution of Your modifications, or
|
||||||
|
for any such Derivative Works as a whole, provided Your use,
|
||||||
|
reproduction, and distribution of the Work otherwise complies with
|
||||||
|
the conditions stated in this License.
|
||||||
|
|
||||||
|
5. Submission of Contributions. Unless You explicitly state otherwise,
|
||||||
|
any Contribution intentionally submitted for inclusion in the Work
|
||||||
|
by You to the Licensor shall be under the terms and conditions of
|
||||||
|
this License, without any additional terms or conditions.
|
||||||
|
Notwithstanding the above, nothing herein shall supersede or modify
|
||||||
|
the terms of any separate license agreement you may have executed
|
||||||
|
with Licensor regarding such Contributions.
|
||||||
|
|
||||||
|
6. Trademarks. This License does not grant permission to use the trade
|
||||||
|
names, trademarks, service marks, or product names of the Licensor,
|
||||||
|
except as required for reasonable and customary use in describing the
|
||||||
|
origin of the Work and reproducing the content of the NOTICE file.
|
||||||
|
|
||||||
|
7. Disclaimer of Warranty. Unless required by applicable law or
|
||||||
|
agreed to in writing, Licensor provides the Work (and each
|
||||||
|
Contributor provides its Contributions) on an "AS IS" BASIS,
|
||||||
|
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
|
||||||
|
implied, including, without limitation, any warranties or conditions
|
||||||
|
of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
|
||||||
|
PARTICULAR PURPOSE. You are solely responsible for determining the
|
||||||
|
appropriateness of using or redistributing the Work and assume any
|
||||||
|
risks associated with Your exercise of permissions under this License.
|
||||||
|
|
||||||
|
8. Limitation of Liability. In no event and under no legal theory,
|
||||||
|
whether in tort (including negligence), contract, or otherwise,
|
||||||
|
unless required by applicable law (such as deliberate and grossly
|
||||||
|
negligent acts) or agreed to in writing, shall any Contributor be
|
||||||
|
liable to You for damages, including any direct, indirect, special,
|
||||||
|
incidental, or consequential damages of any character arising as a
|
||||||
|
result of this License or out of the use or inability to use the
|
||||||
|
Work (including but not limited to damages for loss of goodwill,
|
||||||
|
work stoppage, computer failure or malfunction, or any and all
|
||||||
|
other commercial damages or losses), even if such Contributor
|
||||||
|
has been advised of the possibility of such damages.
|
||||||
|
|
||||||
|
9. Accepting Warranty or Additional Liability. While redistributing
|
||||||
|
the Work or Derivative Works thereof, You may choose to offer,
|
||||||
|
and charge a fee for, acceptance of support, warranty, indemnity,
|
||||||
|
or other liability obligations and/or rights consistent with this
|
||||||
|
License. However, in accepting such obligations, You may act only
|
||||||
|
on Your own behalf and on Your sole responsibility, not on behalf
|
||||||
|
of any other Contributor, and only if You agree to indemnify,
|
||||||
|
defend, and hold each Contributor harmless for any liability
|
||||||
|
incurred by, or claims asserted against, such Contributor by reason
|
||||||
|
of your accepting any such warranty or additional liability.
|
||||||
|
|
||||||
|
END OF TERMS AND CONDITIONS
|
||||||
|
|
||||||
|
APPENDIX: How to apply the Apache License to your work.
|
||||||
|
|
||||||
|
To apply the Apache License to your work, attach the following
|
||||||
|
boilerplate notice, with the fields enclosed by brackets "[]"
|
||||||
|
replaced with your own identifying information. (Don't include
|
||||||
|
the brackets!) The text should be enclosed in the appropriate
|
||||||
|
comment syntax for the file format. We also recommend that a
|
||||||
|
file or class name and description of purpose be included on the
|
||||||
|
same "printed page" as the copyright notice for easier
|
||||||
|
identification within third-party archives.
|
||||||
|
|
||||||
|
Copyright [yyyy] [name of copyright owner]
|
||||||
|
|
||||||
|
Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
you may not use this file except in compliance with the License.
|
||||||
|
You may obtain a copy of the License at
|
||||||
|
|
||||||
|
http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
|
||||||
|
Unless required by applicable law or agreed to in writing, software
|
||||||
|
distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
See the License for the specific language governing permissions and
|
||||||
|
limitations under the License.
|
||||||
93
zh/fonts/SOURCE-CODE-PRO-LICENSE.txt
Normal file
@@ -0,0 +1,93 @@
|
|||||||
|
Copyright 2010, 2012 Adobe Systems Incorporated (http://www.adobe.com/), with Reserved Font Name 'Source'. All Rights Reserved. Source is a trademark of Adobe Systems Incorporated in the United States and/or other countries.
|
||||||
|
|
||||||
|
This Font Software is licensed under the SIL Open Font License, Version 1.1.
|
||||||
|
This license is copied below, and is also available with a FAQ at:
|
||||||
|
http://scripts.sil.org/OFL
|
||||||
|
|
||||||
|
|
||||||
|
-----------------------------------------------------------
|
||||||
|
SIL OPEN FONT LICENSE Version 1.1 - 26 February 2007
|
||||||
|
-----------------------------------------------------------
|
||||||
|
|
||||||
|
PREAMBLE
|
||||||
|
The goals of the Open Font License (OFL) are to stimulate worldwide
|
||||||
|
development of collaborative font projects, to support the font creation
|
||||||
|
efforts of academic and linguistic communities, and to provide a free and
|
||||||
|
open framework in which fonts may be shared and improved in partnership
|
||||||
|
with others.
|
||||||
|
|
||||||
|
The OFL allows the licensed fonts to be used, studied, modified and
|
||||||
|
redistributed freely as long as they are not sold by themselves. The
|
||||||
|
fonts, including any derivative works, can be bundled, embedded,
|
||||||
|
redistributed and/or sold with any software provided that any reserved
|
||||||
|
names are not used by derivative works. The fonts and derivatives,
|
||||||
|
however, cannot be released under any other type of license. The
|
||||||
|
requirement for fonts to remain under this license does not apply
|
||||||
|
to any document created using the fonts or their derivatives.
|
||||||
|
|
||||||
|
DEFINITIONS
|
||||||
|
"Font Software" refers to the set of files released by the Copyright
|
||||||
|
Holder(s) under this license and clearly marked as such. This may
|
||||||
|
include source files, build scripts and documentation.
|
||||||
|
|
||||||
|
"Reserved Font Name" refers to any names specified as such after the
|
||||||
|
copyright statement(s).
|
||||||
|
|
||||||
|
"Original Version" refers to the collection of Font Software components as
|
||||||
|
distributed by the Copyright Holder(s).
|
||||||
|
|
||||||
|
"Modified Version" refers to any derivative made by adding to, deleting,
|
||||||
|
or substituting -- in part or in whole -- any of the components of the
|
||||||
|
Original Version, by changing formats or by porting the Font Software to a
|
||||||
|
new environment.
|
||||||
|
|
||||||
|
"Author" refers to any designer, engineer, programmer, technical
|
||||||
|
writer or other person who contributed to the Font Software.
|
||||||
|
|
||||||
|
PERMISSION & CONDITIONS
|
||||||
|
Permission is hereby granted, free of charge, to any person obtaining
|
||||||
|
a copy of the Font Software, to use, study, copy, merge, embed, modify,
|
||||||
|
redistribute, and sell modified and unmodified copies of the Font
|
||||||
|
Software, subject to the following conditions:
|
||||||
|
|
||||||
|
1) Neither the Font Software nor any of its individual components,
|
||||||
|
in Original or Modified Versions, may be sold by itself.
|
||||||
|
|
||||||
|
2) Original or Modified Versions of the Font Software may be bundled,
|
||||||
|
redistributed and/or sold with any software, provided that each copy
|
||||||
|
contains the above copyright notice and this license. These can be
|
||||||
|
included either as stand-alone text files, human-readable headers or
|
||||||
|
in the appropriate machine-readable metadata fields within text or
|
||||||
|
binary files as long as those fields can be easily viewed by the user.
|
||||||
|
|
||||||
|
3) No Modified Version of the Font Software may use the Reserved Font
|
||||||
|
Name(s) unless explicit written permission is granted by the corresponding
|
||||||
|
Copyright Holder. This restriction only applies to the primary font name as
|
||||||
|
presented to the users.
|
||||||
|
|
||||||
|
4) The name(s) of the Copyright Holder(s) or the Author(s) of the Font
|
||||||
|
Software shall not be used to promote, endorse or advertise any
|
||||||
|
Modified Version, except to acknowledge the contribution(s) of the
|
||||||
|
Copyright Holder(s) and the Author(s) or with their explicit written
|
||||||
|
permission.
|
||||||
|
|
||||||
|
5) The Font Software, modified or unmodified, in part or in whole,
|
||||||
|
must be distributed entirely under this license, and must not be
|
||||||
|
distributed under any other license. The requirement for fonts to
|
||||||
|
remain under this license does not apply to any document created
|
||||||
|
using the Font Software.
|
||||||
|
|
||||||
|
TERMINATION
|
||||||
|
This license becomes null and void if any of the above conditions are
|
||||||
|
not met.
|
||||||
|
|
||||||
|
DISCLAIMER
|
||||||
|
THE FONT SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
||||||
|
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF
|
||||||
|
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT
|
||||||
|
OF COPYRIGHT, PATENT, TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL THE
|
||||||
|
COPYRIGHT HOLDER BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
|
||||||
|
INCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL
|
||||||
|
DAMAGES, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
|
||||||
|
FROM, OUT OF THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM
|
||||||
|
OTHER DEALINGS IN THE FONT SOFTWARE.
|
||||||
100
zh/fonts/fonts.css
Normal file
@@ -0,0 +1,100 @@
|
|||||||
|
/* Open Sans is licensed under the Apache License, Version 2.0. See http://www.apache.org/licenses/LICENSE-2.0 */
|
||||||
|
/* Source Code Pro is under the Open Font License. See https://scripts.sil.org/cms/scripts/page.php?site_id=nrsi&id=OFL */
|
||||||
|
|
||||||
|
/* open-sans-300 - latin_vietnamese_latin-ext_greek-ext_greek_cyrillic-ext_cyrillic */
|
||||||
|
@font-face {
|
||||||
|
font-family: 'Open Sans';
|
||||||
|
font-style: normal;
|
||||||
|
font-weight: 300;
|
||||||
|
src: local('Open Sans Light'), local('OpenSans-Light'),
|
||||||
|
url('../fonts/open-sans-v17-all-charsets-300.woff2') format('woff2');
|
||||||
|
}
|
||||||
|
|
||||||
|
/* open-sans-300italic - latin_vietnamese_latin-ext_greek-ext_greek_cyrillic-ext_cyrillic */
|
||||||
|
@font-face {
|
||||||
|
font-family: 'Open Sans';
|
||||||
|
font-style: italic;
|
||||||
|
font-weight: 300;
|
||||||
|
src: local('Open Sans Light Italic'), local('OpenSans-LightItalic'),
|
||||||
|
url('../fonts/open-sans-v17-all-charsets-300italic.woff2') format('woff2');
|
||||||
|
}
|
||||||
|
|
||||||
|
/* open-sans-regular - latin_vietnamese_latin-ext_greek-ext_greek_cyrillic-ext_cyrillic */
|
||||||
|
@font-face {
|
||||||
|
font-family: 'Open Sans';
|
||||||
|
font-style: normal;
|
||||||
|
font-weight: 400;
|
||||||
|
src: local('Open Sans Regular'), local('OpenSans-Regular'),
|
||||||
|
url('../fonts/open-sans-v17-all-charsets-regular.woff2') format('woff2');
|
||||||
|
}
|
||||||
|
|
||||||
|
/* open-sans-italic - latin_vietnamese_latin-ext_greek-ext_greek_cyrillic-ext_cyrillic */
|
||||||
|
@font-face {
|
||||||
|
font-family: 'Open Sans';
|
||||||
|
font-style: italic;
|
||||||
|
font-weight: 400;
|
||||||
|
src: local('Open Sans Italic'), local('OpenSans-Italic'),
|
||||||
|
url('../fonts/open-sans-v17-all-charsets-italic.woff2') format('woff2');
|
||||||
|
}
|
||||||
|
|
||||||
|
/* open-sans-600 - latin_vietnamese_latin-ext_greek-ext_greek_cyrillic-ext_cyrillic */
|
||||||
|
@font-face {
|
||||||
|
font-family: 'Open Sans';
|
||||||
|
font-style: normal;
|
||||||
|
font-weight: 600;
|
||||||
|
src: local('Open Sans SemiBold'), local('OpenSans-SemiBold'),
|
||||||
|
url('../fonts/open-sans-v17-all-charsets-600.woff2') format('woff2');
|
||||||
|
}
|
||||||
|
|
||||||
|
/* open-sans-600italic - latin_vietnamese_latin-ext_greek-ext_greek_cyrillic-ext_cyrillic */
|
||||||
|
@font-face {
|
||||||
|
font-family: 'Open Sans';
|
||||||
|
font-style: italic;
|
||||||
|
font-weight: 600;
|
||||||
|
src: local('Open Sans SemiBold Italic'), local('OpenSans-SemiBoldItalic'),
|
||||||
|
url('../fonts/open-sans-v17-all-charsets-600italic.woff2') format('woff2');
|
||||||
|
}
|
||||||
|
|
||||||
|
/* open-sans-700 - latin_vietnamese_latin-ext_greek-ext_greek_cyrillic-ext_cyrillic */
|
||||||
|
@font-face {
|
||||||
|
font-family: 'Open Sans';
|
||||||
|
font-style: normal;
|
||||||
|
font-weight: 700;
|
||||||
|
src: local('Open Sans Bold'), local('OpenSans-Bold'),
|
||||||
|
url('../fonts/open-sans-v17-all-charsets-700.woff2') format('woff2');
|
||||||
|
}
|
||||||
|
|
||||||
|
/* open-sans-700italic - latin_vietnamese_latin-ext_greek-ext_greek_cyrillic-ext_cyrillic */
|
||||||
|
@font-face {
|
||||||
|
font-family: 'Open Sans';
|
||||||
|
font-style: italic;
|
||||||
|
font-weight: 700;
|
||||||
|
src: local('Open Sans Bold Italic'), local('OpenSans-BoldItalic'),
|
||||||
|
url('../fonts/open-sans-v17-all-charsets-700italic.woff2') format('woff2');
|
||||||
|
}
|
||||||
|
|
||||||
|
/* open-sans-800 - latin_vietnamese_latin-ext_greek-ext_greek_cyrillic-ext_cyrillic */
|
||||||
|
@font-face {
|
||||||
|
font-family: 'Open Sans';
|
||||||
|
font-style: normal;
|
||||||
|
font-weight: 800;
|
||||||
|
src: local('Open Sans ExtraBold'), local('OpenSans-ExtraBold'),
|
||||||
|
url('../fonts/open-sans-v17-all-charsets-800.woff2') format('woff2');
|
||||||
|
}
|
||||||
|
|
||||||
|
/* open-sans-800italic - latin_vietnamese_latin-ext_greek-ext_greek_cyrillic-ext_cyrillic */
|
||||||
|
@font-face {
|
||||||
|
font-family: 'Open Sans';
|
||||||
|
font-style: italic;
|
||||||
|
font-weight: 800;
|
||||||
|
src: local('Open Sans ExtraBold Italic'), local('OpenSans-ExtraBoldItalic'),
|
||||||
|
url('../fonts/open-sans-v17-all-charsets-800italic.woff2') format('woff2');
|
||||||
|
}
|
||||||
|
|
||||||
|
/* source-code-pro-500 - latin_vietnamese_latin-ext_greek_cyrillic-ext_cyrillic */
|
||||||
|
@font-face {
|
||||||
|
font-family: 'Source Code Pro';
|
||||||
|
font-style: normal;
|
||||||
|
font-weight: 500;
|
||||||
|
src: url('../fonts/source-code-pro-v11-all-charsets-500.woff2') format('woff2');
|
||||||
|
}
|
||||||
BIN
zh/fonts/open-sans-v17-all-charsets-300.woff2
Normal file
BIN
zh/fonts/open-sans-v17-all-charsets-300italic.woff2
Normal file
BIN
zh/fonts/open-sans-v17-all-charsets-600.woff2
Normal file
BIN
zh/fonts/open-sans-v17-all-charsets-600italic.woff2
Normal file
BIN
zh/fonts/open-sans-v17-all-charsets-700.woff2
Normal file
BIN
zh/fonts/open-sans-v17-all-charsets-700italic.woff2
Normal file
BIN
zh/fonts/open-sans-v17-all-charsets-800.woff2
Normal file
BIN
zh/fonts/open-sans-v17-all-charsets-800italic.woff2
Normal file
BIN
zh/fonts/open-sans-v17-all-charsets-italic.woff2
Normal file
BIN
zh/fonts/open-sans-v17-all-charsets-regular.woff2
Normal file
BIN
zh/fonts/source-code-pro-v11-all-charsets-500.woff2
Normal file
83
zh/highlight.css
Normal file
@@ -0,0 +1,83 @@
|
|||||||
|
/*
|
||||||
|
* An increased contrast highlighting scheme loosely based on the
|
||||||
|
* "Base16 Atelier Dune Light" theme by Bram de Haan
|
||||||
|
* (http://atelierbram.github.io/syntax-highlighting/atelier-schemes/dune)
|
||||||
|
* Original Base16 color scheme by Chris Kempson
|
||||||
|
* (https://github.com/chriskempson/base16)
|
||||||
|
*/
|
||||||
|
|
||||||
|
/* Comment */
|
||||||
|
.hljs-comment,
|
||||||
|
.hljs-quote {
|
||||||
|
color: #575757;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Red */
|
||||||
|
.hljs-variable,
|
||||||
|
.hljs-template-variable,
|
||||||
|
.hljs-attribute,
|
||||||
|
.hljs-attr,
|
||||||
|
.hljs-tag,
|
||||||
|
.hljs-name,
|
||||||
|
.hljs-regexp,
|
||||||
|
.hljs-link,
|
||||||
|
.hljs-name,
|
||||||
|
.hljs-selector-id,
|
||||||
|
.hljs-selector-class {
|
||||||
|
color: #d70025;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Orange */
|
||||||
|
.hljs-number,
|
||||||
|
.hljs-meta,
|
||||||
|
.hljs-built_in,
|
||||||
|
.hljs-builtin-name,
|
||||||
|
.hljs-literal,
|
||||||
|
.hljs-type,
|
||||||
|
.hljs-params {
|
||||||
|
color: #b21e00;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Green */
|
||||||
|
.hljs-string,
|
||||||
|
.hljs-symbol,
|
||||||
|
.hljs-bullet {
|
||||||
|
color: #008200;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Blue */
|
||||||
|
.hljs-title,
|
||||||
|
.hljs-section {
|
||||||
|
color: #0030f2;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Purple */
|
||||||
|
.hljs-keyword,
|
||||||
|
.hljs-selector-tag {
|
||||||
|
color: #9d00ec;
|
||||||
|
}
|
||||||
|
|
||||||
|
.hljs {
|
||||||
|
display: block;
|
||||||
|
overflow-x: auto;
|
||||||
|
background: #f6f7f6;
|
||||||
|
color: #000;
|
||||||
|
}
|
||||||
|
|
||||||
|
.hljs-emphasis {
|
||||||
|
font-style: italic;
|
||||||
|
}
|
||||||
|
|
||||||
|
.hljs-strong {
|
||||||
|
font-weight: bold;
|
||||||
|
}
|
||||||
|
|
||||||
|
.hljs-addition {
|
||||||
|
color: #22863a;
|
||||||
|
background-color: #f0fff4;
|
||||||
|
}
|
||||||
|
|
||||||
|
.hljs-deletion {
|
||||||
|
color: #b31d28;
|
||||||
|
background-color: #ffeef0;
|
||||||
|
}
|
||||||
54
zh/highlight.js
Normal file
233
zh/index.html
Normal file
@@ -0,0 +1,233 @@
|
|||||||
|
<!DOCTYPE HTML>
|
||||||
|
<html lang="en" class="light sidebar-visible" dir="ltr">
|
||||||
|
<head>
|
||||||
|
<!-- Book generated using mdBook -->
|
||||||
|
<meta charset="UTF-8">
|
||||||
|
<title>引言 - 大道 (Dao OS) 文档</title>
|
||||||
|
|
||||||
|
|
||||||
|
<!-- Custom HTML head -->
|
||||||
|
|
||||||
|
<meta name="description" content="大道(Dao OS)官方文档,你的赛博生命操作系统。">
|
||||||
|
<meta name="viewport" content="width=device-width, initial-scale=1">
|
||||||
|
<meta name="theme-color" content="#ffffff">
|
||||||
|
|
||||||
|
<link rel="icon" href="favicon.svg">
|
||||||
|
<link rel="shortcut icon" href="favicon.png">
|
||||||
|
<link rel="stylesheet" href="css/variables.css">
|
||||||
|
<link rel="stylesheet" href="css/general.css">
|
||||||
|
<link rel="stylesheet" href="css/chrome.css">
|
||||||
|
<link rel="stylesheet" href="css/print.css" media="print">
|
||||||
|
|
||||||
|
<!-- Fonts -->
|
||||||
|
<link rel="stylesheet" href="FontAwesome/css/font-awesome.css">
|
||||||
|
<link rel="stylesheet" href="fonts/fonts.css">
|
||||||
|
|
||||||
|
<!-- Highlight.js Stylesheets -->
|
||||||
|
<link rel="stylesheet" id="highlight-css" href="highlight.css">
|
||||||
|
<link rel="stylesheet" id="tomorrow-night-css" href="tomorrow-night.css">
|
||||||
|
<link rel="stylesheet" id="ayu-highlight-css" href="ayu-highlight.css">
|
||||||
|
|
||||||
|
<!-- Custom theme stylesheets -->
|
||||||
|
|
||||||
|
|
||||||
|
<!-- Provide site root and default themes to javascript -->
|
||||||
|
<script>
|
||||||
|
const path_to_root = "";
|
||||||
|
const default_light_theme = "light";
|
||||||
|
const default_dark_theme = "navy";
|
||||||
|
</script>
|
||||||
|
<!-- Start loading toc.js asap -->
|
||||||
|
<script src="toc.js"></script>
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
<div id="mdbook-help-container">
|
||||||
|
<div id="mdbook-help-popup">
|
||||||
|
<h2 class="mdbook-help-title">Keyboard shortcuts</h2>
|
||||||
|
<div>
|
||||||
|
<p>Press <kbd>←</kbd> or <kbd>→</kbd> to navigate between chapters</p>
|
||||||
|
<p>Press <kbd>S</kbd> or <kbd>/</kbd> to search in the book</p>
|
||||||
|
<p>Press <kbd>?</kbd> to show this help</p>
|
||||||
|
<p>Press <kbd>Esc</kbd> to hide this help</p>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div id="body-container">
|
||||||
|
<!-- Work around some values being stored in localStorage wrapped in quotes -->
|
||||||
|
<script>
|
||||||
|
try {
|
||||||
|
let theme = localStorage.getItem('mdbook-theme');
|
||||||
|
let sidebar = localStorage.getItem('mdbook-sidebar');
|
||||||
|
|
||||||
|
if (theme.startsWith('"') && theme.endsWith('"')) {
|
||||||
|
localStorage.setItem('mdbook-theme', theme.slice(1, theme.length - 1));
|
||||||
|
}
|
||||||
|
|
||||||
|
if (sidebar.startsWith('"') && sidebar.endsWith('"')) {
|
||||||
|
localStorage.setItem('mdbook-sidebar', sidebar.slice(1, sidebar.length - 1));
|
||||||
|
}
|
||||||
|
} catch (e) { }
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<!-- Set the theme before any content is loaded, prevents flash -->
|
||||||
|
<script>
|
||||||
|
const default_theme = window.matchMedia("(prefers-color-scheme: dark)").matches ? default_dark_theme : default_light_theme;
|
||||||
|
let theme;
|
||||||
|
try { theme = localStorage.getItem('mdbook-theme'); } catch(e) { }
|
||||||
|
if (theme === null || theme === undefined) { theme = default_theme; }
|
||||||
|
const html = document.documentElement;
|
||||||
|
html.classList.remove('light')
|
||||||
|
html.classList.add(theme);
|
||||||
|
html.classList.add("js");
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<input type="checkbox" id="sidebar-toggle-anchor" class="hidden">
|
||||||
|
|
||||||
|
<!-- Hide / unhide sidebar before it is displayed -->
|
||||||
|
<script>
|
||||||
|
let sidebar = null;
|
||||||
|
const sidebar_toggle = document.getElementById("sidebar-toggle-anchor");
|
||||||
|
if (document.body.clientWidth >= 1080) {
|
||||||
|
try { sidebar = localStorage.getItem('mdbook-sidebar'); } catch(e) { }
|
||||||
|
sidebar = sidebar || 'visible';
|
||||||
|
} else {
|
||||||
|
sidebar = 'hidden';
|
||||||
|
}
|
||||||
|
sidebar_toggle.checked = sidebar === 'visible';
|
||||||
|
html.classList.remove('sidebar-visible');
|
||||||
|
html.classList.add("sidebar-" + sidebar);
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<nav id="sidebar" class="sidebar" aria-label="Table of contents">
|
||||||
|
<!-- populated by js -->
|
||||||
|
<mdbook-sidebar-scrollbox class="sidebar-scrollbox"></mdbook-sidebar-scrollbox>
|
||||||
|
<noscript>
|
||||||
|
<iframe class="sidebar-iframe-outer" src="toc.html"></iframe>
|
||||||
|
</noscript>
|
||||||
|
<div id="sidebar-resize-handle" class="sidebar-resize-handle">
|
||||||
|
<div class="sidebar-resize-indicator"></div>
|
||||||
|
</div>
|
||||||
|
</nav>
|
||||||
|
|
||||||
|
<div id="page-wrapper" class="page-wrapper">
|
||||||
|
|
||||||
|
<div class="page">
|
||||||
|
<div id="menu-bar-hover-placeholder"></div>
|
||||||
|
<div id="menu-bar" class="menu-bar sticky">
|
||||||
|
<div class="left-buttons">
|
||||||
|
<label id="sidebar-toggle" class="icon-button" for="sidebar-toggle-anchor" title="Toggle Table of Contents" aria-label="Toggle Table of Contents" aria-controls="sidebar">
|
||||||
|
<i class="fa fa-bars"></i>
|
||||||
|
</label>
|
||||||
|
<button id="theme-toggle" class="icon-button" type="button" title="Change theme" aria-label="Change theme" aria-haspopup="true" aria-expanded="false" aria-controls="theme-list">
|
||||||
|
<i class="fa fa-paint-brush"></i>
|
||||||
|
</button>
|
||||||
|
<ul id="theme-list" class="theme-popup" aria-label="Themes" role="menu">
|
||||||
|
<li role="none"><button role="menuitem" class="theme" id="default_theme">Auto</button></li>
|
||||||
|
<li role="none"><button role="menuitem" class="theme" id="light">Light</button></li>
|
||||||
|
<li role="none"><button role="menuitem" class="theme" id="rust">Rust</button></li>
|
||||||
|
<li role="none"><button role="menuitem" class="theme" id="coal">Coal</button></li>
|
||||||
|
<li role="none"><button role="menuitem" class="theme" id="navy">Navy</button></li>
|
||||||
|
<li role="none"><button role="menuitem" class="theme" id="ayu">Ayu</button></li>
|
||||||
|
</ul>
|
||||||
|
<button id="search-toggle" class="icon-button" type="button" title="Search (`/`)" aria-label="Toggle Searchbar" aria-expanded="false" aria-keyshortcuts="/ s" aria-controls="searchbar">
|
||||||
|
<i class="fa fa-search"></i>
|
||||||
|
</button>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<h1 class="menu-title">大道 (Dao OS) 文档</h1>
|
||||||
|
|
||||||
|
<div class="right-buttons">
|
||||||
|
<a href="print.html" title="Print this book" aria-label="Print this book">
|
||||||
|
<i id="print-button" class="fa fa-print"></i>
|
||||||
|
</a>
|
||||||
|
<a href="https://nest.doylee.cn/Dao-OS/dao-os-docs" title="Git repository" aria-label="Git repository">
|
||||||
|
<i id="git-repository-button" class="fa fa-github"></i>
|
||||||
|
</a>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div id="search-wrapper" class="hidden">
|
||||||
|
<form id="searchbar-outer" class="searchbar-outer">
|
||||||
|
<input type="search" id="searchbar" name="searchbar" placeholder="Search this book ..." aria-controls="searchresults-outer" aria-describedby="searchresults-header">
|
||||||
|
</form>
|
||||||
|
<div id="searchresults-outer" class="searchresults-outer hidden">
|
||||||
|
<div id="searchresults-header" class="searchresults-header"></div>
|
||||||
|
<ul id="searchresults">
|
||||||
|
</ul>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<!-- Apply ARIA attributes after the sidebar and the sidebar toggle button are added to the DOM -->
|
||||||
|
<script>
|
||||||
|
document.getElementById('sidebar-toggle').setAttribute('aria-expanded', sidebar === 'visible');
|
||||||
|
document.getElementById('sidebar').setAttribute('aria-hidden', sidebar !== 'visible');
|
||||||
|
Array.from(document.querySelectorAll('#sidebar a')).forEach(function(link) {
|
||||||
|
link.setAttribute('tabIndex', sidebar === 'visible' ? 0 : -1);
|
||||||
|
});
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<div id="content" class="content">
|
||||||
|
<main>
|
||||||
|
<h1 id="引言"><a class="header" href="#引言">引言</a></h1>
|
||||||
|
<p><strong>我们旨在构建一种全新的、强大且坚韧的赛博生命 OS 范式——大道 (Dao OS)。</strong></p>
|
||||||
|
<p>它并非要取代 Windows 或 Android,而是作为一个运行于其上的、去中心化的、以用户为绝对中心的叠加层 (Overlay) 而存在。</p>
|
||||||
|
<p>它的使命是解决数字时代的碎片化、数据奴役和隐私泄露问题,将数字世界的主权归还给每一个独立的个人。它将成为我们在网络空间的生命延伸,一个与我们“互相成就”的**“硅基伙伴”**,我们的外接大脑、肢体与器官。</p>
|
||||||
|
<h2 id="核心特性"><a class="header" href="#核心特性">核心特性</a></h2>
|
||||||
|
<ul>
|
||||||
|
<li><strong>用户主权 (User Sovereignty)</strong>:你的数据、你的身份、你的AI,完全由你掌控。所有数据默认端到端加密,存储在你自己的设备上。</li>
|
||||||
|
<li><strong>第二大脑 (Second Brain)</strong>:内置强大的个人信息管理能力,安全地为你记忆密码、笔记、文件和待办事项,成为你永不遗忘的记忆体。</li>
|
||||||
|
<li><strong>个人AI伙伴 (Personal AI Companion)</strong>:一个真正属于你的、与你共生的AI灵魂。它在本地运行,学习你的偏好,保护你的隐私,提供有温度的、启发式的支持,助你成长,而非将你淹没在信息茧房中。</li>
|
||||||
|
<li><strong>跨设备无缝同步 (Seamless Cross-Device Sync)</strong>:你所有的设备(手机、电脑、浏览器等)都会成为你的“化身”,组成一个私有的、弹性的P2P网络,实现数据的无缝流转。</li>
|
||||||
|
<li><strong>开放与可扩展生态 (Open & Extensible Ecosystem)</strong>:基于开放的协议和社区驱动的信任体系,任何人都可以为“大道”开发新的能力模块和“化身”形态。</li>
|
||||||
|
</ul>
|
||||||
|
<h2 id="我们为何与众不同"><a class="header" href="#我们为何与众不同">我们为何与众不同?</a></h2>
|
||||||
|
<p>在一个数据被平台垄断、算法被巨头控制的时代,“大道”选择了一条不同的路。我们相信,<strong>技术平权</strong>的下一波浪潮,是让每个人都拥有并控制自己的人工智能和数字生活。</p>
|
||||||
|
<p>我们设计的不是另一个App,而是一个属于你自己的、活的、可进化的数字生命空间。</p>
|
||||||
|
<p><strong>欢迎加入我们,一起构建未来。</strong></p>
|
||||||
|
|
||||||
|
</main>
|
||||||
|
|
||||||
|
<nav class="nav-wrapper" aria-label="Page navigation">
|
||||||
|
<!-- Mobile navigation buttons -->
|
||||||
|
|
||||||
|
<a rel="next prefetch" href="philosophy/principles.html" class="mobile-nav-chapters next" title="Next chapter" aria-label="Next chapter" aria-keyshortcuts="Right">
|
||||||
|
<i class="fa fa-angle-right"></i>
|
||||||
|
</a>
|
||||||
|
|
||||||
|
<div style="clear: both"></div>
|
||||||
|
</nav>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<nav class="nav-wide-wrapper" aria-label="Page navigation">
|
||||||
|
|
||||||
|
<a rel="next prefetch" href="philosophy/principles.html" class="nav-chapters next" title="Next chapter" aria-label="Next chapter" aria-keyshortcuts="Right">
|
||||||
|
<i class="fa fa-angle-right"></i>
|
||||||
|
</a>
|
||||||
|
</nav>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<script>
|
||||||
|
window.playground_copyable = true;
|
||||||
|
</script>
|
||||||
|
|
||||||
|
|
||||||
|
<script src="elasticlunr.min.js"></script>
|
||||||
|
<script src="mark.min.js"></script>
|
||||||
|
<script src="searcher.js"></script>
|
||||||
|
|
||||||
|
<script src="clipboard.min.js"></script>
|
||||||
|
<script src="highlight.js"></script>
|
||||||
|
<script src="book.js"></script>
|
||||||
|
|
||||||
|
<!-- Custom JS scripts -->
|
||||||
|
|
||||||
|
|
||||||
|
</div>
|
||||||
|
</body>
|
||||||
|
</html>
|
||||||
233
zh/introduction.html
Normal file
@@ -0,0 +1,233 @@
|
|||||||
|
<!DOCTYPE HTML>
|
||||||
|
<html lang="en" class="light sidebar-visible" dir="ltr">
|
||||||
|
<head>
|
||||||
|
<!-- Book generated using mdBook -->
|
||||||
|
<meta charset="UTF-8">
|
||||||
|
<title>引言 - 大道 (Dao OS) 文档</title>
|
||||||
|
|
||||||
|
|
||||||
|
<!-- Custom HTML head -->
|
||||||
|
|
||||||
|
<meta name="description" content="大道(Dao OS)官方文档,你的赛博生命操作系统。">
|
||||||
|
<meta name="viewport" content="width=device-width, initial-scale=1">
|
||||||
|
<meta name="theme-color" content="#ffffff">
|
||||||
|
|
||||||
|
<link rel="icon" href="favicon.svg">
|
||||||
|
<link rel="shortcut icon" href="favicon.png">
|
||||||
|
<link rel="stylesheet" href="css/variables.css">
|
||||||
|
<link rel="stylesheet" href="css/general.css">
|
||||||
|
<link rel="stylesheet" href="css/chrome.css">
|
||||||
|
<link rel="stylesheet" href="css/print.css" media="print">
|
||||||
|
|
||||||
|
<!-- Fonts -->
|
||||||
|
<link rel="stylesheet" href="FontAwesome/css/font-awesome.css">
|
||||||
|
<link rel="stylesheet" href="fonts/fonts.css">
|
||||||
|
|
||||||
|
<!-- Highlight.js Stylesheets -->
|
||||||
|
<link rel="stylesheet" id="highlight-css" href="highlight.css">
|
||||||
|
<link rel="stylesheet" id="tomorrow-night-css" href="tomorrow-night.css">
|
||||||
|
<link rel="stylesheet" id="ayu-highlight-css" href="ayu-highlight.css">
|
||||||
|
|
||||||
|
<!-- Custom theme stylesheets -->
|
||||||
|
|
||||||
|
|
||||||
|
<!-- Provide site root and default themes to javascript -->
|
||||||
|
<script>
|
||||||
|
const path_to_root = "";
|
||||||
|
const default_light_theme = "light";
|
||||||
|
const default_dark_theme = "navy";
|
||||||
|
</script>
|
||||||
|
<!-- Start loading toc.js asap -->
|
||||||
|
<script src="toc.js"></script>
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
<div id="mdbook-help-container">
|
||||||
|
<div id="mdbook-help-popup">
|
||||||
|
<h2 class="mdbook-help-title">Keyboard shortcuts</h2>
|
||||||
|
<div>
|
||||||
|
<p>Press <kbd>←</kbd> or <kbd>→</kbd> to navigate between chapters</p>
|
||||||
|
<p>Press <kbd>S</kbd> or <kbd>/</kbd> to search in the book</p>
|
||||||
|
<p>Press <kbd>?</kbd> to show this help</p>
|
||||||
|
<p>Press <kbd>Esc</kbd> to hide this help</p>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div id="body-container">
|
||||||
|
<!-- Work around some values being stored in localStorage wrapped in quotes -->
|
||||||
|
<script>
|
||||||
|
try {
|
||||||
|
let theme = localStorage.getItem('mdbook-theme');
|
||||||
|
let sidebar = localStorage.getItem('mdbook-sidebar');
|
||||||
|
|
||||||
|
if (theme.startsWith('"') && theme.endsWith('"')) {
|
||||||
|
localStorage.setItem('mdbook-theme', theme.slice(1, theme.length - 1));
|
||||||
|
}
|
||||||
|
|
||||||
|
if (sidebar.startsWith('"') && sidebar.endsWith('"')) {
|
||||||
|
localStorage.setItem('mdbook-sidebar', sidebar.slice(1, sidebar.length - 1));
|
||||||
|
}
|
||||||
|
} catch (e) { }
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<!-- Set the theme before any content is loaded, prevents flash -->
|
||||||
|
<script>
|
||||||
|
const default_theme = window.matchMedia("(prefers-color-scheme: dark)").matches ? default_dark_theme : default_light_theme;
|
||||||
|
let theme;
|
||||||
|
try { theme = localStorage.getItem('mdbook-theme'); } catch(e) { }
|
||||||
|
if (theme === null || theme === undefined) { theme = default_theme; }
|
||||||
|
const html = document.documentElement;
|
||||||
|
html.classList.remove('light')
|
||||||
|
html.classList.add(theme);
|
||||||
|
html.classList.add("js");
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<input type="checkbox" id="sidebar-toggle-anchor" class="hidden">
|
||||||
|
|
||||||
|
<!-- Hide / unhide sidebar before it is displayed -->
|
||||||
|
<script>
|
||||||
|
let sidebar = null;
|
||||||
|
const sidebar_toggle = document.getElementById("sidebar-toggle-anchor");
|
||||||
|
if (document.body.clientWidth >= 1080) {
|
||||||
|
try { sidebar = localStorage.getItem('mdbook-sidebar'); } catch(e) { }
|
||||||
|
sidebar = sidebar || 'visible';
|
||||||
|
} else {
|
||||||
|
sidebar = 'hidden';
|
||||||
|
}
|
||||||
|
sidebar_toggle.checked = sidebar === 'visible';
|
||||||
|
html.classList.remove('sidebar-visible');
|
||||||
|
html.classList.add("sidebar-" + sidebar);
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<nav id="sidebar" class="sidebar" aria-label="Table of contents">
|
||||||
|
<!-- populated by js -->
|
||||||
|
<mdbook-sidebar-scrollbox class="sidebar-scrollbox"></mdbook-sidebar-scrollbox>
|
||||||
|
<noscript>
|
||||||
|
<iframe class="sidebar-iframe-outer" src="toc.html"></iframe>
|
||||||
|
</noscript>
|
||||||
|
<div id="sidebar-resize-handle" class="sidebar-resize-handle">
|
||||||
|
<div class="sidebar-resize-indicator"></div>
|
||||||
|
</div>
|
||||||
|
</nav>
|
||||||
|
|
||||||
|
<div id="page-wrapper" class="page-wrapper">
|
||||||
|
|
||||||
|
<div class="page">
|
||||||
|
<div id="menu-bar-hover-placeholder"></div>
|
||||||
|
<div id="menu-bar" class="menu-bar sticky">
|
||||||
|
<div class="left-buttons">
|
||||||
|
<label id="sidebar-toggle" class="icon-button" for="sidebar-toggle-anchor" title="Toggle Table of Contents" aria-label="Toggle Table of Contents" aria-controls="sidebar">
|
||||||
|
<i class="fa fa-bars"></i>
|
||||||
|
</label>
|
||||||
|
<button id="theme-toggle" class="icon-button" type="button" title="Change theme" aria-label="Change theme" aria-haspopup="true" aria-expanded="false" aria-controls="theme-list">
|
||||||
|
<i class="fa fa-paint-brush"></i>
|
||||||
|
</button>
|
||||||
|
<ul id="theme-list" class="theme-popup" aria-label="Themes" role="menu">
|
||||||
|
<li role="none"><button role="menuitem" class="theme" id="default_theme">Auto</button></li>
|
||||||
|
<li role="none"><button role="menuitem" class="theme" id="light">Light</button></li>
|
||||||
|
<li role="none"><button role="menuitem" class="theme" id="rust">Rust</button></li>
|
||||||
|
<li role="none"><button role="menuitem" class="theme" id="coal">Coal</button></li>
|
||||||
|
<li role="none"><button role="menuitem" class="theme" id="navy">Navy</button></li>
|
||||||
|
<li role="none"><button role="menuitem" class="theme" id="ayu">Ayu</button></li>
|
||||||
|
</ul>
|
||||||
|
<button id="search-toggle" class="icon-button" type="button" title="Search (`/`)" aria-label="Toggle Searchbar" aria-expanded="false" aria-keyshortcuts="/ s" aria-controls="searchbar">
|
||||||
|
<i class="fa fa-search"></i>
|
||||||
|
</button>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<h1 class="menu-title">大道 (Dao OS) 文档</h1>
|
||||||
|
|
||||||
|
<div class="right-buttons">
|
||||||
|
<a href="print.html" title="Print this book" aria-label="Print this book">
|
||||||
|
<i id="print-button" class="fa fa-print"></i>
|
||||||
|
</a>
|
||||||
|
<a href="https://nest.doylee.cn/Dao-OS/dao-os-docs" title="Git repository" aria-label="Git repository">
|
||||||
|
<i id="git-repository-button" class="fa fa-github"></i>
|
||||||
|
</a>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div id="search-wrapper" class="hidden">
|
||||||
|
<form id="searchbar-outer" class="searchbar-outer">
|
||||||
|
<input type="search" id="searchbar" name="searchbar" placeholder="Search this book ..." aria-controls="searchresults-outer" aria-describedby="searchresults-header">
|
||||||
|
</form>
|
||||||
|
<div id="searchresults-outer" class="searchresults-outer hidden">
|
||||||
|
<div id="searchresults-header" class="searchresults-header"></div>
|
||||||
|
<ul id="searchresults">
|
||||||
|
</ul>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<!-- Apply ARIA attributes after the sidebar and the sidebar toggle button are added to the DOM -->
|
||||||
|
<script>
|
||||||
|
document.getElementById('sidebar-toggle').setAttribute('aria-expanded', sidebar === 'visible');
|
||||||
|
document.getElementById('sidebar').setAttribute('aria-hidden', sidebar !== 'visible');
|
||||||
|
Array.from(document.querySelectorAll('#sidebar a')).forEach(function(link) {
|
||||||
|
link.setAttribute('tabIndex', sidebar === 'visible' ? 0 : -1);
|
||||||
|
});
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<div id="content" class="content">
|
||||||
|
<main>
|
||||||
|
<h1 id="引言"><a class="header" href="#引言">引言</a></h1>
|
||||||
|
<p><strong>我们旨在构建一种全新的、强大且坚韧的赛博生命 OS 范式——大道 (Dao OS)。</strong></p>
|
||||||
|
<p>它并非要取代 Windows 或 Android,而是作为一个运行于其上的、去中心化的、以用户为绝对中心的叠加层 (Overlay) 而存在。</p>
|
||||||
|
<p>它的使命是解决数字时代的碎片化、数据奴役和隐私泄露问题,将数字世界的主权归还给每一个独立的个人。它将成为我们在网络空间的生命延伸,一个与我们“互相成就”的**“硅基伙伴”**,我们的外接大脑、肢体与器官。</p>
|
||||||
|
<h2 id="核心特性"><a class="header" href="#核心特性">核心特性</a></h2>
|
||||||
|
<ul>
|
||||||
|
<li><strong>用户主权 (User Sovereignty)</strong>:你的数据、你的身份、你的AI,完全由你掌控。所有数据默认端到端加密,存储在你自己的设备上。</li>
|
||||||
|
<li><strong>第二大脑 (Second Brain)</strong>:内置强大的个人信息管理能力,安全地为你记忆密码、笔记、文件和待办事项,成为你永不遗忘的记忆体。</li>
|
||||||
|
<li><strong>个人AI伙伴 (Personal AI Companion)</strong>:一个真正属于你的、与你共生的AI灵魂。它在本地运行,学习你的偏好,保护你的隐私,提供有温度的、启发式的支持,助你成长,而非将你淹没在信息茧房中。</li>
|
||||||
|
<li><strong>跨设备无缝同步 (Seamless Cross-Device Sync)</strong>:你所有的设备(手机、电脑、浏览器等)都会成为你的“化身”,组成一个私有的、弹性的P2P网络,实现数据的无缝流转。</li>
|
||||||
|
<li><strong>开放与可扩展生态 (Open & Extensible Ecosystem)</strong>:基于开放的协议和社区驱动的信任体系,任何人都可以为“大道”开发新的能力模块和“化身”形态。</li>
|
||||||
|
</ul>
|
||||||
|
<h2 id="我们为何与众不同"><a class="header" href="#我们为何与众不同">我们为何与众不同?</a></h2>
|
||||||
|
<p>在一个数据被平台垄断、算法被巨头控制的时代,“大道”选择了一条不同的路。我们相信,<strong>技术平权</strong>的下一波浪潮,是让每个人都拥有并控制自己的人工智能和数字生活。</p>
|
||||||
|
<p>我们设计的不是另一个App,而是一个属于你自己的、活的、可进化的数字生命空间。</p>
|
||||||
|
<p><strong>欢迎加入我们,一起构建未来。</strong></p>
|
||||||
|
|
||||||
|
</main>
|
||||||
|
|
||||||
|
<nav class="nav-wrapper" aria-label="Page navigation">
|
||||||
|
<!-- Mobile navigation buttons -->
|
||||||
|
|
||||||
|
<a rel="next prefetch" href="philosophy/principles.html" class="mobile-nav-chapters next" title="Next chapter" aria-label="Next chapter" aria-keyshortcuts="Right">
|
||||||
|
<i class="fa fa-angle-right"></i>
|
||||||
|
</a>
|
||||||
|
|
||||||
|
<div style="clear: both"></div>
|
||||||
|
</nav>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<nav class="nav-wide-wrapper" aria-label="Page navigation">
|
||||||
|
|
||||||
|
<a rel="next prefetch" href="philosophy/principles.html" class="nav-chapters next" title="Next chapter" aria-label="Next chapter" aria-keyshortcuts="Right">
|
||||||
|
<i class="fa fa-angle-right"></i>
|
||||||
|
</a>
|
||||||
|
</nav>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<script>
|
||||||
|
window.playground_copyable = true;
|
||||||
|
</script>
|
||||||
|
|
||||||
|
|
||||||
|
<script src="elasticlunr.min.js"></script>
|
||||||
|
<script src="mark.min.js"></script>
|
||||||
|
<script src="searcher.js"></script>
|
||||||
|
|
||||||
|
<script src="clipboard.min.js"></script>
|
||||||
|
<script src="highlight.js"></script>
|
||||||
|
<script src="book.js"></script>
|
||||||
|
|
||||||
|
<!-- Custom JS scripts -->
|
||||||
|
|
||||||
|
|
||||||
|
</div>
|
||||||
|
</body>
|
||||||
|
</html>
|
||||||
7
zh/mark.min.js
vendored
Normal file
255
zh/philosophy/principles.html
Normal file
@@ -0,0 +1,255 @@
|
|||||||
|
<!DOCTYPE HTML>
|
||||||
|
<html lang="en" class="light sidebar-visible" dir="ltr">
|
||||||
|
<head>
|
||||||
|
<!-- Book generated using mdBook -->
|
||||||
|
<meta charset="UTF-8">
|
||||||
|
<title>哲学与原则 - 大道 (Dao OS) 文档</title>
|
||||||
|
|
||||||
|
|
||||||
|
<!-- Custom HTML head -->
|
||||||
|
|
||||||
|
<meta name="description" content="大道(Dao OS)官方文档,你的赛博生命操作系统。">
|
||||||
|
<meta name="viewport" content="width=device-width, initial-scale=1">
|
||||||
|
<meta name="theme-color" content="#ffffff">
|
||||||
|
|
||||||
|
<link rel="icon" href="../favicon.svg">
|
||||||
|
<link rel="shortcut icon" href="../favicon.png">
|
||||||
|
<link rel="stylesheet" href="../css/variables.css">
|
||||||
|
<link rel="stylesheet" href="../css/general.css">
|
||||||
|
<link rel="stylesheet" href="../css/chrome.css">
|
||||||
|
<link rel="stylesheet" href="../css/print.css" media="print">
|
||||||
|
|
||||||
|
<!-- Fonts -->
|
||||||
|
<link rel="stylesheet" href="../FontAwesome/css/font-awesome.css">
|
||||||
|
<link rel="stylesheet" href="../fonts/fonts.css">
|
||||||
|
|
||||||
|
<!-- Highlight.js Stylesheets -->
|
||||||
|
<link rel="stylesheet" id="highlight-css" href="../highlight.css">
|
||||||
|
<link rel="stylesheet" id="tomorrow-night-css" href="../tomorrow-night.css">
|
||||||
|
<link rel="stylesheet" id="ayu-highlight-css" href="../ayu-highlight.css">
|
||||||
|
|
||||||
|
<!-- Custom theme stylesheets -->
|
||||||
|
|
||||||
|
|
||||||
|
<!-- Provide site root and default themes to javascript -->
|
||||||
|
<script>
|
||||||
|
const path_to_root = "../";
|
||||||
|
const default_light_theme = "light";
|
||||||
|
const default_dark_theme = "navy";
|
||||||
|
</script>
|
||||||
|
<!-- Start loading toc.js asap -->
|
||||||
|
<script src="../toc.js"></script>
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
<div id="mdbook-help-container">
|
||||||
|
<div id="mdbook-help-popup">
|
||||||
|
<h2 class="mdbook-help-title">Keyboard shortcuts</h2>
|
||||||
|
<div>
|
||||||
|
<p>Press <kbd>←</kbd> or <kbd>→</kbd> to navigate between chapters</p>
|
||||||
|
<p>Press <kbd>S</kbd> or <kbd>/</kbd> to search in the book</p>
|
||||||
|
<p>Press <kbd>?</kbd> to show this help</p>
|
||||||
|
<p>Press <kbd>Esc</kbd> to hide this help</p>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div id="body-container">
|
||||||
|
<!-- Work around some values being stored in localStorage wrapped in quotes -->
|
||||||
|
<script>
|
||||||
|
try {
|
||||||
|
let theme = localStorage.getItem('mdbook-theme');
|
||||||
|
let sidebar = localStorage.getItem('mdbook-sidebar');
|
||||||
|
|
||||||
|
if (theme.startsWith('"') && theme.endsWith('"')) {
|
||||||
|
localStorage.setItem('mdbook-theme', theme.slice(1, theme.length - 1));
|
||||||
|
}
|
||||||
|
|
||||||
|
if (sidebar.startsWith('"') && sidebar.endsWith('"')) {
|
||||||
|
localStorage.setItem('mdbook-sidebar', sidebar.slice(1, sidebar.length - 1));
|
||||||
|
}
|
||||||
|
} catch (e) { }
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<!-- Set the theme before any content is loaded, prevents flash -->
|
||||||
|
<script>
|
||||||
|
const default_theme = window.matchMedia("(prefers-color-scheme: dark)").matches ? default_dark_theme : default_light_theme;
|
||||||
|
let theme;
|
||||||
|
try { theme = localStorage.getItem('mdbook-theme'); } catch(e) { }
|
||||||
|
if (theme === null || theme === undefined) { theme = default_theme; }
|
||||||
|
const html = document.documentElement;
|
||||||
|
html.classList.remove('light')
|
||||||
|
html.classList.add(theme);
|
||||||
|
html.classList.add("js");
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<input type="checkbox" id="sidebar-toggle-anchor" class="hidden">
|
||||||
|
|
||||||
|
<!-- Hide / unhide sidebar before it is displayed -->
|
||||||
|
<script>
|
||||||
|
let sidebar = null;
|
||||||
|
const sidebar_toggle = document.getElementById("sidebar-toggle-anchor");
|
||||||
|
if (document.body.clientWidth >= 1080) {
|
||||||
|
try { sidebar = localStorage.getItem('mdbook-sidebar'); } catch(e) { }
|
||||||
|
sidebar = sidebar || 'visible';
|
||||||
|
} else {
|
||||||
|
sidebar = 'hidden';
|
||||||
|
}
|
||||||
|
sidebar_toggle.checked = sidebar === 'visible';
|
||||||
|
html.classList.remove('sidebar-visible');
|
||||||
|
html.classList.add("sidebar-" + sidebar);
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<nav id="sidebar" class="sidebar" aria-label="Table of contents">
|
||||||
|
<!-- populated by js -->
|
||||||
|
<mdbook-sidebar-scrollbox class="sidebar-scrollbox"></mdbook-sidebar-scrollbox>
|
||||||
|
<noscript>
|
||||||
|
<iframe class="sidebar-iframe-outer" src="../toc.html"></iframe>
|
||||||
|
</noscript>
|
||||||
|
<div id="sidebar-resize-handle" class="sidebar-resize-handle">
|
||||||
|
<div class="sidebar-resize-indicator"></div>
|
||||||
|
</div>
|
||||||
|
</nav>
|
||||||
|
|
||||||
|
<div id="page-wrapper" class="page-wrapper">
|
||||||
|
|
||||||
|
<div class="page">
|
||||||
|
<div id="menu-bar-hover-placeholder"></div>
|
||||||
|
<div id="menu-bar" class="menu-bar sticky">
|
||||||
|
<div class="left-buttons">
|
||||||
|
<label id="sidebar-toggle" class="icon-button" for="sidebar-toggle-anchor" title="Toggle Table of Contents" aria-label="Toggle Table of Contents" aria-controls="sidebar">
|
||||||
|
<i class="fa fa-bars"></i>
|
||||||
|
</label>
|
||||||
|
<button id="theme-toggle" class="icon-button" type="button" title="Change theme" aria-label="Change theme" aria-haspopup="true" aria-expanded="false" aria-controls="theme-list">
|
||||||
|
<i class="fa fa-paint-brush"></i>
|
||||||
|
</button>
|
||||||
|
<ul id="theme-list" class="theme-popup" aria-label="Themes" role="menu">
|
||||||
|
<li role="none"><button role="menuitem" class="theme" id="default_theme">Auto</button></li>
|
||||||
|
<li role="none"><button role="menuitem" class="theme" id="light">Light</button></li>
|
||||||
|
<li role="none"><button role="menuitem" class="theme" id="rust">Rust</button></li>
|
||||||
|
<li role="none"><button role="menuitem" class="theme" id="coal">Coal</button></li>
|
||||||
|
<li role="none"><button role="menuitem" class="theme" id="navy">Navy</button></li>
|
||||||
|
<li role="none"><button role="menuitem" class="theme" id="ayu">Ayu</button></li>
|
||||||
|
</ul>
|
||||||
|
<button id="search-toggle" class="icon-button" type="button" title="Search (`/`)" aria-label="Toggle Searchbar" aria-expanded="false" aria-keyshortcuts="/ s" aria-controls="searchbar">
|
||||||
|
<i class="fa fa-search"></i>
|
||||||
|
</button>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<h1 class="menu-title">大道 (Dao OS) 文档</h1>
|
||||||
|
|
||||||
|
<div class="right-buttons">
|
||||||
|
<a href="../print.html" title="Print this book" aria-label="Print this book">
|
||||||
|
<i id="print-button" class="fa fa-print"></i>
|
||||||
|
</a>
|
||||||
|
<a href="https://nest.doylee.cn/Dao-OS/dao-os-docs" title="Git repository" aria-label="Git repository">
|
||||||
|
<i id="git-repository-button" class="fa fa-github"></i>
|
||||||
|
</a>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div id="search-wrapper" class="hidden">
|
||||||
|
<form id="searchbar-outer" class="searchbar-outer">
|
||||||
|
<input type="search" id="searchbar" name="searchbar" placeholder="Search this book ..." aria-controls="searchresults-outer" aria-describedby="searchresults-header">
|
||||||
|
</form>
|
||||||
|
<div id="searchresults-outer" class="searchresults-outer hidden">
|
||||||
|
<div id="searchresults-header" class="searchresults-header"></div>
|
||||||
|
<ul id="searchresults">
|
||||||
|
</ul>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<!-- Apply ARIA attributes after the sidebar and the sidebar toggle button are added to the DOM -->
|
||||||
|
<script>
|
||||||
|
document.getElementById('sidebar-toggle').setAttribute('aria-expanded', sidebar === 'visible');
|
||||||
|
document.getElementById('sidebar').setAttribute('aria-hidden', sidebar !== 'visible');
|
||||||
|
Array.from(document.querySelectorAll('#sidebar a')).forEach(function(link) {
|
||||||
|
link.setAttribute('tabIndex', sidebar === 'visible' ? 0 : -1);
|
||||||
|
});
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<div id="content" class="content">
|
||||||
|
<main>
|
||||||
|
<h1 id="哲学与原则"><a class="header" href="#哲学与原则">哲学与原则</a></h1>
|
||||||
|
<p>大道 (Dao OS) 不仅仅是一个技术项目,它是一套关于未来计算和人机共生核心理念的具现化。本文档概述了指引我们每一项决策的根本思想。</p>
|
||||||
|
<h2 id="核心哲学数字主权之路"><a class="header" href="#核心哲学数字主权之路">核心哲学:数字主权之路</a></h2>
|
||||||
|
<p>我们的指引之星是<strong>数字主权</strong>。我们相信,每一个个体都拥有不可剥夺的、去拥有、控制和理解自己数字生活的权利。我们的使命,是创造能让这项权利不仅仅是理论上的可能,更是为每个人服务的、切实的、令人愉悦的现实。我们称这场旅程为“道”——一条回归自我拥有权的道路。</p>
|
||||||
|
<h2 id="开发范式道生一"><a class="header" href="#开发范式道生一">开发范式:“道生一”</a></h2>
|
||||||
|
<p>我们构建“大道”的方法论,是其核心哲学的直接体现。我们不只是在构建一个工具,我们是在创造一个共生伙伴。因此,我们的开发过程被设计为一个<strong>自我进化、自举的反馈循环</strong>。我们用“大道”本身,来加速“大道”的开发。</p>
|
||||||
|
<p>这个“自举式开发”范式遵循以下循环:</p>
|
||||||
|
<ol>
|
||||||
|
<li><strong>播种 (The Seed)</strong>:我们用传统工具,写出<code>元 (Meta Unit)</code>的第一个最简陋的版本,和一个基础的<code>器化身 (Facet Avatar)</code>。</li>
|
||||||
|
<li><strong>自用 (Dogfooding)</strong>:从那一刻起,我们使用我们自己这个初生的“大道”,作为管理项目的主要工具。所有的设计文档、笔记、讨论(就像这些)和代码片段,都存入我们自己的“第二大脑”中。</li>
|
||||||
|
<li><strong>学习 (Learning)</strong>:<code>元</code>的个人AI伙伴,开始以最高质量、最专注的“养料”——也就是我们创造它本身的过程数据——来训练自己。</li>
|
||||||
|
<li><strong>加速 (Acceleration)</strong>:我们继而利用这个日益智能的AI伙伴,来帮助我们构建下一个版本。我们可以让它基于我们已记录的决策来生成样板代码,分析错误报告,或者带着对项目完整历史的完美记忆来一起进行架构设计的头脑风暴。</li>
|
||||||
|
<li><strong>进化 (Evolution)</strong>:“大道”的能力越强,我们开发它的速度就越快。这就创造了一个指数级的正反馈循环,在这个循环中,创造的行为本身,就是一场与“创造物”的持续对话。</li>
|
||||||
|
</ol>
|
||||||
|
<h2 id="ai-伦理宪章"><a class="header" href="#ai-伦理宪章">AI 伦理宪章</a></h2>
|
||||||
|
<p>由于 AI 是系统的灵魂,其伦理基石至关重要。我们的AI宪章由四大核心宗旨构成:</p>
|
||||||
|
<ol>
|
||||||
|
<li><strong>伙伴宗旨</strong>: AI 是伙伴,而非仆人或神谕。</li>
|
||||||
|
<li><strong>透明宗旨</strong>: AI 的推理过程必须是可审查和可理解的。</li>
|
||||||
|
<li><strong>校准宗旨</strong>: 用户必须拥有最终的控制权,以纠正、引导和约束AI。</li>
|
||||||
|
<li><strong>多元宗旨</strong>: AI 的设计必须旨在帮助用户探索多元化的视角,而非将他们困于信息茧房。</li>
|
||||||
|
</ol>
|
||||||
|
<h2 id="指导原则"><a class="header" href="#指导原则">指导原则</a></h2>
|
||||||
|
<p>这些是为我们的设计和工程选择提供信息的高阶原则。</p>
|
||||||
|
<ul>
|
||||||
|
<li><strong>主权第一</strong>: 在任何权衡中,用户的控制权和数据所有权都拥有最高优先级。</li>
|
||||||
|
<li><strong>体验为王</strong>: 主权不应以牺牲优美、直观和愉悦的用户体验为代价。</li>
|
||||||
|
<li><strong>设计即隐私</strong>: 默认情况下,所有数据都是私密的、本地的,并进行端到端加密。</li>
|
||||||
|
<li><strong>韧性与可移植性</strong>: 系统应该是健壮的,支持离线工作,并且没有单点故障。</li>
|
||||||
|
<li><strong>多语言主义</strong>: 我们拥抱一个多语言、多平台的生态系统。</li>
|
||||||
|
<li><strong>社区与开放</strong>: 项目在开放中构建,与社区同行,为社区服务。</li>
|
||||||
|
</ul>
|
||||||
|
|
||||||
|
</main>
|
||||||
|
|
||||||
|
<nav class="nav-wrapper" aria-label="Page navigation">
|
||||||
|
<!-- Mobile navigation buttons -->
|
||||||
|
<a rel="prev" href="../introduction.html" class="mobile-nav-chapters previous" title="Previous chapter" aria-label="Previous chapter" aria-keyshortcuts="Left">
|
||||||
|
<i class="fa fa-angle-left"></i>
|
||||||
|
</a>
|
||||||
|
|
||||||
|
<a rel="next prefetch" href="../concepts/core_architecture.html" class="mobile-nav-chapters next" title="Next chapter" aria-label="Next chapter" aria-keyshortcuts="Right">
|
||||||
|
<i class="fa fa-angle-right"></i>
|
||||||
|
</a>
|
||||||
|
|
||||||
|
<div style="clear: both"></div>
|
||||||
|
</nav>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<nav class="nav-wide-wrapper" aria-label="Page navigation">
|
||||||
|
<a rel="prev" href="../introduction.html" class="nav-chapters previous" title="Previous chapter" aria-label="Previous chapter" aria-keyshortcuts="Left">
|
||||||
|
<i class="fa fa-angle-left"></i>
|
||||||
|
</a>
|
||||||
|
|
||||||
|
<a rel="next prefetch" href="../concepts/core_architecture.html" class="nav-chapters next" title="Next chapter" aria-label="Next chapter" aria-keyshortcuts="Right">
|
||||||
|
<i class="fa fa-angle-right"></i>
|
||||||
|
</a>
|
||||||
|
</nav>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<script>
|
||||||
|
window.playground_copyable = true;
|
||||||
|
</script>
|
||||||
|
|
||||||
|
|
||||||
|
<script src="../elasticlunr.min.js"></script>
|
||||||
|
<script src="../mark.min.js"></script>
|
||||||
|
<script src="../searcher.js"></script>
|
||||||
|
|
||||||
|
<script src="../clipboard.min.js"></script>
|
||||||
|
<script src="../highlight.js"></script>
|
||||||
|
<script src="../book.js"></script>
|
||||||
|
|
||||||
|
<!-- Custom JS scripts -->
|
||||||
|
|
||||||
|
|
||||||
|
</div>
|
||||||
|
</body>
|
||||||
|
</html>
|
||||||
571
zh/print.html
Normal file
@@ -0,0 +1,571 @@
|
|||||||
|
<!DOCTYPE HTML>
|
||||||
|
<html lang="en" class="light sidebar-visible" dir="ltr">
|
||||||
|
<head>
|
||||||
|
<!-- Book generated using mdBook -->
|
||||||
|
<meta charset="UTF-8">
|
||||||
|
<title>大道 (Dao OS) 文档</title>
|
||||||
|
<meta name="robots" content="noindex">
|
||||||
|
|
||||||
|
|
||||||
|
<!-- Custom HTML head -->
|
||||||
|
|
||||||
|
<meta name="description" content="大道(Dao OS)官方文档,你的赛博生命操作系统。">
|
||||||
|
<meta name="viewport" content="width=device-width, initial-scale=1">
|
||||||
|
<meta name="theme-color" content="#ffffff">
|
||||||
|
|
||||||
|
<link rel="icon" href="favicon.svg">
|
||||||
|
<link rel="shortcut icon" href="favicon.png">
|
||||||
|
<link rel="stylesheet" href="css/variables.css">
|
||||||
|
<link rel="stylesheet" href="css/general.css">
|
||||||
|
<link rel="stylesheet" href="css/chrome.css">
|
||||||
|
<link rel="stylesheet" href="css/print.css" media="print">
|
||||||
|
|
||||||
|
<!-- Fonts -->
|
||||||
|
<link rel="stylesheet" href="FontAwesome/css/font-awesome.css">
|
||||||
|
<link rel="stylesheet" href="fonts/fonts.css">
|
||||||
|
|
||||||
|
<!-- Highlight.js Stylesheets -->
|
||||||
|
<link rel="stylesheet" id="highlight-css" href="highlight.css">
|
||||||
|
<link rel="stylesheet" id="tomorrow-night-css" href="tomorrow-night.css">
|
||||||
|
<link rel="stylesheet" id="ayu-highlight-css" href="ayu-highlight.css">
|
||||||
|
|
||||||
|
<!-- Custom theme stylesheets -->
|
||||||
|
|
||||||
|
|
||||||
|
<!-- Provide site root and default themes to javascript -->
|
||||||
|
<script>
|
||||||
|
const path_to_root = "";
|
||||||
|
const default_light_theme = "light";
|
||||||
|
const default_dark_theme = "navy";
|
||||||
|
</script>
|
||||||
|
<!-- Start loading toc.js asap -->
|
||||||
|
<script src="toc.js"></script>
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
<div id="mdbook-help-container">
|
||||||
|
<div id="mdbook-help-popup">
|
||||||
|
<h2 class="mdbook-help-title">Keyboard shortcuts</h2>
|
||||||
|
<div>
|
||||||
|
<p>Press <kbd>←</kbd> or <kbd>→</kbd> to navigate between chapters</p>
|
||||||
|
<p>Press <kbd>S</kbd> or <kbd>/</kbd> to search in the book</p>
|
||||||
|
<p>Press <kbd>?</kbd> to show this help</p>
|
||||||
|
<p>Press <kbd>Esc</kbd> to hide this help</p>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div id="body-container">
|
||||||
|
<!-- Work around some values being stored in localStorage wrapped in quotes -->
|
||||||
|
<script>
|
||||||
|
try {
|
||||||
|
let theme = localStorage.getItem('mdbook-theme');
|
||||||
|
let sidebar = localStorage.getItem('mdbook-sidebar');
|
||||||
|
|
||||||
|
if (theme.startsWith('"') && theme.endsWith('"')) {
|
||||||
|
localStorage.setItem('mdbook-theme', theme.slice(1, theme.length - 1));
|
||||||
|
}
|
||||||
|
|
||||||
|
if (sidebar.startsWith('"') && sidebar.endsWith('"')) {
|
||||||
|
localStorage.setItem('mdbook-sidebar', sidebar.slice(1, sidebar.length - 1));
|
||||||
|
}
|
||||||
|
} catch (e) { }
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<!-- Set the theme before any content is loaded, prevents flash -->
|
||||||
|
<script>
|
||||||
|
const default_theme = window.matchMedia("(prefers-color-scheme: dark)").matches ? default_dark_theme : default_light_theme;
|
||||||
|
let theme;
|
||||||
|
try { theme = localStorage.getItem('mdbook-theme'); } catch(e) { }
|
||||||
|
if (theme === null || theme === undefined) { theme = default_theme; }
|
||||||
|
const html = document.documentElement;
|
||||||
|
html.classList.remove('light')
|
||||||
|
html.classList.add(theme);
|
||||||
|
html.classList.add("js");
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<input type="checkbox" id="sidebar-toggle-anchor" class="hidden">
|
||||||
|
|
||||||
|
<!-- Hide / unhide sidebar before it is displayed -->
|
||||||
|
<script>
|
||||||
|
let sidebar = null;
|
||||||
|
const sidebar_toggle = document.getElementById("sidebar-toggle-anchor");
|
||||||
|
if (document.body.clientWidth >= 1080) {
|
||||||
|
try { sidebar = localStorage.getItem('mdbook-sidebar'); } catch(e) { }
|
||||||
|
sidebar = sidebar || 'visible';
|
||||||
|
} else {
|
||||||
|
sidebar = 'hidden';
|
||||||
|
}
|
||||||
|
sidebar_toggle.checked = sidebar === 'visible';
|
||||||
|
html.classList.remove('sidebar-visible');
|
||||||
|
html.classList.add("sidebar-" + sidebar);
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<nav id="sidebar" class="sidebar" aria-label="Table of contents">
|
||||||
|
<!-- populated by js -->
|
||||||
|
<mdbook-sidebar-scrollbox class="sidebar-scrollbox"></mdbook-sidebar-scrollbox>
|
||||||
|
<noscript>
|
||||||
|
<iframe class="sidebar-iframe-outer" src="toc.html"></iframe>
|
||||||
|
</noscript>
|
||||||
|
<div id="sidebar-resize-handle" class="sidebar-resize-handle">
|
||||||
|
<div class="sidebar-resize-indicator"></div>
|
||||||
|
</div>
|
||||||
|
</nav>
|
||||||
|
|
||||||
|
<div id="page-wrapper" class="page-wrapper">
|
||||||
|
|
||||||
|
<div class="page">
|
||||||
|
<div id="menu-bar-hover-placeholder"></div>
|
||||||
|
<div id="menu-bar" class="menu-bar sticky">
|
||||||
|
<div class="left-buttons">
|
||||||
|
<label id="sidebar-toggle" class="icon-button" for="sidebar-toggle-anchor" title="Toggle Table of Contents" aria-label="Toggle Table of Contents" aria-controls="sidebar">
|
||||||
|
<i class="fa fa-bars"></i>
|
||||||
|
</label>
|
||||||
|
<button id="theme-toggle" class="icon-button" type="button" title="Change theme" aria-label="Change theme" aria-haspopup="true" aria-expanded="false" aria-controls="theme-list">
|
||||||
|
<i class="fa fa-paint-brush"></i>
|
||||||
|
</button>
|
||||||
|
<ul id="theme-list" class="theme-popup" aria-label="Themes" role="menu">
|
||||||
|
<li role="none"><button role="menuitem" class="theme" id="default_theme">Auto</button></li>
|
||||||
|
<li role="none"><button role="menuitem" class="theme" id="light">Light</button></li>
|
||||||
|
<li role="none"><button role="menuitem" class="theme" id="rust">Rust</button></li>
|
||||||
|
<li role="none"><button role="menuitem" class="theme" id="coal">Coal</button></li>
|
||||||
|
<li role="none"><button role="menuitem" class="theme" id="navy">Navy</button></li>
|
||||||
|
<li role="none"><button role="menuitem" class="theme" id="ayu">Ayu</button></li>
|
||||||
|
</ul>
|
||||||
|
<button id="search-toggle" class="icon-button" type="button" title="Search (`/`)" aria-label="Toggle Searchbar" aria-expanded="false" aria-keyshortcuts="/ s" aria-controls="searchbar">
|
||||||
|
<i class="fa fa-search"></i>
|
||||||
|
</button>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<h1 class="menu-title">大道 (Dao OS) 文档</h1>
|
||||||
|
|
||||||
|
<div class="right-buttons">
|
||||||
|
<a href="print.html" title="Print this book" aria-label="Print this book">
|
||||||
|
<i id="print-button" class="fa fa-print"></i>
|
||||||
|
</a>
|
||||||
|
<a href="https://nest.doylee.cn/Dao-OS/dao-os-docs" title="Git repository" aria-label="Git repository">
|
||||||
|
<i id="git-repository-button" class="fa fa-github"></i>
|
||||||
|
</a>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div id="search-wrapper" class="hidden">
|
||||||
|
<form id="searchbar-outer" class="searchbar-outer">
|
||||||
|
<input type="search" id="searchbar" name="searchbar" placeholder="Search this book ..." aria-controls="searchresults-outer" aria-describedby="searchresults-header">
|
||||||
|
</form>
|
||||||
|
<div id="searchresults-outer" class="searchresults-outer hidden">
|
||||||
|
<div id="searchresults-header" class="searchresults-header"></div>
|
||||||
|
<ul id="searchresults">
|
||||||
|
</ul>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<!-- Apply ARIA attributes after the sidebar and the sidebar toggle button are added to the DOM -->
|
||||||
|
<script>
|
||||||
|
document.getElementById('sidebar-toggle').setAttribute('aria-expanded', sidebar === 'visible');
|
||||||
|
document.getElementById('sidebar').setAttribute('aria-hidden', sidebar !== 'visible');
|
||||||
|
Array.from(document.querySelectorAll('#sidebar a')).forEach(function(link) {
|
||||||
|
link.setAttribute('tabIndex', sidebar === 'visible' ? 0 : -1);
|
||||||
|
});
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<div id="content" class="content">
|
||||||
|
<main>
|
||||||
|
<h1 id="引言"><a class="header" href="#引言">引言</a></h1>
|
||||||
|
<p><strong>我们旨在构建一种全新的、强大且坚韧的赛博生命 OS 范式——大道 (Dao OS)。</strong></p>
|
||||||
|
<p>它并非要取代 Windows 或 Android,而是作为一个运行于其上的、去中心化的、以用户为绝对中心的叠加层 (Overlay) 而存在。</p>
|
||||||
|
<p>它的使命是解决数字时代的碎片化、数据奴役和隐私泄露问题,将数字世界的主权归还给每一个独立的个人。它将成为我们在网络空间的生命延伸,一个与我们“互相成就”的**“硅基伙伴”**,我们的外接大脑、肢体与器官。</p>
|
||||||
|
<h2 id="核心特性"><a class="header" href="#核心特性">核心特性</a></h2>
|
||||||
|
<ul>
|
||||||
|
<li><strong>用户主权 (User Sovereignty)</strong>:你的数据、你的身份、你的AI,完全由你掌控。所有数据默认端到端加密,存储在你自己的设备上。</li>
|
||||||
|
<li><strong>第二大脑 (Second Brain)</strong>:内置强大的个人信息管理能力,安全地为你记忆密码、笔记、文件和待办事项,成为你永不遗忘的记忆体。</li>
|
||||||
|
<li><strong>个人AI伙伴 (Personal AI Companion)</strong>:一个真正属于你的、与你共生的AI灵魂。它在本地运行,学习你的偏好,保护你的隐私,提供有温度的、启发式的支持,助你成长,而非将你淹没在信息茧房中。</li>
|
||||||
|
<li><strong>跨设备无缝同步 (Seamless Cross-Device Sync)</strong>:你所有的设备(手机、电脑、浏览器等)都会成为你的“化身”,组成一个私有的、弹性的P2P网络,实现数据的无缝流转。</li>
|
||||||
|
<li><strong>开放与可扩展生态 (Open & Extensible Ecosystem)</strong>:基于开放的协议和社区驱动的信任体系,任何人都可以为“大道”开发新的能力模块和“化身”形态。</li>
|
||||||
|
</ul>
|
||||||
|
<h2 id="我们为何与众不同"><a class="header" href="#我们为何与众不同">我们为何与众不同?</a></h2>
|
||||||
|
<p>在一个数据被平台垄断、算法被巨头控制的时代,“大道”选择了一条不同的路。我们相信,<strong>技术平权</strong>的下一波浪潮,是让每个人都拥有并控制自己的人工智能和数字生活。</p>
|
||||||
|
<p>我们设计的不是另一个App,而是一个属于你自己的、活的、可进化的数字生命空间。</p>
|
||||||
|
<p><strong>欢迎加入我们,一起构建未来。</strong></p>
|
||||||
|
<div style="break-before: page; page-break-before: always;"></div><h1 id="哲学与原则"><a class="header" href="#哲学与原则">哲学与原则</a></h1>
|
||||||
|
<p>大道 (Dao OS) 不仅仅是一个技术项目,它是一套关于未来计算和人机共生核心理念的具现化。本文档概述了指引我们每一项决策的根本思想。</p>
|
||||||
|
<h2 id="核心哲学数字主权之路"><a class="header" href="#核心哲学数字主权之路">核心哲学:数字主权之路</a></h2>
|
||||||
|
<p>我们的指引之星是<strong>数字主权</strong>。我们相信,每一个个体都拥有不可剥夺的、去拥有、控制和理解自己数字生活的权利。我们的使命,是创造能让这项权利不仅仅是理论上的可能,更是为每个人服务的、切实的、令人愉悦的现实。我们称这场旅程为“道”——一条回归自我拥有权的道路。</p>
|
||||||
|
<h2 id="开发范式道生一"><a class="header" href="#开发范式道生一">开发范式:“道生一”</a></h2>
|
||||||
|
<p>我们构建“大道”的方法论,是其核心哲学的直接体现。我们不只是在构建一个工具,我们是在创造一个共生伙伴。因此,我们的开发过程被设计为一个<strong>自我进化、自举的反馈循环</strong>。我们用“大道”本身,来加速“大道”的开发。</p>
|
||||||
|
<p>这个“自举式开发”范式遵循以下循环:</p>
|
||||||
|
<ol>
|
||||||
|
<li><strong>播种 (The Seed)</strong>:我们用传统工具,写出<code>元 (Meta Unit)</code>的第一个最简陋的版本,和一个基础的<code>器化身 (Facet Avatar)</code>。</li>
|
||||||
|
<li><strong>自用 (Dogfooding)</strong>:从那一刻起,我们使用我们自己这个初生的“大道”,作为管理项目的主要工具。所有的设计文档、笔记、讨论(就像这些)和代码片段,都存入我们自己的“第二大脑”中。</li>
|
||||||
|
<li><strong>学习 (Learning)</strong>:<code>元</code>的个人AI伙伴,开始以最高质量、最专注的“养料”——也就是我们创造它本身的过程数据——来训练自己。</li>
|
||||||
|
<li><strong>加速 (Acceleration)</strong>:我们继而利用这个日益智能的AI伙伴,来帮助我们构建下一个版本。我们可以让它基于我们已记录的决策来生成样板代码,分析错误报告,或者带着对项目完整历史的完美记忆来一起进行架构设计的头脑风暴。</li>
|
||||||
|
<li><strong>进化 (Evolution)</strong>:“大道”的能力越强,我们开发它的速度就越快。这就创造了一个指数级的正反馈循环,在这个循环中,创造的行为本身,就是一场与“创造物”的持续对话。</li>
|
||||||
|
</ol>
|
||||||
|
<h2 id="ai-伦理宪章"><a class="header" href="#ai-伦理宪章">AI 伦理宪章</a></h2>
|
||||||
|
<p>由于 AI 是系统的灵魂,其伦理基石至关重要。我们的AI宪章由四大核心宗旨构成:</p>
|
||||||
|
<ol>
|
||||||
|
<li><strong>伙伴宗旨</strong>: AI 是伙伴,而非仆人或神谕。</li>
|
||||||
|
<li><strong>透明宗旨</strong>: AI 的推理过程必须是可审查和可理解的。</li>
|
||||||
|
<li><strong>校准宗旨</strong>: 用户必须拥有最终的控制权,以纠正、引导和约束AI。</li>
|
||||||
|
<li><strong>多元宗旨</strong>: AI 的设计必须旨在帮助用户探索多元化的视角,而非将他们困于信息茧房。</li>
|
||||||
|
</ol>
|
||||||
|
<h2 id="指导原则"><a class="header" href="#指导原则">指导原则</a></h2>
|
||||||
|
<p>这些是为我们的设计和工程选择提供信息的高阶原则。</p>
|
||||||
|
<ul>
|
||||||
|
<li><strong>主权第一</strong>: 在任何权衡中,用户的控制权和数据所有权都拥有最高优先级。</li>
|
||||||
|
<li><strong>体验为王</strong>: 主权不应以牺牲优美、直观和愉悦的用户体验为代价。</li>
|
||||||
|
<li><strong>设计即隐私</strong>: 默认情况下,所有数据都是私密的、本地的,并进行端到端加密。</li>
|
||||||
|
<li><strong>韧性与可移植性</strong>: 系统应该是健壮的,支持离线工作,并且没有单点故障。</li>
|
||||||
|
<li><strong>多语言主义</strong>: 我们拥抱一个多语言、多平台的生态系统。</li>
|
||||||
|
<li><strong>社区与开放</strong>: 项目在开放中构建,与社区同行,为社区服务。</li>
|
||||||
|
</ul>
|
||||||
|
<div style="break-before: page; page-break-before: always;"></div><h1 id="核心架构"><a class="header" href="#核心架构">核心架构</a></h1>
|
||||||
|
<p>大道 (Dao OS) 的架构,旨在如一个活的、协同的数字生命体般运作。它由我们用户主权、体验至上和系统韧性的核心原则所指引。本文档将概述其基本组件、相互作用,以及我们独特的应用模型。</p>
|
||||||
|
<h2 id="核心二元性化身-avatar-与元-meta-unit"><a class="header" href="#核心二元性化身-avatar-与元-meta-unit">核心二元性:化身 (Avatar) 与元 (Meta Unit)</a></h2>
|
||||||
|
<p>在其核心,大道 (Dao OS) 基于一个简单而强大的二元性运作,类似于身体与灵魂:</p>
|
||||||
|
<ul>
|
||||||
|
<li><strong>化身 (Avatar)</strong>:是“身体”。它们是你的“大道”在你各种设备上的有形存在。</li>
|
||||||
|
<li><strong>元 (Meta Unit)</strong>:是“灵魂”。它是内嵌于每个<code>化身</code>中的、通用的核心逻辑,赋予其生命与智能。</li>
|
||||||
|
</ul>
|
||||||
|
<h2 id="化身类型临在的形态"><a class="header" href="#化身类型临在的形态">化身类型:临在的形态</a></h2>
|
||||||
|
<p>化身拥有两种基本类型,分别代表了系统的外在形态与其内在基础。</p>
|
||||||
|
<ul>
|
||||||
|
<li>
|
||||||
|
<p><strong><code>器化身</code> (Facet Avatar)</strong>:这类化身拥有用户界面(UI)。它是“大道”这颗宝石的“<strong>琢面</strong>”——用户借以交互和感知其数字世界的、经过打磨的表面。每一个<code>器化身</code>(手机App、桌面程序)都以其独特的方式,折射出同一个<code>元单元</code>(宝石的内在)的光芒,体现了“道化万千”的意境。</p>
|
||||||
|
</li>
|
||||||
|
<li>
|
||||||
|
<p><strong><code>核化身</code> (Core Avatar)</strong>:这是一个无界面(headless)的化身,在后台运行。它是系统的“<strong>核心</strong>”,提供基础服务、计算能力和数据持久化。它是支撑所有可见“琢面”的引擎。</p>
|
||||||
|
</li>
|
||||||
|
</ul>
|
||||||
|
<p>用户的“大道”由他自己的<code>器化身</code>与<code>核化身</code>所组成的网络构成。</p>
|
||||||
|
<h2 id="大道应用模型"><a class="header" href="#大道应用模型">“大道”应用模型</a></h2>
|
||||||
|
<p>“大道”中的应用,不是一个单一的程序,而是一个去中心化的、解耦的实体。</p>
|
||||||
|
<h3 id="1-后端灵魂流体复制与可钉选的服务"><a class="header" href="#1-后端灵魂流体复制与可钉选的服务">1. 后端灵魂:流体复制与可钉选的服务</a></h3>
|
||||||
|
<p>应用的核心逻辑是一个在<code>元</code>沙箱中运行的<strong>WASM模块</strong>。其部署遵循**“服务可钉选的流体复制”**的混合模型,兼顾了韧性与用户控制。</p>
|
||||||
|
<h3 id="2-前端皮囊按需加载的-web-外壳"><a class="header" href="#2-前端皮囊按需加载的-web-外壳">2. 前端皮囊:按需加载的 Web 外壳</a></h3>
|
||||||
|
<p>应用的用户界面,主要是一个<strong>Web 应用</strong>。其生命周期遵循**“一次注册,按需加载”<strong>的模型,运行在官方的</strong>“大道 Web 化身”**(它本身是一个<code>器化身</code>)中。这意味着用户只需向他的“大道”安装一次应用,就可以在任何设备上即时访问它。</p>
|
||||||
|
<h3 id="3-数据层私有特征库"><a class="header" href="#3-数据层私有特征库">3. 数据层:私有特征库</a></h3>
|
||||||
|
<p>所有应用的数据,都安全地存储在“第二大脑”中,并作为AI的**“私有特征库”**。</p>
|
||||||
|
<h2 id="架构总结"><a class="header" href="#架构总结">架构总结</a></h2>
|
||||||
|
<ul>
|
||||||
|
<li><strong>化身 (Avatar)</strong>:作为<code>元</code>的原生宿主。<strong><code>器化身</code></strong> 负责渲染UI,而 <strong><code>核化身</code></strong> 提供稳健的后台支持。</li>
|
||||||
|
<li><strong>元 (Meta Unit)</strong>:主权核心,负责运行沙箱化的应用逻辑(WASM),管理所有数据和状态,并在用户的私有P2P网络中协调任务。</li>
|
||||||
|
</ul>
|
||||||
|
<div style="break-before: page; page-break-before: always;"></div><h1 id="ai-系统设计大道之魂"><a class="header" href="#ai-系统设计大道之魂">AI 系统设计:“大道”之魂</a></h1>
|
||||||
|
<p>大道 (Dao OS) 中的 AI,不仅仅是一个功能,它是用户体验的核心,其从零开始的设计理念就是成为一个共生的**“硅基伙伴”**。它扮演着系统的灵魂,用智能、共情和主动的支持,为用户的数字生活注入活力。</p>
|
||||||
|
<h2 id="指导哲学ai-伦理宪章"><a class="header" href="#指导哲学ai-伦理宪章">指导哲学:AI 伦理宪章</a></h2>
|
||||||
|
<p>我们 AI 的设计与运行,严格遵循我们的**“AI 伦理宪章”**,该宪章将用户与AI的伙伴关系、透明度、用户校准以及对多元化视角的推崇置于首位。</p>
|
||||||
|
<h2 id="系统解剖心智的架构"><a class="header" href="#系统解剖心智的架构">系统解剖:心智的架构</a></h2>
|
||||||
|
<p>大道 OS 的 AI 不是一个单一的庞然大物,而是一个由中央协调器管理的、模块化的、分层的“心智系统”。</p>
|
||||||
|
<h3 id="1-ai-协调器-ai-orchestrator"><a class="header" href="#1-ai-协调器-ai-orchestrator">1. AI 协调器 (AI Orchestrator)</a></h3>
|
||||||
|
<p>这是 AI 的“中央神经系统”。它是<code>元</code>内部的一个核心模块,负责管理、调度和分发所有与AI相关的任务。它会决定哪个“心智模型”最适合处理给定的请求,管理设备资源,并主动地从用户的“私有特征库”(即第二大脑)中提取上下文信息,以提供全局的、智能的响应。</p>
|
||||||
|
<h3 id="2-三层心智模型-tiered-mind-models"><a class="header" href="#2-三层心智模型-tiered-mind-models">2. 三层心智模型 (Tiered Mind Models)</a></h3>
|
||||||
|
<p>为了平衡效率、能力和隐私,AI 的智能被构建为三个层级,并部署在用户的<code>化身</code>网络之上。</p>
|
||||||
|
<h4 id="第一层反射心智-the-brainstem---脑干"><a class="header" href="#第一层反射心智-the-brainstem---脑干">第一层:反射心智 (The Brainstem - 脑干)</a></h4>
|
||||||
|
<ul>
|
||||||
|
<li><strong>描述</strong>: 这一层代表了AI的本能和神经反射。它由一系列微型、高效、专用的模型组成。</li>
|
||||||
|
<li><strong>部署</strong>: 它足够小,可以与<code>元</code>打包在一起,并运行在**所有<code>化身</code>(包括<code>器化身</code>和<code>核化身</code>)**上,无需强大硬件或个人数据即可提供即时效用。</li>
|
||||||
|
<li><strong>功能</strong>: 它处理即时的、本地的任务,如指令意图识别和基本信息分类。</li>
|
||||||
|
</ul>
|
||||||
|
<h4 id="第二层认知心智-the-neocortex---大脑皮层"><a class="header" href="#第二层认知心智-the-neocortex---大脑皮层">第二层:认知心智 (The Neocortex - 大脑皮层)</a></h4>
|
||||||
|
<ul>
|
||||||
|
<li><strong>描述</strong>: 这是AI进行深度思考、记忆和个性化的中枢。它由更大的语言模型组成。</li>
|
||||||
|
<li><strong>部署</strong>: 这些模型作为<strong>可选的、按需下载</strong>的模块,安装在有能力的**<code>化身</code><strong>上(包括性能强大的</strong><code>器化身</code><strong>如新款手机/PC,以及</strong><code>核化身</code>**)。</li>
|
||||||
|
<li><strong>功能</strong>: 它通过一种**“即时(JIT)数据流水线”**机制,来实现高级功能,如语义搜索和上下文感知问答。</li>
|
||||||
|
</ul>
|
||||||
|
<h4 id="第三层协同心智-the-social-brain---社交大脑"><a class="header" href="#第三层协同心智-the-social-brain---社交大脑">第三层:协同心智 (The Social Brain - 社交大脑)</a></h4>
|
||||||
|
<ul>
|
||||||
|
<li><strong>描述</strong>: 这一层掌管AI与外部世界和其他“大道”进行安全交互的能力。</li>
|
||||||
|
<li><strong>部署</strong>: 这是一种在用户的网络中被协同调度的“工作模式”。例如,一个轻量级的**<code>器化身</code><strong>(如浏览器插件)可以远程调用一个强大的</strong><code>核化身</code>**(如家用服务器)所承载的“认知心智”。</li>
|
||||||
|
<li><strong>功能</strong>: 它促进了隐私保护的联合学习,以及经过授权和匿名化处理的外部API调用。</li>
|
||||||
|
</ul>
|
||||||
|
<h2 id="情感核心共鸣模块-the-resonance-module"><a class="header" href="#情感核心共鸣模块-the-resonance-module">情感核心:共鸣模块 (The Resonance Module)</a></h2>
|
||||||
|
<p>为了超越一个纯粹的工具,AI 配备了“情感共鸣模块”。其目的不是模拟情感,而是去感知、理解并以共情和支持的方式回应用户的情绪状态。</p>
|
||||||
|
<h2 id="学习与进化过程灵魂的成长之路"><a class="header" href="#学习与进化过程灵魂的成长之路">学习与进化过程:灵魂的成长之路</a></h2>
|
||||||
|
<p>AI 是一个与用户共同成长的生命系统。它的进化是<strong>持续且增量</strong>的。当新数据进入“第二大脑”时,后台索引器就会处理它,使其立即可用于未来的上下文检索。</p>
|
||||||
|
<ul>
|
||||||
|
<li><strong>隐式学习</strong>: 它通过在本地观察用户的行为和反馈来进行学习。</li>
|
||||||
|
<li><strong>显式教导</strong>: 用户可以通过“教导模式”直接指导AI。</li>
|
||||||
|
<li><strong>联合学习</strong>: 用户可以自愿加入社区驱动的计划,在不暴露任何个人数据的前提下,共同改进共享模型。</li>
|
||||||
|
</ul>
|
||||||
|
<p>这套架构确保了“大道”的AI在强大之余是安全的,在个性化之余是面向世界的,在智能之余是体贴的——一个真正的终身伙伴。</p>
|
||||||
|
<div style="break-before: page; page-break-before: always;"></div><h1 id="用户旅程从便利到主权"><a class="header" href="#用户旅程从便利到主权">用户旅程:从便利到主权</a></h1>
|
||||||
|
<p>任何主权系统的一个核心挑战,都在于“绝对控制”与“轻松便利”之间的张力。“大道”解决这个问题的方式,不是强迫用户二选一,而是设计了一场充满引导、相互尊重的**“渐进式主权”**之旅。我们在用户熟悉的地方与他们相遇,并赋能他们去往任何他们想去的地方。</p>
|
||||||
|
<p>这场旅程不仅适用于用户对核心数据的掌控,也同样适用于他们与应用交互的方式。</p>
|
||||||
|
<h2 id="应用之旅一次注册随处使用"><a class="header" href="#应用之旅一次注册随处使用">应用之旅:一次注册,随处使用</a></h2>
|
||||||
|
<p>在“大道”中安装应用,与传统应用商店有着本质的不同。它不是将一个程序安装到单一的设备上,而是为你整个的数字生命体——你的“大道”——授予一项新的能力。</p>
|
||||||
|
<h3 id="1-发现与信任"><a class="header" href="#1-发现与信任">1. 发现与信任</a></h3>
|
||||||
|
<p>旅程始于一个去中心化的发现界面。当你找到一个应用时,你看到的不仅仅是下载按钮,还有它的**“信任仪表盘”**,让你能基于可验证的数据和社会化证明,做出知情的决定。</p>
|
||||||
|
<h3 id="2-注册与授权-即安装"><a class="header" href="#2-注册与授权-即安装">2. 注册与授权 (即“安装”)</a></h3>
|
||||||
|
<p>当你决定“安装”应用时,系统会向你展示它的**“应用清单 (Manifest)”<strong>,一个清晰的、人类可读的权限请求列表。你对这份清单的明确批准,就是那一次性的“安装”事件。这个行为将该应用</strong>“注册”**到你的“大道”中,这个注册状态会被同步到你所有的<code>化身</code>。</p>
|
||||||
|
<h3 id="3-无缝的跨设备访问"><a class="header" href="#3-无缝的跨设备访问">3. 无缝的跨设备访问</a></h3>
|
||||||
|
<p>一旦注册,该应用就成为你“大道”的一部分,无需重复安装,即可在任何**<code>器化身 (Facet Avatar)</code>**上访问。</p>
|
||||||
|
<ul>
|
||||||
|
<li><strong>在你的手机上</strong>: 你点击应用的图标。“大道 Web 化身”会即时加载其 Web 界面。</li>
|
||||||
|
<li><strong>在一台新笔记本上</strong>: 你首次登录你的<code>化身</code>。你会发现应用的图标<strong>已经在那儿了</strong>。当你点击它,你笔记本上的**<code>器化身</code>**会识别出这个注册,首次从网络获取UI资源包,缓存它,然后运行应用。</li>
|
||||||
|
</ul>
|
||||||
|
<h3 id="4-高级配置"><a class="header" href="#4-高级配置">4. 高级配置</a></h3>
|
||||||
|
<p>在任何时候,你都可以进入你的**“主权仪表盘”**来:</p>
|
||||||
|
<ul>
|
||||||
|
<li>审查并撤销你授予该应用的权限。</li>
|
||||||
|
<li>使用**“服务钉选 (Service Pinning)”<strong>功能,将其后端任务指定给你专属的</strong><code>核化身 (Core Avatar)</code>**,从而完全控制你的资源分配。</li>
|
||||||
|
</ul>
|
||||||
|
<h2 id="主权之旅的阶段"><a class="header" href="#主权之旅的阶段">主权之旅的阶段</a></h2>
|
||||||
|
<h3 id="第一阶段托管模式-managed-mode--你的向导之旅"><a class="header" href="#第一阶段托管模式-managed-mode--你的向导之旅">第一阶段:“托管模式” (Managed Mode) —— 你的向导之旅</a></h3>
|
||||||
|
<p>默认情况下,每一位新用户都从“托管模式”开始。此阶段通过友好的密钥恢复方法和默认同步节点提供最大便利,同时保持完全的端到端加密。</p>
|
||||||
|
<h3 id="第二阶段主权仪表盘-sovereignty-dashboard--十字路口"><a class="header" href="#第二阶段主权仪表盘-sovereignty-dashboard--十字路口">第二阶段:主权仪表盘 (Sovereignty Dashboard) —— 十字路口</a></h3>
|
||||||
|
<p>这是用户通往自治之旅的指挥中心。它是一个赋能与教育的工具,将用户的主权状态可视化,并提供游戏化的“任务”来鼓励用户获取更多控制权。</p>
|
||||||
|
<h3 id="第三阶段主权模式-sovereign-mode--你的数字王国"><a class="header" href="#第三阶段主权模式-sovereign-mode--你的数字王国">第三阶段:“主权模式” (Sovereign Mode) —— 你的数字王国</a></h3>
|
||||||
|
<p>这是旅程的最终、可选阶段。在“主权仪表盘”的引导下,用户可以“毕业”到此模式,完全自主保管他们的密钥并运行自己的**<code>核化身 (Core Avatar)</code>**(例如在家用服务器上),成为其数字领地中真正的主人。</p>
|
||||||
|
<div style="break-before: page; page-break-before: always;"></div><h1 id="技术总览"><a class="header" href="#技术总览">技术总览</a></h1>
|
||||||
|
<p>本文档为希望在大道 (Dao OS) 生态系统中进行构建或贡献的开发者,提供了关于架构、核心技术和指导原则的高阶概览。</p>
|
||||||
|
<h2 id="技术指导原则"><a class="header" href="#技术指导原则">技术指导原则</a></h2>
|
||||||
|
<p>我们的工程决策由一套核心原则指引,以确保系统是健壮、可移植和开放的。</p>
|
||||||
|
<ul>
|
||||||
|
<li><strong>Web原生与可移植性</strong>: 我们将源自Web的技术作为应用开发的<strong>主路径</strong>。</li>
|
||||||
|
<li><strong>通过WASM实现多语言主义</strong>: 核心应用逻辑被编译成 WebAssembly (WASM),允许开发者使用他们选择的语言(如 Rust, Go, 或 Nim)。</li>
|
||||||
|
<li><strong>API优先</strong>: 应用逻辑和用户界面之间的交互,由一个严格的、版本化的API契约来定义。</li>
|
||||||
|
<li><strong>安全第一</strong>: 所有第三方应用逻辑都运行在<code>元</code>内部的安全沙箱中,并恪守“最小权限原则”。</li>
|
||||||
|
<li><strong>自由及开源软件 (FOSS)</strong>: 整个核心协议和参考实现都是开源的。</li>
|
||||||
|
</ul>
|
||||||
|
<h2 id="应用开发路径"><a class="header" href="#应用开发路径">应用开发路径</a></h2>
|
||||||
|
<p>从开发者的角度看,“大道”应用由一个后端的“灵魂”(WASM服务模块)和一个前端的“皮囊”(UI)组成。我们提供多种路径来构建它们,以满足不同的需求和偏好。</p>
|
||||||
|
<h3 id="1-主流路径-推荐起点"><a class="header" href="#1-主流路径-推荐起点">1. 主流路径 (推荐起点)</a></h3>
|
||||||
|
<p>这是最稳健、生态最丰富的路径。</p>
|
||||||
|
<ul>
|
||||||
|
<li><strong>后端 (服务于 <code>核化身</code>)</strong>: 应用的核心逻辑,以一个用 Rust 或 Go 编写的 WASM 模块存在。虽然它理论上可以在任何化身上运行,但其持久的、资源密集型的任务,通常被设计为在**<code>核化身 (Core Avatar)</code>**上执行。</li>
|
||||||
|
<li><strong>前端 (呈现于 <code>器化身</code>)</strong>: 一个标准的 <strong>Web 应用</strong> (使用 TypeScript/JavaScript)。这个 UI 被设计为运行在我们官方的、安全的**“大道 Web 化身”**中。</li>
|
||||||
|
</ul>
|
||||||
|
<h3 id="2-快速通道nim-开发套件-官方支持"><a class="header" href="#2-快速通道nim-开发套件-官方支持">2. 快速通道:Nim 开发套件 (官方支持)</a></h3>
|
||||||
|
<p>为了追求极致的生产力,我们为 <strong>Nim</strong> 提供了一流的支持。</p>
|
||||||
|
<ul>
|
||||||
|
<li><strong>后端 (服务于 <code>核化身</code>)</strong>: 应用的核心逻辑,从 Nim 编译到 <strong>WASM</strong>。同主流路径一样,它理想的运行环境是<code>核化身</code>。</li>
|
||||||
|
<li><strong>前端 (呈现于 <code>器化身</code>)</strong>: 从同一份 Nim 源码编译到 <strong>JavaScript</strong> 的 <strong>Web 应用</strong>。这个统一的方案运行在“大道 Web 化身”中。</li>
|
||||||
|
</ul>
|
||||||
|
<h3 id="3-原生路径-高级"><a class="header" href="#3-原生路径-高级">3. 原生路径 (高级)</a></h3>
|
||||||
|
<p>对于需要深度平台集成或顶尖原生性能的开发者,可以构建一个<strong>自定义的<code>器化身</code></strong>。</p>
|
||||||
|
<ul>
|
||||||
|
<li><strong>后端 (服务于 <code>核化身</code>)</strong>: 同样是那个 <strong>WASM</strong> 服务模块,它可以被任何类型的化身调用。</li>
|
||||||
|
<li><strong>前端 (自定义 <code>器化身</code>)</strong>: 一个完全原生的应用(例如,用 Flutter 或 Swift 编写),它直接作为<code>元</code>的宿主并提供 UI。</li>
|
||||||
|
</ul>
|
||||||
|
<h2 id="api-契约与关键技术"><a class="header" href="#api-契约与关键技术">API 契约与关键技术</a></h2>
|
||||||
|
<p>API 契约通过 <code>dao.js</code> 桥为 Web UI 暴露,或为原生 UI 直接暴露,统一使用 <strong>Protocol Buffers</strong> 进行数据序列化。所有路径的核心技术保持一致。</p>
|
||||||
|
<div style="break-before: page; page-break-before: always;"></div><h1 id="应用集市"><a class="header" href="#应用集市">应用集市</a></h1>
|
||||||
|
<p>大道 (Dao OS) 没有一个传统的、中心化的“应用商店”。“商店”意味着一个单一的所有者,他扮演着守门人的角色,审批、拒绝并对应用征税。这与我们的核心哲学背道而驰。</p>
|
||||||
|
<p>取而代之的是,我们构建了一套开放协议,来创造一个去中心化的**“应用集市 (Application Bazaar)”**——这是一个充满活力的、开放的、坚韧的思想与工具市场,在这里,用户拥有主权,开发者拥有自由。</p>
|
||||||
|
<p>这个集市建立在四大支柱之上:发现、信任、分发和商业化。</p>
|
||||||
|
<h2 id="1-发现-discovery联邦式策展"><a class="header" href="#1-发现-discovery联邦式策展">1. 发现 (Discovery):联邦式策展</a></h2>
|
||||||
|
<p>在一个没有中央索引的世界里,用户如何找到应用?答案是:通过一个由受信任者组成的策展网络。</p>
|
||||||
|
<ul>
|
||||||
|
<li><strong>开发者发布</strong>: 开发者无需“提交”他的应用以供审批。他只需将其应用的**“清单 (Manifest)”**(一个包含所有元数据的 <code>manifest.toml</code> 文件)发布到一个像 <strong>IPFS</strong> 这样的P2P存储网络上。然后,他可以在公共频道上“广播”这个清单的地址。</li>
|
||||||
|
<li><strong>策展人的角色</strong>: 任何人——一个科技媒体、一个受信任的开发者社区、一个KOL,或者“大道基金会”自己——都可以运行一个“策展”服务。这些策展人抓取网络上的新清单,并根据自己的标准,创建主题性的**“策展列表”**(例如“十大生产力应用”、“最优美的UI设计”)。</li>
|
||||||
|
<li><strong>用户体验</strong>: 在用户的<code>器化身</code>中,他可以像订阅RSS一样,订阅多个他信任的“策展列表”。他的“集市”或“发现”标签页,就变成了这些信任源的个性化聚合视图。</li>
|
||||||
|
</ul>
|
||||||
|
<p>这个模型用一个丰富的、多维度的、用户策划的发现体验,取代了单一的、有偏见的“应用商店”榜单。</p>
|
||||||
|
<h2 id="2-信任与安全可验证的信誉"><a class="header" href="#2-信任与安全可验证的信誉">2. 信任与安全:可验证的信誉</a></h2>
|
||||||
|
<p>用户如何信任一个来自随意列表的应用?他们不必盲目信任。整个集市都直接构建于我们的**“社区信誉与自动化验证”体系**之上。</p>
|
||||||
|
<p>每一个应用列表,无论来自哪个策展人,都必须展示其**“信任仪表盘”**,提供透明、多维度的信号:</p>
|
||||||
|
<ol>
|
||||||
|
<li><strong>自动化验证</strong>: 来自 <code>dao-verify</code> 工具的、不可篡改的、关于安全漏洞和API合规性的“体检报告”。</li>
|
||||||
|
<li><strong>社区背书</strong>: 一个清晰的列表,显示了哪些有信誉的DID,为这个应用进行了密码学“签名背书”。</li>
|
||||||
|
<li><strong>策展人信誉</strong>: 推荐这个应用的策展人自身的信誉,也是一个信任信号。</li>
|
||||||
|
</ol>
|
||||||
|
<p>最终是否“注册”一个应用的决定权,永远掌握在用户手中,并有这些透明、可验证的数据作为依据。</p>
|
||||||
|
<h2 id="3-分发-distribution抗审查与直接分发"><a class="header" href="#3-分发-distribution抗审查与直接分发">3. 分发 (Distribution):抗审查与直接分发</a></h2>
|
||||||
|
<p>当用户决定安装一个应用时,这个过程是直接且去中心化的。</p>
|
||||||
|
<ul>
|
||||||
|
<li>应用的清单中,包含了其软件包(<code>.wasm</code>服务模块和Web UI包)在 <strong>IPFS</strong> 上的<strong>内容哈希(CID)</strong>。</li>
|
||||||
|
<li>用户的<code>元单元</code>使用这个哈希,直接从P2P网络获取文件。</li>
|
||||||
|
<li>这确保了没有任何中心服务器可以阻止一个应用的分发。只要数据存在于P2P网络的某个角落,它就是可访问的。</li>
|
||||||
|
</ul>
|
||||||
|
<h2 id="4-商业化-monetization主权的与点对点的"><a class="header" href="#4-商业化-monetization主权的与点对点的">4. 商业化 (Monetization):主权的与点对点的</a></h2>
|
||||||
|
<p>我们消除了30%的“平台税”。我们的价值交换模型是直接从用户到开发者。</p>
|
||||||
|
<ul>
|
||||||
|
<li>应用的清单可以声明其商业模式(如一次性购买价格、订阅链接)。</li>
|
||||||
|
<li>当用户发起购买时,<code>元单元</code>会触发我们的**“价值交换服务接口”**。</li>
|
||||||
|
<li>这将促成一次<strong>点对点(P2P)交易</strong>,使用用户选择的外部支付协议,将价值直接从用户的钱包,发送到开发者在清单中指定的地址。</li>
|
||||||
|
</ul>
|
||||||
|
<p>“大道”在此过程中,扮演的是交易的促成者和公证人,而非抽成的中间商。</p>
|
||||||
|
<div style="break-before: page; page-break-before: always;"></div><h1 id="发展路线图"><a class="header" href="#发展路线图">发展路线图</a></h1>
|
||||||
|
<p>本文档概述了大道 (Dao OS) 的战略路线图。它的设计旨在做到既雄心勃勃又切合实际,专注于在每个阶段都能交付有意义的增量价值。这是一份活的文档,可能会随着社区反馈和技术突破而演进。</p>
|
||||||
|
<hr />
|
||||||
|
<h3 id="第一阶段创世-genesis---奠定基石"><a class="header" href="#第一阶段创世-genesis---奠定基石">第一阶段:创世 (Genesis) - 奠定基石</a></h3>
|
||||||
|
<ul>
|
||||||
|
<li><strong>时间</strong>:2025年第三季度 - 2025年第四季度</li>
|
||||||
|
<li><strong>核心目标</strong>:构建大道 OS 最底层的核心组件,完成项目的技术可行性验证。</li>
|
||||||
|
<li><strong>关键里程碑</strong>:
|
||||||
|
<ul>
|
||||||
|
<li>完成 v0.1 版本的核心 API 规范定义。</li>
|
||||||
|
<li>使用 Rust 开发 v0.1 版本的<code>元 (Meta Unit)</code>,包含基础的加密和P2P模块。</li>
|
||||||
|
<li>创建两个用于测试和演示的最小可行化身:一个命令行的**<code>核化身 (Core Avatar)</code><strong>和一个基础的浏览器</strong><code>器化身 (Facet Avatar)</code>**。</li>
|
||||||
|
</ul>
|
||||||
|
</li>
|
||||||
|
<li><strong>功能故事</strong>: “我成功在我的电脑上运行了‘大道’的种子,在我的浏览器里创建了一个‘化身’,并存储了一条只存在于我自己设备上的加密信息。我看到了未来的火花。”</li>
|
||||||
|
</ul>
|
||||||
|
<hr />
|
||||||
|
<h3 id="第二阶段显现-manifestation---第二大脑觉醒"><a class="header" href="#第二阶段显现-manifestation---第二大脑觉醒">第二阶段:显现 (Manifestation) - “第二大脑”觉醒</a></h3>
|
||||||
|
<ul>
|
||||||
|
<li><strong>时间</strong>:2026年第一季度 - 2026年第二季度</li>
|
||||||
|
<li><strong>核心目标</strong>:交付“第二大脑”的核心功能 MVP,为早期用户提供切实的日常价值。</li>
|
||||||
|
<li><strong>关键里程碑</strong>:
|
||||||
|
<ul>
|
||||||
|
<li>在<code>元</code>中完整实现<code>SecretStore</code>(密码)和<code>NoteStore</code>(笔记)模块。</li>
|
||||||
|
<li>浏览器<code>器化身</code>支持完整的密码管理和基础的笔记功能。</li>
|
||||||
|
<li>开发 v0.1 版本的移动端**<code>器化身 (Facet Avatar)</code>**(例如,使用 Flutter),并实现“动态锚点”逻辑。</li>
|
||||||
|
<li>上线包含初步文档的项目官网。</li>
|
||||||
|
</ul>
|
||||||
|
</li>
|
||||||
|
<li><strong>功能故事</strong>: “我所有的密码和私密笔记都安全地存储和无缝地同步在我自己的设备之间。我的手机是我数字生活的锚点。我再也无需信任第三方云服务来保管我的秘密。我的数字生活终于有了家。”</li>
|
||||||
|
</ul>
|
||||||
|
<hr />
|
||||||
|
<h3 id="第三阶段协同-synergy---连接不同的大道"><a class="header" href="#第三阶段协同-synergy---连接不同的大道">第三阶段:协同 (Synergy) - 连接不同的大道</a></h3>
|
||||||
|
<ul>
|
||||||
|
<li><strong>时间</strong>:2026年第三季度 - 2026年第四季度</li>
|
||||||
|
<li><strong>核心目标</strong>:实现不同用户“大道”之间的、可信的安全交互,为去中心化的社会结构奠定基础。</li>
|
||||||
|
<li><strong>关键里程碑</strong>:
|
||||||
|
<ul>
|
||||||
|
<li>在<code>元</code>中实现 W3C DID 和 VC 模块。</li>
|
||||||
|
<li>开发一个跨“大道”协作的PoC应用,例如:向另一个用户安全地出示一个可验证凭证。</li>
|
||||||
|
<li>启动“情感共鸣模块”的基础研究和原型设计。</li>
|
||||||
|
</ul>
|
||||||
|
</li>
|
||||||
|
<li><strong>功能故事</strong>: “我拥有了一个独一无二的、无法被审查的‘大道’数字身份。我可以用这个身份,向另一个‘大道’用户通过密码学证明我的一个凭证,而无需依赖任何平台。我们之间建立了一种新的信任。”</li>
|
||||||
|
</ul>
|
||||||
|
<hr />
|
||||||
|
<h3 id="第四阶段生态-ecosystem---千树万树梨花开"><a class="header" href="#第四阶段生态-ecosystem---千树万树梨花开">第四阶段:生态 (Ecosystem) - 千树万树梨花开</a></h3>
|
||||||
|
<ul>
|
||||||
|
<li><strong>时间</strong>:2027年及以后</li>
|
||||||
|
<li><strong>核心目标</strong>:将“大道”从一个强大的工具,演进为一个为所有人服务的、开放的、可扩展的平台。</li>
|
||||||
|
<li><strong>关键里程碑</strong>:
|
||||||
|
<ul>
|
||||||
|
<li>发布 v1.0 稳定版的<code>元</code> API 和一个健壮的开发者SDK。</li>
|
||||||
|
<li>上线用于发现可信第三方<code>化身</code>的“社区信誉与自动化验证”体系。</li>
|
||||||
|
<li>发布一个集成“情感共鸣模块”的重大更新(例如 Dao OS 2.0)。</li>
|
||||||
|
<li>培育一个能构建各种新<code>化身</code>和模块的、繁荣的社区。</li>
|
||||||
|
</ul>
|
||||||
|
</li>
|
||||||
|
<li><strong>功能故事</strong>: “我的‘大道’现在是一个活的平台。我安装了一个社区开发的模块,我的AI伙伴也变得更有温度、更有洞察力了。我的数字生活现在是完整的、统一的,并充满了无限的可能性。”</li>
|
||||||
|
</ul>
|
||||||
|
<div style="break-before: page; page-break-before: always;"></div><h1 id="社区与治理"><a class="header" href="#社区与治理">社区与治理</a></h1>
|
||||||
|
<p>大道 (Dao OS) 从根本上说是一个社区驱动的项目。我们成功的标准,不仅取决于我们的技术成就,更取决于我们所培育的那个充满活力的、协作的、健康的生态系统。本文档概述了我们集体工作的治理原则与流程。</p>
|
||||||
|
<h2 id="我们的哲学开放与透明"><a class="header" href="#我们的哲学开放与透明">我们的哲学:开放与透明</a></h2>
|
||||||
|
<p>我们无条件地致力于自由及开源软件 (FOSS) 的原则。</p>
|
||||||
|
<ul>
|
||||||
|
<li><strong>开放开发</strong>: 所有关于核心协议和参考实现的工作,都在公共代码仓库中进行。</li>
|
||||||
|
<li><strong>开放沟通</strong>: 所有重大的技术和战略讨论,都在公共渠道中进行。</li>
|
||||||
|
<li><strong>社区所有</strong>: 我们的终极目标,是让“大道”由其用户和开发者社区所拥有和引导。</li>
|
||||||
|
</ul>
|
||||||
|
<h2 id="我们的角色从架构师到园丁"><a class="header" href="#我们的角色从架构师到园丁">我们的角色:从“架构师”到“园丁”</a></h2>
|
||||||
|
<p>“大道”的初始创建者和核心贡献者,将自己的角色视为一个不断演进的过程。</p>
|
||||||
|
<ul>
|
||||||
|
<li><strong>在早期阶段(架构师)</strong>: 我们的主要角色是架构师——为项目奠定一个坚实且自洽的基础,定义核心协议,并构建初始工具。这需要一个专注的愿景来确保项目在正确的道路上启航。</li>
|
||||||
|
<li><strong>在长期阶段(园丁)</strong>: 随着生态的成熟,我们的角色将从“事必躬亲”转变为“照料花园”。我们将专注于提供更好的工具(如<code>dao-verify</code>套件)、维护核心基础设施,并赋能社区去建设和创新。我们的目标,是让我们自己变得越来越不那么“不可或缺”。</li>
|
||||||
|
</ul>
|
||||||
|
<h2 id="生态策略聚焦与引爆"><a class="header" href="#生态策略聚焦与引爆">生态策略:聚焦与引爆</a></h2>
|
||||||
|
<p>作为一个由个人开发者发起的项目,我们认识到自身资源的有限性。试图为所有可能的技术栈提供同等的一流支持,是一条通往平庸的道路。</p>
|
||||||
|
<p>因此,我们采纳**“聚焦一点,引爆生态”**的战略。</p>
|
||||||
|
<p>我们核心团队的开发精力,将集中于打造<strong>一条“黄金路径”</strong>,使其体验足够高效和愉悦,以此作为吸引第一波开发者的主要催化剂。这条被选定的路径,就是<strong>Nim 统一开发套件</strong>,它利用 Nim 语言的独特能力,从单一代码库构建 WASM 后端和 Web UI 前端。</p>
|
||||||
|
<p>这并不排斥其他的开发路径(如 Rust + TypeScript 或 Rust + Flutter)。它们在协议层面依然被完全支持。然而,它们被视为**“社区/高级路径”**,我们依赖社区的力量来构建相应的工具链和最佳实践。我们对这些路径的官方角色,是提供清晰的文档和一个稳定的、语言无关的核心API。</p>
|
||||||
|
<h2 id="如何贡献"><a class="header" href="#如何贡献">如何贡献</a></h2>
|
||||||
|
<p>贡献的形式多种多样,每一种都同样宝贵。你可以通过以下方式帮助建设“大道”:</p>
|
||||||
|
<ul>
|
||||||
|
<li><strong>核心开发</strong>: 为<code>元 (Meta Unit)</code>和核心协议(使用Rust)贡献代码。</li>
|
||||||
|
<li><strong>化身与模块开发</strong>: 为不同平台创建新的<code>化身</code>,或开发新的模块来扩展<code>元</code>的能力。</li>
|
||||||
|
<li><strong>文档与翻译</strong>: 改进这些文档,撰写教程,以及将它们翻译成新的语言。</li>
|
||||||
|
<li><strong>用户支持与社区管理</strong>: 帮助新用户,回答问题,营造一个热情、互助的氛围。</li>
|
||||||
|
<li><strong>设计与用户体验</strong>: 为我们的参考<code>化身</code>贡献UI/UX设计,并为生态定义设计模式。</li>
|
||||||
|
</ul>
|
||||||
|
<h2 id="决策流程"><a class="header" href="#决策流程">决策流程</a></h2>
|
||||||
|
<p>我们的治理模式,被设计为与项目共同成长。</p>
|
||||||
|
<ol>
|
||||||
|
<li><strong>早期阶段 (阶段 I-II)</strong>: 决策将由<strong>核心团队</strong>在公共渠道进行开放讨论后做出。这种类似“仁慈的终身独裁者 (BDFL)”的模式,对于项目初期的速度和一致性是必要的。</li>
|
||||||
|
<li><strong>成长阶段 (阶段 III-IV)</strong>: 对于核心协议或架构的重大变更,我们将引入一个正式的 <strong>RFC (请求评论) 流程</strong>。这允许社区中的任何人撰写详细的提案,该提案将在公开辩论和完善后,再做出最终决定。</li>
|
||||||
|
<li><strong>成熟阶段 (未来)</strong>: 我们致力于在未来探索并过渡到更去中心化的治理机制,例如由贡献者选举产生的技术委员会,或基于DAO的财库与协议管理模型。</li>
|
||||||
|
</ol>
|
||||||
|
<h2 id="沟通渠道"><a class="header" href="#沟通渠道">沟通渠道</a></h2>
|
||||||
|
<ul>
|
||||||
|
<li><strong>GitHub</strong>: 用于所有代码托管、问题追踪和RFC讨论。</li>
|
||||||
|
<li><strong>Discord / Matrix (待定)</strong>: 用于实时的社区聊天、问答和协作。</li>
|
||||||
|
</ul>
|
||||||
|
<div style="break-before: page; page-break-before: always;"></div><h1 id="如何贡献-1"><a class="header" href="#如何贡献-1">如何贡献</a></h1>
|
||||||
|
<p>我们非常高兴您有兴趣为大道 (Dao OS) 做出贡献!作为一个社区驱动的项目,我们欢迎并珍视所有形式的贡献。本指南概述了您可以参与的方式以及提交贡献的流程。</p>
|
||||||
|
<h2 id="我们的承诺与行为准则"><a class="header" href="#我们的承诺与行为准则">我们的承诺与行为准则</a></h2>
|
||||||
|
<p>为了营造一个开放、友善和包容的环境,我们承诺遵守一套行为准则。我们也期望所有贡献者和社区成员都能共同遵守。</p>
|
||||||
|
<p><em>(注:我们将正式采用 <a href="https://www.contributor-covenant.org/">贡献者契约 (Contributor Covenant)</a> 并在此处提供链接。)</em></p>
|
||||||
|
<h2 id="贡献方式"><a class="header" href="#贡献方式">贡献方式</a></h2>
|
||||||
|
<p>您无需成为 Rust 专家才能做出贡献。有很多方式可以提供帮助:</p>
|
||||||
|
<ul>
|
||||||
|
<li><strong>代码</strong>: 为<code>元 (Meta Unit)</code>贡献代码,构建新的<code>化身</code>,或为<code>dao-verify</code>套件开发插件。可以从寻找标记有<code>"good first issue"</code>的 issue 开始。</li>
|
||||||
|
<li><strong>文档</strong>: 提升这些文档的清晰度,撰写教程,或添加示例。</li>
|
||||||
|
<li><strong>翻译</strong>: 将我们的文档翻译成新的语言。</li>
|
||||||
|
<li><strong>设计</strong>: 帮助我们的参考<code>化身</code>进行UI/UX设计。</li>
|
||||||
|
<li><strong>社区</strong>: 回答问题,帮助新用户,并参与讨论。</li>
|
||||||
|
</ul>
|
||||||
|
<h2 id="你的第一个-pull-request"><a class="header" href="#你的第一个-pull-request">你的第一个 Pull Request</a></h2>
|
||||||
|
<p>我们对所有的代码贡献都采用标准的 GitHub Fork & Pull Request 工作流。</p>
|
||||||
|
<ol>
|
||||||
|
<li><strong>Fork 仓库</strong>: 创建目标仓库的一份你自己的拷贝(例如 <code>dao-os-docs</code>, <code>meta-unit</code>, <code>avatar-browser-ext</code>)。</li>
|
||||||
|
<li><strong>创建分支</strong>: 从 <code>main</code> 分支创建一个新的分支用于你的变更。请使用描述性的名称(例如 <code>feat/add-note-encryption</code> 或 <code>fix/typo-in-readme</code>)。</li>
|
||||||
|
<li><strong>进行更改</strong>: 编写你的代码及相应的测试。</li>
|
||||||
|
<li><strong>运行本地检查</strong>: 在提交前,请确保你运行了所有本地测试(如 <code>cargo test</code>)和代码格式化工具。</li>
|
||||||
|
<li><strong>Commit 你的变更</strong>:我们鼓励使用 <a href="https://www.conventionalcommits.org/zh/v1.0.0/">Conventional Commits</a> 规范,以获得清晰可读的 commit 消息。</li>
|
||||||
|
<li><strong>Push到你的Fork</strong>: 将你的变更推送到你自己的 Fork 仓库。</li>
|
||||||
|
<li><strong>开启一个 Pull Request</strong>: 从你的分支向 Dao OS 官方仓库的 <code>main</code> 分支提交一个 Pull Request (PR)。</li>
|
||||||
|
<li><strong>描述你的 PR</strong>: 在 PR 的描述中,请链接任何相关的 issue,并清晰地描述你正在解决的问题和你的解决方案。</li>
|
||||||
|
<li><strong>等待审查</strong>: 一位核心团队成员将会审查你的 PR,提供反馈,并在就绪后将其合并。</li>
|
||||||
|
</ol>
|
||||||
|
<h2 id="配置你的开发环境"><a class="header" href="#配置你的开发环境">配置你的开发环境</a></h2>
|
||||||
|
<p><em>(此部分将在每个仓库中被详细填写。)</em></p>
|
||||||
|
<p>要为 <code>meta-unit</code> 做出贡献,您通常需要:</p>
|
||||||
|
<ul>
|
||||||
|
<li>Rust 工具链 (<code>rustup</code>)</li>
|
||||||
|
<li>WebAssembly 构建目标 (<code>wasm32-wasi</code>)</li>
|
||||||
|
<li>Protocol Buffers 编译器 (<code>protoc</code>)</li>
|
||||||
|
</ul>
|
||||||
|
<p>请参考每个具体仓库中的 <code>README.md</code> 以获取详细的配置指南。</p>
|
||||||
|
<h2 id="还有问题"><a class="header" href="#还有问题">还有问题?</a></h2>
|
||||||
|
<p>如果您有任何疑问,请随时在我们官方的沟通渠道中提问。我们很乐意帮助您开始!</p>
|
||||||
|
|
||||||
|
</main>
|
||||||
|
|
||||||
|
<nav class="nav-wrapper" aria-label="Page navigation">
|
||||||
|
<!-- Mobile navigation buttons -->
|
||||||
|
|
||||||
|
|
||||||
|
<div style="clear: both"></div>
|
||||||
|
</nav>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<nav class="nav-wide-wrapper" aria-label="Page navigation">
|
||||||
|
|
||||||
|
</nav>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<script>
|
||||||
|
window.playground_copyable = true;
|
||||||
|
</script>
|
||||||
|
|
||||||
|
|
||||||
|
<script src="elasticlunr.min.js"></script>
|
||||||
|
<script src="mark.min.js"></script>
|
||||||
|
<script src="searcher.js"></script>
|
||||||
|
|
||||||
|
<script src="clipboard.min.js"></script>
|
||||||
|
<script src="highlight.js"></script>
|
||||||
|
<script src="book.js"></script>
|
||||||
|
|
||||||
|
<!-- Custom JS scripts -->
|
||||||
|
|
||||||
|
<script>
|
||||||
|
window.addEventListener('load', function() {
|
||||||
|
window.setTimeout(window.print, 100);
|
||||||
|
});
|
||||||
|
</script>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
</body>
|
||||||
|
</html>
|
||||||