Skip to content

To-be-w1th0ut/TianTi-Agent

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

25 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

TianTi-Agent RouterCenter

当前 RouterCenter 的定位是比赛母进程:

  1. 常驻运行,持续同步官方赛题平台
  2. 按赛区维护固定工作集,调度 Zone Agent
  3. 开题后立即获取官方 Hint
  4. 将 Hint 拼进初始 instruction 后启动 tianti
  5. Agent 退出后清理官方实例
  6. 根据解题数/得分阈值自动开放下一赛区
  7. 将系统日志、Agent telemetry、stdout/stderr 输出到 Web 前端

不再包含旧的双向控制通道、运行时消息注入、graph 查询、手动 Hint 推送等控制面能力。

Quick Start

安装依赖:

python3 -m venv .venv
.venv/bin/python -m pip install -r requirements.txt

启动 RouterCenter:

.venv/bin/python main.py

Dashboard 默认地址为 http://127.0.0.1:8081

Adapter Modes

mock_adapter

  • 本地开发模式
  • 不会调用官方比赛平台

official_adapter

  • 比赛模式
  • base_url 会自动规范到 http://<SERVER_HOST>/api
  • 认证头为 Agent-Token: <AGENT_TOKEN>
  • 已实现:
    • GET /api/challenges
    • POST /api/start_challenge
    • POST /api/stop_challenge
    • POST /api/submit
    • POST /api/hint
  • 自动解析官方 {code, message, data} 响应
  • 内置 3 req/s 限速
  • 429 做退避重试

示例 config/default.toml

[api]
adapter = "official_adapter"
base_url = "http://<SERVER_HOST>"
token = "<AGENT_TOKEN>"

Current Lifecycle

在官方模式下,调度链路如下:

  1. GET /api/challenges
  2. 计算每个赛区的工作集(默认 3 题)
  3. POST /api/start_challenge
  4. POST /api/hint
  5. 将返回的 Hint 拼进初始 instruction
  6. 使用拼好的 instruction 启动 tianti
  7. tianti 退出后调用 POST /api/stop_challenge
  8. 心跳同步远端当前解题状态、分数和实例状态
  9. 满足阈值后自动激活下一区

重要行为:

  • 不再依赖题目列表里预先带出 target_url
  • start_challenge 返回 already_completed 时,会直接标记本地题目为已完成,不再启动 agent
  • Hint 只在启动前主动读取一次
  • 每个赛区默认维护固定三题工作集,解开一题后会自动补位
  • 心跳同步会持续拉取当前题目地址、flag_count/flag_got_count、得分和实例状态

TianTi Integration

推荐的 zone 模板:

[[zone]]
name = "zone_1"
agent_template = "poetry -C '/path/to/TianTi-Agent-Zone1' run tianti --target {target_url} --instruction {instruction}"
max_concurrency = 2

RouterCenter 启动 agent 时会注入以下环境变量:

  • CTF_ZONE
  • CTF_CHALLENGE_ID
  • CTF_INSTANCE_ID
  • CTF_INSTRUCTION
  • CTF_TARGET_URL

其中 CTF_INSTRUCTION 已经包含原始题面 instruction 和启动前读取到的官方 Hint。

同时还会注入:

  • TIANTI_RUNS_DIR

tiantievents.jsonl 写入该目录后,RouterCenter 会自动追踪并转发到 Dashboard。

Config

config/runtime.toml 控制初始激活赛区和显式晋级规则:

[zones]
active = ["zone_1"]

[[unlock]]
after_zone = "zone_1"
target_zone = "zone_2"
min_solved = 1

config/default.toml 中的策略配置:

  • dispatch.max_concurrency
  • dispatch.activation_interval_sec
  • dispatch.health_interval_sec
  • policy.per_zone_working_set_size
  • policy.priority_mode
  • policy.auto_unlock_next
  • policy.default_unlock_solved_count
  • policy.default_unlock_score
  • policy.agent_log_tail_lines

config/agents.toml 保留启动模板相关配置:

  • name
  • agent_template
  • max_concurrency
  • env

Dashboard

当前 dashboard 提供:

  • 赛区激活
  • 赛区工作集、解题数、得分、心跳状态查看
  • 自动晋级规则状态查看
  • 题目与 agent 状态查看
  • agent_template 在线编辑与热加载
  • agent 进程终止
  • Agent telemetry / stdout / stderr 查看
  • 系统日志查看

Tests

运行测试:

.venv/bin/python -m unittest discover -s tests -v

当前覆盖点包括:

  • 官方 adapter 的挑战列表、启动、Hint 获取、停止、重试与错误处理
  • RouterCenter 在启动前预取 Hint 并注入 instruction
  • RouterCenter 的固定工作集与自动解锁策略
  • agent 退出后的平台实例回收
  • dashboard 的赛区激活、agent kill、日志接口与模板更新接口

About

🪜 TianTi — 拾级而上,智无止境 | Autonomous AI Agent built to climb beyond limits. Tencent Cloud AI Hackathon 2025.

Resources

Stars

Watchers

Forks

Packages

 
 
 

Contributors