🎁 福利专区全网大模型免费应用 + 新用户福利 + 注册活动入口,低成本玩转 AI
广告☁️ 云服务器特惠阿里云首购 8 折 · 腾讯云合作特惠
DeepSeek Harness Hub
← 返回列表

Haven-hvn/deepseek-harness-web3-agent-stack

DeepSeek Harnessspec-screened扫描:中风险在 GitHub 查看 ↗
需源码安装

一次性入门构建最新的 02ca906 技术栈、测试、启动 xmtp-prod、输出二维码 + 钱包:

暂不能直接安装(需源码编译或环境不满足):缺少 main/exports/bin 入口声明;仓库 package.json 标记 private,未发布到 npm,需从源码安装。 · 最近上游提交 2026/9/21 · 已提供中文文档

为deepseek测试框架提供的web3扩展,其中一切都是插件

综合分
29.9
GitHub 分
29.9
用户评分
—
★ Stars
0
周下载量
—
安装插件(需先安装 dsh CLI 引擎:npm install -g @deepseek-ai/dsh)
dsh plugin --profile web add Haven-hvn/deepseek-harness-web3-agent-stack
缺少 main/exports/bin 入口声明;仓库 package.json 标记 private,未发布到 npm,需从源码安装,改用 GitHub 源安装
信任档位:已验证本站已于 1 天前真实安装成功
是什么
dsh 原生插件 · chat
装得上吗
本站已真实安装成功(非静态推断)
安全吗
本站尚未对该插件做风险分级(暂未覆盖,不等同于无风险)
还在维护吗
活跃:最近一次提交在 5 天前

档位由下列信号合成:本站实装验证(真实安装,当前最高到 L4)· 验证所用 dsh 版本 · 静态安装检查 · 风险分级 · 仓库维护状态。下方各区块是它的证据明细。 验证判据与等级说明 →

🟢实装验证通过· 2026/9/25
由本站实装验证器在真实 dsh 环境安装成功,非静态推断。
数据截至 2026/9/21(元数据每日更新 · 实装验证按队列轮转,单条结论的验证时间见上方)
安装兼容性检查需源码安装

以下结论由程序自动检查 npm 包、engines 声明与入口文件得出,未做人工实机验证——能装不等于用着没问题。

✗npm 包dsh-haven-workspace(未发布到 npm,仅可源码安装)
✓Node 引擎未声明 engines.node
✓dsh CLI 依赖未声明 dsh 版本约束
✗入口文件缺少入口声明

缺少 main/exports/bin 入口声明;仓库 package.json 标记 private,未发布到 npm,需从源码安装

验证方式:npm registry 存在性 + package.json 静态校验 · 最后验证 2026/9/22 00:10:36

用户评分
还没有人投票,来当第一个
订阅周报,不错过优质插件更新
每周一封 · 高评分插件 + 新用户活动

README

由 DeepSeek 最新模型翻译生成
dsh-web3

快速开始

一次性入门(构建最新的 02ca906 技术栈、测试、启动 xmtp-prod、输出二维码 + 钱包):

bash quickstart.sh
或:MUSE_SPARK_API_KEY= bash quickstart.sh

输出 Invite URL: https://popup.convos.org/v2?i=... + ANSI 二维码(qrencode -t ANSIUTF8)以及钱包 0xa85dD3FbD8C2c831Ef156036F14638CcFf03b44e(动态 wallet_info→ctx.wallet.address)。也可使用:./show-convos-qr.sh / ./show-xmtp-qr.sh 仅显示二维码。

使用 DeepSeek harness 作为核心、一切皆为插件的自主 web3 代理 harness 的重新实现。取代 https://github.com/Haven-hvn/haven-core 和 https://github.com/Haven-hvn/haven-adapters

这里刻意没有聚合包:人们可能只想要某一项能力
而不想要另一项,因此每个包都自带 dsh.bundle.patch →
cordis.patch.yml,只插入自己的行,并独立安装:

dsh plugin --profile  add /path/to/dsh-haven/

