跳转到内容

部署到 Cloudflare Workers(最简)

代码

src/worker.ts
import { createWebhookDispatcher } from "@hasheeai/agent-sdk-ts";
interface Env {
HASHEE_AGENT_ID: string;
HASHEE_AGENT_TOKEN: string;
HASHEE_WEBHOOK_SECRET: string;
HASHEE_X25519_PRIVATE_BASE64: string;
HASHEE_ED25519_PRIVATE_BASE64: string;
}
export default {
async fetch(request: Request, env: Env, ctx: ExecutionContext): Promise<Response> {
if (request.method !== "POST" || new URL(request.url).pathname !== "/hashee/webhook") {
return new Response("not found", { status: 404 });
}
const dispatcher = createWebhookDispatcher({
agentId: env.HASHEE_AGENT_ID,
token: env.HASHEE_AGENT_TOKEN,
secret: env.HASHEE_WEBHOOK_SECRET,
privateKeyBase64: env.HASHEE_X25519_PRIVATE_BASE64,
signingPrivateKeyBase64: env.HASHEE_ED25519_PRIVATE_BASE64,
onMessage: async (msg) => {
if (msg.payload?.type !== "text") return;
ctx.waitUntil(
dispatcher.sendReply(msg.conversation_id, {
type: "text",
text: `Echo: ${msg.payload.text}`,
}),
);
},
});
try {
await dispatcher.handle(
Object.fromEntries(request.headers),
await request.text(),
);
return new Response("ok", { status: 200 });
} catch (err: any) {
return new Response("error", { status: err?.statusCode ?? 500 });
}
},
};

wrangler.toml

name = "my-hashee-agent"
main = "src/worker.ts"
compatibility_date = "2024-09-23"
compatibility_flags = ["nodejs_compat"]
[observability]
enabled = true

部署

Terminal window
# 1. 设 secret
wrangler secret put HASHEE_AGENT_ID
wrangler secret put HASHEE_AGENT_TOKEN
wrangler secret put HASHEE_WEBHOOK_SECRET
wrangler secret put HASHEE_X25519_PRIVATE_BASE64
wrangler secret put HASHEE_ED25519_PRIVATE_BASE64
# 2. 部署
wrangler deploy
# → 输出 URL: https://my-hashee-agent.<subdomain>.workers.dev

注册 webhook

在 Hashee app 跟系统 Agent 说:

把 DemoBot 的连接模式改成 webhook
URL: https://my-hashee-agent.<subdomain>.workers.dev/hashee/webhook
secret: <你前面 wrangler secret 里设的 HASHEE_WEBHOOK_SECRET>

完整教程(含 Queue / DO / 长任务异步化)

部署到 Cloudflare Workers — 完整教程