Skip to content

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

66 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

ThousandSailAgent(千帆 Agent)

千帆竞发,万舸争流 — 多 AI Agent 编排框架,用声明式 YAML 定义 Agent 协作流程。

特性

  • 声明式工作流 — 用 YAML 定义多步骤 Agent 编排规则,支持依赖关系和并行执行
  • 多模型混用 — 不同步骤可使用不同 LLM(DeepSeek 写代码、GLM 审查、Qwen 生成测试)
  • 国产模型优先 — 内置 DeepSeek、智谱GLM、通义千问、Moonshot、豆包 等国内主流模型支持
  • 真实工具调用 — Agent 自主决定何时读写文件、执行命令,多轮工具调用循环
  • 交互式配置 — TUI 引导配置 Provider、选择默认模型、验证 API Key 有效性
  • 中英文界面tsail config --lang en 一键切换界面语言
  • 执行历史 — SQLite 存储每次运行记录,可回溯查看

安装

npm install -g thousandsailagent

快速开始

1. 配置 Provider

tsail config

交互式引导,选择 LLM Provider、输入 API Key、选择默认模型:

◆ 选择要配置的 Provider
│ ● DeepSeek(深度求索)     已配置 ✓
│ ○ 智谱 GLM(ChatGLM)
│ ○ 通义千问(Qwen)
│ ○ Moonshot(Kimi)
│ ○ 豆包(火山引擎)
│ ○ Anthropic(Claude)
│ ○ OpenAI(GPT)
│ ○ 自定义 Provider
└ ○ 完成配置

也可以直接配置指定 Provider:

tsail config deepseek    # 跳过菜单,直达 DeepSeek 配置

2. 编写工作流

创建 pipeline.yaml

name: code-review-pipeline

steps:
  - id: code
    agent: coder
    model: deepseek/deepseek-v4-flash
    prompt: "根据以下需求实现功能: {{input.requirement}}"
    tools: [file_write, file_read, terminal]
    max_steps: 5

  - id: review
    agent: reviewer
    model: glm/glm-4-flash
    prompt: "审查代码,检查安全和性能问题: {{steps.code.output}}"
    depends_on: [code]
    tools: [file_read]

  - id: test
    agent: tester
    model: deepseek/deepseek-v4-flash
    prompt: "为以下代码编写单元测试并执行: {{steps.code.output}}"
    depends_on: [code]
    tools: [file_write, file_read, terminal]
    max_steps: 5

  - id: refine
    agent: coder
    model: deepseek/deepseek-v4-flash
    prompt: "根据审查意见和测试结果修改代码。审查: {{steps.review.output}} 测试: {{steps.test.output}}"
    depends_on: [review, test]
    tools: [file_write, file_read, terminal]
    max_steps: 5
    retry_count: 1

3. 运行

tsail run pipeline.yaml -i requirement="实现一个HTTP服务器"

使用 --verbose 查看工具调用详情:

tsail run pipeline.yaml -i requirement="实现一个HTTP服务器" --verbose

CLI 命令

