展示 HN:在围栏内以不到一美元的预算无看护运行 Claude Code
SIwithin 在围栏内无看护地运行一个代理命令行界面,围绕您提供的文件夹,并且预算不到一美元,每次运行留下一个记录。它用工具兑现三个承诺,而不是寄希望于希望:该运行只访问它所给定的文件夹。您的主文件夹拒绝访问,包括读取和写入,而运行的文件夹被允许返回。该运行不得花费超出其所获得的美元。每次运行的预算、所有运行的上限、每次运行的计时器,以及对于 Claude 适配器,回环代理是通往 API 的唯一通道:运行持有每次运行的令牌,而不是您的密钥,且它所做的每个请求,无论以何种方式进行,都会在这里计量,并且超出预算的请求将被拒绝。由于命令行界面无法在运行中途被停止,除非您表示接受,否则该工具会拒绝执行(参见“账本”和“Codex 适配器”)。每次运行留下一个行,说明其成本和是否完成。与 Claude Code 和 OpenAI Codex 命令行工具协同工作。SIwithin 是一个独立项目;它不是由 Anthropic 或 OpenAI 制作、支持或赞助的。Claude、Claude Code、OpenAI 和 Codex 是其所有者的名称,这里仅用于说明 SIwithin 可以驱动哪些程序。您在通过 SIwithin 使用其命令行界面时,仍受到每个供应商的服务条款和使用政策的约束;SIwithin 不改变它们。SIwithin 仅在 macOS 上运行。在 Linux 和 Windows 上,它拒绝运行,一行拒绝,而不是在没有围栏的情况下运行。安装 SIwithin 只需一个文件,Python 3.10 或更高版本,仅限标准库。它不进行任何网络调用,也不发送任何遥测;它为一次运行启动的代理在回环端口上监听,仅与您配置的 API 主机进行通信。git clone <此代码库> && cd siwithin python3 siwithin.py --version # 可选:将其放在您的 PATH 安装 -m 755 siwithin.py ~/.local/bin/siwithin 您还需要想要驱动的命令行界面,已安装并在您的 PATH 中,以及一个 API 密钥(见“身份验证”)。烟雾测试(python3 tests/smoke.py)在它编写时的 Python 3.9.6 上通过。3.10 是支持的最低版本,代码避免使用更新的语法,但尚未在 3.10 或更高版本上运行。快速开始,Claude Code mkdir -p ~/.config/siwithin && echo 20 > ~/.config/siwithin/cap # 所有运行一起只能花费 $20 export ANTHROPIC_API_KEY=... # 见“身份验证”;工具一次性读取它,在围栏外,并且运行在其位置获得一张每次运行的令牌 python3 siwithin.py --dir ~/work/proj --model sonnet --dry-run < brief.md # 打印所有内容,不运行 python3 siwithin.py --dir ~/work/proj --model sonnet --budget 2 \ --done "所有测试通过" --out notes.md < brief.md --dir 是运行的文件夹:命令行界面在其中工作并可以写入(--readonly 使其为只读)。--read <文件夹> 添加运行可以读取的文件夹。--model 采用一个 ID 或别名(haiku,sonnet,opus)。快速开始,Codex mkdir -p ~/.config/siwithin && echo 20 > ~/.config/siwithin/cap export CODEX_API_KEY=... python3 siwithin.py --adapter codex --model gpt-5.3-codex --soft-budget --network open --dir ~/work/proj --dry-run < brief.md python3 siwithin.py --adapter codex --model gpt-5.3-codex --soft-budget --network open --budget 2 --dir ~/work/proj < brief.md 此适配器需要两个标志,原因见“Codex 适配器”:--model(命令行界面报告令牌,不报告成本,因此一次运行按模型 ID 定价)和 --soft-budget(命令行界面仅在回合结束时报告使用情况)。该适配器是从文档构建的,并且尚未在实时命令行界面上运行。它以 auth = "env" 运行:密钥在运行的环境中(见“身份验证”),并且由于没有代理,因此网络墙没有允许的端口,因此需要 --network open,或者在 config.toml 的 [fence] 下设置 network = "open";在默认情况下,运行被拒绝,而不是在没有网络的情况下运行(见“围栏”)。身份验证 SIwithin 从不解析、存储、打印或记录密钥,也不会将其写入任何文件、日志行或错误消息中。密钥如何到达 API 取决于适配器的身份验证字段。Claude 适配器,auth = "proxy"(默认从 0.3.0 开始)。在启动之前,在围栏外,运行程序读取一次密钥:从它自己环境中的 ANTHROPIC_API_KEY,或者从 config.toml 中 [auth] key_command 打印的第一行,您打印密钥的命令(例如密钥链查找)。它保持密钥并在自己的回环端口上启动一个小型 HTTP 服务器,仅使用标准库。运行的环境持有 ANTHROPIC_API_KEY=siwithin-<32 个字符>,每次运行的新令牌,仅在其他地方无效,以及 ANTHROPIC_BASE_URL=http://127.0.0.1:<端口>。运行所做的每个请求,通过命令行界面,手动或通过它启动的第二个命令行界面,都会经过那扇门:代理只接受运行的令牌(任何其他的都会得到 401 而无法到达),转发 [auth] paths 上的路径(/v1/messages 和 /v1/messages/count_tokens 默认情况下;任何其他路径都会得到 403,真实的密钥永远不会附加),添加真实密钥,流式转发响应,并对每个 /v1/message 进行定价。
本站免费、广告极少。如果觉得有帮助,可以请我们喝杯咖啡 —— 任何金额都对持续运营有实际帮助。
☕请我喝杯咖啡