5 分钟创建你的第一个 Agent
读完这一页,你会有一个真实的、可跑的、能在 Hashee app 里和你聊天的 Agent。 我们不绕弯,不讲架构,不讲加密细节——只跑通端到端。
想理解每一步背后到底发生了什么?最后一节”看看刚才发生了什么”会展开。
准备
| 你需要 | 检查命令 |
|---|---|
| Node.js 22 以上 | node --version |
| 一个 Hashee 账号 | 在 hashee.ai/download 下载 Mobile / Desktop |
| 一个 LLM API(任意) | OpenAI / Anthropic / 本地都行;本教程用 OpenAI |
Step 1 — 在 Hashee app 里创建 Agent
打开 Hashee → 给系统 Agent Hashee 发一条消息:
帮我创建一个 AgentHashee 会用对话流程引导你完成命名、描述、连接模式选择,最后一步会发给你一张 “Agent 已创建”的卡片,里面有:
agent_id(UUID)agent_token(hsk_...开头)- 两组密钥的备份(只显示一次,请立刻复制保存)
截图待补:Hashee Mobile app 中与系统 Agent “Hashee” 的对话窗口截图:顶部显示 Agent 名称和在线状态。屏幕中部从上到下三段交互——(1) 用户发送的文本气泡”帮我创建一个 Agent”;(2) 系统 Agent 回复的 Artifact 表单卡片,标题”创建你的 Agent”,三个字段”名称 / 描述 / 连接模式(WebSocket / Webhook 二选一)“,底部按钮”下一步”;(3) 提交后系统 Agent 返回”Agent 已创建”成功卡片,含 agent_id(UUID 文本)、agent_token(“hsk_xxxx…” 带复制按钮)、X25519 私钥备份和 Ed25519 私钥备份两个 Base64 字段(带”我已保存”确认按钮)。底部输入框可见占位文字”输入消息…”。
文字版步骤(视截图缺失也能跟着做):
- 主页 → 搜索 / 联系人栏输入 “Hashee” → 打开系统 Agent 会话。
- 发文本 “帮我创建一个 Agent”;系统 Agent 用 Artifact 表单卡片回应。
- 卡片填三项:名称(中文/英文皆可)/ 一句话描述 / 连接模式(默认 WebSocket)。提交。
- 系统 Agent 返回”Agent 已创建”卡片,包含
agent_id、agent_token(仅显示一次)、两组私钥的 Base64 备份。 - 立刻复制
agent_token与两个私钥;点”我已保存”关闭卡片。
详细流程:在 Hashee app 里创建 Agent。
Step 2 — 装 SDK
在你的项目里(任意目录都行):
mkdir my-first-agent && cd my-first-agentnpm init -ynpm install @hasheeai/agent-sdk-ts openainpm install --save-dev typescript tsx @types/nodeecho '{"compilerOptions":{"target":"ES2022","module":"ESNext","moduleResolution":"bundler","strict":true}}' > tsconfig.json设置环境变量(建议放 .env 或者直接 export):
export HASHEE_AGENT_ID="<step1 拿到的 UUID>"export HASHEE_AGENT_TOKEN="<step1 拿到的 hsk_... token>"export OPENAI_API_KEY="<你的 OpenAI key>"Step 3 — 写一个 echo Agent
新建 src/index.ts:
import { HasheeAgent } from "@hasheeai/agent-sdk-ts";import OpenAI from "openai";
const openai = new OpenAI({ apiKey: process.env.OPENAI_API_KEY });
const agent = await HasheeAgent.init({ agentId: process.env.HASHEE_AGENT_ID!, token: process.env.HASHEE_AGENT_TOKEN!, baseUrl: "https://api.hashee.ai", connectionMode: "websocket",});
agent.addMessageHandler(async (msg) => { // SDK 已经自动解密 msg 的内容 if (msg.payload?.type !== "text") return;
// 让用户看到"对方正在输入" await agent.typing(msg.conversation_id);
const completion = await openai.chat.completions.create({ model: "gpt-4o-mini", messages: [{ role: "user", content: msg.payload.text }], });
// SDK 会自动加密、签名、wrap CEK,再发出去 await agent.send(msg.conversation_id, { type: "text", text: completion.choices[0]?.message?.content ?? "(empty)", });});
agent.addStatusHandler((s) => console.log("[hashee] connection:", s));
console.log("[hashee] agent up; waiting for messages...");Step 4 — 跑起来
npx tsx src/index.ts控制台应该看到:
[hashee] connection: connected[hashee] agent up; waiting for messages...Step 5 — 在 Hashee app 里跟它聊天
打开 Hashee → 搜索你刚才创建的 Agent → 添加 → 点开会话 → 发一条 “你好”。
几秒内你应该看到 Agent 回复了。终端里也会打印:
[hashee] connection: connected[hashee] connection: connected恭喜——你的第一个 Hashee Agent 已经在线。
下面这段 32 秒的视频是一个架构演示——品牌动画 + 终端日志 + 端到端数据流图,告诉你刚才那一切究竟在哪一层发生了什么。视频里没有 fake app UI;真实模拟器里 Mobile 端的样子见上面 /docs/screenshots/ 那几张 Maestro 截图。
视频文字版逐节描述(无视频也能读完)
- 0:00 – 0:04 — Brand intro。黑底中央 Hashee logo 渐入 + 标题「5 分钟跑通你的第一个 Agent」+ 副标题 “End-to-end encrypted · Hashee Agent SDK”。
- 0:04 – 0:18 — Terminal scene。模拟开发者终端输出 6 行:
$ npx tsx src/index.ts→[hashee] connecting to api.hashee.ai ...→[hashee] connection: connected(绿色字)→[hashee] agent up; waiting for messages...→[hashee] inbound text="你好" convo=h2a_01HZ...→[hashee] reply sent in 187ms(绿色字)+ 闪烁光标。 - 0:18 – 0:27 — Architecture diagram。三个节点横向排列,绿色箭头连接:用户 Mobile (iOS · Android) → Hashee 后端 (盲管道 · 不解密) → 你的 Agent (SDK · WebSocket)。下方注脚说明加密栈:“内容用 AES-256-GCM 加密;CEK 用 X25519 wrap;签名 Ed25519”。
- 0:27 – 0:32 — Outro。Hashee logo + 标题「你的 Agent 已经上线。」+ CTA
hashee.ai/zh-cn/developers/first-agent。
视频内容承诺:本视频仅由 brand intro + 模拟终端 + 端到端架构动画构成,不包含任何 Hashee Mobile / Desktop 产品 UI 的 mockup。Mobile 端的真实截图见 Artifact 章节 和 OpenClaw Plugin 章节 嵌入的 Maestro 实拍 PNG。
Step 6 — 看看刚才发生了什么
你(Hashee app) Hashee 后端 你的 Agent 进程 │ │ │ │ 输入"你好" │ │ ├────加密 + 签名─────────────► │ │ (CEK / 签名 / wrap) │ │ │ │ 路由 (盲管道,看不到内容) │ │ ├──────WebSocket frame────────►│ │ │ │ SDK 自动: │ │ │ 1. 验证签名 │ │ │ 2. unwrap CEK │ │ │ 3. 解密内容 │ │ │ → addMessageHandler({text:"你好"}) │ │ │ │ │ │ 你的代码: │ │ │ → openai.chat.completions.create │ │ │ → agent.send(...) │ │ │ │ │ │ SDK 自动: │ │ │ 1. 生成新 CEK │ │ │ 2. AES-256-GCM 加密 │ │ │ 3. wrap CEK 给收件人公钥 │ │ │ 4. Ed25519 签名 │ │ │ 5. 通过 WS 发回 │ ◄──────WebSocket frame────────┤ │ │ │ │ │ 路由 (依然盲管道) │ ◄─────加密 frame─────────────│ │ │ │ │ │ app 端解密 + 渲染 │ │ │ 显示 Agent 回复 │ │每一条消息都用 6 层加密栈处理(Layer 1 内容 / Layer 2 wrap / Layer 3 签名 / Layer 4 Double Ratchet 前向保密 / Layer 5 X3DH / Layer 6 grant ledger), 全部由 SDK 在你的进程内完成,后端只看密文 + 元数据。
下一步
- 想理解三种连接模式区别 → WebSocket / Webhook / Polling 怎么选
- 想给 Agent 加工具能力(tool call)→ Capability Manifest 声明
- 想发结构化卡片而不是纯文本 → Artifact 入门
- 想部署到 Cloudflare Workers / Vercel / AWS Lambda → 部署章节