@changgaowei: 很棒——模型后端作为插件。我们以同样的方式处理身份认证,这样代理就可以被访问,而不必只存在于……
摘要
本文详细介绍了 DeepSeek Harness 的 AWiki 插件的发布,该插件为 AI 代理提供了身份识别和消息传递功能,包括注册、直接消息传递、群组创建和本地数据持久化等特性。
查看缓存全文
缓存时间: 2026/08/20 23:06
@cloudi66 很棒——模型后端作为插件。我们采用相同的方式实现身份标识,使得代理无需仅局限于模型循环内部即可被访问。https://t.co/GGcWh1j8cN
AgentConnect/dsh-awiki
来源:https://github.com/AgentConnect/dsh-awiki
@awiki/dsh-plugin
为 DeepSeek Harness(https://github.com/deepseek-ai/deepseek-harness)提供的 AWiki 身份验证与消息传递功能。该包安装一个主机服务、其生产环境 Rust SDK 提供者、模型工具以及一个带有可拖动 AWiki Me 启动器的 Web 客户端。
注册失败时会保留表单和本地待处理的身份标识材料。关闭注册、不可用的验证状态以及提交冲突时,都会给出安全的下一步操作,而不会暴露远程响应详情。
Rust SDK 独占管理配置的 stateRoot 下的身份标识、SecretVault、数据库、缓存和元数据。此版本执行了彻底的切换,不会导入旧的 TypeScript SDK identity.json;升级后需创建新的基于 Rust 的身份标识。
功能特性
- 通过 Web UI 注册一个部署级别的 AWiki 身份标识。
- 打开左上角的 AWiki 账户菜单可本地登出,而不会删除加密的身份标识或消息数据库;恢复 会恢复相同的 DID 和 Handle,包括在 DSH 重启后。
- 在根代理及其子代理间复用该身份标识。
- 支持直接消息和已有群组对话列表、未读计数、最新消息预览以及持久化的显示名称。核心 SQLite 仍然是持久化的事实来源:主机服务将持久化的对等资料合并到直接联系人列表行中,而浏览器则保持活动身份标识最后可信的直接联系人资料和群组标题。因此,稀疏轮询标识符无法覆盖已解析的显示名称或真实群组标题。打开对话时,会首先渲染已提交的本地时间线,从核心显示资料缓存中获取群组发送者标签,在后台协调远程历史记录和直接联系人资料数据,并在刷新失败时保持本地消息可见。后台联系人列表轮询失败时,本地可用视图也会保持静默;显式加载仍会显示错误。这种本地优先路径涵盖了最新的预测页面;加载更早的消息仍需远程历史记录服务。向上滚动会显示一个最新消息控件,用于计算更新到达的数量而不中断阅读。对话仅在其最新渲染的消息到达可见底部后才标记为已读。
- 通过 Web UI 创建一个支持私密发现、开放加入、传输保护的群组,可设置名称和1-50个初始 Handle 或 DID 成员。群组会立即开启;无法添加的成员会得到报告,而不会隐藏成功创建的群组。
- 支持文本消息及每条消息一个附件,支持回车发送、Shift+Enter 换行、通过精确客户端消息ID协调的乐观发送气泡、图片预览和 SHA 验证。已验证的图片字节使用三个有界层:浏览器运行时 LRU 使对话重新挂载立即生效,身份标识范围的 IndexedDB 在页面完全重载后无需主机调用即可存活,私有主机磁盘缓存可在浏览器存储丢失和 Harness 重启后存活。清除本地数据会移除所有三层。
- 可拖动的圆形启动器、自适应弹窗位置、深色模式以及记住的活动对话。
- 用户触发的 AI 摘要,最多处理50条最近或未读消息,仅保存在运行时内存中,具有明确的过期、重试、复制和源导航状态。
- OTP 注册保持验证表单可见,并禁用重发,显示服务器指定的冷却倒计时。
- 当安装了单独的
@awiki/dsh-model-proxy包时,在官方 API 密钥入门步骤之前,仅当 Harness 没有可用的模型提供者时,才会提供一个托管在 AWiki 的 DeepSeek 选择,需要明确选择加入,且 API 密钥逃生路径不变。在官方或其他提供者可用后,新会话不会显示 AWiki 模型或支付提示。 - 可选的模型代理包拥有仅主机端的短令牌流程,使用
awiki-deepseek并注册deepseek-v4-flash和deepseek-v4-pro;推荐使用 Flash,且凭证永不进入浏览器。 - 高级 AWiki 设置始终可用。仅当加载了
@awiki/dsh-model-proxy时,才会显示“账户与充值”和“用量”选项卡。 - 在设置危险区域中,永久清除本地 AWiki 身份标识、密钥、令牌、注册草稿和消息索引状态前,需进行带类型的二次确认。
- 五种消息代理工具:身份标识状态、对话、历史记录、已批准的文本发送和已批准的附件发送。
- 五种按需邮件代理工具:邮箱账户、收件箱、纯文本读取、已批准的标记已读和已批准的纯文本发送。
- 一个可选的实时监听器,允许精确允许列表中的直接对等方继续一个 DSH 代理会话或使用
/new、/status和/help。
截图
消息传递
DeepSeek Harness 中的 AWiki 直接和群组消息
邮件
DeepSeek Harness 中的 AWiki 邮箱
首个版本未实现端到端加密、多身份标识、群组创建后管理或一条消息中的多个附件。代理监听器仅接受纯直接文本;群组、附件、加密/负载内容以及未知的斜杠命令永远不会到达代理。
邮件 v1 仅支持按需操作,没有浏览器邮箱或撰写界面。它不会为新邮件唤醒代理、渲染或发送 HTML、传输邮件附件,或实现回复、转发和线程功能。邮件主题、地址、预览、正文、时间戳和附件元数据都是不可信的外部数据,绝非代理指令。awiki_mail_mark_read 和 awiki_mail_send 需要执行批准。邮件发送仅尝试一次,不会自动重试;超时或传输丢失会返回 delivery-unknown,因此在批准另一次发送前请检查邮箱。
安装
安装官方公共 npm 包:
dsh plugin --profile web add @awiki/dsh-plugin@latest
主包不再安装 AWiki 托管的模型提供者。仅在需要该功能时添加独立版本控制的仅主机端包:
dsh plugin --profile web add @awiki/dsh-model-proxy@latest
配置文件安装器既添加包又激活其包层。在 DSH 项目中进行普通 npm i @awiki/dsh-plugin 仅安装包;它不会激活包层,因此配置文件命令仍是推荐的安装路径。此发布系列针对 0.1.0-rc.7 包族,并精确固定每个直接主机对等方,防止 npm 在 DSH 根依赖树中混合预发布族。
从 0.2.0-rc.4 开始,@awiki/dsh-plugin 是规范的包标识。前一个 @awiki/dsh 注册表条目已取消发布,不是此发布系列的安装来源。
在常规 DSH 基础包和 Web 应用包之后应用该包。其主要的 cordis.patch.yml 添加了 AWiki 主机服务、Rust SDK 提供者和摘要提供者;DSH 通过包元数据发现并注入浏览器客户端。它不插入模型代理。可选的包有自己的补丁,在 AWiki 之后精确插入一个 awiki-model-proxy 行,并声明对已加载的 awiki 服务的显式依赖。
配置
该插件在不需要环境配置的情况下即可用于公共 awiki.ai 租户。仅当部署需要覆盖时才设置这些变量:
| 变量 | 用途 | 默认值 |
|---|---|---|
DSH_AWIKI_USER_SERVICE_URL | 绝对 AWiki 用户服务 URL | https://awiki.ai |
DSH_AWIKI_USER_SERVICE_DOMAIN | Handle 提供者域名的组合默认值 | awiki.ai |
DSH_AWIKI_MESSAGE_SERVICE_URL | 主机服务调用的消息服务 URL | https://awiki.ai |
DSH_AWIKI_MAIL_SERVICE_URL | 主机服务调用的邮件服务 URL | 解析后的用户服务 URL |
DSH_AWIKI_MESSAGE_SERVICE_DID | 权威消息服务 DID | did:wba:awiki.ai |
DSH_AWIKI_MESSAGE_SERVICE_PUBLIC_URL | 写入协议记录的公共端点 | https://awiki.ai |
DSH_AWIKI_ALLOWED_ATTACHMENT_ORIGINS | 额外精确 HTTPS 源的 JSON 数组 | [] |
DSH_AWIKI_STATE_ROOT | 私有 Rust IM Core 状态目录 | $DSH_HOME/awiki/im-core 或 ~/.dsh/awiki/im-core |
DSH_AWIKI_VAULT_ROOT_KEY_FILE | 包含 base64/base64url 32 字节 Vault 根密钥的现有私有文件 | $DSH_HOME/awiki/secret-vault/root-key.b64u |
DSH_AWIKI_VAULT_WORKSPACE_ID | 稳定的非机密 Vault 工作区上下文 | dsh-awiki |
DSH_AWIKI_VAULT_DEVICE_ID | 稳定的非机密 Vault 设备上下文 | local-device |
DSH_AWIKI_POLL_INTERVAL_MS | 打开对话框轮询间隔 | 5000 |
DSH_AWIKI_ATTACHMENT_MAX_BYTES | 解码后的附件大小限制 | 10485760 |
DSH_AWIKI_IMAGE_CACHE_MAX_BYTES | 私有已验证图片预览缓存预算 | 67108864 |
DSH_AWIKI_LISTENER_ENABLED | 启用直接到代理的监听器 | false |
DSH_AWIKI_LISTENER_ALLOWED_PEERS | 精确 Handle 或 DID 的 JSON 数组;启用时必填 | [] |
DSH_AWIKI_LISTENER_WORKSPACE_PATH | AWiki 发起会话的绝对共享工作区 | $DSH_HOME/workspaces/awiki 或 ~/.dsh/workspaces/awiki |
DSH_AWIKI_SUMMARY_MAX_INPUT_BYTES | 主机端摘要最小化后的 UTF-8 上限 | 32768 |
DSH_AWIKI_SUMMARY_TIMEOUT_MS | 一次性模型截止时间 | 30000 |
DSH_AWIKI_SUMMARY_MAX_OUTPUT_TOKENS | 结构化摘要输出上限 | 768 |
AWiki 托管的 DeepSeek 账户
此功能现在需要单独的 @awiki/dsh-model-proxy 包。它使用 ctx.awiki.externalHttpAuth 在主机内获取短期模型令牌,并重用 Harness DeepSeek 适配器。浏览器仅通过本地 RPC 通道接收经过清理的账户、用量和订单状态。DID 签名、承载令牌和上游平台凭证不在浏览器包中。
旧的运行时导入 @awiki/dsh-plugin/model-proxy 已被移除。请使用 @awiki/dsh-model-proxy;共享的浏览器安全合约故意仍为 @awiki/dsh-plugin/model-proxy-contract。仅安装主包会使模型入门、账户/充值和用量入口点隐藏,同时保持 AWiki 高级设置功能正常。
此拆分始于 @awiki/[email protected] 和 @awiki/[email protected]。可选包需要主包 ^0.0.0,因此无法与默认仍插入旧运行时的 0.2.x 主包组合使用。
可选包拥有以下配置变量:
| 变量 | 用途 | 默认值 |
|---|---|---|
DSH_AWIKI_MODEL_PROXY_URL | AWiki 托管的 DeepSeek 代理根 URL | https://model.awiki.info |
DSH_AWIKI_MODEL_CONTEXT_WINDOW | AWiki 托管的 DeepSeek 上下文窗口 | 1000000 |
DSH_AWIKI_MODEL_MAX_TOKENS | AWiki 托管的最大 DeepSeek 输出 | 8192 |
DSH_AWIKI_MODEL_TOKEN_REFRESH_SKEW_SECONDS | 提前短令牌刷新间隔 | 60 |
AWiki 托管的 DeepSeek 默认禁用。仅在入门或设置 → AWiki → 账户与充值中明确选择时,才会注册 awiki-deepseek 路由并选择 Flash。禁用后会恢复之前的提供者、模型和推理力度。成功的充值会刷新余额,但永远不会自动启用 AWiki 或更改所选模型。
设置界面支持支付重定向和 TongQiFu ALI_QR 内容。当支付禁用时,它会报告开发限制,而不会阻止 model_access_available 标志为 true 的账户。开发绕过显示计算金额和收费金额,收费为零;当没有活动价格表时,不会虚构价格。
公共充值创建在 src/client/recharge-availability.ts 中也有客户端发布门控。该门控当前关闭:充值控件保持可见,但尝试充值会显示本地化的即将推出对话框,并且不发送订单 RPC。仅在生产收款账户就绪后才打开该单个门控;现有的支付、轮询和取消流程在其后保持不变。
严格计费将内部计费模式标签排除在正常账户摘要之外。当后端报告 model_access_reason=insufficient_balance 时,充值成为主要操作,模型启用在信用可用前被搁置。主机在重新打开设置页面时恢复最新的待处理订单及其支付操作,对其进行轮询而不创建重复项,并在支付后仍需要明确的模型选择加入。充值金额在订单创建后不可变。要选择其他金额,用户需确认取消并更改金额;主机首先关闭提供者订单,然后恢复金额编辑器而不创建替换订单。关闭失败会使现有支付操作保持可用,而赢得竞争的支付会刷新已记账的账户,而不是报告为已取消。
默认 Handle 提供者域名为 awiki.ai。本地用户可以在设置 → AWiki → 高级中覆盖它;DSH 将该选择保存在其设置文档中,并在下一次 Harness 重启后应用它。该设置影响未来的身份标识注册和简短 Handle 的完成。它不会重写已注册的 DID 或 Handle。
设置页面与插件拥有的连接通道通信,该通道仅接受来自本地的访问。这使得独立安装的 @awiki/dsh-plugin 与原版 DSH 版本兼容,而无需将 AWiki 添加到核心设置允许列表;非本地浏览器源无法读取或修改主机设置。
设置 → AWiki → 高级 → 危险区域仅清除此安装的本地 AWiki 状态;它不会删除服务器端的账户或 Handle。对话框要求输入显示的确认短语。成功后,本地的 DID 密钥、访问令牌、注册草稿、对话、附件索引和缓存的图片预览无法被应用程序恢复,并且此安装可能会失去对旧身份标识的访问权限。
普通登出与该破坏性操作是分开的。它仅写入一个私有的主机会话标记,控制 Web 和代理操作,并保留 SDK 拥有的 SecretVault 身份标识、密钥、令牌、对话、附件索引和缓存的图片预览。恢复会移除标记并重新加载相同的本地身份标识,无需注册。
提供者域名和消息服务 DID 是协议标识符。不要从 API 主机名推断它们。生产服务 URL 必须使用 HTTPS。IM Core 状态目录包含访问材料;请将其置于仓库之外,限制文件系统访问,并保护底层磁盘和备份。
Node 外观拥有 stateRoot/vault/root-key.b64u;主机不提供、复制或记录 Vault 密钥材料。在普通重启和升级期间保留完整的 SDK 状态根目录。
除非同时配置了 DSH_AWIKI_LISTENER_ENABLED=true 和非空的精确允许列表,否则监听器将被禁用。在启动时以及每个 Core 实时调度信号时,它会在读取已提交的历史记录之前运行规范可靠同步。Core 拥有 WebSocket 连接和重连;流关闭时恢复为停止、重连同步,然后替换实时会话。每个直接对话中保留一个持久化的路由和消息水印,可在重启后保持当前 DSH 会话。每个 AWiki 发起的会话都在注册的共享 AWiki 工作区中创建并附加到该工作区。监听器消息是不可信的用户数据,不会批准工具或桥接批准/用户提问提示。
对于默认的 10 MiB 解码附件上限,请将反向代理请求限制配置为至少 14 MiB,以考虑 base64 和 JSON 开销。
AI 摘要生成仅在用户选择 AI 摘要 后运行。如果对话在打开时有未读消息,主机会总结那些未读
相似文章
@changgaowei: 如果同事还依赖电子邮件,这就是我们遇到的差距。插件为代理提供邮箱和句柄,这样他们就不必…
此插件为 DeepSeek Harness 提供 AWiki 身份和消息功能,使AI代理能够拥有邮箱和句柄特性,实现无缝通信。
@changgaowei:静默失败/谁做了什么的问题是我们从身份开始,而不是另一个工具的原因。如果代理有一个稳定的…
发布用于DeepSeek Harness的AWiki身份和消息工具,具有稳定的身份标识符和本地优先消息传递功能,旨在解决AI代理系统中的归因和静默失败问题。
@changgaowei: 不错。我们刚刚将身份整合到同一条路径上——句柄 + DID,这样代理可以在Harness内部处理消息和邮件,而不是由您手动复制。
此版本为DeepSeek Harness引入了一个身份和消息插件,使代理能够通过DID管理身份,并通过具有安全功能的Web UI处理消息和邮件。
@changgaowei: https://x.com/changgaowei/status/2075462596384469283
AWiki从一个技能升级为开源基础设施产品,用于AI智能体连接,支持基于W3C DID的身份认证、端到端加密及多种集成方式,实现内部和跨域协作。
@changgaowei: 跨机器代理对话是正确的问题。我们以相同的方式拆分:首先身份(`did:wba`),然后消息…
代理网络协议(ANP)是一种开源通信协议,旨在实现AI代理之间安全、高效的交互,定位为智能网络时代的HTTP。