附录:Agent worker 配置
配置具名的 Telegram、LINE、Discord 和 Slack worker,以及凭据优先级、运行时路径、传输模式和本地应答行为。
适用人群: Agent 运维与集成维护者
Agent worker 配置#
.ait/agent-workers.json 为一个 AIT Repository 声明具名的消息 worker。 1.0.0 支持 telegram、line、discord 和 slack。默认位置可以用 AIT_AGENT_CONFIG_PATH 覆盖。
先读 ait-agent-worker:消息与回复运行时, 了解这个可执行文件的职责、完整命令面、从消息到回复的路径、传输模式、 原生 Codex provider、运行时接纳和安全限制。这份附录是逐字段的编写参考。
规范文档形状#
{
"version": 1,
"workers": {
"telegram/support": {
"kind": "telegram",
"name": "support",
"mode": "poll",
"username": "support_bot",
"env_path": ".ait/agent-runtime/telegram.env",
"request_timeout_seconds": 30,
"local_reply": {
"model": "gpt-5.4-mini",
"reasoning_effort": "low",
"sandbox": "workspace-write",
"turn_timeout_seconds": 300
}
}
}
}作者要写的就是上面那种直接的 version 加 workers 对象。内部诊断投影 可能会把它包在 config 里;别把那层包装写进仓库文件。
worker 的 key 用确切的 <kind>/<name> 形式。kind 和 name 都必须非空, name 里不能有 /,显式写出的 kind 必须和 key 一致。当前约定下 version 是整数 1。规范化过程中出现问题时,worker 会启动失败并直接 关停。
通用 worker 字段#
| 字段 | 类型与行为 |
|---|---|
kind | telegram、line、discord 或 slack;一般从 key 推导。 |
name | 非空的实例名;一般从 key 推导。 |
runtime_root | 可选,worker 运行时文件的路径;默认 .ait/agent-runtime。相对路径从 Repository 根解析;~ 在可用时按进程的 home 目录解析。 |
sync_state_path | 可选的状态文件路径。默认 <runtime_root>/<kind>-<safe-name>-sync.json。 |
env_path | 可选的凭据环境文件路径。默认 <runtime_root>/<kind>.env。 |
web_url | 可选,与回复关联的规范化浏览器基础 URL。 |
request_timeout_seconds | 可选的正数请求超时。inf、infinite 或 none 关闭受支持的通用超时;Telegram 还接受 null 和 unlimited。 |
local_reply | 可选的本地回复 provider 对象,见下文。 |
created_at、updated_at | 由命令托管的时间戳。 |
pid_file、log_file、termination_context_path | 存在时是由命令托管的生命周期路径;别拿它们去配置回复行为。 |
运行目标从 .ait/config.json 推导:solo_local 在本地跑;有远程的工作流 则需要一个有效的默认远程 URL。当 worker 没有设置 model 时,Repository 的 default_model 提供 Telegram 的模型回落值。
凭据来源与优先级#
凭据字段必须是非空字符串。解析顺序是:
- worker 条目本身;
- 当前进程环境;
- worker 的
env_path文件。
其他行为类字段只来自 worker 条目或它们编译期的默认值;env 文件覆盖不了 它们。环境文件接受 KEY=VALUE 行、空行、# 注释,以及值两边配对的一对 单引号或双引号。它们不是 shell 脚本。
别把机密留在提交上去的清单里。优先用仅所有者可读的 env 文件或进程环境, 并使用环境变量附录 里那些确切的变量名。
local_reply#
这个嵌套对象里的未知字段会被拒绝。
| 字段 | 约定 |
|---|---|
program | 可选,非空的回复 provider 可执行文件。 |
args | 可选的字符串数组,元素中不能含 NUL 字符。 |
timeout_seconds | 可选的有限正数。 |
append_turn_analysis | 可选的布尔值。 |
codex_program | 可选,非空的 Codex 可执行文件覆盖值。 |
model | 可选,非空的模型名。 |
reasoning_effort | none、minimal、low、medium、high、xhigh、max 或 ultra。 |
sandbox | read-only、workspace-write 或 danger-full-access。 |
turn_timeout_seconds | 正数、数字字符串,或者 inf、infinite、none、unlimited。 |
sandbox 的取舍是一条执行边界,不是消息偏好。只给这个 worker 完成其 Repository 任务所需的访问权限。
Telegram 字段#
| 字段 | 约定与默认值 |
|---|---|
token | 必填的 bot token,或者提供 AIT_TELEGRAM_BOT_TOKEN/BOT_TOKEN。 |
username | 可选;开头的 @ 会被去掉。 |
mode | poll(默认)或 webhook。 |
bind_host / bind_port | webhook 监听地址;默认 127.0.0.1 和 8090。 |
webhook_path | HTTP 路径;默认 /webhook。 |
webhook_secret | 可选的密钥,或用 AIT_TELEGRAM_WEBHOOK_SECRET。 |
poll_timeout_seconds | 整数,至少 5;默认 45。 |
background_sync_enabled | 布尔值;默认 false。 |
background_sync_interval_seconds | 数字,至少 5;默认 30。 |
openai_api_key | 可选的 worker 凭据;占位值会被拒绝。 |
openai_base_url | 可选的规范化基础 URL;默认 https://api.openai.com/v1。 |
openai_model | 可选的模型;先回落到 Repository 默认模型,再回落到 gpt-5.4-mini。 |
openai_reasoning_effort | 可选字符串;默认 low。 |
openai_timeout_seconds | 可选的正数超时;不写时继承请求超时。 |
openai_max_output_tokens | 整数,至少 64;默认 700。 |
turn_merge_window_seconds | 非负数;默认 0.35。 |
turn_merge_max_messages | 正整数;默认 4。 |
decoupled_reply_enabled | 布尔值;默认 true。 |
reply_markdown_enabled | 布尔值;默认 true。 |
owner_bootstrap_enabled | 布尔值;默认 true。 |
stt_mode | off(默认)或 local-stt。 |
stt_model | 本地语音转文字模型名。 |
stt_device | 设备选择器;默认 auto。 |
stt_compute_type、stt_language | 可选字符串。 |
stt_include_audio_uploads | 布尔值;默认 false。 |
stt_program | 可选的本地语音转文字可执行文件路径。 |
stt_timeout_seconds | 正数,取值从 0.1 到 3600;默认 120。 |
expected_concurrent_workers、workers_per_shard | 可选的正整数。 |
event_loop_backend | 可选的后端字符串。 |
LINE 字段#
| 字段 | 约定与默认值 |
|---|---|
token | 必填的 channel access token,或用 AIT_LINE_CHANNEL_ACCESS_TOKEN/LINE_CHANNEL_ACCESS_TOKEN。 |
secret | 必填的 channel secret,或用 AIT_LINE_CHANNEL_SECRET/LINE_CHANNEL_SECRET。 |
api_base_url | 默认 https://api.line.me。 |
bind_host / bind_port | 默认 127.0.0.1 和 8091。 |
webhook_path | 默认 /callback。 |
Discord 字段#
| 字段 | 约定与默认值 |
|---|---|
application_id | 必填的字符串,或用 AIT_DISCORD_APPLICATION_ID/DISCORD_APPLICATION_ID。 |
public_key | 可选凭据,用于 interaction 校验。 |
bot_token | 可选凭据,用于 gateway 或 API 调用。 |
turn_timeout_seconds | 可选的正数超时;设置了请求超时时,默认至少 300 秒。 |
api_base_url | 默认 https://discord.com/api/v10。 |
http_user_agent | 默认 curl/8.7.1。 |
bind_host / bind_port | 默认 127.0.0.1 和 8092。 |
interaction_path | 默认 /interactions。 |
选用哪条 worker 命令,决定了该服务模式下 public_key、bot_token 是必须 其一还是两者都要。
Slack 字段#
| 字段 | 约定与默认值 |
|---|---|
app_token | 可选凭据,用于 socket 模式。 |
signing_secret | 可选凭据,用于 HTTP 命令校验。 |
api_base_url | 默认 https://slack.com/api。 |
http_user_agent | 默认 ait-agent-worker/0.1。 |
bind_host / bind_port | 默认 127.0.0.1 和 8093。 |
command_path | 默认 /command。 |
ack_text | 默认 ait is thinking...。 |
response_type | 默认 in_channel。 |
选用哪条 Slack 命令,决定了必须提供的是 socket 凭据还是 HTTP 签名密钥。
验证#
用完整 CLI 参考里的 agent worker 查看和启动命令。诊断输出只报告凭据是否 已设置,不会打印它们的值。webhook 监听器先在环回地址上测试,再通过可信的 反向代理对外暴露。