开发者教程
参与贡献
开发环境(2 分钟)
git clone https://github.com/uuzjw/wow-agent.git
cd wow-agent
uv sync
uv run wow # 冒烟检查
代码都在哪
wow_agent/
├── agent.py # 核心循环 + 状态机(planning→executing→verifying)
├── cli.py # 入口、斜杠命令、REPL
├── config.py # PROVIDERS + 环境变量
├── indexer.py # AST 代码索引(符号/引用)
├── tools.py # TOOLS_SCHEMA + 执行器 + 安全检查
├── subagent.py # 隔离的调研/审查代理
├── todo.py # 任务树
├── memory.py # 长期 /mem 存储
├── undo.py # 快照与回滚
├── mcp.py # MCP 客户端
├── session.py # 会话持久化
├── i18n.py # 中英文案
└── ui.py # Rich 渲染
经验法则:新能力 → tools.py;新斜杠命令 → cli.py;新模型厂商 → config.py;规划相关 → agent.py。
测试(全部离线,无需 API Key)
uv run python tests_smoke.py # 快:导入、Schema、单元逻辑
uv run python tests_e2e.py # 假 LLM 端到端任务
任何 PR 前两者都必须绿。秒级运行,绝不碰网。
写测试
- 用 monkeypatch 打桩 I/O 来单测工具执行器(见自定义工具的
tests/test_tool_deploy.py模式) - E2E 测试用假 LLM —— 编排工具调用,断言状态机转换
- 安全行为(外传模式、高危命令)每个都值得单独一个测试
PR 流程
git checkout -b feat/my-feature
# ...写代码 + 测试...
uv run python tests_smoke.py && uv run python tests_e2e.py
git commit -m "feat(tools): add deploy tool with confirmation"
git push -u origin feat/my-feature
约定:
- Conventional commits:
feat:、fix:、docs:、refactor:、test: - 范围明确时加括号:
feat(providers): … - 一个 PR 一个逻辑变更;保持 Diff 可审
- 用户可见的变更同步更新文档站(内容在
wow-agent-site/content/)
Review 看什么
- 安全:新代码是否尊重沙盒/外传/确认层?
- 离线:无强制联网;测试保持离线
- 上下文纪律:输出有界,不扔 Token 炸弹
- 国际化:用户可见文案走
i18n.py(中英双语)
Issue
good first issue 标签适合上手。大想法先开 Discussion 讲问题(不是方案)—— 设计在公开讨论中打磨。
文档贡献
本站是纯静态文件:编辑 wow-agent-site/content/pages/ 下的 Markdown,然后:
cd wow-agent-site && bun run build # 本地验证
改错别字不用开 Issue,直接 PR。