PageSourceSearch

https://openclawgithub.cc/assets/index.html-BgNmyPl8.js

js openclawgithub.cc collected 2026-10-08 05:01:17 UTC 17,479 bytes, 35 lines download raw bytes

1import{_ as i,c as a,d as n,o as l}from"./app-rplj-UlT.js";const e={};function h(t,s){return l(),a("div",null,[...s[0]||(s[0]=[n(`<p>基于 C# / .NET 10 生态的企业级实现,深度集成 Entity Framework Core。</p><h2 id="核心特性" tabindex="-1"><a class="header-anchor" href="#核心特性"><span>核心特性</span></a></h2><h3 id="net-生态" tabindex="-1"><a class="header-anchor" href="#net-生态"><span>.NET 生态</span></a></h3><ul><li>C# 10</li><li>.NET 10</li><li>EF Core 深度集成</li><li>ASP.NET Core</li></ul><h3 id="企业级特性" tabindex="-1"><a class="header-anchor" href="#企业级特性"><span>企业级特性</span></a></h3><ul><li>事务支持</li><li>依赖注入</li><li>中间件</li><li>规范化设计</li></ul><h3 id="性能优化" tabindex="-1"><a class="header-anchor" href="#性能优化"><span>性能优化</span></a></h3><ul><li>异步编程</li><li>缓存机制</li><li>编译优化</li><li>性能监控</li></ul><h2 id="快速开始" tabindex="-1"><a class="header-anchor" href="#快速开始"><span>快速开始</span></a></h2><h3 id="安装" tabindex="-1"><a class="header-anchor" href="#安装"><span>安装</span></a></h3><div class="language-bash line-numbers-mode" data-highlighter="shiki" data-ext="bash" style="--shiki-light:#393a34;--shiki-dark:#dbd7caee;--shiki-light-bg:#ffffff;--shiki-dark-bg:#121212;"><pre class="shiki shiki-themes vitesse-light vitesse-dark vp-code"><code class="language-bash"><span class="line"><span style="--shiki-light:#A0ADA0;--shiki-dark:#758575DD;"># .NET CLI</span></span>
2<span class="line"><span style="--shiki-light:#59873A;--shiki-dark:#80A665;">dotnet</span><span style="--shiki-light:#B56959;--shiki-dark:#C98A7D;"> new</span><span style="--shiki-light:#B56959;--shiki-dark:#C98A7D;"> install</span><span style="--shiki-light:#B56959;--shiki-dark:#C98A7D;"> sharpclaw</span></span>
3<span class="line"><span style="--shiki-light:#59873A;--shiki-dark:#80A665;">dotnet</span><span style="--shiki-light:#B56959;--shiki-dark:#C98A7D;"> new</span><span style="--shiki-light:#B56959;--shiki-dark:#C98A7D;"> sharpclaw</span><span style="--shiki-light:#A65E2B;--shiki-dark:#C99076;"> -n</span><span style="--shiki-light:#B56959;--shiki-dark:#C98A7D;"> MyAgent</span></span>
4<span class="line"><span style="--shiki-light:#998418;--shiki-dark:#B8A965;">cd</span><span style="--shiki-light:#B56959;--shiki-dark:#C98A7D;"> MyAgent</span></span>
5<span class="line"><span style="--shiki-light:#59873A;--shiki-dark:#80A665;">dotnet</span><span style="--shiki-light:#B56959;--shiki-dark:#C98A7D;"> run</span></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div><h3 id="配置" tabindex="-1"><a class="header-anchor" href="#配置"><span>配置</span></a></h3><div class="language-csharp line-numbers-mode" data-highlighter="shiki" data-ext="csharp" style="--shiki-light:#393a34;--shiki-dark:#dbd7caee;--shiki-light-bg:#ffffff;--shiki-dark-bg:#121212;"><pre class="shiki shiki-themes vitesse-light vitesse-dark vp-code"><code class="language-csharp"><span class="line"><span style="--shiki-light:#A0ADA0;--shiki-dark:#758575DD;">// Program.cs</span></span>
6<span class="line"><span style="--shiki-light:#AB5959;--shiki-dark:#CB7676;">var</span><span style="--shiki-light:#59873A;--shiki-dark:#80A665;"> builder</span><span style="--shiki-light:#999999;--shiki-dark:#666666;"> =</span><span style="--shiki-light:#B07D48;--shiki-dark:#BD976A;"> WebApplication</span><span style="--shiki-light:#999999;--shiki-dark:#666666;">.</span><span style="--shiki-light:#59873A;--shiki-dark:#80A665;">CreateBuilder</span><span style="--shiki-light:#999999;--shiki-dark:#666666;">(</span><span style="--shiki-light:#B07D48;--shiki-dark:#BD976A;">args</span><span style="--shiki-light:#999999;--shiki-dark:#666666;">);</span></span>
7<span class="line"></span>
8<span class="line"><span style="--shiki-light:#A0ADA0;--shiki-dark:#758575DD;">// 添加 Agent 服务</span></span>
9<span class="line"><span style="--shiki-light:#B07D48;--shiki-dark:#BD976A;">builder</span><span style="--shiki-light:#999999;--shiki-dark:#666666;">.</span><span style="--shiki-light:#B07D48;--shiki-dark:#BD976A;">Services</span><span style="--shiki-light:#999999;--shiki-dark:#666666;">.</span><span style="--shiki-light:#59873A;--shiki-dark:#80A665;">AddSharpClaw</span><span style="--shiki-light:#999999;--shiki-dark:#666666;">(</span><span style="--shiki-light:#59873A;--shiki-dark:#80A665;">options</span><span style="--shiki-light:#AB5959;--shiki-dark:#CB7676;"> =&gt;</span></span>
10<span class="line"><span style="--shiki-light:#999999;--shiki-dark:#666666;">
10{</span></span>
11<span class="line"><span style="--shiki-light:#B07D48;--shiki-dark:#BD976A;">    options</span><span style="--shiki-light:#999999;--shiki-dark:#666666;">.</span><span style="--shiki-light:#B07D48;--shiki-dark:#BD976A;">LLMProvider</span><span style="--shiki-light:#999999;--shiki-dark:#666666;"> =</span><span style="--shiki-light:#B5695977;--shiki-dark:#C98A7D77;"> &quot;</span><span style="--shiki-light:#B56959;--shiki-dark:#C98A7D;">openai</span><span style="--shiki-light:#B5695977;--shiki-dark:#C98A7D77;">&quot;</span><span style="--shiki-light:#999999;--shiki-dark:#666666;">;</span></span>
12<span class="line"><span style="--shiki-light:#B07D48;--shiki-dark:#BD976A;">    options</span><span style="--shiki-light:#999999;--shiki-dark:#666666;">.</span><span style="--shiki-light:#B07D48;--shiki-dark:#BD976A;">ApiKey</span><span style="--shiki-light:#999999;--shiki-dark:#666666;"> =</span><span style="--shiki-light:#B07D48;--shiki-dark:#BD976A;"> builder</span><span style="--shiki-light:#999999;--shiki-dark:#666666;">.</span><span style="--shiki-light:#B07D48;--shiki-dark:#BD976A;">Configuration</span><span style="--shiki-light:#999999;--shiki-dark:#666666;">[</span><span style="--shiki-light:#B5695977;--shiki-dark:#C98A7D77;">&quot;</span><span style="--shiki-light:#B56959;--shiki-dark:#C98A7D;">OpenAI:ApiKey</span><span style="--shiki-light:#B5695977;--shiki-dark:#C98A7D77;">&quot;</span><span style="--shiki-light:#999999;--shiki-dark:#666666;">];</span></span>
13<span class="line"><span style="--shiki-light:#999999;--shiki-dark:#666666;">});</span></span>
14<span class="line"></span>
15<span class="line"><span style="--shiki-light:#A0ADA0;--shiki-dark:#758575DD;">// 添加 EF Core</span></span>
16<span class="line"><span style="--shiki-light:#B07D48;--shiki-dark:#BD976A;">builder</span><span style="--shiki-light:#999999;--shiki-dark:#666666;">.</span><span style="--shiki-light:#B07D48;--shiki-dark:#BD976A;">Services</span><span style="--shiki-light:#999999;--shiki-dark:#666666;">.</span><span style="--shiki-light:#59873A;--shiki-dark:#80A665;">AddDbContext</span><span style="--shiki-light:#999999;--shiki-dark:#666666;">&lt;</span><span style="--shiki-light:#2E8F82;--shiki-dark:#5DA994;">AgentDbContext</span><span style="--shiki-light:#999999;--shiki-dark:#666666;">&gt;(</span><span style="--shiki-light:#59873A;--shiki-dark:#80A665;">options</span><span style="--shiki-light:#AB5959;--shiki-dark:#CB7676;"> =&gt;</span></span>
17<span class="line"><span style="--shiki-light:#B07D48;--shiki-dark:#BD976A;">    options</span><span style="--shiki-light:#999999;--shiki-dark:#666666;">.</span><span style="--shiki-light:#59873A;--shiki-dark:#80A665;">UseSqlite</span><span style="--shiki-light:#999999;--shiki-dark:#666666;">(</span><span style="--shiki-light:#B5695977;--shiki-dark:#C98A7D77;">&quot;</span><span style="--shiki-light:#B56959;--shiki-dark:#C98A7D;">Data Source=agent.db</span><span style="--shiki-light:#B5695977;--shiki-dark:#C98A7D77;">&quot;</span><span style="--shiki-light:#999999;--shiki-dark:#666666;">));</span></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div><h2 id="技术架构" tabindex="-1"><a class="header-anchor" href="#技术架构"><span>技术架构</span></a></h2><h3 id="核心服务" tabindex="-1"><a class="header-anchor" href="#核心服务"><span>核心服务</span></a></h3><div class="language-csharp line-numbers-mode" data-highlighter="shiki" data-ext="csharp" style="--shiki-light:#393a34;--shiki-dark:#dbd7caee;--shiki-light-bg:#ffffff;--shiki-dark-bg:#121212;"><pre class="shiki shiki-themes vitesse-light vitesse-dark vp-code"><code class="language-csharp"><span class="line"><span style="--shiki-light:#A0ADA0;--shiki-dark:#758575DD;">// Agent 服务</span></span>
18<span class="line"><span style="--shiki-light:#AB5959;--shiki-dark:#CB7676;">public</span><span style="--shiki-light:#AB5959;--shiki-dark:#CB7676;"> class</span><span style="--shiki-light:#2E8F82;--shiki-dark:#5DA994;"> AgentService</span></span>
19<span class="line"><span style="--shiki-light:#999999;--shiki-dark:#666666;">
19{</span></span>
20<span class="line"><span style="--shiki-light:#AB5959;--shiki-dark:#CB7676;">    private</span><span style="--shiki-light:#AB5959;--shiki-dark:#CB7676;"> readonly</span><span style="--shiki-light:#2E8F82;--shiki-dark:#5DA994;"> ILlmClient</span><span style="--shiki-light:#59873A;--shiki-dark:#80A665;"> _llm</span><span style="--shiki-light:#999999;--shiki-dark:#666666;">;</span></span>
21<span class="line"><span style="--shiki-light:#AB5959;--shiki-dark:#CB7676;">    private</span><span style="--shiki-light:#AB5959;--shiki-dark:#CB7676;"> readonly</span><span style="--shiki-light:#2E8F82;--shiki-dark:#5DA994;"> AgentDbContext</span><span style="--shiki-light:#59873A;--shiki-dark:#80A665;"> _db</span><span style="--shiki-light:#999999;--shiki-dark:#666666;">;</span></span>
22<span class="line"><span style="--shiki-light:#393A34;--shiki-dark:#DBD7CAEE;">    </span></span>
23<span class="line"><span style="--shiki-light:#AB5959;--shiki-dark:#CB7676;">    public</span><span style="--shiki-light:#AB5959;--shiki-dark:#CB7676;"> async</span><span style="--shiki-light:#2E8F82;--shiki-dark:#5DA994;"> Task</span><span style="--shiki-light:#999999;--shiki-dark:#666666;">&lt;</span><span style="--shiki-light:#1E754F;--shiki-dark:#4D9375;">string</span><span style="--shiki-light:#999999;--shiki-dark:#666666;">&gt;</span><span style="--shiki-light:#59873A;--shiki-dark:#80A665;"> ChatAsync</span><span style="--shiki-light:#999999;--shiki-dark:#666666;">(</span><span style="--shiki-light:#1E754F;--shiki-dark:#4D9375;">string</span><span style="--shiki-light:#59873A;--shiki-dark:#80A665;"> message</span><span style="--shiki-light:#999999;--shiki-dark:#666666;">)</span></span>
24<span class="line"><span style="--shiki-light:#999999;--shiki-dark:#666666;">    {</span></span>
25<span class="line"><span style="--shiki-light:#A0ADA0;--shiki-dark:#758575DD;">        // 异步处理</span></span>
26<span class="line"><span style="--shiki-light:#AB5959;--shiki-dark:#CB7676;">        var</span><span style="--shiki-light:#59873A;--shiki-dark:#80A665;"> response</span><span style="--shiki-light:#999999;--shiki-dark:#666666;"> =</span><span style="--shiki-light:#AB5959;--shiki-dark:#CB7676;"> await</span><span style="--shiki-light:#B07D48;--shiki-dark:#BD976A;"> _llm</span><span style="--shiki-light:#999999;--shiki-dark:#666666;">.</span><span style="--shiki-light:#59873A;--shiki-dark:#80A665;">CompleteAsync</span><span style="--shiki-light:#999999;--shiki-dark:#666666;">(</span><span style="--shiki-light:#B07D48;--shiki-dark:#BD976A;">message</span><span style="--shiki-light:#999999;--shiki-dark:#666666;">);</span></span>
27<span class="line"><span style="--shiki-light:#393A34;--shiki-dark:#DBD7CAEE;">        </span></span>
28<span class="line"><span style="--shiki-light:#A0ADA0;--shiki-dark:#758575DD;">        // EF Core 保存</span></span>
29<span class="line"><span style="--shiki-light:#AB5959;--shiki-dark:#CB7676;">        var</span><span style="--shiki-light:#59873A;--shiki-dark:#80A665;"> record</span><span style="--shiki-light:#999999;--shiki-dark:#666666;"> =</span><span style="--shiki-light:#AB5959;--shiki-dark:#CB7676;"> new</span><span style="--shiki-light:#2E8F82;--shiki-dark:#5DA994;"> ChatRecord</span><span style="--shiki-light:#999999;--shiki-dark:#666666;"> {</span><span style="--shiki-light:#B07D48;--shiki-dark:#BD976A;"> Message</span><span style="--shiki-light:#999999;--shiki-dark:#666666;"> =</span><span style="--shiki-light:#B07D48;--shiki-dark:#BD976A;"> message</span><span style="--shiki-light:#999999;--shiki-dark:#666666;">,</span><span style="--shiki-light:#B07D48;--shiki-dark:#BD976A;"> Response</span><span style="--shiki-light:#999999;--shiki-dark:#666666;"> =</span><span style="--shiki-light:#B07D48;--shiki-dark:#BD976A;"> response</span><span style="--shiki-light:#999999;--shiki-dark:#666666;"> };</span></span>
30<span class="line"><span style="--shiki-light:#B07D48;--shiki-dark:#BD976A;">        _db</span><span style="--shiki-light:#999999;--shiki-dark:#666666;">.</span><span style="--shiki-light:#B07D48;--shiki-dark:#BD976A;">ChatRecords</span><span style="--shiki-light:#999999;--shiki-dark:#666666;">.</span><span style="--shiki-light:#59873A;--shiki-dark:#80A665;">Add</span><span style="--shiki-light:#999999;--shiki-dark:#666666;">(</span><span style="--shiki-light:#B07D48;--shiki-dark:#BD976A;">record</span><span style="--shiki-light:#999999;--shiki-dark:#666666;">);</span></span>
31<span class="line"><span style="--shiki-light:#AB5959;--shiki-dark:#CB7676;">        await</span><span style="--shiki-light:#B07D48;--shiki-dark:#BD976A;"> _db</span><span style="--shiki-light:#999999;--shiki-dark:#666666;">.</span><span style="--shiki-light:#59873A;--shiki-dark:#80A665;">SaveChangesAsync</span><span style="--shiki-light:#999999;--shiki-dark:#666666;">();</span></span>
32<span class="line"><span style="--shiki-light:#393A34;--shiki-dark:#DBD7CAEE;">        </span></span>
33<span class="line"><span style="--shiki-light:#1E754F;--shiki-dark:#4D9375;">        return</span><span style="--shiki-light:#B07D48;--shiki-dark:#BD976A;"> response</span><span style="--shiki-light:#999999;--shiki-dark:#666666;">;</span></span>
34<span class="line"><span style="--shiki-light:#999999;--shiki-dark:#666666;">    }</span></span>
35<span class="line"><span style="--shiki-light:#999999;--shiki-dark:#666666;">}</span></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div><h2 id="相关链接" tabindex="-1"><a class="header-anchor" href="#相关链接"><span>相关链接</span></a></h2><ul><li><strong>GitHub</strong>: <a href="https://github.com/imxcstar/sharpclaw" target="_blank" rel="noopener noreferrer">imxcstar/sharpclaw</a></li></ul><hr><div style="text-align:center;padding:2rem 0;"><a href="https://github.com/imxcstar/sharpclaw" target="_blank" style="display:inline-block;padding:0.8rem 2rem;background:var(--vp-c-brand);color:white;border-radius:8px;text-decoration:none;font-weight:600;"> 访问 GitHub 仓库 → </a></div>`,20)])])}const p=i(e,[["render",h]]),r=JSON.parse('{"path":"/ecosystem/sharpclaw/","title":"SharpClaw - .NET 企业版 | 生态系统","lang":"zh-CN","frontmatter":{"title":"SharpClaw - .NET 企业版","createTime":"2026/03/07 18:10:00","permalink":"/ecosystem/sharpclaw/","de
35scription":"C# / .NET 10 生态,集成 Entity Framework Core","head":[["script",{"type":"application/ld+json"},"{\\"@context\\":\\"https://schema.org\\",\\"@type\\":\\"Article\\",\\"headline\\":\\"SharpClaw - .NET 企业版\\",\\"image\\":[\\"/lobster.svg\\"],\\"dateModified\\":null,\\"author\\":[{\\"@type\\":\\"Person\\",\\"name\\":\\"OpenClaw\\"}]}"],["meta",{"property":"og:url","content":"https://openclawgithub.cc/ecosystem/sharpclaw/"}],["meta",{"property":"og:site_name","content":"OpenClaw 中文教程"}],["meta",{"property":"og:title","content":"SharpClaw - .NET 企业版"}],["meta",{"property":"og:description","content":"C# / .NET 10 生态,集成 Entity Framework Core"}],["meta",{"property":"og:type","content":"article"}],["meta",{"property":"og:image","content":"/lobster.svg"}],["meta",{"property":"og:locale","content":"zh-CN"}],["meta",{"name":"twitter:creator","content":"openclaw"}],["meta",{"name":"keywords","content":"sharpclaw,dotnet,c#,entity framework,企业版"}]]},"readingTime":{"minutes":0.98,"words":293},"git":{"createdTime":1788971858000},"filePathRelative":"ecosystem/sharpclaw.md","headers":[]}');export{p as comp,r as data};

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.