W-Agent
借鉴 Spring 的 IoC、AOP 与生命周期思想,开发你自己的 Harness。
English · 文档 · 快速入门 · 扩展开发 · 路线图
W-Agent 是面向 Python 开发者的本地开源 Harness 开发框架。目标是通过统一容器、依赖注入、切面和生命周期,让你用注解、配置或显式代码自由装配执行体系。ReAct、Workflow、客服/编码模板与 CLI/TUI 是可选实现,而不是框架本身的边界。
**版本范围:**2.1.0 纳入已完成 M0–M5 验收的 Harness 开发核心。验收基线包含 259 项相关测试、离线制品、隔离安装与三示例仓库外 Python/CLI/无显示 TUI。见发布说明和证据与限制。上传状态以 PyPI 为准。
它提供组合能力的协议和实现,不要求你采用固定 Harness,也不需要托管平台账户。
为什么使用 W-Agent
- 模块可替换:从 Provider 到 Agent Loop 都有公开扩展接口;Python、装饰器、YAML 引用和 entry point 汇入统一插件注册表。
- 链路可组合:单 Agent ReAct/tool loop 与 DAG、状态图、Python Workflow 可以通过适配器组合。
- 模型不绑定厂商:提供通用 HTTP 请求映射,以及 OpenAI、Anthropic、Gemini、Ollama、DeepSeek、GLM、Qwen、Turbo 模板;厂商专有参数可通过扩展接口处理。
- 执行边界明确:工具权限、逐调用审批、Docker 沙箱和显式授权的本地执行相互独立;隔离不可用时不静默降级。
- 运行过程可观察:Run/Session、输入输出 Token、可配置预算、事件回放和本地评测,为调试与迭代提供基础。
安装
需要 Python 3.11+。建议在项目自己的虚拟环境中安装。以下命令固定到正式版 2.1.0:
python -m pip install "wagent-framework==2.1.0"
按需添加依赖,不必安装所有模块:
# HTTP 模型接入与终端界面
python -m pip install "wagent-framework[models,tui]==2.1.0"
# PDF / DOCX / XLSX / PPTX 解析
python -m pip install "wagent-framework[knowledge-documents]==2.1.0"
其他 extras 包括 mcp、media-preview、testing、fastapi、langchain、opentelemetry 和平台受限的 wasm。参见安装指南。
快速入门
以下示例使用 2.1.0 框架核心。先按上方命令安装 wagent-framework==2.1.0,也可从匹配源码安装 python -m pip install -e .;TUI 是可选依赖。仍使用 2.0.0 时请看此前基础组件教程。
保存为 hello_harness.py,然后执行 python hello_harness.py。它不使用模型、ReAct 或工具注册表,也不需要 API Key:
import asyncio
from w_agent import (
AgentComponent, ApplicationOperation, ApplicationProject,
PostConstruct, PreDestroy, ServiceComponent, compile_decorated,
)
@ServiceComponent("formatter")
class Formatter:
def format(self, text: str) -> str:
return text.strip().upper()
@AgentComponent("hello", scope="run")
class HelloHarness:
def __init__(self, formatter: Formatter):
self.formatter = formatter
self.ready = False
@PostConstruct
def initialize(self):
self.ready = True
async def run(self, text: str) -> str:
if not self.ready:
raise RuntimeError("Harness not initialized")
return self.formatter.format(text)
@PreDestroy
def close(self):
self.ready = False
async def main():
plan = compile_decorated([Formatter, HelloHarness])
project = ApplicationProject(plan, {"run": ApplicationOperation("hello")})
async with project.open() as host:
print(await host.invoke("run", "hello framework"))
asyncio.run(main())
预期输出为 HELLO FRAMEWORK。注解只声明组件;compile_decorated 编译依赖和作用域,ApplicationContext 管理实例与生命周期,ApplicationHost 执行公开操作。这里的 Run 组件每次调用初始化,并在返回时清理,不是固定 Agent 基类。
三条完整开发链路见开发自己的 Harness:
| 示例 | 主要方式 | 演示边界 |
|---|---|---|
| 自定义 Harness | 显式 Python 装配 | 自定义模型参数、工具和存储,无默认 Loop |
| 客服 | 注解扫描、依赖注入、AOP | 本地 FAQ、未知问题转人工、生命周期记录 |
| 编码 | 配置目录、Bean 工厂、AOP | 预览与摘要批准,只修改内存,不执行代码 |
示例使用确定性离线模型替身,不代表真实 LLM 质量。默认 ReAct、Workflow、Provider、工具和预算仍可按需加入,见默认装配。examples 不包含在 wheel 中;安装用户需从匹配源码或 sdist 复制示例及伴随 JSON,不能把教程文件当成库运行时依赖。
按你的方式装配
以下是职责关系,不是必须经过的固定管线:
注解 / 显式 Python / 允许目录中的配置
↓
AssemblyPlan(依赖与作用域校验)
↓
ApplicationContext(实例、DI、AOP、生命周期)
↓
你的 Harness 或可选 ReAct / Workflow 装配
↑
ApplicationProject / Host ← Python / CLI / TUI
| 你要做什么 | 从哪里开始 |
|---|---|
| 接入特殊模型、参数或响应格式 | Provider 模板 · 模型路由与探测 |
| 改写 Agent 推理链路 | Agent 协议与 Loop |
| 添加 Python、HTTP、命令或 MCP 工具 | 工具体系 · MCP 交互 |
| 组合流程、状态和审批 | Workflow |
| 接入本地知识、文件或向量检索 | 知识检索 · 导入与同步 |
| 管理用量和上下文 | Session · 共享预算 |
| 编写插件、分享命名版本的装配 | 插件系统 · 工程分享 |
CLI 与 TUI
安装 tui extra 后:
wagent --help
wagent init
wagent tui
w-agent 是同一 CLI 的别名。TUI 提供大字符标识与颜文字、运行和审批、会话/用量查看等入口。
2.1.0 还提供 wagent application run --entry module:create_project --input-file call.json --confirm-code 与 TUI 的 Application 页,共用公开项目执行入口。项目是受信 Python 代码,确认加载不等于工具副作用批准;完整操作见三条教程。
wagent init 只创建本地 .wagent 目录和空的 config.json,已有配置不覆盖;不会配置模型或发起请求。实际运行前按Runtime 配置示例填写配置,再明确授权模型调用。TUI 不替代这些授权边界。
能力状态与安全
2.1.0 提供 Harness 开发框架核心;可选高级能力仍可能标记为 Experimental。见版本范围与路线图。
- 普通 Python 工具和插件是受信宿主代码,不是安全沙箱;不可信代码需要隔离执行。
- 工具权限不等于逐调用审批;导入分享码不自动安装、执行代码或授予权限。
- 模型目录声明不证明连接、鉴权或生成质量;未知用量和价格不表示为零。
- 恢复只保证文档明确支持的边界,不恢复任意 Python 调用栈,也不自动重放结果未知的副作用。
- 多 Agent、分布式 Workflow、在线插件市场等保留或计划项,不是当前开箱即用能力;框架不提供多租户托管服务。
文档与贡献
从使用指南开始,或查阅文档目录、架构、公共 API与1.x 迁移。
欢迎通过 Issues 提交问题与提案。报告问题时请附 Python/W-Agent 版本、最小复现和脱敏日志;新增能力请先说明扩展点、授权边界,并同步中英文文档。贡献约定见开发者指南。
许可证
Metadata
Release files for wagent-framework 2.1.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| wagent_framework-2.1.0.tar.gz | 1.4 MB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| wagent_framework-2.1.0-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 2.1 MB
Release files / wagent_framework-2.1.0.tar.gz
| Download URL | wagent_framework-2.1.0.tar.gz |
|---|---|
| Size | 1.4 MB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
bf1f9ad508471f98576823b09364701033261c288f1a8838556934d75009734a
|
|
BLAKE2b-256 checksum How to use checksums |
324dc982295e2132251b84fb0c2b0dcaeeac7605f89b5a14c47c62dabc849816
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.11.9
|
Release files / wagent_framework-2.1.0-py3-none-any.whl
| Download URL | wagent_framework-2.1.0-py3-none-any.whl |
|---|---|
| Size | 630.8 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
cea6be92dd62817928337ec863153746dbb05d3a59c42c74aeba536251e86ff9
|
|
BLAKE2b-256 checksum How to use checksums |
16d6effebefad7866dad2b60e7024bb4ab6f43189ada93e5fb821bb103b0e877
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.11.9
|