WorkosCursorSessionToken
的条目,并复制其第三个字段。请注意,%3A%3A 是 :: 的 URL 编码形式,cookie
的值使用冒号 (:) 进行分隔。PORT
: 服务器端口号(默认:3000)AUTH_TOKEN
: 认证令牌(必须,用于API认证)ROUTE_PREFIX
: 路由前缀(可选)TOKEN_FILE
: token文件路径(默认:.token)TOKEN_LIST_FILE
: token列表文件路径(默认:.token-list)更多请查看 /env-example
.token
文件:每行一个token,支持以下格式:
# 这是注释
token1
# alias与标签的作用差不多
alias::token2
alias 可以是任意值,用于区分不同的 token,更方便管理,WorkosCursorSessionToken 是相同格式
该文件将自动向.token-list文件中追加token,同时自动生成checksum
.token-list
文件:每行为token和checksum的对应关系:
# 这里的#表示这行在下次读取要删除
token1,checksum1
# alias被舍弃,会自动删除最后一个:或%3A的后一位前的所有内容
token2,checksum2
该文件可以被自动管理,但用户仅可在确认自己拥有修改能力时修改,一般仅有以下情况需要手动修改:
写死了,后续也不会会支持自定义模型列表
claude-3.5-sonnet
gpt-4
gpt-4o
claude-3-opus
cursor-fast
cursor-small
gpt-3.5-turbo
gpt-4-turbo-2024-04-09
gpt-4o-128k
gemini-1.5-flash-500k
claude-3-haiku-200k
claude-3-5-sonnet-200k
claude-3-5-sonnet-20241022
gpt-4o-mini
o1-mini
o1-preview
o1
claude-3.5-haiku
gemini-exp-1206
gemini-2.0-flash-thinking-exp
gemini-2.0-flash-exp
/v1/chat/completions
AUTH_TOKEN
进行认证.token
文件中的令牌列表进行轮询认证{
"model": "string",
"messages": [
{
"role": "system" | "user" | "assistant", // 也可以是 "developer" | "human" | "ai"
"content": "string" | [
{
"type": "text" | "image_url",
"text": "string",
"image_url": {
"url": "string"
}
}
]
}
],
"stream": boolean
}
如果 stream
为 false
:
{
"id": "string",
"object": "chat.completion",
"created": number,
"model": "string",
"choices": [
{
"index": number,
"message": {
"role": "assistant",
"content": "string"
},
"finish_reason": "stop" | "length"
}
],
"usage": {
"prompt_tokens": 0,
"completion_tokens": 0,
"total_tokens": 0
}
}
不进行 tokens 计算主要是担心性能问题。
如果 stream
为 true
:
data: {"id":"string","object":"chat.completion.chunk","created":number,"model":"string","choices":[{"index":number,"delta":{"role":"assistant","content":"string"},"finish_reason":null}]}
data: {"id":"string","object":"chat.completion.chunk","created":number,"model":"string","choices":[{"index":number,"delta":{"content":"string"},"finish_reason":null}]}
data: {"id":"string","object":"chat.completion.chunk","created":number,"model":"string","choices":[{"index":number,"delta":{},"finish_reason":"stop"}]}
data: [DONE]
/tokeninfo
/update-tokeninfo
{
"status": "success",
"message": "Token list has been reloaded"
}
/update-tokeninfo
{
"tokens": "string",
"token_list": "string"
}
{
"status": "success",
"token_file": "string",
"token_list_file": "string",
"tokens_count": number,
"message": "Token files have been updated and reloaded"
}
/get-tokeninfo
{
"status": "success",
"token_file": "string",
"token_list_file": "string",
"tokens": "string",
"tokens_count": number,
"token_list": "string"
}
/config
/config
{
"action": "get" | "update" | "reset",
"path": "string",
"content": {
"type": "default" | "text" | "html",
"content": "string"
},
"enable_stream_check": boolean,
"include_stop_stream": boolean,
"vision_ability": "none" | "base64" | "all", // "disabled" | "base64-only" | "base64-http"
"enable_slow_pool": boolean,
"enable_all_claude": boolean,
"check_usage_models": {
"type": "none" | "default" | "all" | "list",
"content": "string"
}
}
{
"status": "success",
"message": "string",
"data": {
"page_content": {
"type": "default" | "text" | "html", // 对于js和css后两者是一样的
"content": "string"
},
"enable_stream_check": boolean,
"include_stop_stream": boolean,
"vision_ability": "none" | "base64" | "all",
"enable_slow_pool": boolean,
"enable_all_claude": boolean,
"check_usage_models": {
"type": "none" | "default" | "all" | "list",
"content": "string"
}
}
}
注意:check_usage_models
字段的默认值为:
{
"type": "default",
"content": "claude-3-5-sonnet-20241022,claude-3.5-sonnet,gemini-exp-1206,gpt-4,gpt-4-turbo-2024-04-09,gpt-4o,claude-3.5-haiku,gpt-4o-128k,gemini-1.5-flash-500k,claude-3-haiku-200k,claude-3-5-sonnet-200k"
}
这些模型将默认进行使用量检查。您可以通过配置接口修改此设置。
路径修改注意:选择类型再修改文本,否则选择默认时内容的修改无效,在更新配置后自动被覆盖导致内容丢失,自行改进。
/static/shared-styles.css
/static/shared.js
/env-example
/v1/models
{
"object": "list",
"data": [
{
"id": "string",
"object": "model",
"created": number,
"owned_by": "string"
}
]
}
/get-hash
string
/get-checksum
checksum
: 可选,用于修复的旧版本生成的checksum,也可只传入前8个字符;可用来自动刷新时间戳头string
说明:
checksum
参数,将生成一个新的随机checksumchecksum
参数,将尝试修复旧版本的checksum以适配v0.1.3-rc.3之后的版本使用,修复失败会返回新的checksum;若输入的checksum本来就有效,则返回更新tsheader后的checksum/get-tsheader
string
/health
或 /
(重定向){
"status": "success",
"version": "string",
"uptime": number,
"stats": {
"started": "string",
"total_requests": number,
"active_requests": number,
"system": {
"memory": {
"rss": number
},
"cpu": {
"usage": number
}
}
},
"models": ["string"],
"endpoints": ["string"]
}
注意:stats
字段仅在请求头中包含正确的 AUTH_TOKEN
时才会返回。否则,该字段将被省略。
/logs
/logs
{
"total": number,
"logs": [
{
"id": number,
"timestamp": "string",
"model": "string",
"token_info": {
"token": "string",
"checksum": "string",
"profile": {
"usage": {
"premium": {
"requests": number,
"requests_total": number,
"tokens": number,
"max_requests": number,
"max_tokens": number
},
"standard": {
"requests": number,
"requests_total": number,
"tokens": number,
"max_requests": number,
"max_tokens": number
},
"unknown": {
"requests": number,
"requests_total": number,
"tokens": number,
"max_requests": number,
"max_tokens": number
}
},
"user": {
"email": "string",
"name": "string",
"id": "string",
"updated_at": "string"
},
"stripe": {
"membership_type": "free" | "free_trial" | "pro" | "enterprise",
"payment_id": "string",
"days_remaining_on_trial": number
}
}
},
"prompt": "string",
"timing": {
"total": number,
"first": number
},
"stream": boolean,
"status": "string",
"error": "string"
}
],
"timestamp": "string",
"status": "success"
}
/userinfo
{
"token": "string"
}
{
"usage": {
"premium": {
"requests": number,
"requests_total": number,
"tokens": number,
"max_requests": number,
"max_tokens": number
},
"standard": {
"requests": number,
"requests_total": number,
"tokens": number,
"max_requests": number,
"max_tokens": number
},
"unknown": {
"requests": number,
"requests_total": number,
"tokens": number,
"max_requests": number,
"max_tokens": number
}
},
"user": {
"email": "string",
"name": "string",
"id": "string",
"updated_at": "string"
},
"stripe": {
"membership_type": "free" | "free_trial" | "pro" | "enterprise",
"payment_id": "string",
"days_remaining_on_trial": number
}
}
如果发生错误,响应格式为:
{
"error": "string"
}
/basic-calibration
{
"token": "string"
}
{
"status": "success" | "error",
"message": "string",
"user_id": "string",
"create_at": "string",
"checksum_time": number
}
注意: user_id
, create_at
, 和 checksum_time
字段在校验失败时可能不存在。
虽然作者觉得骗收点钱合理,但不强求,要是主动自愿发我我肯定收(因为真有人这么做,虽然不是赞助),赞助很合理吧
不是主动自愿就算了,不是很缺,给了会很感动罢了。
虽然不是很建议你赞助,但如果你赞助了,大概可以:
即使如此,我也保留可以拒绝赞助和拒绝要求的权利。
求赞助还是有点不要脸了,接下来是吐槽:
辛辛苦苦做这个也不知道是为了谁,好累。其实还有很多功能可以做,比如直接传token支持配置(其实这个要专门做一个页面),这个作为rc.4的计划之一吧。
主要没想做用户管理,所以不存在是否接入LinuxDo的问题。虽然那个半成品公益版做好了就是了。
就说这么多,没啥可说的,不管那么多,做就完了。[doge] 自己想象吧。
为什么一直说要跑路呢?主要是有时Cursor的Claude太假了,堪比gpt-4o-mini,我对比发现真没啥差别,比以前差远了,无力了,所以不太想做了。我也感觉很奇怪。
查询额度会在一开始检测导致和完成时的额度有些差别,但是懒得改了,反正差别不大,对话也没响应内容,恰好完成了统一。
有人说少个二维码来着,还是算了。如果觉得好用,给点支持。其实没啥大不了的,没兴趣就不做了。不想那么多了。