TGViewer
开发者工具箱|编程·开发工具·资源 开发者工具箱|编程·开发工具·资源 @devtoolboxhub · 779 subscribers
Post #1451 8
用 Claude Code CLI 当 Prism provider

一位 Laravel 开发者把已有 Claude Code 订阅利用起来,将 Claude Code CLI 封装成 Prism provider,从而在不额外支付 API 费用的情况下继续使用 Prism 的 LLM 调用接口。整套实现只有约 200 行代码,通过 stdin/stdout 与 CLI 交互,并保留了按环境变量切换 provider 的能力。

核心思路:Prism 的 provider 是扩展自 Prism\Prism\Providers\Provider 的类。这里只需实现 text() 和 structured() 两个方法,不支持 embedding、图片和流式。

CLI 调用输出包含 is_error、result、usage、model,可直接映射到 Prism 的 TextResponse / StructuredResponse。

安全要点:命令参数用数组传给 Laravel Process(避免 shell 注入);用户 prompt 走 stdin 而非 argv;工作目录设为 sys_get_temp_dir() 避免项目指令泄漏;额外检查 envelope 中的 is_error 字段。

结构化输出模拟:CLI 不支持原生 JSON schema,因此在 prompt 末尾拼接 schema 要求,并在解析时先尝试直接 json_decode,再剥离 markdown 代码块,最后截取首尾大括号。

注册方式:在 ServiceProvider 的 boot 中通过 PrismManager::extend() 注册闭包,确保 Octane 下每次解析都重新读取配置。

切换 provider 只需修改环境变量,例如 PRISM_TEXT_PROVIDER=claude-cli PRISM_TEXT_MODEL=claude-haiku-4-5。resolveModel 方法会捕获旧模型名并回退到默认值。

注意:CLI 调用慢(大 prompt 30-90 秒),需注意超时链设置;容器内需安装 Node.js;高并发下进程创建开销大,不适合生产规模流量。对于 solo 开发或小产品,可大幅节省 API 成本。


#开发者 #工具 #Prism #ClaudeCode #CLI #Laravel #LLM
@DevToolboxHub
More from @devtoolboxhub
  1. Sep 28, 2026GitHub 的 pull_request_target 改动会破坏什么 GitHub 今年调整了 pull_request_target 的运作方式,两项带日期的变更会影响所有使…
  2. Sep 27, 2026Instagram 字体生成器:把普通文字换成 Unicode 样式 Instagram 字体生成器是一类在线工具,把普通字母转换成外观不同的 Unicode 字符,再复制粘贴到…
  3. Sep 27, 2026用一个下午审计公司里的重复性工作 多数公司不需要耗时半年的转型项目,才能发现时间到底流失在哪里。花几个小时追踪三个真实工作流,就能看出很多问题。关键不是问团队哪里效率低,也不是凭记…
  4. Sep 27, 2026竞品关键词调研的自动化流程 从竞品差距分析导出两万个关键词,约一半只是同一词换了词序。真正的瓶颈在导出之后那一小时:一个好问题变成一堵近似重复词组成的墙,外加三种不同口径的搜索量。…
  5. Sep 26, 2026PostgreSQL 复制槽上限参数 max_replication_slots 解析 max_replication_slots 决定共享内存中复制槽数组的长度,仅此而已。它不决…
  6. Sep 26, 2026五仓库架构踩坑:Gitlink 与双 CI Flude 团队复盘了多仓库架构的实践代价。项目从第一分钟起就选择拆分成独立仓库,Pipeline、engine、design-docs…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →