lolly/internal/variable/AGENTS.md
xfy 53319bbdd3 docs(variable): 更新 AGENTS.md 反映类型重命名
VariableContext → Context 相关文档同步更新

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-04-10 09:40:26 +08:00

48 lines
1.7 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<!-- Parent: ../AGENTS.md -->
<!-- Generated: 2026-04-09 | Updated: 2026-04-09 -->
# variable
## Purpose
高性能变量系统,提供 nginx 风格的变量展开功能。用于访问日志格式模板、代理请求头设置、URL 重写规则。
## Key Files
| File | Description |
|------|-------------|
| `variable.go` | 变量系统核心Context 结构、Expand 方法、变量存储接口 |
| `builtin.go` | 内置变量定义:$remote_addr、$request_uri、$status、$time_local 等nginx 风格变量 |
| `pool.go` | sync.Pool 复用PoolGet、PoolPut、池统计信息 |
| `ssl.go` | SSL 相关变量:$ssl_protocol、$ssl_cipher、$ssl_client_sni 等 |
| `variable_test.go` | 单元测试:变量展开、内置变量获取、自定义变量 |
| `variable_bench_test.go` | 基准测试:展开性能、池性能 |
## For AI Agents
### Working In This Directory
- 支持两种变量格式:$var 和 ${var}(用于变量后有字符)
- 使用快速字符串扫描(非正则表达式)提升性能
- sync.Pool 复用 Context 减少 GC 压力
- 内置变量惰性求值并缓存结果
- 自定义变量通过 Set 方法设置
### Testing Requirements
- 运行测试:`go test ./internal/variable/...`
- 基准测试验证展开性能:`go test -bench=. ./internal/variable/...`
- 集成测试在 `../integration/` 目录
### Common Patterns
- Context 绑定到单个请求
- 从池获取PoolGet(ctx)放回PoolPut(vc)
- 全局变量通过 SetGlobalVariables 设置
- 上游变量:$upstream_addr、$upstream_status、$upstream_response_time
## Dependencies
### Internal
- 无内部依赖,底层模块
### External
- `github.com/valyala/fasthttp` - RequestCtx 类型
<!-- MANUAL: -->