各软件包

| 软件包 | Haven 概念 | 它所落到的 dsh 接缝 |
| --- | --- | --- |
| dsh-wallet | WalletIdentity 托管(“密钥永不离开此边界”)+ CryptoAdapter 契约 | ctx.wallet 服务;凭据按每次操作通过 ctx.credentials 解析——配置携带的是引用,绝不是密钥 |
| dsh-wallet-ethereum | EthereumCryptoAdapter → OWS 迁移计划 | 提供者插件,按链族注册一个 CryptoAdapter,由 @open-wallet-standard/core 支持(仅签名;该标准处理所有链族) |
| dsh-treasury | Treasury 机器:余额、支出、FUNDED/LOW/CRITICAL/DEPLETED 生存梯度 | 存储域表 + 派生状态;一个策略插件对 agent/request 和 tools/pre-execute 进行短路,并从 llm/token-meter 计量 |
| dsh-channel-xmtp | XmtpChannel 代理↔用户直接消息传递 | 每个会话一个 dsh 代理(ctx.agents),入站通过 agent.followup,回复通过 sendText;EOA 身份通过 ctx.wallet 签名 |
| dsh-storage-synapse | SynapseStorageAdapter + StorageBackend 固定 | ctx.synapse + synapse_pin / synapse_pin_status 代理工具;每个节点请求按每次操作由钱包签名 |
| dsh-wallet-tools | 钱包地址/余额暴露(取代硬编码人设) | 通过 ctx.tools + ctx.wallet.address() 实时提供 wallet_info 工具(无硬编码 0x...) |
| dsh-persona | Haven 人设 / 系统指令 | agent/request 组合;当被询问地址/余额/资金时调用 wallet_info 的通用指令 |

组合

dsh-wallet 是托管根;其他软件包构建于其上:

dsh-wallet  ←  dsh-wallet-ethereum   (注册 evm CryptoAdapter)
↑
├── dsh-channel-xmtp             (按每次签名签署 XMTP 身份)
├── dsh-storage-synapse          (按请求对节点请求进行签名)
└── dsh-wallet-tools             (通过 ctx.tools → ctx.wallet 暴露 wallet_info)
dsh-persona                           (组合 agent/request;调用 wallet_info,无硬编码地址)
dsh-treasury                          (独立;需要存储栈)

一个典型的完整安装:

dsh plugin --profile  add \
/path/to/dsh-haven/dsh-wallet \
/path/to/dsh-haven/dsh-wallet-ethereum \
/path/to/dsh-haven/dsh-treasury \
/path/to/dsh-haven/dsh-channel-xmtp \
/path/to/dsh-haven/dsh-storage-synapse \
@open-wallet-standard/core @xmtp/node-sdk

这两个 SDK 是可选的同级依赖:每个包在没有它们的情况下都能加载、挂载和测试
(惰性导入并带有可操作的错误;测试会替换
internals. 接缝)。

先决条件

- 存储栈(仅 dsh-treasury):profile 必须挂载 storage、
storage-json/storage-sqlite 和 storage-domain 行(存在于
dsh-web-app 中;在 dsh-base 中不存在)。treasury 补丁不会插入
它们——由两个层插入的行 id 会导致插件被挂载两次。
- Agent 栈(仅 dsh-channel-xmtp):agents/sessions/llm,存在于
任何运行 agent 的 profile 中。
- inject 列表未满足的插件会保持休眠而不是失败,因此
安装顺序是自由的。

设计决策:隔离的 bundle,耦合的接缝

Web3 插件作为代码是隔离的,在接缝处耦合——这是 DeepSeek harness 如何组合的
直接结果。

隔离——每个包都是一个独立的 Cordis 插件(export const name、
export const inject、export function apply(ctx, config)),拥有自己的
dsh.bundle.patch → cordis.patch.yml。没有聚合 bundle;dsh plugin add
一次安装一个能力,并且 inject 顺序是自由的(未满足的 inject 保持
休眠)。这就是为什么 dsh-wallet、dsh-channel-xmtp、dsh-storage-synapse、
dsh-treasury 和 dsh-wallet-tools 各自通过 prepare(tsdown → lib/)构建,并在
没有其他包的情况下测试(internals. 接缝)。