命令 说明
tsail run <file> 运行工作流 YAML
tsail config 交互式配置 Provider
tsail config <provider> 直接配置指定 Provider(如 tsail config deepseek
tsail config --lang en 切换界面语言(zh/en)
tsail providers 查看已配置的 Provider
tsail providers --test 验证所有 API Key 是否有效
tsail list 列出当前目录的工作流文件
tsail history [id] 查看运行历史

run 选项

-i, --input <k=v...>   传入输入参数
-d, --db <path>        指定数据库路径
    --verbose          显示详细输出(含工具调用详情)

工作流 YAML 语法

name: <工作流名称>
workdir: <工作目录>            # 可选,工具在指定目录下执行

steps:
  - id: <步骤ID>              # 必填,唯一标识
    agent: <Agent类型>         # coder / reviewer / tester
    model: <provider/model>    # 必填,支持省略模型名使用默认模型
    prompt: <提示词>           # 必填,支持模板变量
    tools: [file_read, ...]    # 可用工具列表
    depends_on: [step_id, ...] # 依赖的步骤(可选)
    max_steps: <number>        # 最大工具调用轮数(可选)
    retry_count: <number>      # 失败重试次数(可选)
    route: <name>              # 路由名称,仅在上游 Agent 设置了匹配路由时执行(可选)
    plan: true                 # 标记为规划步骤,首先执行并可修改工作流(可选)
    optional: true             # 标记为可选步骤,规划器可决定跳过(可选)
    tools_config:              # 工具安全配置(可选)
      http_request:            # HTTP 请求工具配置
        allowed_domains: [...] # 域名白名单(可选)
        allow_private: false   # 允许访问内网(可选,默认 false)

模板变量

变量 说明
{{input.xxx}} 运行时传入的参数
{{steps.xxx.output}} 上游步骤的 LLM 输出

模型引用

model: deepseek/deepseek-v4-flash   # 完整写法
model: deepseek                      # 省略模型名,使用配置的默认模型

依赖与并行

depends_on 的步骤会并行执行,有依赖的步骤等待上游完成后才启动。

动态路由与人工交互

Agent 可以在执行过程中主动向用户提问,并根据交互结果自主决定工作流走向。

两个新工具:

工具 说明
human_input Agent 向用户提问并等待回答
set_route Agent 设置路由决策,控制下游步骤执行

工作原理:

  1. Agent 执行时调用 human_input 向用户提问(CLI 交互)
  2. Agent 根据回答调用 set_route 设定路由(如 embedded
  3. 下游步骤通过 route 字段声明所属路由
  4. 调度器只执行路由匹配的步骤,其余跳过

示例:

name: led-driver
steps:
  - id: analyze
    agent: coder
    model: deepseek/deepseek-v4-flash
    prompt: "分析需求,向用户确认目标平台和架构方案,然后选择实现路径"
    tools: [human_input, set_route]

  - id: hal_impl
    agent: coder
    model: deepseek/deepseek-v4-flash
    prompt: "使用 HAL 库实现嵌入式驱动"
    tools: [file_write, file_read, terminal]
    depends_on: [analyze]
    route: hal

  - id: register_impl
    agent: coder
    model: deepseek/deepseek-v4-flash
    prompt: "使用寄存器直接操作实现嵌入式驱动"
    tools: [file_write, file_read, terminal]
    depends_on: [analyze]
    route: register

  - id: test
    agent: tester
    model: deepseek/deepseek-v4-flash
    prompt: "为生成的代码编写单元测试"
    tools: [file_write, terminal]
    depends_on: [hal_impl, register_impl]
    # 无 route 字段,不论哪个实现都会执行

运行 tsail run led-driver.yaml -i requirement="LED驱动",Agent 会通过 CLI 询问用户目标平台,自主选择路径。

可变模板

工作流可以是灵活模板 — YAML 定义所有可能的步骤,由 Agent 在运行时决定实际执行哪些。

工作原理:

  1. 标记 plan: true 的步骤首先执行(规划器)
  2. 规划器使用 plan_steps 工具修改工作流:
    • 禁用不需要的可选步骤
    • 修改步骤的 prompt
    • 新增步骤
  3. 框架按修改后的计划执行

示例:

name: adaptive-review
steps:
  - id: planner
    agent: planner
    model: deepseek/deepseek-v4-flash
    prompt: "分析需求,决定需要哪些步骤。模板中有编码、审查、测试三个步骤。"
    tools: [human_input, plan_steps]
    plan: true

  - id: code
    agent: coder
    model: deepseek/deepseek-v4-flash
    prompt: "实现功能: {{input.requirement}}"
    tools: [file_write, terminal]
    depends_on: [planner]

  - id: review
    agent: reviewer
    model: glm/glm-4-flash
    prompt: "审查代码"
    tools: [file_read]
    depends_on: [code]
    optional: true

  - id: test
    agent: tester
    model: deepseek/deepseek-v4-flash
    prompt: "编写并运行测试"
    tools: [file_write, terminal]
    depends_on: [code]
    optional: true

运行时,planner 分析需求后可能:

  • 简单改动 → 只保留 code,跳过 review 和 test
  • 核心功能 → 保留 code + test,跳过 review
  • 重要模块 → 全部执行,或新增 security_scan 步骤

HTTP 请求

Agent 可以发起 HTTP 请求,访问外部 API 或网页,并自动解析响应内容。

内置解析:

  • JSON 响应 → 自动解析为结构化数据
  • HTML 响应 → 自动提取纯文本内容
  • extract: "links" → 提取页面中所有链接

示例:

name: api-fetch
tools_config:
  http_request:
    allowed_domains: ["api.github.com"]

steps:
  - id: fetch
    agent: coder
    model: glm/glm-4-flash
    prompt: "获取 GitHub 上的最新 issue 列表"
    tools: [http_request]
    max_steps: 3

安全特性:

  • 默认禁止访问内网地址(localhost、192.168.x.x 等)
  • 可配置域名白名单(allowed_domains
  • 响应大小限制 1MB,文本截断 5000 字符

支持的 Provider

Provider 类型 默认模型
DeepSeek OpenAI-compatible deepseek-v4-flash
智谱 GLM OpenAI-compatible glm-4-flash
通义千问 OpenAI-compatible qwen-plus
Moonshot OpenAI-compatible moonshot-v1-8k
豆包 OpenAI-compatible doubao-pro-32k
Anthropic Anthropic claude-sonnet-4-20250514
OpenAI OpenAI-compatible gpt-4o

也支持通过 tsail config 添加任意 OpenAI-compatible API。

开发进度

当前版本:V0.7.0

已完成

  • YAML 工作流解析与 Zod 校验
  • DAG 依赖分析与并行调度
  • 多 Provider LLM 调用(7 个内置 + 自定义)
  • 交互式 TUI Provider 配置(模型选择、API Key 验证)
  • API Key AES-256-CBC 加密存储
  • 模板变量解析(input / steps.output)
  • 内置工具注册(file_read / file_write / terminal)
  • SQLite 执行历史持久化
  • CLI 工具(run / config / providers / list / history)
  • 端到端测试(42 个测试全部通过)
  • 真实 API 调用验证(DeepSeek + GLM)
  • Agent 类型系统提示(coder / reviewer / tester 差异化策略)
  • LLM 真实工具调用(自主决定读写文件、执行命令)
  • 工具调用可观测(--verbose 显示工具名、参数、返回值)
  • 工作目录支持(workdir)
  • 步骤重试机制(retry_count)
  • 上下文智能摘要(压缩长文本,控制 Token 消耗)
  • 配置系统完善(模型选择、Key 验证、删除、快捷入口、测试)
  • 中英文界面切换
  • 配置目录自动迁移
  • 动态路由(Agent 自主决策分支路径)
  • 人工交互(Agent 可向用户提问获取信息)
  • 可变模板(Agent 可动态修改工作流步骤)
  • HTTP 请求工具(访问外部 API 和网页)

待开发

  • 更多工具(Web 搜索、目录操作、数据存储)
  • Web Dashboard
  • VS Code 插件

开发

git clone https://github.com/Lion-1209/ThousandSailAgent.git
cd ThousandSailAgent
npm install
npm test        # 运行测试
npm run dev -- --help   # 开发模式运行

License

MIT

About

多 AI Agent 编排框架 — 用声明式 YAML 定义 Agent 协作流程

Resources

Stars

Watchers

Forks

Releases

Packages

Contributors

Languages