115 lines
4.5 KiB
TypeScript
115 lines
4.5 KiB
TypeScript
import { FileText, GitBranch, ShieldCheck, Workflow } from "lucide-react";
|
|
import type { Lang } from "@/app/page";
|
|
|
|
const icons = [FileText, GitBranch, Workflow, ShieldCheck];
|
|
|
|
const copy = {
|
|
en: {
|
|
eyebrow: "Core abilities",
|
|
title: "Four loops Heicode must close",
|
|
description:
|
|
"From idea, resources, team, and permissions to execution, launch, and maintenance, Heicode turns software delivery into an auditable lifecycle.",
|
|
features: [
|
|
{
|
|
title: "Ideas become development work",
|
|
description:
|
|
"Users do not need a complete PRD first. Heicode turns natural-language goals into requirement summaries, task drafts, prototype notes, role suggestions, and resource needs.",
|
|
},
|
|
{
|
|
title: "Resource binding and permission assignment",
|
|
description:
|
|
"Git, SK, project docs, and cloud resources are modeled as Resource Bindings, then assigned to specific sub Agent roles through Resource Grants.",
|
|
},
|
|
{
|
|
title: "Sub Agents execute continuously",
|
|
description:
|
|
"Work is not thrown over the wall once. Agents keep moving through requirements, design, development, testing, fixes, and deployment.",
|
|
},
|
|
{
|
|
title: "Usage, logs, security, and audit loop",
|
|
description:
|
|
"Model balance, call logs, resource access, risky approvals, and deployment records return to Heicode. Long-lived secrets never enter Git, Markdown, or logs.",
|
|
},
|
|
],
|
|
},
|
|
zh: {
|
|
eyebrow: "Core abilities",
|
|
title: "Heicode 要闭环的四件事",
|
|
description:
|
|
"从想法、资源、团队、权限到执行、上线、维护,形成一条可审计的软件生命周期。",
|
|
features: [
|
|
{
|
|
title: "想法转开发任务",
|
|
description:
|
|
"用户不需要先写完整 PRD。Heicode 会把自然语言目标整理成需求摘要、任务草案、原型描述、角色建议和资源需求。",
|
|
},
|
|
{
|
|
title: "资源绑定和权限分配",
|
|
description:
|
|
"Git、SK、项目文档和云资源被建模为 Resource Binding,再通过 Resource Grant 分配给具体子 Agent 角色。",
|
|
},
|
|
{
|
|
title: "子 Agent 持续执行",
|
|
description:
|
|
"不是一次性把任务丢出去,而是在需求、设计、开发、测试、修复、部署的子环节中持续调用 Agent 推进。",
|
|
},
|
|
{
|
|
title: "用量、日志、安全和审计闭环",
|
|
description:
|
|
"模型余额、调用日志、资源访问、高危审批、部署记录统一回到 Heicode,长期密钥不进入 Git、Markdown 或日志。",
|
|
},
|
|
],
|
|
},
|
|
} satisfies Record<Lang, {
|
|
eyebrow: string;
|
|
title: string;
|
|
description: string;
|
|
features: Array<{ title: string; description: string }>;
|
|
}>;
|
|
|
|
export function Features({ lang }: { lang: Lang }) {
|
|
const t = copy[lang];
|
|
|
|
return (
|
|
<section id="features" className="border-y border-border bg-card/30 py-20 sm:py-28">
|
|
<div className="mx-auto max-w-7xl px-4 sm:px-6 lg:px-8">
|
|
<div className="mx-auto max-w-2xl text-center">
|
|
<p className="text-sm font-bold tracking-widest text-primary uppercase">
|
|
{t.eyebrow}
|
|
</p>
|
|
<h2 className="mt-4 text-3xl font-black tracking-tight sm:text-5xl">
|
|
{t.title}
|
|
</h2>
|
|
<p className="mt-4 text-muted-foreground">
|
|
{t.description}
|
|
</p>
|
|
</div>
|
|
|
|
<div className="mt-14 grid gap-5 sm:grid-cols-2 lg:gap-6">
|
|
{t.features.map((feature, index) => {
|
|
const Icon = icons[index];
|
|
return (
|
|
<div
|
|
key={feature.title}
|
|
className="relative flex gap-6 overflow-hidden rounded-[1.7rem] border border-border bg-background/80 p-6 shadow-sm sm:p-8"
|
|
>
|
|
<div className="flex h-11 w-11 shrink-0 items-center justify-center rounded-2xl bg-primary/10 text-primary">
|
|
<Icon className="h-5 w-5" />
|
|
</div>
|
|
<div>
|
|
<h3 className="text-lg font-semibold">{feature.title}</h3>
|
|
<p className="mt-2 text-sm leading-relaxed text-muted-foreground">
|
|
{feature.description}
|
|
</p>
|
|
</div>
|
|
<span className="absolute -bottom-4 right-5 text-7xl font-black text-secondary/55">
|
|
{String(index + 1).padStart(2, "0")}
|
|
</span>
|
|
</div>
|
|
)})}
|
|
</div>
|
|
</div>
|
|
</section>
|
|
);
|
|
}
|