跳到主要内容

URL 格式

AISCouncil 将机器人配置直接编码到 URL 片段(# 后面的部分)中。这意味着分享机器人就像分享链接一样简单 —— 无需服务器、无需数据库、无需账户。URL 就是机器人。

机器人 URL 如何工作

当您分享机器人时,应用程序获取整个机器人配置 —— 名称、提供商、模型、系统提示词、温度和所有其他设置 —— 并将其压缩成一个紧凑的字符串,存在于 URL 片段中。

https://aiscouncil.net/#B{base80_payload}

浏览器永远不会将片段发送到任何服务器(这是 HTTP 规范的一部分),因此配置完全保留在客户端。

URL 结构

机器人 URL 有三部分:

部分示例用途
基础 URLhttps://aiscouncil.net/应用程序本身
##片段分隔符(不发送到服务器)
VLQ 前缀 + 负载BeLT1Qx9k...版本字节 + 压缩配置

VLQ 版本前缀

片段的第一个字符使用可变长度数量 (VLQ) 编码标识编码版本:

前缀版本内容类型
A0编辑器内容(由 aiscouncil.net/s/ 使用)
B1机器人配置
C2PDL 页面规格

B 前缀告诉应用程序"这是用编解码器版本 1 编码的机器人配置"。未来版本可以添加新格式而不破坏现有 URL。

Base80 编码

在版本前缀之后,负载使用自定义 Base80 字母表编码。选择此字母表是为了最大化 URL 密度,同时仅使用在 URL 片段中安全而无需百分比编码的字符:

ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-._~$&'()*+,;=:@/?

Base80 比 Base64 对于 URL 片段更高效,因为它使用 80 个字符而不是 64 个,每个字符打包更多数据。

压缩

在 Base80 编码之前,机器人配置 JSON 使用 deflate-raw 压缩(通过浏览器原生的 CompressionStream API)。这通常将机器人配置减少到其原始大小的 30-60%。压缩是无损的,解压缩使用浏览器原生的 DecompressionStream

编码管道

机器人配置 (JSON) --> UTF-8 字节 --> Deflate-raw 压缩 --> Base80 编码 --> VLQ 前缀

分步:

  1. 机器人配置对象序列化为 JSON
  2. JSON 字符串编码为 UTF-8 字节
  3. 字节用 deflate-raw 压缩(原生 CompressionStream
  4. 压缩字节编码为 Base80 字符
  5. 添加 VLQ 版本前缀(B

解码完全相反地执行该过程。

机器人配置架构

配置使用短单字母键以最小化压缩大小:

类型描述默认值
nstring机器人显示名称"New Bot"
pstring提供商 ID(anthropicopenaixaigeminiopenrouterollama 等)必需
mstring模型 ID(例如 claude-sonnet-4-20250514gpt-4o必需
sstring系统提示词""
tnumber温度 (0-2)0.7
xinteger最大输出 token4096
restring推理投入(lowmediumhighmax 或数值预算)
tpnumberTop P (0-1)1
fpnumber频率惩罚 (0-2)0
ppnumber存在惩罚 (0-2)0
seinteger种子(用于可重复输出)
starray停止序列
rfstring响应格式(textjson"text"
authinteger访问控制:1 = 公开(无需登录)
iconstring机器人图标(表情符号)
dstring机器人描述
colorstring机器人强调色(十六进制)"#7c3aed"
kstring每机器人 API 密钥(本地存储,从不在 URL 中)
cobject委员会配置(用于多模型机器人)
pfstring配置文件引用 ID
clinteger上下文长度(消息历史限制)
smboolean启用流式传输true
atboolean自动标题对话false
mrboolean启用 Markdown 渲染true
stcboolean显示 token 计数false

只有非默认值包含在配置中以最小化 URL 长度。

什么不在 URL 中

安全保证

API 密钥从不包含在 URL 中。k(每机器人 API 密钥)字段在 URL 编码期间被剥离。密钥仅存储在浏览器的 localStorage 中,仅发送到 LLM 提供商的 API 端点。

以下内容从分享的 URL 中排除:

  • API 密钥 —— 接收者必须提供自己的
  • 聊天历史 —— 只分享机器人配置
  • 记忆条目 —— 每机器人持久记忆保留在本地
  • 使用统计 —— 跟踪数据是设备本地的

编辑器 URL

aiscouncil.net/s/ 的 Web 编辑器使用相同的编码系统,但使用不同的版本前缀:

https://aiscouncil.net/s/#A{base80_payload}

A 前缀表示版本 0(编辑器内容)。负载包含压缩的文档内容而不是机器人配置。

编程编码和解码

您可以使用浏览器控制台中的 AIS.Codec 模块以编程方式编码和解码机器人配置:

解码 URL

// 从 URL hash 解码
const hash = location.hash.slice(1); // 移除 '#'
const config = await AIS.Codec.decodeBotConfig(hash);
console.log(config);
// { n: "My Bot", p: "anthropic", m: "claude-sonnet-4-20250514", s: "You are helpful.", t: 0.7, x: 4096 }

编码配置

const config = {
n: "Research Assistant",
p: "anthropic",
m: "claude-sonnet-4-20250514",
s: "You are a thorough research assistant. Cite sources.",
t: 0.3,
x: 8192,
};
const hash = await AIS.Codec.encodeBotConfig(config);
const url = location.origin + "/#" + hash;
console.log(url);
// https://aiscouncil.net/#BeLT1Qx9k...

检查架构

console.log(AIS.Codec.CONFIG_SCHEMA);
// 返回机器人配置的 JSON Schema 定义

URL 长度限制

浏览器限制

大多数现代浏览器支持至少 2,000 个字符的 URL 长度,许多支持 8,000+ 个字符。但是,某些中介(电子邮件客户端、社交媒体平台、URL 缩短器)可能会截断长 URL。

实际限制取决于系统提示词长度:

系统提示词长度大约 URL 长度兼容性
< 500 字符约 300-500 字符到处安全
500-2,000 字符约 500-1,200 字符在浏览器和大多数平台安全
2,000-5,000 字符约 1,200-2,500 字符在浏览器中工作,可能在电子邮件/SMS 中失败
> 5,000 字符2,500+ 字符仅浏览器,可能在其他地方被截断

如果您的系统提示词非常长,请考虑:

  • 缩短或总结提示词
  • 使用保留片段的 URL 缩短器
  • 改为将机器人配置作为 JSON 文件分享(通过导出)

主页行为

主页无 URL 编码

当您直接加载 aiscouncil.net(URL 中没有 hash)时,应用程序不会将您的机器人配置编码到 URL 中。URL 编码仅在页面从分享的机器人 URL 加载时激活(即,URL 已包含 #B... 片段)。这保持主页 URL 干净。