add first commit

This commit is contained in:
2026-07-22 17:15:16 +08:00
commit 8a20a14123
13 changed files with 188 additions and 0 deletions
+23
View File
@@ -0,0 +1,23 @@
# 配置文件说明
本目录存放应用所有 TOML 配置文件。
## 主要文件
- `config.toml`:应用主配置(环境、服务器、日志、安全、缓存等)
- `zenoh_config.json5`:Zenoh 会话配置(JSON5 格式)
- `workers/config.toml`:Worker 插件加载列表(指定模块、工厂函数、副本数)
- `workers/<worker_type>/*.toml`:每个 Worker 的路由定义(如 `add.toml`, `divide.toml`)
## Worker 路由配置格式
每个接口文件(如 `add.toml`)包含 HTTP 方法节(`[GET]`, `[POST]` 等):
```toml
[GET]
summary = "Add two numbers"
params = ["a: float", "b: float"]
response_model = { result = { type = "float", required = true }, operation = { type = "str", default = "add" } }
```
执行 `uv run gen_models config/workers/example src/plugins/example` 可自动生成对应的 Pydantic 模型。
+10
View File
@@ -0,0 +1,10 @@
[worker]
name = "auth"
version = "0.1.0"
description = "鉴权管理"
config_version = "1.0"
defaults = { method = "GET", ttl = 30, timeout = 2.0, auth_required = true, cacheable = false }
[worker.registration]
router_prefix = "/auth"
tags = ["auth"]
+13
View File
@@ -0,0 +1,13 @@
[POST]
cacheable = false
auth_required = false
summary = "登录"
docstring = "根据用户名和密码进行登录,登录成功返回token,获取请求需带式token进行请求"
params = ["username: str", "password: str"]
[POST.response_model]
result = {type = "str", required = true}
token = {type = "str", required = true}
message = {type = "str", required = true}
timestamp = {type = "float", required = false}
+33
View File
@@ -0,0 +1,33 @@
[[workers]]
type = "example"
module = "plugins.example"
factory = "create_workers"
cleanup = "cleanup"
count = 3
[workers.config]
type = "example"
data_dir = "./data"
[[workers]]
type = "doubao"
module = "plugins.doubao"
factory = "create_workers"
cleanup = "cleanup"
count = 3
[workers.config]
type = "doubao"
api_key = " ark-b149df84-a057-4ca0-b1a0-82a22c4e3c70-33cde" # 或通过环境变量 VOLC_ACCESSKEY 提供
base_url = "https://ark.cn-beijing.volces.com/api/v3"
model = "doubao-seed-evolving"
[[workers]]
type = "auth"
module = "plugins.auth"
factory = "create_workers"
cleanup = "cleanup"
count = 3
[workers.config]
type = "auth"
+8
View File
@@ -0,0 +1,8 @@
[POST]
summary = "分析图片内容"
docstring = "发送图片(base64或路径)到豆包视觉模型,返回描述"
params = [
"image_base64: str",
"prompt: str"
]
response_model = { result = { type = "str", required = true }, error = { type = "str", required = false, default = "" } }
+10
View File
@@ -0,0 +1,10 @@
[worker]
name = "doubao"
version = "0.1.0"
description = "火山引擎豆包视觉理解 worker"
config_version = "1.0"
defaults = { method = "POST", timeout = 30.0, auth_required = false }
[worker.registration]
router_prefix = "/doubao"
tags = ["vision", "ai"]
+25
View File
@@ -0,0 +1,25 @@
# add 接口 — 按请求类型分节
# subject 会带上方法后缀: example.add.GET / example.add.POST
[GET]
cacheable = true
summary = "Add two numbers"
docstring = "Add two numbers via GET query params"
params = ["a: float", "b: float"]
auth_required = false
[GET.response_model]
result = { type = "float", required = true }
operation = { type = "str", default = "add" }
timestamp = { type = "float", required = false, default = 0.0 }
[POST]
cacheable = true
summary = "Add two numbers (POST)"
docstring = "Add two numbers via POST JSON body"
params = ["a: float", "b: float"]
[POST.response_model]
result = { type = "float", required = true }
operation = { type = "str", default = "add" }
timestamp = { type = "float", required = false, default = 0.0 }
+10
View File
@@ -0,0 +1,10 @@
[worker]
name = "example"
version = "0.1.0"
description = "chongming worker example — demonstrates new config features"
config_version = "1.0"
defaults = { method = "GET", ttl = 30, timeout = 2.0, auth_required = true, cacheable = false }
[worker.registration]
router_prefix = "/calc"
tags = ["example"]
+6
View File
@@ -0,0 +1,6 @@
# count.toml
[GET]
summary = "Get visit count and increment"
docstring = "Increments a counter and returns current value"
params = [] # 无参数
response_model = { name = { type = "str", required = true }, value = { type = "int", required = true } }
+12
View File
@@ -0,0 +1,12 @@
# divide 接口
[GET]
summary = "Divide two numbers"
docstring = "Divide two numbers via GET query params (a / b). Returns error if b == 0."
params = ["a: float", "b: float"]
[GET.response_model]
result = { type = "float", required = false, default = 0.0 }
operation = { type = "str", default = "divide" }
timestamp = { type = "float", required = false, default = 0.0 }
error = { type = "str", required = false, default = "" }
+11
View File
@@ -0,0 +1,11 @@
# multiply 接口
[GET]
summary = "Multiply two numbers"
docstring = "Multiply two numbers via GET query params (a * b)"
params = ["a: float", "b: float"]
[GET.response_model]
result = { type = "float", required = true }
operation = { type = "str", default = "multiply" }
timestamp = { type = "float", required = false, default = 0.0 }
+11
View File
@@ -0,0 +1,11 @@
# subtract 接口
[GET]
summary = "Subtract two numbers"
docstring = "Subtract two numbers via GET query params (a - b)"
params = ["a: float", "b: float"]
[GET.response_model]
result = { type = "float", required = true }
operation = { type = "str", default = "subtract" }
timestamp = { type = "float", required = false, default = 0.0 }
+16
View File
@@ -0,0 +1,16 @@
{
mode: "peer",
connect: {
endpoints: ["tcp/127.0.0.1:7447"],
},
scouting: {
multicast: {
enabled: false,
},
},
transport: {
shared_memory: {
enabled: true,
},
},
}