Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
40 changes: 18 additions & 22 deletions .env.example
Original file line number Diff line number Diff line change
@@ -1,46 +1,42 @@
# 首次使用:复制为 .env 后按需修改;已有 .env 请保留并补齐配置。
# Compose 自动读取 .env;本地启动使用 uv run --env-file .env
# Copy to .env for first use; preserve existing settings when updating.
# Compose reads .env automatically; local launches use uv run --env-file .env.

# Compose 部署:默认构建当前源码;使用发布镜像时改为完整镜像名和版本。
# Compose builds local source by default; set a versioned image name to use a release.
CODEBUDDY2API_IMAGE=codebuddy2api:local
CODEBUDDY2API_BIND=127.0.0.1
CODEBUDDY2API_PORT=8787
CODEBUDDY2API_AUTH_PATH=./auth

# 留空仅兼容无鉴权客户端,管理界面与接口将锁定;对外监听前务必设置随机密钥。
# An empty key permits legacy inference but locks management; set a random key before public binding.
CODEBUDDY2API_KEY=

# 管理 Origin/CSRF 校验;仅受信任本地环境可设 false,鉴权仍保留,修改后重启。
# Disable Origin/CSRF checks only in trusted local environments; authentication remains required.
CODEBUDDY2API_ADMIN_CSRF=true

# 工具描述保留开关默认 false;不设置此变量时可在 WebUI 配置,显式 true/false 会锁定设置。
# Unset uses the WebUI value; an explicit Boolean locks tool-metadata retention.
# CODEBUDDY2API_KEEP_TOOL_METADATA=true

# 单次请求的全部历史图片;truncate 保留最新图片,error 超限返回 413。
# 0 表示不允许图片,不是无限制。
# Image overflow keeps the newest blocks or returns 413; zero forbids all images.
CODEBUDDY2API_MAX_IMAGES=16
CODEBUDDY2API_IMAGE_POLICY=truncate

# 图片处理与适配后的上游 JSON 字节上限(32 MiB),必须大于 0。
# Positive upstream JSON byte limit after image policy and protocol adaptation.
CODEBUDDY2API_MAX_REQUEST_BYTES=33554432

# SQLite 审计默认写入凭证目录的 logs.sqlite3,容量/保留期在 WebUI 配置。
# 以下仅控制额外的兼容文本日志;留空不输出文本文件。
# SQLite audit storage defaults to auth/logs.sqlite3; configure retention in the WebUI.
# This optional setting controls the separate legacy text log.
CODEBUDDY2API_LOG=
# 正文日志最多预览 64 KiB;0 仅记录摘要,常见认证字段与图片 base64 会脱敏。
# Bound text previews and redact common credentials and images; zero logs metadata only.
CODEBUDDY2API_LOG_BODY_LIMIT=65536

# 一次性体验积分仅在 WebUI 凭证页手动领取,无自动领取开关。
# One-time trial credits are claimed manually from the WebUI.

# 换凭证重放次数:失败发生在向下游落第一个字节之前时,最多再换几个凭证就地重放。
# 默认 0(关闭):如实把上游 429/502 回给下游。只重放上游确定没收下请求体(建连失败/建连超时)
# 或用 401/403/429/502/503/504 拒绝的失败;内容审核拒绝与上游已回 200 之后合成的 502 不重放。
# 计费口径:401/403/429/503 与建连类失败都发生在受理阶段,不产生扣费;502/504 有可能已被后端
# 处理并计费,但那次结果对下游根本拿不到,不重放也退不回额度——日志给这类重打单独标
# 「上游可能已处理该请求」,便于按官方用量明细核对。详见 docs/advanced.zh-CN.md「换凭证重放」。
# Preauthorize first-Buddy tasks, one bounded WorkBuddy chat (may use credits), adoption and travel.
CODEBUDDY2API_AUTO_ACCEPT_BUDDY=false

# Maximum credential failovers before response bytes are sent; zero disables replay.
# Some gateway failures may already be billed; see docs/advanced.md for replay boundaries.
CODEBUDDY2API_FAILOVER_MAX=0

# 是否把「写请求体超时」也算作上游没收下请求体(同时作用于连接重试与上面的换凭证重放)。
# 默认 false:写超时只能证明正文没写完,上游有没有按已收到的半截正文计费,从这一侧看不到。
# 跨境长会话最容易撞的恰是 60s 写超时,确认自己的上游不会按半截正文计费再打开。
# Opt in to replaying incomplete writes only if partial requests cannot be billed upstream.
CODEBUDDY2API_RETRY_WRITE_TIMEOUT=false
10 changes: 5 additions & 5 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -12,15 +12,15 @@ ENV/
.pytest_cache/
.mypy_cache/

# 本地运行产物 / 日志
# Local runtime artifacts and logs
*.log
.DS_Store
Thumbs.db

# 本地执行计划(不提交)
# Untracked local implementation plans
/docs/plans/

# 个人 / 敏感信息(绝不提交)
# Private credentials and secrets
*.token
*.key
secrets.*
Expand All @@ -29,13 +29,13 @@ secrets.*
!.env.example


# 自管凭证目录与凭据文件(敏感,绝不提交)
# Managed credentials and private databases
auth/
*.info
*.sqlite3
*.sqlite3-wal
*.sqlite3-shm
# 运行日志(含请求体,敏感)
# Runtime logs may contain sensitive request data
converter.log*

# IDE
Expand Down
2 changes: 1 addition & 1 deletion Dockerfile
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,7 @@

FROM python:3.12-slim@sha256:78387bc3881b8273120a12ebe6c1ab22b018ccc2c9adf565ae1ac9b536e184ea AS runtime
WORKDIR /app
ENV CODEBUDDY_AUTH_DIR=/data/auth

Check warning on line 23 in Dockerfile

View workflow job for this annotation

GitHub Actions / image

Sensitive data should not be used in the ARG or ENV commands

SecretsUsedInArgOrEnv: Do not use ARG or ENV instructions for sensitive data (ENV "CODEBUDDY_AUTH_DIR") More info: https://docs.docker.com/go/dockerfile/rule/secrets-used-in-arg-or-env/
COPY requirements.txt .
RUN pip install --no-cache-dir --require-hashes --only-binary=:all: -r requirements.txt
COPY VERSION ./
Expand All @@ -28,6 +28,6 @@
COPY app/ ./app/
COPY --from=frontend /web/dist/ ./web/dist/
EXPOSE 8787
# 容器内监听 0.0.0.0 是硬需求;对外暴露边界在端口映射层(compose 默认只绑回环)
# Listen on container interfaces; host port mapping controls external access.
ENV CODEBUDDY2API_ALLOW_OPEN_NOAUTH=true
CMD ["python3", "converter.py", "--host", "0.0.0.0", "--port", "8787", "--skip-check"]
Loading
Loading