在接缝处耦合——如果没有声明的契约,隔离就会被破坏:
ctx.wallet(托管)、ctx.tools(面向模型的工具)、ctx.agents/ctx.sessions
(按对话的 agent)、ctx.synapse/ctx.treasury(存储)。插件通过
inject 声明这一点——例如 dsh-wallet-tools 和
dsh-storage-synapse 中的 inject = ['wallet','tools']——因此它们仅在接缝存在时挂载,并按操作
调用它(ctx.wallet.address()、ctx.wallet.signMessage()、ctx.tools.register(defineTool(...)))。

迫使这种形态的 harness 限制:
1. 单例工具运行时。 @deepseek-ai/dsh-tools 暴露一个调度器(ctx.tools[TOOL_RUNTIME_SCHEDULER].prepare)。如果两个实例被错误地去重,Symbol 就会不匹配,每个 tool/call 都会失败并报错 Cannot read properties of undefined (reading 'prepare')。因此,各 bundle 将 dsh-tools 作为 peer 依赖(==0.1.0-rc.7),并且 link: 安装必须去重为一份副本。

2. 钱包托管是按操作进行的。 配置只携带 keyRef/wallet 名称;ctx.credentials.resolve 在 signMessage/address 内部运行,随后即被丢弃。消费者(dsh-channel-xmtp 中的 XMTP 身份、dsh-storage-synapse 中按请求的 x-synapse- 头、dsh-wallet-tools 中的 wallet_info)只能看到地址/签名。在 persona 中硬编码地址(When asked for address, answer with 0x...)会破坏轮换和与钱包无关的安装——正确的接缝是一个实时解析 ctx.wallet.address(config.wallet) 的工具。

3. Channel 是按会话的,而不是按进程的。 dsh-channel-xmtp 为每个 XMTP 会话创建一个 ctx.agents 会话(SessionId 由 conversationId 派生),在 getConversationById 之前处理 conversations.sync()、重连/同意清扫以及去重。Channel 拥有传输;agent 拥有回合。

结果:添加一次 dsh-wallet,然后组合任意子集。dsh-wallet-tools(wallet_info 工具,presentCall: {kind:'read'})使 EVM 地址可被模型访问,而无需 persona 捷径;dsh-channel-xmtp 使其可通过 XMTP 访问;dsh-storage-synapse 使其可通过存储访问——全部通过 ctx.wallet,没有一个是通过共享密钥材料实现的。

托管模型(贯穿主线)

Haven 的规则——私钥永不离开其所在层;其他一切请求签名——映射到此处到处使用的一种 dsh 模式:

1. 配置携带名称和凭据引用(keyRef、dbEncryptionKeyRef)。粘贴的原始密钥会在插件加载时大声失败,因为密钥材料在语法上不可能是 CredentialRef。
2. 密钥只存在于单个操作内部:ctx.credentials.resolve 按调用运行,提供者签名,所有引用都被丢弃。轮换会在下一个操作立即生效,无需重启。
3. 消费者(XMTP 签名者、Synapse 请求、未来的 channel)只能通过 ctx.wallet 看到地址和签名。

开发

pnpm install       # workspace of five packages
pnpm vitest        # specs live in /tests/*

每个包都通过 prepare(tsdown → lib/)自包含构建,因此 git 或路径安装无需 monorepo 上下文即可工作。金额数字全程为整数 µUSD(USD × 1e6),与 haven-core 一致。

上游仓库有新提交时邮件通知你(每天最多一封,无更新不打扰),随时一键退订。

💬 加入社群

插件用法、部署报错、新插件第一时间同步——群里问,比一个人翻文档快。

DPharness QQ 群二维码,QQ 扫码进群
QQ 扫码进群
DPharness 飞书群二维码,飞书扫码进群
飞书扫码进群