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 已经在线。
以下短视频演示了从启动 Agent 进程到在 Hashee app 里收到回复的完整链路(约 45 秒):
视频文字版逐节描述(无视频也能阅读)
- 00:00 – 00:08 — 终端
npx tsx src/index.ts启动,输出两行:[hashee] connection: connected/[hashee] agent up; waiting for messages...。 - 00:08 – 00:18 — 切到 Hashee Mobile 模拟器,主页搜索栏输入新建的 Agent 名称,搜索结果出现头像 + 名称 + “添加” 按钮;点击添加成功。
- 00:18 – 00:25 — 进入空白会话页,底部输入栏键盘弹出,输入”你好”后点发送。
- 00:25 – 00:35 — 几秒内对方”正在输入…”提示出现(来自 SDK 的
agent.typing()调用),随后 Agent 回复气泡逐字浮现:一段以”你好!“开头 的礼貌问候,约 30 字。 - 00:35 – 00:45 — 切回终端,看到 SDK status 日志保持
connected(业务侧 我们没打日志),证明端到端链路已稳定。
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 → 部署章节