Reflect the plugin-host architecture: dstalk-core.dll now hosts 9 functional plugins (deepseek, anthropic, network, lsp, session, context, config, file-io, tools), with dstalk-cli + SDL3 dstalk-gui both consuming the same C ABI. Update badges, hero stats, terminal demo, features, architecture diagram, tech-stack table, roadmap, and contributor section across index.html and en.html accordingly. 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com>
447 lines
33 KiB
HTML
447 lines
33 KiB
HTML
<!DOCTYPE html>
|
||
<html lang="zh-CN">
|
||
<head>
|
||
<meta charset="UTF-8">
|
||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||
<meta name="description" content="dstalk 是基于 DeepSeek V4、兼容 OpenAI / Anthropic API 的 C/C++ AI 编程 CLI,采用 dstalk-core.dll 插件宿主 + 多前端解耦架构。">
|
||
<meta name="theme-color" content="#0b1020">
|
||
<meta property="og:title" content="dstalk — C/C++ AI 编程 CLI">
|
||
<meta property="og:description" content="DeepSeek V4 驱动,C ABI 可嵌入,dstalk-core.dll 作为插件宿主,9 个功能插件覆盖 AI、网络、会话、LSP 与工具。">
|
||
<meta property="og:type" content="website">
|
||
<link rel="alternate" hreflang="zh-CN" href="https://dstalk.top/">
|
||
<link rel="alternate" hreflang="en" href="https://dstalk.top/en.html">
|
||
<link rel="icon" href="data:image/svg+xml,%3Csvg%20id%3D%22b8933227-ee10-4b8b-aa3f-4d0252add8f0%22%20data-name%3D%22%E5%9B%BE%E5%B1%82%201%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20viewBox%3D%220%200%20467.49%20156.25%22%3E%3Cdefs%3E%3Cstyle%3E.b2b6d799-07c9-401d-bf7c-05fa2b138761%7Bfill%3A%23036eb8%3B%7D.a1ce0134-56a6-4bb1-8507-28f21bc08e8e%7Bfill%3A%23fff%3B%7D%3C%2Fstyle%3E%3C%2Fdefs%3E%3Cpath%20class%3D%22b2b6d799-07c9-401d-bf7c-05fa2b138761%22%20d%3D%22M71.66%2C440.73S69.51%2C430%2C69.83%2C423.44s1.23-16.87%2C7.9-25.76%2C8.76-10.53%2C15-14.84%2C14.79-8.38%2C23.65-8.86%2C16.53-.14%2C23.22%2C2.3%2C12.77%2C5.54%2C17.88%2C14.77S162%2C406.69%2C162%2C406.69s.72%2C12.93-1.73%2C19.8-3.74%2C7.61-5.61%2C10.53-9.5%2C8.69-10.35%2C10.8-1%2C13.92-3.26%2C13.77-6.87-8.47-10.53-10.07-9.53-.3-14.58-.91a34.86%2C34.86%2C0%2C0%2C1-12-3.37c-3.86-1.83-7.08-3.8-9.17-6.39s-3.74-4.78-5.95-7.78-2.56-4.19-3.32-7.75a37.21%2C37.21%2C0%2C0%2C1-1-7.71%2C23.43%2C23.43%2C0%2C0%2C1%2C.71-7.27c.49-1.9%2C2.34-6.88%2C2.34-6.88.17%2C0%2C3.57-8.11%2C3.24-8.88s-3.81%2C3.1-5.73%2C6.05-4.78%2C7-6%2C10.78-2.54%2C6.74-2.68%2C12%2C0%2C12.58%2C2%2C17.56A41.48%2C41.48%2C0%2C0%2C0%2C86.9%2C454.2a41.46%2C41.46%2C0%2C0%2C0%2C12.34%2C7.95c3.65%2C1.35%2C6.05%2C2.48%2C10.2%2C3.12s5.28.68%2C9%2C1%2C10.56.25%2C10.56.25l12.79%2C13.25a4.08%2C4.08%2C0%2C0%2C0%2C2.86%2C1.5c1.7%2C0%2C2.49-2%2C2.49-2L153.05%2C460s7.18-4.13%2C10.34-7.58%2C5.24-4.95%2C9.17-12.29%2C6.05-19.23%2C6-19.6c.19-.78%2C0-34.45%2C0-34.45l-.35-53.83a23.52%2C23.52%2C0%2C0%2C0-1.89-3.67%2C14.51%2C14.51%2C0%2C0%2C0-4.35-3%2C8.32%2C8.32%2C0%2C0%2C0-6%2C0%2C8.49%2C8.49%2C0%2C0%2C0-3.32%2C2.63%2C45.13%2C45.13%2C0%2C0%2C0-2.15%2C4.2l.27%2C36.93s-2.22-2.91-8.85-5.91a55%2C55%2C0%2C0%2C0-19.51-5.14%2C77.52%2C77.52%2C0%2C0%2C0-22.39.9%2C60.73%2C60.73%2C0%2C0%2C0-14.38%2C4.36%2C69.24%2C69.24%2C0%2C0%2C0-11.38%2C6.76%2C75.69%2C75.69%2C0%2C0%2C0-9.54%2C9.19c-2%2C2.49-5.41%2C6.3-8.46%2C15.93s-2.35%2C18.16-1.76%2C23.81.64%2C5.69%2C2.42%2C11.63A32.73%2C32.73%2C0%2C0%2C0%2C71.66%2C440.73Z%22%20transform%3D%22translate%28-63.94%20-325.04%29%22%2F%3E%3Ccircle%20class%3D%22b2b6d799-07c9-401d-bf7c-05fa2b138761%22%20cx%3D%2245.84%22%20cy%3D%2289.15%22%20r%3D%228.17%22%2F%3E%3Ccircle%20class%3D%22b2b6d799-07c9-401d-bf7c-05fa2b138761%22%20cx%3D%2270.14%22%20cy%3D%2289.15%22%20r%3D%228.17%22%2F%3E%3Cpath%20class%3D%22a1ce0134-56a6-4bb1-8507-28f21bc08e8e%22%20d%3D%22M423.12%2C414.19%22%20transform%3D%22translate%28-63.94%20-325.04%29%22%2F%3E%3Cpath%20class%3D%22b2b6d799-07c9-401d-bf7c-05fa2b138761%22%20d%3D%22M210.43%2C418c0-19.47%2C12.16-31.23%2C24.69-31.23%2C6.57%2C0%2C10.58%2C2.45%2C14.6%2C6.21l-.64-9V363.69h17.64v84.07H252.33l-1.27-5.9h-.44c-4.2%2C4.2-10.09%2C7.34-15.84%2C7.34C220%2C449.2%2C210.43%2C437.45%2C210.43%2C418Zm38.65%2C11.42V405a14.45%2C14.45%2C0%2C0%2C0-9.85-3.76c-5.71%2C0-10.72%2C5.27-10.72%2C16.59%2C0%2C11.69%2C4%2C16.95%2C10.86%2C16.95C243.13%2C434.76%2C246.16%2C433.34%2C249.08%2C429.43Z%22%20transform%3D%22translate%28-63.94%20-325.04%29%22%2F%3E%3Cpath%20class%3D%22b2b6d799-07c9-401d-bf7c-05fa2b138761%22%20d%3D%22M277%2C440.88l7.94-11c5.39%2C4.08%2C10.37%2C6.26%2C15.35%2C6.26%2C5.25%2C0%2C7.52-2%2C7.52-5.12%2C0-3.93-5.9-5.7-12-8.1-7.3-2.83-15.76-7.67-15.76-17.51%2C0-11.08%2C9-18.64%2C22.75-18.64%2C9.12%2C0%2C15.91%2C3.69%2C21%2C7.54l-7.89%2C10.59c-4.24-3.07-8.42-5.08-12.54-5.08-4.56%2C0-6.8%2C1.79-6.8%2C4.76%2C0%2C3.79%2C5.57%2C5.25%2C11.74%2C7.49%2C7.54%2C2.79%2C16%2C7%2C16%2C17.92s-8.5%2C19.2-24.45%2C19.2A38.65%2C38.65%2C0%2C0%2C1%2C277%2C440.88Z%22%20transform%3D%22translate%28-63.94%20-325.04%29%22%2F%3E%3Cpath%20class%3D%22b2b6d799-07c9-401d-bf7c-05fa2b138761%22%20d%3D%22M335.4%2C426.11V402.06h-8.13V388.9l9.12-.68%2C2.06-15.81H353v15.81h14.27v13.84H353V425.9c0%2C6.75%2C3.06%2C9.46%2C7.71%2C9.46a17.85%2C17.85%2C0%2C0%2C0%2C5.66-1.13L369.19%2C447A42.05%2C42.05%2C0%2C0%2C1%2C356%2C449.2C341.25%2C449.2%2C335.4%2C439.91%2C335.4%2C426.11Z%22%20transform%3D%22translate%28-63.94%20-325.04%29%22%2F%3E%3Cpath%20class%3D%22b2b6d799-07c9-401d-bf7c-05fa2b138761%22%20d%3D%22M373.84%2C431.25c0-12.55%2C10-19.34%2C33.52-21.82-.35-5.21-2.95-8.61-9.41-8.61-5%2C0-10%2C2.1-15.75%2C5.38l-6.27-11.58c7.55-4.62%2C16.06-7.84%2C25.42-7.84%2C15.22%2C0%2C23.65%2C8.7%2C23.65%2C26.94v34H410.61l-1.27-6.1h-.44c-5%2C4.4-10.63%2C7.54-17.32%2C7.54C380.73%2C449.2%2C373.84%2C441.27%2C373.84%2C431.25Zm33.52-.79v-10.4c-12.54%2C1.69-16.63%2C5.28-16.63%2C9.78%2C0%2C3.84%2C2.64%2C5.71%2C6.83%2C5.71C401.55%2C435.55%2C404.23%2C433.58%2C407.36%2C430.46Z%22%20transform%3D%22translate%28-63.94%20-325.04%29%22%2F%3E%3Cpath%20class%3D%22b2b6d799-07c9-401d-bf7c-05fa2b138761%22%20d%3D%22M439.81%2C429.26V363.69h17.64V430c0%2C3.78%2C1.75%2C5%2C3.19%2C5a7.68%2C7.68%2C0%2C0%2C0%2C2.16-.24l2.11%2C13a22.9%2C22.9%2C0%2C0%2C1-8.86%2C1.47C444%2C449.2%2C439.81%2C441.3%2C439.81%2C429.26Z%22%20transform%3D%22translate%28-63.94%20-325.04%29%22%2F%3E%3Cpath%20class%3D%22b2b6d799-07c9-401d-bf7c-05fa2b138761%22%20d%3D%22M474.13%2C363.69h17.25v48.16h.44l18.88-23.63h19.15L509%2C412.76l22.43%2C35H512.32l-13.39-23.22-7.55%2C8.56v14.66H474.13Z%22%20transform%3D%22translate%28-63.94%20-325.04%29%22%2F%3E%3C%2Fsvg%3E" type="image/svg+xml">
|
||
<title>dstalk — DeepSeek V4 AI 编程 CLI</title>
|
||
<style>
|
||
:root {
|
||
--bg:#070b15;
|
||
--card:#111827cc;
|
||
--panel:#0d1324;
|
||
--border:#263247;
|
||
--text:#dbe7ff;
|
||
--muted:#8ea2c4;
|
||
--subtle:#5f7396;
|
||
--cyan:#58a6ff;
|
||
--green:#39d98a;
|
||
--purple:#a78bfa;
|
||
--warning:#facc15;
|
||
--shadow:0 24px 80px rgba(0,0,0,.35);
|
||
}
|
||
* { margin:0; padding:0; box-sizing:border-box; }
|
||
html { scroll-behavior:smooth; }
|
||
body {
|
||
min-height:100vh;
|
||
background:
|
||
radial-gradient(circle at 10% 0%, rgba(88,166,255,.24), transparent 34rem),
|
||
radial-gradient(circle at 92% 6%, rgba(167,139,250,.18), transparent 30rem),
|
||
linear-gradient(180deg, #070b15 0%, #0a1020 48%, #070b15 100%);
|
||
color:var(--text);
|
||
font:16px/1.65 -apple-system,BlinkMacSystemFont,"Segoe UI","PingFang SC","Microsoft YaHei",sans-serif;
|
||
}
|
||
body::before {
|
||
content:"";
|
||
position:fixed;
|
||
inset:0;
|
||
pointer-events:none;
|
||
background-image:linear-gradient(rgba(255,255,255,.035) 1px, transparent 1px), linear-gradient(90deg, rgba(255,255,255,.035) 1px, transparent 1px);
|
||
background-size:48px 48px;
|
||
mask-image:linear-gradient(to bottom, #000, transparent 72%);
|
||
}
|
||
a { color:inherit; text-decoration:none; }
|
||
.container { width:min(1120px, calc(100% - 40px)); margin:0 auto; }
|
||
.nav {
|
||
position:sticky;
|
||
top:0;
|
||
z-index:10;
|
||
border-bottom:1px solid rgba(142,162,196,.16);
|
||
background:rgba(7,11,21,.74);
|
||
backdrop-filter:blur(18px);
|
||
}
|
||
.nav-inner { display:flex; align-items:center; justify-content:space-between; min-height:68px; gap:24px; }
|
||
.brand { display:flex; align-items:center; gap:10px; font-weight:800; letter-spacing:-.03em; }
|
||
.brand-mark {
|
||
display:block;
|
||
width:108px;
|
||
height:36px;
|
||
filter:drop-shadow(0 0 22px rgba(88,166,255,.28));
|
||
}
|
||
.nav-links { display:flex; align-items:center; gap:22px; color:var(--muted); font-size:.94rem; }
|
||
.nav-links a:hover, .footer a:hover { color:#fff; }
|
||
.hero { display:grid; grid-template-columns:minmax(0, 1.06fr) minmax(320px, .94fr); align-items:center; gap:52px; padding:84px 0 72px; }
|
||
.hero > *, .split > *, .terminal, .panel { min-width:0; }
|
||
.eyebrow {
|
||
display:inline-flex;
|
||
align-items:center;
|
||
gap:8px;
|
||
margin-bottom:18px;
|
||
padding:7px 12px;
|
||
border:1px solid rgba(88,166,255,.32);
|
||
border-radius:999px;
|
||
color:#b9d8ff;
|
||
background:rgba(88,166,255,.09);
|
||
font-size:.88rem;
|
||
}
|
||
.eyebrow::before { content:""; width:8px; height:8px; border-radius:50%; background:var(--green); box-shadow:0 0 18px var(--green); }
|
||
h1 { max-width:760px; color:#fff; font-size:clamp(3.2rem, 8vw, 6.4rem); line-height:.95; letter-spacing:-.075em; }
|
||
h1 span { color:transparent; background:linear-gradient(135deg, var(--cyan), var(--green)); -webkit-background-clip:text; background-clip:text; }
|
||
h2 { color:#fff; font-size:clamp(1.8rem, 4vw, 2.7rem); line-height:1.1; letter-spacing:-.045em; }
|
||
h3 { color:#fff; }
|
||
.lead { max-width:720px; margin-top:24px; color:#b8c7e6; font-size:clamp(1.05rem, 2vw, 1.34rem); }
|
||
.actions { display:flex; flex-wrap:wrap; gap:14px; margin-top:34px; }
|
||
.btn {
|
||
display:inline-flex;
|
||
align-items:center;
|
||
justify-content:center;
|
||
min-height:46px;
|
||
padding:0 20px;
|
||
border-radius:12px;
|
||
border:1px solid transparent;
|
||
font-weight:700;
|
||
transition:transform .2s ease, border-color .2s ease, background .2s ease;
|
||
}
|
||
.btn:hover { transform:translateY(-2px); }
|
||
.btn-primary { color:#06111f; background:linear-gradient(135deg, var(--cyan), var(--green)); box-shadow:0 16px 40px rgba(88,166,255,.22); }
|
||
.btn-secondary { color:#d7e7ff; background:rgba(17,24,39,.72); border-color:rgba(142,162,196,.3); }
|
||
.badges, .stats { display:flex; flex-wrap:wrap; gap:10px; margin-top:30px; }
|
||
.badge, .stat { padding:7px 12px; border-radius:999px; color:#cfe1ff; background:rgba(17,24,39,.72); border:1px solid rgba(142,162,196,.22); font-size:.88rem; }
|
||
.stat { display:flex; gap:7px; border-radius:14px; }
|
||
.stat strong { color:#fff; }
|
||
.terminal {
|
||
position:relative;
|
||
overflow:hidden;
|
||
border:1px solid rgba(88,166,255,.28);
|
||
border-radius:22px;
|
||
background:linear-gradient(180deg, rgba(17,24,39,.94), rgba(8,13,25,.96));
|
||
box-shadow:var(--shadow);
|
||
}
|
||
.terminal::before {
|
||
content:"";
|
||
position:absolute;
|
||
inset:-1px;
|
||
pointer-events:none;
|
||
background:linear-gradient(135deg, rgba(88,166,255,.24), transparent 42%, rgba(57,217,138,.16));
|
||
}
|
||
.terminal-top { position:relative; display:flex; align-items:center; gap:8px; padding:16px 18px; border-bottom:1px solid rgba(142,162,196,.18); }
|
||
.dot { width:11px; height:11px; border-radius:50%; background:#ff5f56; }
|
||
.dot:nth-child(2) { background:#ffbd2e; }
|
||
.dot:nth-child(3) { background:#27c93f; }
|
||
.terminal-title { margin-left:8px; color:var(--subtle); font-size:.84rem; }
|
||
pre { position:relative; overflow-x:auto; padding:24px; color:#cfe1ff; font-size:.92rem; line-height:1.8; }
|
||
code { font-family:"Cascadia Code","Fira Code","JetBrains Mono",Consolas,monospace; }
|
||
.cmd { color:var(--green); }
|
||
.dim { color:var(--subtle); }
|
||
.section { padding:50px 0; }
|
||
.section-head { max-width:760px; margin-bottom:26px; }
|
||
.section-head p { margin-top:12px; color:var(--muted); font-size:1.04rem; }
|
||
.cards { display:grid; grid-template-columns:repeat(3, minmax(0,1fr)); gap:16px; }
|
||
.card {
|
||
position:relative;
|
||
overflow:hidden;
|
||
min-height:178px;
|
||
padding:24px;
|
||
border:1px solid rgba(142,162,196,.2);
|
||
border-radius:18px;
|
||
background:linear-gradient(180deg, rgba(17,24,39,.86), rgba(13,19,36,.78));
|
||
}
|
||
.card::after {
|
||
content:"";
|
||
position:absolute;
|
||
right:-36px;
|
||
top:-36px;
|
||
width:110px;
|
||
height:110px;
|
||
border-radius:50%;
|
||
background:rgba(88,166,255,.12);
|
||
}
|
||
.card h3 { margin-bottom:10px; font-size:1.08rem; }
|
||
.card p { color:var(--muted); font-size:.95rem; }
|
||
.icon { display:grid; place-items:center; width:40px; height:40px; margin-bottom:18px; border-radius:12px; color:#06111f; background:linear-gradient(135deg, var(--cyan), var(--green)); font-weight:900; }
|
||
.split { display:grid; grid-template-columns:.92fr 1.08fr; gap:28px; align-items:start; }
|
||
.panel { overflow:hidden; border:1px solid rgba(142,162,196,.2); border-radius:20px; background:rgba(17,24,39,.64); box-shadow:var(--shadow); }
|
||
.panel-pad { padding:24px; }
|
||
.steps { display:grid; gap:14px; }
|
||
.step { display:flex; gap:14px; padding:16px; border:1px solid rgba(142,162,196,.18); border-radius:14px; background:rgba(7,11,21,.34); }
|
||
.step-num { flex:0 0 auto; display:grid; place-items:center; width:28px; height:28px; border-radius:9px; color:#06111f; background:var(--green); font-weight:800; font-size:.86rem; }
|
||
.step p { color:var(--muted); font-size:.92rem; }
|
||
.table-wrap { overflow-x:auto; }
|
||
table { width:100%; min-width:720px; border-collapse:collapse; }
|
||
th,td { padding:15px 18px; text-align:left; border-bottom:1px solid rgba(142,162,196,.16); vertical-align:top; }
|
||
th { color:#fff; font-weight:700; background:rgba(88,166,255,.08); }
|
||
td { color:var(--muted); font-size:.95rem; }
|
||
tr:last-child td { border-bottom:0; }
|
||
.ok { color:var(--green); font-weight:700; }
|
||
.todo { color:var(--warning); font-weight:700; }
|
||
.architecture { color:#cfe1ff; }
|
||
.cta { margin-top:54px; margin-bottom:24px; padding:34px; border:1px solid rgba(88,166,255,.28); border-radius:24px; background:linear-gradient(135deg, rgba(88,166,255,.16), rgba(57,217,138,.09)); text-align:center; }
|
||
.cta p { max-width:720px; margin:12px auto 0; color:var(--muted); }
|
||
.footer { display:flex; justify-content:space-between; gap:20px; padding:32px 0 44px; color:var(--subtle); font-size:.9rem; border-top:1px solid rgba(142,162,196,.16); }
|
||
.footer-links { display:flex; gap:18px; flex-wrap:wrap; }
|
||
@media (max-width: 860px) {
|
||
.nav-links { display:none; }
|
||
.hero, .split { grid-template-columns:1fr; }
|
||
.hero { padding-top:56px; }
|
||
.cards { grid-template-columns:1fr; }
|
||
.footer { flex-direction:column; }
|
||
}
|
||
@media (max-width: 560px) {
|
||
.container { width:min(100% - 28px, 1120px); }
|
||
.actions, .footer-links { flex-direction:column; }
|
||
.btn { width:100%; }
|
||
pre { padding:18px; font-size:.82rem; }
|
||
th,td { padding:12px; }
|
||
.cta { padding:24px 18px; }
|
||
}
|
||
</style>
|
||
</head>
|
||
<body>
|
||
<nav class="nav" aria-label="主导航">
|
||
<div class="container nav-inner">
|
||
<a class="brand" href="#top" aria-label="dstalk 首页"><svg class="brand-mark" aria-hidden="true" focusable="false" id="b8933227-ee10-4b8b-aa3f-4d0252add8f0" data-name="图层 1" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 467.49 156.25"><defs><style>.b2b6d799-07c9-401d-bf7c-05fa2b138761{fill:#036eb8;}.a1ce0134-56a6-4bb1-8507-28f21bc08e8e{fill:#fff;}</style></defs><path class="b2b6d799-07c9-401d-bf7c-05fa2b138761" d="M71.66,440.73S69.51,430,69.83,423.44s1.23-16.87,7.9-25.76,8.76-10.53,15-14.84,14.79-8.38,23.65-8.86,16.53-.14,23.22,2.3,12.77,5.54,17.88,14.77S162,406.69,162,406.69s.72,12.93-1.73,19.8-3.74,7.61-5.61,10.53-9.5,8.69-10.35,10.8-1,13.92-3.26,13.77-6.87-8.47-10.53-10.07-9.53-.3-14.58-.91a34.86,34.86,0,0,1-12-3.37c-3.86-1.83-7.08-3.8-9.17-6.39s-3.74-4.78-5.95-7.78-2.56-4.19-3.32-7.75a37.21,37.21,0,0,1-1-7.71,23.43,23.43,0,0,1,.71-7.27c.49-1.9,2.34-6.88,2.34-6.88.17,0,3.57-8.11,3.24-8.88s-3.81,3.1-5.73,6.05-4.78,7-6,10.78-2.54,6.74-2.68,12,0,12.58,2,17.56A41.48,41.48,0,0,0,86.9,454.2a41.46,41.46,0,0,0,12.34,7.95c3.65,1.35,6.05,2.48,10.2,3.12s5.28.68,9,1,10.56.25,10.56.25l12.79,13.25a4.08,4.08,0,0,0,2.86,1.5c1.7,0,2.49-2,2.49-2L153.05,460s7.18-4.13,10.34-7.58,5.24-4.95,9.17-12.29,6.05-19.23,6-19.6c.19-.78,0-34.45,0-34.45l-.35-53.83a23.52,23.52,0,0,0-1.89-3.67,14.51,14.51,0,0,0-4.35-3,8.32,8.32,0,0,0-6,0,8.49,8.49,0,0,0-3.32,2.63,45.13,45.13,0,0,0-2.15,4.2l.27,36.93s-2.22-2.91-8.85-5.91a55,55,0,0,0-19.51-5.14,77.52,77.52,0,0,0-22.39.9,60.73,60.73,0,0,0-14.38,4.36,69.24,69.24,0,0,0-11.38,6.76,75.69,75.69,0,0,0-9.54,9.19c-2,2.49-5.41,6.3-8.46,15.93s-2.35,18.16-1.76,23.81.64,5.69,2.42,11.63A32.73,32.73,0,0,0,71.66,440.73Z" transform="translate(-63.94 -325.04)"/><circle class="b2b6d799-07c9-401d-bf7c-05fa2b138761" cx="45.84" cy="89.15" r="8.17"/><circle class="b2b6d799-07c9-401d-bf7c-05fa2b138761" cx="70.14" cy="89.15" r="8.17"/><path class="a1ce0134-56a6-4bb1-8507-28f21bc08e8e" d="M423.12,414.19" transform="translate(-63.94 -325.04)"/><path class="b2b6d799-07c9-401d-bf7c-05fa2b138761" d="M210.43,418c0-19.47,12.16-31.23,24.69-31.23,6.57,0,10.58,2.45,14.6,6.21l-.64-9V363.69h17.64v84.07H252.33l-1.27-5.9h-.44c-4.2,4.2-10.09,7.34-15.84,7.34C220,449.2,210.43,437.45,210.43,418Zm38.65,11.42V405a14.45,14.45,0,0,0-9.85-3.76c-5.71,0-10.72,5.27-10.72,16.59,0,11.69,4,16.95,10.86,16.95C243.13,434.76,246.16,433.34,249.08,429.43Z" transform="translate(-63.94 -325.04)"/><path class="b2b6d799-07c9-401d-bf7c-05fa2b138761" d="M277,440.88l7.94-11c5.39,4.08,10.37,6.26,15.35,6.26,5.25,0,7.52-2,7.52-5.12,0-3.93-5.9-5.7-12-8.1-7.3-2.83-15.76-7.67-15.76-17.51,0-11.08,9-18.64,22.75-18.64,9.12,0,15.91,3.69,21,7.54l-7.89,10.59c-4.24-3.07-8.42-5.08-12.54-5.08-4.56,0-6.8,1.79-6.8,4.76,0,3.79,5.57,5.25,11.74,7.49,7.54,2.79,16,7,16,17.92s-8.5,19.2-24.45,19.2A38.65,38.65,0,0,1,277,440.88Z" transform="translate(-63.94 -325.04)"/><path class="b2b6d799-07c9-401d-bf7c-05fa2b138761" d="M335.4,426.11V402.06h-8.13V388.9l9.12-.68,2.06-15.81H353v15.81h14.27v13.84H353V425.9c0,6.75,3.06,9.46,7.71,9.46a17.85,17.85,0,0,0,5.66-1.13L369.19,447A42.05,42.05,0,0,1,356,449.2C341.25,449.2,335.4,439.91,335.4,426.11Z" transform="translate(-63.94 -325.04)"/><path class="b2b6d799-07c9-401d-bf7c-05fa2b138761" d="M373.84,431.25c0-12.55,10-19.34,33.52-21.82-.35-5.21-2.95-8.61-9.41-8.61-5,0-10,2.1-15.75,5.38l-6.27-11.58c7.55-4.62,16.06-7.84,25.42-7.84,15.22,0,23.65,8.7,23.65,26.94v34H410.61l-1.27-6.1h-.44c-5,4.4-10.63,7.54-17.32,7.54C380.73,449.2,373.84,441.27,373.84,431.25Zm33.52-.79v-10.4c-12.54,1.69-16.63,5.28-16.63,9.78,0,3.84,2.64,5.71,6.83,5.71C401.55,435.55,404.23,433.58,407.36,430.46Z" transform="translate(-63.94 -325.04)"/><path class="b2b6d799-07c9-401d-bf7c-05fa2b138761" d="M439.81,429.26V363.69h17.64V430c0,3.78,1.75,5,3.19,5a7.68,7.68,0,0,0,2.16-.24l2.11,13a22.9,22.9,0,0,1-8.86,1.47C444,449.2,439.81,441.3,439.81,429.26Z" transform="translate(-63.94 -325.04)"/><path class="b2b6d799-07c9-401d-bf7c-05fa2b138761" d="M474.13,363.69h17.25v48.16h.44l18.88-23.63h19.15L509,412.76l22.43,35H512.32l-13.39-23.22-7.55,8.56v14.66H474.13Z" transform="translate(-63.94 -325.04)"/></svg></a>
|
||
<div class="nav-links">
|
||
<a href="#features">特性</a>
|
||
<a href="#quickstart">快速开始</a>
|
||
<a href="#architecture">架构</a>
|
||
<a href="#commands">命令</a>
|
||
<a href="#roadmap">路线图</a>
|
||
<a href="#contribute">贡献</a>
|
||
<a href="en.html" lang="en">English</a>
|
||
</div>
|
||
</div>
|
||
</nav>
|
||
|
||
<header id="top" class="container hero">
|
||
<div>
|
||
<div class="eyebrow">dstalk.top 是 dstalk 项目的官方网站</div>
|
||
<h1><span>ds</span>talk</h1>
|
||
<p class="lead">基于 DeepSeek V4 大模型、兼容 OpenAI / Anthropic API 的 AI 编程 CLI。核心采用 C11 / C++20 编写,以 dstalk-core.dll 作为插件宿主暴露稳定 C ABI,9 个功能插件 (AI、网络、LSP、会话、文件、工具等) 编译为独立 DLL,通过统一接口接入 CLI、SDL3 GUI 与第三方宿主。</p>
|
||
<div class="actions">
|
||
<a class="btn btn-primary" href="#quickstart">开始使用</a>
|
||
<a class="btn btn-secondary" href="https://git.pulsareon.com/pulsareon/dstalk">查看源代码</a>
|
||
</div>
|
||
<div class="badges" aria-label="项目标签">
|
||
<span class="badge">v0.1.0</span>
|
||
<span class="badge">C11 / C++20</span>
|
||
<span class="badge">插件宿主 + C ABI</span>
|
||
<span class="badge">9 个插件</span>
|
||
<span class="badge">GPL v3.0</span>
|
||
</div>
|
||
<div class="stats" aria-label="项目状态">
|
||
<span class="stat"><strong>核心</strong>dstalk-core.dll (插件宿主)</span>
|
||
<span class="stat"><strong>前端</strong>CLI + SDL3 GUI</span>
|
||
<span class="stat"><strong>插件</strong>deepseek · anthropic · network · lsp · session · context · config · file-io · tools</span>
|
||
</div>
|
||
</div>
|
||
<div class="terminal" aria-label="dstalk 命令行示例">
|
||
<div class="terminal-top"><span class="dot"></span><span class="dot"></span><span class="dot"></span><span class="terminal-title">dstalk-cli</span></div>
|
||
<pre><code><span class="cmd">$</span> build/dstalk-cli/dstalk-cli.exe config.toml
|
||
|
||
dstalk v0.1.0 | DeepSeek V4 | /help 查看帮助
|
||
|
||
> 帮我解释 dstalk-core 的职责
|
||
<span class="dim">思考中...</span>
|
||
AI: dstalk-core 是插件宿主,负责插件加载、服务注册、
|
||
事件总线和配置管理;AI、网络、会话、LSP、文件 IO
|
||
等能力都由独立插件提供,前端只处理输入与渲染。
|
||
|
||
> /file read dstalk-core/include/dstalk/dstalk_api.h
|
||
<span class="dim">--- dstalk-core/include/dstalk/dstalk_api.h ---</span></code></pre>
|
||
</div>
|
||
</header>
|
||
|
||
<main>
|
||
<section id="features" class="container section">
|
||
<div class="section-head">
|
||
<h2>为什么 dstalk 用 C/C++ 重新做 AI 编程助手?</h2>
|
||
<p>dstalk 对标 Claude Code、OpenCode、KiloCode,但选择系统级实现和插件宿主架构,重点优化启动速度、运行时依赖、可嵌入能力和长期驻留体验。</p>
|
||
</div>
|
||
<div class="cards">
|
||
<article class="card"><div class="icon">C</div><h3>零 Node.js 运行时</h3><p>核心以 C11 / C++20 构建,目标是毫秒级启动和更低内存占用,适合终端长期交互。</p></article>
|
||
<article class="card"><div class="icon">ABI</div><h3>稳定 C ABI</h3><p>公开 dstalk_init、dstalk_chat、dstalk_file_read 等 C 函数,方便 C/C++、Python、Rust、C#、Go 嵌入。</p></article>
|
||
<article class="card"><div class="icon">AI</div><h3>多 API 兼容</h3><p>内置 DeepSeek 与 Anthropic 两个 AI 插件,兼容 OpenAI 风格接口;通过 config.toml 中的 ai.provider 一键切换。</p></article>
|
||
<article class="card"><div class="icon">CLI</div><h3>CLI 与 GUI 双前端</h3><p>dstalk-cli 提供 ANSI 终端 UI,dstalk-gui 基于 SDL3 跨平台窗口,共享同一组核心能力。</p></article>
|
||
<article class="card"><div class="icon">PLG</div><h3>插件化宿主</h3><p>核心仅做插件加载、服务注册、事件总线和配置管理;AI、网络、LSP、会话等能力均为独立 DLL,可以替换或扩展。</p></article>
|
||
<article class="card"><div class="icon">OSS</div><h3>开源可改造</h3><p>项目采用 GNU GPL v3.0,附带示例插件、单元测试与教程文档,适合学习、二次开发和本地工作流定制。</p></article>
|
||
</div>
|
||
</section>
|
||
|
||
<section id="quickstart" class="container section">
|
||
<div class="split">
|
||
<div class="section-head">
|
||
<h2>快速开始</h2>
|
||
<p>dstalk 已提供自动工具链脚本和一键构建脚本。API Key 请只保存在本地 config.toml 或安全的环境中,不要提交到仓库。</p>
|
||
<div class="steps">
|
||
<div class="step"><div class="step-num">1</div><div><h3>安装本地工具链</h3><p>进入 tools 目录运行 setup.bat,下载 CMake、Ninja、LLVM/Clang、Conan2。</p></div></div>
|
||
<div class="step"><div class="step-num">2</div><div><h3>构建 dstalk</h3><p>运行 build.bat,完成 Conan 依赖、CMake 配置和 Ninja 编译。</p></div></div>
|
||
<div class="step"><div class="step-num">3</div><div><h3>启动 CLI</h3><p>使用 build/dstalk-cli/dstalk-cli.exe,并传入 config.toml 或使用默认配置。</p></div></div>
|
||
</div>
|
||
</div>
|
||
<div class="terminal">
|
||
<div class="terminal-top"><span class="dot"></span><span class="dot"></span><span class="dot"></span><span class="terminal-title">quickstart</span></div>
|
||
<pre><code><span class="cmd"># 安装工具链</span>
|
||
cd tools
|
||
setup.bat
|
||
|
||
<span class="cmd"># 回到项目根目录并编译</span>
|
||
cd ..
|
||
build.bat
|
||
|
||
<span class="cmd"># 创建 config.toml</span>
|
||
[api]
|
||
base_url = "https://api.deepseek.com/v1"
|
||
api_key = "sk-xxxxxxxx"
|
||
model = "deepseek-chat"
|
||
|
||
<span class="cmd"># 运行 CLI</span>
|
||
build/dstalk-cli/dstalk-cli.exe config.toml</code></pre>
|
||
</div>
|
||
</div>
|
||
</section>
|
||
|
||
<section id="architecture" class="container section">
|
||
<div class="section-head">
|
||
<h2>插件宿主 + 多前端解耦架构</h2>
|
||
<p>dstalk-core.dll 作为插件宿主,负责插件加载、服务注册、事件总线和配置管理;AI、网络、LSP、会话、文件 IO、工具等 9 个功能插件编译为独立 DLL,前端只通过 C ABI 触达核心能力。GUI 通过 CMake 选项 DSTALK_BUILD_GUI 启用。</p>
|
||
</div>
|
||
<div class="terminal architecture">
|
||
<div class="terminal-top"><span class="dot"></span><span class="dot"></span><span class="dot"></span><span class="terminal-title">architecture</span></div>
|
||
<pre><code>┌─────────────────────────────────────────────────────┐
|
||
│ Frontends │
|
||
│ dstalk-cli (ANSI UI) dstalk-gui (SDL3) │
|
||
└───────────────────────┬─────────────────────────────┘
|
||
│ C ABI
|
||
┌───────────────────────▼─────────────────────────────┐
|
||
│ dstalk-core.dll — Plugin Host │
|
||
│ Plugin Loader · Service Registry · Event Bus · │
|
||
│ Config Manager │
|
||
└──┬───────┬───────┬───────┬───────┬───────┬──────────┘
|
||
▼ ▼ ▼ ▼ ▼ ▼
|
||
deepseek anthropic network lsp session context
|
||
(ai) (ai) (http) client
|
||
▼ ▼ ▼
|
||
config file-io tools
|
||
│ │ │
|
||
└── Boost.JSON / Boost.Asio / Beast / OpenSSL TLS ──┘</code></pre>
|
||
</div>
|
||
</section>
|
||
|
||
<section class="container section">
|
||
<div class="section-head">
|
||
<h2>技术栈与工程现状</h2>
|
||
<p>以下内容根据 dstalk 的 CMake、Conan 配置和公开头文件整理。</p>
|
||
</div>
|
||
<div class="panel table-wrap">
|
||
<table>
|
||
<tr><th>模块</th><th>当前技术</th><th>状态</th></tr>
|
||
<tr><td>核心库</td><td>C11 / C++20,dstalk-core.dll,插件宿主,公开 C ABI</td><td><span class="ok">已启用</span></td></tr>
|
||
<tr><td>CLI 前端</td><td>ANSI 终端 UI,调用 dstalk/dstalk_api.h</td><td><span class="ok">已启用</span></td></tr>
|
||
<tr><td>GUI 前端</td><td>SDL3 图形化前端,CMake 选项 DSTALK_BUILD_GUI 启用</td><td><span class="ok">已就位</span></td></tr>
|
||
<tr><td>插件</td><td>9 个功能插件 (deepseek · anthropic · network · lsp · session · context · config · file-io · tools),独立 DLL</td><td><span class="ok">已启用</span></td></tr>
|
||
<tr><td>测试</td><td>tests/ 提供 host_api_test 与 smoke_test,CTest 集成</td><td><span class="ok">已启用</span></td></tr>
|
||
<tr><td>文档</td><td>docs/tutorial、docs/reference (commands、plugin-abi)</td><td><span class="ok">已发布</span></td></tr>
|
||
<tr><td>示例</td><td>examples/example_plugin 展示插件开发模板</td><td><span class="ok">已提供</span></td></tr>
|
||
<tr><td>依赖管理</td><td>Conan2,boost/1.86.0,openssl/3.4.1</td><td><span class="ok">已配置</span></td></tr>
|
||
<tr><td>构建系统</td><td>CMake 3.21+,Ninja,LLVM/Clang,CMakePresets</td><td><span class="ok">已配置</span></td></tr>
|
||
<tr><td>许可证</td><td>GNU GPL v3.0</td><td><span class="ok">已确认</span></td></tr>
|
||
</table>
|
||
</div>
|
||
</section>
|
||
|
||
<section id="commands" class="container section">
|
||
<div class="section-head">
|
||
<h2>CLI 常用命令</h2>
|
||
<p>除了直接输入自然语言问题,dstalk-cli 还提供文件、模型和会话相关命令。</p>
|
||
</div>
|
||
<div class="panel table-wrap">
|
||
<table>
|
||
<tr><th>命令</th><th>说明</th><th>示例</th></tr>
|
||
<tr><td>/help</td><td>显示帮助</td><td>/help</td></tr>
|
||
<tr><td>/clear</td><td>清空当前会话上下文</td><td>/clear</td></tr>
|
||
<tr><td>/model <name></td><td>切换当前模型</td><td>/model deepseek-chat</td></tr>
|
||
<tr><td>/file read <path></td><td>读取文件内容并输出到终端</td><td>/file read README.md</td></tr>
|
||
<tr><td>/file write <path> <content></td><td>写入文件内容</td><td>/file write note.txt hello</td></tr>
|
||
<tr><td>/save <path> / /load <path></td><td>保存或恢复会话</td><td>/save session.json</td></tr>
|
||
</table>
|
||
</div>
|
||
</section>
|
||
|
||
<section id="api" class="container section">
|
||
<div class="section-head">
|
||
<h2>公开 C API</h2>
|
||
<p>dstalk-core 通过 dstalk-core/include/dstalk/dstalk_api.h 暴露函数,前端和第三方宿主都通过同一组接口调用核心能力。</p>
|
||
</div>
|
||
<div class="terminal">
|
||
<div class="terminal-top"><span class="dot"></span><span class="dot"></span><span class="dot"></span><span class="terminal-title">dstalk_api.h</span></div>
|
||
<pre><code>int dstalk_init(const char* config_path);
|
||
void dstalk_destroy(void);
|
||
|
||
void dstalk_set_api_key(const char* api_key);
|
||
void dstalk_set_base_url(const char* base_url);
|
||
void dstalk_set_model(const char* model);
|
||
|
||
int dstalk_chat(const char* input, char** output);
|
||
int dstalk_chat_stream(const char* input, dstalk_stream_cb cb, void* userdata);
|
||
void dstalk_free_string(char* str);
|
||
|
||
void dstalk_session_clear(void);
|
||
int dstalk_session_save(const char* path);
|
||
int dstalk_session_load(const char* path);
|
||
|
||
int dstalk_file_read(const char* path, char** content);
|
||
int dstalk_file_write(const char* path, const char* content);</code></pre>
|
||
</div>
|
||
</section>
|
||
|
||
<section id="roadmap" class="container section">
|
||
<div class="section-head">
|
||
<h2>路线图</h2>
|
||
<p>插件宿主、CLI、SDL3 GUI、9 个核心插件、测试与文档已经就位;后续聚焦在能力深化与生态扩展。</p>
|
||
</div>
|
||
<div class="panel table-wrap">
|
||
<table>
|
||
<tr><th>阶段</th><th>内容</th><th>状态</th></tr>
|
||
<tr><td>骨架</td><td>项目骨架、CMake/Ninja 构建、Conan 依赖、DLL 导出、前端主循环</td><td><span class="ok">已完成</span></td></tr>
|
||
<tr><td>插件宿主</td><td>插件加载、服务注册、事件总线、配置管理;9 个核心插件 (deepseek · anthropic · network · lsp · session · context · config · file-io · tools)</td><td><span class="ok">已完成</span></td></tr>
|
||
<tr><td>对话能力</td><td>HTTPS 网络层、DeepSeek / Anthropic API 适配、流式输出、多轮会话、文件读写工具</td><td><span class="ok">已可用</span></td></tr>
|
||
<tr><td>GUI 前端</td><td>SDL3 图形化窗口 (DSTALK_BUILD_GUI),与 CLI 共享插件宿主</td><td><span class="todo">推进中</span></td></tr>
|
||
<tr><td>下一阶段</td><td>LSP 集成深化、第三方插件 SDK、跨平台分发与文档持续完善</td><td><span class="todo">计划中</span></td></tr>
|
||
</table>
|
||
</div>
|
||
</section>
|
||
|
||
<section id="contribute" class="container section">
|
||
<div class="section-head">
|
||
<h2>欢迎开源贡献者</h2>
|
||
<p>dstalk 是开放项目,欢迎对 C/C++、命令行体验、AI API 适配、GUI、文档和测试感兴趣的开发者一起参与。</p>
|
||
</div>
|
||
<div class="cards">
|
||
<article class="card"><div class="icon">PR</div><h3>提交代码改进</h3><p>核心、CLI、SDL3 GUI 与 9 个插件 (AI、网络、LSP、会话、文件、工具等) 都欢迎补丁,跨平台兼容与构建脚本也有空间。</p></article>
|
||
<article class="card"><div class="icon">PLG</div><h3>开发新插件</h3><p>参考 examples/example_plugin 和 docs/reference/plugin-abi.md,通过 C ABI 注册新服务,把自己的模型、工具或数据源接入 dstalk。</p></article>
|
||
<article class="card"><div class="icon">DOC</div><h3>完善文档与测试</h3><p>docs/tutorial、docs/reference 已经成形,欢迎补充教程、命令速查、插件 ABI 说明,以及 host_api_test / smoke_test 的覆盖面。</p></article>
|
||
</div>
|
||
<div class="actions">
|
||
<a class="btn btn-primary" href="https://git.pulsareon.com/pulsareon/dstalk">前往源码仓库</a>
|
||
<a class="btn btn-secondary" href="https://git.pulsareon.com/pulsareon/dstalk/issues">提交 Issue</a>
|
||
</div>
|
||
</section>
|
||
|
||
<section class="container cta">
|
||
<h2>从终端开始,把 dstalk 嵌入更多工具</h2>
|
||
<p>dstalk 的核心价值不只是一个 CLI,而是一个可被多前端复用的本地 AI 编程核心。dstalk.top 会持续同步项目进展、构建方式和可用能力。</p>
|
||
<div class="actions" style="justify-content:center">
|
||
<a class="btn btn-primary" href="#quickstart">查看快速开始</a>
|
||
<a class="btn btn-secondary" href="https://git.pulsareon.com/pulsareon/dstalk">访问源码仓库</a>
|
||
</div>
|
||
</section>
|
||
</main>
|
||
|
||
<footer class="container footer">
|
||
<p>dstalk © 2026. GNU GPL v3.0. Website: dstalk.top.</p>
|
||
<div class="footer-links">
|
||
<a href="#top">返回顶部</a>
|
||
<a href="https://dstalk.top">dstalk.top</a>
|
||
<a href="https://git.pulsareon.com/pulsareon/dstalk">源代码</a>
|
||
</div>
|
||
</footer>
|
||
</body>
|
||
</html>
|