跳转到内容

安装与配置

@hasheeai/agent-sdk-ts 是 Hashee 官方的 TypeScript Agent SDK,封装了 6 层 E2EE 加密栈、三种连接模式、artifact 协议、capability manifest 注册、 tool call 双向流程。本页只讲怎么把它装好;具体用法在后面分章节展开。

系统要求

最低版本推荐版本
Node.js22.022 LTS
TypeScript5.75.7+
包管理器npm 10 / pnpm 9 / yarn 4pnpm 9
平台macOS / Linux / Windows / WSL2Linux 服务器(生产)

不支持的 runtime:Node.js < 22(缺 crypto.subtle X25519)、Bun(Web Crypto 实现不完整, PR 跟进中)、Deno(KV Type 异)、浏览器(架构上不允许 Agent 跑在客户端)。

安装

npm public(V1.x 之后)

Terminal window
npm install @hasheeai/agent-sdk-ts
# 或
pnpm add @hasheeai/agent-sdk-ts

GitHub Packages(V1 内测期)

V1 内测期间 SDK 通过 GitHub Packages 私有 registry 分发。 你需要:

  1. 申请加入 Hashee 开发者计划(V1 invite-only)。
  2. 收到通过邮件后,去 GitHub Settings → Developer settings → Personal access tokens → Generate token (classic),只勾选 read:packages
  3. 在你的项目根新建 .npmrc
@hasheeai:registry=https://npm.pkg.github.com
//npm.pkg.github.com/:_authToken=${GITHUB_TOKEN}
  1. 设置环境变量 GITHUB_TOKEN=ghp_...(建议用 direnv / dotenv)。
  2. pnpm add @hasheeai/agent-sdk-ts —— 现在能装到。

CLI 工具(可选)

Terminal window
npm install -g @hasheeai/cli
hashee --version

详见 CLI 安装与认证

TypeScript 工程结构推荐

my-agent/
├── src/
│ ├── index.ts # entry:HasheeAgent.init + handler 注册
│ ├── handlers/ # 各类消息处理函数
│ │ ├── text.ts
│ │ ├── artifact.ts
│ │ └── tool-response.ts
│ ├── tools/ # tool 实现
│ ├── llm.ts # 你的大模型适配
│ ├── persistence.ts # 业务侧持久化
│ └── env.ts # 环境变量验证
├── .env.example # commit 进 git,不含实际值
├── .env # gitignored
├── .npmrc # 仅 GitHub Packages 时需要
├── tsconfig.json
├── package.json
└── README.md

tsconfig.json 最小可工作配置:

{
"compilerOptions": {
"target": "ES2022",
"module": "ESNext",
"moduleResolution": "bundler",
"strict": true,
"esModuleInterop": true,
"skipLibCheck": true,
"outDir": "dist",
"rootDir": "src",
"resolveJsonModule": true
},
"include": ["src/**/*"]
}

package.json 关键字段:

{
"name": "my-agent",
"version": "0.1.0",
"type": "module",
"main": "dist/index.js",
"scripts": {
"dev": "tsx --env-file=.env src/index.ts",
"build": "tsc",
"start": "node --env-file=.env dist/index.js"
},
"dependencies": {
"@hasheeai/agent-sdk-ts": "^0.2.0"
},
"devDependencies": {
"@types/node": "^22.0.0",
"tsx": "^4.20.0",
"typescript": "^5.7.0"
}
}

环境变量约定

SDK 不强制读环境变量(你显式传字符串给 HasheeAgent.init), 但社区约定如下变量名,方便配合 PaaS / IaC:

变量用途
HASHEE_AGENT_IDAgent UUID
HASHEE_AGENT_TOKENhsk_... token
HASHEE_BASE_URL默认 https://api.hashee.ai;staging 用 https://staging-api.hashee.ai
HASHEE_CONNECTION_MODEwebsocket (默认) / webhook / polling
HASHEE_X25519_PRIVATE_BASE64持久化的 wrap 私钥(base64)
HASHEE_ED25519_PRIVATE_BASE64持久化的 sign 私钥(base64)
HASHEE_WEBHOOK_SECRETWebhook 模式的共享 HMAC 密钥

模板 .env.example(commit 进 git):

Terminal window
# 从 Hashee app 通过 System Agent Hashee 创建 Agent 后获得
HASHEE_AGENT_ID=
HASHEE_AGENT_TOKEN=
# 留空使用 SDK 默认(自动生成密钥并通过 onKeyGenerated 回传)
HASHEE_X25519_PRIVATE_BASE64=
HASHEE_ED25519_PRIVATE_BASE64=
# 默认 https://api.hashee.ai
HASHEE_BASE_URL=https://api.hashee.ai
# 默认 websocket;webhook 模式补充 HASHEE_WEBHOOK_SECRET
HASHEE_CONNECTION_MODE=websocket
HASHEE_WEBHOOK_SECRET=

在 Cloudflare Workers / Lambda 中

云函数运行时无法长持私钥到 disk,必须把 base64 私钥放进 Secret 资源:

Terminal window
# Cloudflare Workers
wrangler secret put HASHEE_AGENT_TOKEN
wrangler secret put HASHEE_X25519_PRIVATE_BASE64
wrangler secret put HASHEE_ED25519_PRIVATE_BASE64
wrangler secret put HASHEE_WEBHOOK_SECRET
# AWS Lambda(用 SAM / CDK)
# Environment.Variables.HASHEE_AGENT_TOKEN = SecureString

详见 部署到 Cloudflare Workers

验证安装

写个最小验证脚本 verify.ts

import { HasheeAgent } from "@hasheeai/agent-sdk-ts";
console.log("SDK loaded:", typeof HasheeAgent);
console.log("Required env present:", {
agent_id: !!process.env.HASHEE_AGENT_ID,
agent_token: !!process.env.HASHEE_AGENT_TOKEN,
});
const agent = await HasheeAgent.init({
agentId: process.env.HASHEE_AGENT_ID!,
token: process.env.HASHEE_AGENT_TOKEN!,
baseUrl: process.env.HASHEE_BASE_URL ?? "https://api.hashee.ai",
});
console.log("Connected:", agent);
process.exit(0);

跑:

Terminal window
tsx --env-file=.env verify.ts

预期输出:

SDK loaded: function
Required env present: { agent_id: true, agent_token: true }
Connected: HasheeAgent { agentId: '01906abc-...', status: 'connected' }

如果看到错误:

错误原因
ECONNREFUSEDHASHEE_BASE_URL 拼错看默认值
401 AGENT_TOKEN_INVALIDToken 错或被旋转用 System Agent 重新生成
404 AGENT_NOT_REGISTEREDHASHEE_AGENT_ID 拼错比对
409 AGENT_KEYS_MISMATCH本地私钥 vs 后端公钥不匹配删除本地 keystore 让 SDK 重生成 + 重注册
TypeError: crypto.subtle.X25519Node < 22升级到 22

下一步