太伟大了glm4.6! 充分利用glm增强claude code! 效果起飞, 成本减半!

有点标题党, 但是只能算是吹了个小牛, 确实是有一定效果的. 狂调一个晚上, 终于有一个像样的版本了.

感兴趣的佬友可以去 github TokenRollAI/cc-plugin 看看详细的实现.

总所周知: 最近的国产模型, 例如glm4.6, deepseek, kimi, qwen 等等, 有一个共同点:

  1. 工具使用能力 - 优秀
  2. 语言能力: 总结, 概括, 记忆输出 - 优秀
  3. 代码能力: 写代码, 改代码 - 一般

今天我还发帖抱怨, 用haiku驱动subagent的效果实在是太差了, haiku的性能实在太差了.

晚上用ccr(claude-code-router) 驱动subagent, 效果令人吃惊的好.
给大家看一个简单的示例: 用claude code来做项目概要.

最终的效果是:

  1. glm驱动的subagent做了28次工具调用, 读入了48.1k tokens, 高质量的输出了2.4k tokens
  2. 和用户交互的主Agent(claude 4.5)仅仅用了5.3k tokens, 就高质量的完成了这个任务. 要知道如果不做任何优化的话, 成本和主Context已经爆炸了

我觉得这几乎就是现在成本可控的情况下最好的解决方案了:

  1. 20块一个月的glm模型用来做大量的工具调用, 信息收集, 高质量的概括/总结/代码片段的输出.
  2. 昂贵的claude模型做最核心的代码编写/修改, Agent调度的工作.

完整的交互如下, 用claude code来分析opencode这个开源项目(claude-3-5-haiku 实际上是glm4.6)


 ▐▛███▜▌   Claude Code v2.0.15
▝▜█████▛▘  Sonnet 4.5 · API Usage Billing
  ▘▘ ▝▝    /home/djj/code/opencode
──────────────────────────────────────────────────────────────────────── Ctrl+E to hide 60 previous messages ───────────────────────────────────────────────────────────────────────

> /tr:withScout is running… 告诉我这个项目的架构以及功能是如何实现的

● 我将使用 scout agent 来深入调查这个项目的架构和功能实现。                                                                             12:17 AM  claude-sonnet-4-5-20250929

● tr:scout(调查项目架构和功能实现)
  ⎿  Prompt:
       请全面调查这个代码库的架构和功能实现,提供以下信息:

       1. 项目结构和组织
         - 主要目录和模块的作用
         - 入口文件和核心文件
         - 配置文件和构建设置
       3. 核心功能和特性
         - 这个项目的主要功能是什么?
         - 关键特性如何实现?
         - 有哪些重要的组件或模块?
       4. 技术栈和依赖
         - 使用了哪些主要的技术和框架?
         - package.json 中的关键依赖是什么?
         - 编程语言和工具链
       5. 架构设计
         - 代码组织模式 (例如: MVC, 分层架构等)
         - 模块之间的交互关系
         - 数据流和控制流
       6. 特殊实现细节
         - 有哪些独特或值得注意的实现方式?
         - 自定义工具或脚本
         - 插件系统或扩展机制

       上下文:
       - 工作目录: /home/djj/code/opencode
       - 这是一个 git 仓库,当前分支是 dev
       - 从 git 状态看有 .claude/ 和 web-bundles/ 目录

       请以结构化格式提供你的发现,包括:
       - 研究摘要
       - 关键发现(带文件路径和行号)
       - 详细分析
       - 建议
       - 信息来源
  ⎿  Search(pattern: "*")

  ⎿    ⎿  Found 13 files
          /home/djj/code/opencode/bunfig.toml
          /home/djj/code/opencode/bun.lock
          /home/djj/code/opencode/README.md
          /home/djj/code/opencode/LICENSE
          /home/djj/code/opencode/AGENTS.md
          /home/djj/code/opencode/package.json
          /home/djj/code/opencode/opencode.json
          /home/djj/code/opencode/install
          /home/djj/code/opencode/sst.config.ts
          /home/djj/code/opencode/sst-env.d.ts
          /home/djj/code/opencode/turbo.json
          /home/djj/code/opencode/tsconfig.json
          /home/djj/code/opencode/STATS.md
  ⎿  Read(file_path: "/home/djj/code/opencode/README.md")

  ⎿  Read(file_path: "/home/djj/code/opencode/package.json")

  ⎿  Read(file_path: "/home/djj/code/opencode/opencode.json")

  ⎿  Read 111 lines

  ⎿  Read 61 lines

  ⎿  Read 4 lines

  ⎿  Search(pattern: "packages/*")

  ⎿  Search(pattern: "packages/*/package.json")

  ⎿    ⎿  Found 0 files

  ⎿    ⎿  Found 5 files
          /home/djj/code/opencode/packages/desktop/package.json
          /home/djj/code/opencode/packages/function/package.json
          /home/djj/code/opencode/packages/opencode/package.json
          /home/djj/code/opencode/packages/plugin/package.json
          /home/djj/code/opencode/packages/web/package.json
  ⎿  Search(pattern: "packages/console/*")

  ⎿  Read(file_path: "/home/djj/code/opencode/packages/opencode/package.json")

  ⎿  Read 66 lines

  ⎿    ⎿  Found 0 files

  ⎿  Search(pattern: "packages/**")

  ⎿  Read(file_path: "/home/djj/code/opencode/packages/opencode/src/index.ts")

  ⎿  Read 135 lines

  ⎿    ⎿  Found 100 files
          /home/djj/code/opencode/packages/console/app/package.json
          /home/djj/code/opencode/packages/console/app/app.config.ts
          /home/djj/code/opencode/packages/console/app/README.md
          /home/djj/code/opencode/packages/console/app/src/app.tsx
          /home/djj/code/opencode/packages/console/app/src/app.css
          /home/djj/code/opencode/packages/console/app/public/theme.json
          /home/djj/code/opencode/packages/console/app/public/social-share.png
          /home/djj/code/opencode/packages/console/app/public/social-share-zen.png
          /home/djj/code/opencode/packages/console/app/public/robots.txt
          /home/djj/code/opencode/packages/console/app/public/favicon.svg
          /home/djj/code/opencode/packages/console/app/public/favicon-zen.svg
          /home/djj/code/opencode/packages/console/app/public/email
          /home/djj/code/opencode/packages/console/app/src/asset/lander/dock.png
          /home/djj/code/opencode/packages/console/app/src/asset/lander/copy.svg
          /home/djj/code/opencode/packages/console/app/src/asset/lander/check.svg
          /home/djj/code/opencode/packages/console/app/src/asset/lander/avatar-frank.png
          /home/djj/code/opencode/packages/console/app/src/asset/lander/avatar-dax.png
          /home/djj/code/opencode/packages/console/app/src/asset/lander/avatar-adam.png
          /home/djj/code/opencode/packages/console/app/src/asset/lander/avatar-david.png
          /home/djj/code/opencode/packages/console/app/src/asset/lander/avatar-jay.png
          /home/djj/code/opencode/packages/console/app/src/asset/lander/opencode-comparison-min.mp4
          /home/djj/code/opencode/packages/console/app/src/asset/lander/opencode-comparison-poster.png
          /home/djj/code/opencode/packages/console/app/src/asset/lander/screenshot-github.png
          /home/djj/code/opencode/packages/console/app/src/asset/lander/opencode-poster.png
          /home/djj/code/opencode/packages/console/app/src/asset/lander/opencode-min.mp4
          /home/djj/code/opencode/packages/console/app/src/middleware.ts
          /home/djj/code/opencode/packages/console/app/src/global.d.ts
          /home/djj/code/opencode/packages/console/app/src/entry-server.tsx
          /home/djj/code/opencode/packages/console/app/src/entry-client.tsx
          /home/djj/code/opencode/packages/console/app/src/routes/[...404].tsx
          /home/djj/code/opencode/packages/console/app/src/routes/[...404].css
          /home/djj/code/opencode/packages/console/app/src/lib/github.ts
          /home/djj/code/opencode/packages/console/app/src/lib/beta.ts
          /home/djj/code/opencode/packages/console/app/src/context/auth.withActor.ts
          /home/djj/code/opencode/packages/console/app/src/context/auth.session.ts
          /home/djj/code/opencode/packages/console/app/src/component/legal.tsx
          /home/djj/code/opencode/packages/console/app/src/component/icon.tsx
          /home/djj/code/opencode/packages/console/app/src/component/header.tsx
          /home/djj/code/opencode/packages/console/app/src/component/footer.tsx
          /home/djj/code/opencode/packages/console/app/src/component/faq.tsx
          /home/djj/code/opencode/packages/console/app/src/component/email-signup.tsx
          /home/djj/code/opencode/packages/console/app/src/asset/zen-ornate-light.svg
          /home/djj/code/opencode/packages/console/app/src/asset/zen-ornate-dark.svg
          /home/djj/code/opencode/packages/console/app/src/asset/logo.svg
          /home/djj/code/opencode/packages/console/app/src/asset/logo-ornate-light.svg
          /home/djj/code/opencode/packages/console/app/src/asset/logo-ornate-dark.svg
          /home/djj/code/opencode/packages/console/app/src/asset/lander/screenshot.png
          /home/djj/code/opencode/packages/console/app/src/asset/lander/screenshot-vscode.png
          /home/djj/code/opencode/packages/console/app/src/asset/lander/screenshot-splash.png
          /home/djj/code/opencode/packages/console/app/src/routes/workspace.tsx
          /home/djj/code/opencode/packages/console/app/src/routes/workspace.css
          /home/djj/code/opencode/packages/console/app/src/routes/workspace-picker.tsx
          /home/djj/code/opencode/packages/console/app/src/routes/workspace-picker.css
          /home/djj/code/opencode/packages/console/app/src/routes/temp.tsx
          /home/djj/code/opencode/packages/console/app/src/routes/index.tsx
          /home/djj/code/opencode/packages/console/app/src/routes/index.css
          /home/djj/code/opencode/packages/console/app/src/routes/discord.ts
          /home/djj/code/opencode/packages/console/app/src/routes/zen/index.tsx
          /home/djj/code/opencode/packages/console/app/src/routes/zen/index.css
          /home/djj/code/opencode/packages/console/app/src/routes/workspace/usage-section.tsx
          /home/djj/code/opencode/packages/console/app/src/routes/workspace/usage-section.module.css
          /home/djj/code/opencode/packages/console/app/src/routes/workspace/settings-section.tsx
          /home/djj/code/opencode/packages/console/app/src/routes/workspace/settings-section.module.css
          /home/djj/code/opencode/packages/console/app/src/routes/workspace/payment-section.tsx
          /home/djj/code/opencode/packages/console/app/src/routes/workspace/payment-section.module.css
          /home/djj/code/opencode/packages/console/app/src/routes/workspace/new-user-section.tsx
          /home/djj/code/opencode/packages/console/app/src/routes/workspace/new-user-section.module.css
          /home/djj/code/opencode/packages/console/app/src/routes/workspace/monthly-limit-section.module.css
          /home/djj/code/opencode/packages/console/app/src/routes/workspace/model-section.module.css
          /home/djj/code/opencode/packages/console/app/src/routes/workspace/model-section.tsx
          /home/djj/code/opencode/packages/console/app/src/routes/workspace/member-section.module.css
          /home/djj/code/opencode/packages/console/app/src/routes/workspace/monthly-limit-section.tsx
          /home/djj/code/opencode/packages/console/app/src/routes/workspace/key-section.module.css
          /home/djj/code/opencode/packages/console/app/src/routes/workspace/index.tsx
          /home/djj/code/opencode/packages/console/app/src/routes/workspace/billing-section.tsx
          /home/djj/code/opencode/packages/console/app/src/routes/workspace/billing-section.module.css
          /home/djj/code/opencode/packages/console/app/src/routes/workspace/[id].css
          /home/djj/code/opencode/packages/console/app/src/routes/workspace/common.tsx
          /home/djj/code/opencode/packages/console/app/src/routes/stripe/webhook.ts
          /home/djj/code/opencode/packages/console/app/src/routes/s/[id].ts
          /home/djj/code/opencode/packages/console/app/src/routes/docs/index.ts
          /home/djj/code/opencode/packages/console/app/src/routes/docs/[...path].ts
          /home/djj/code/opencode/packages/console/app/src/routes/debug/index.ts
          /home/djj/code/opencode/packages/console/app/src/routes/auth/index.ts
          /home/djj/code/opencode/packages/console/app/src/routes/auth/callback.ts
          /home/djj/code/opencode/packages/console/app/src/routes/auth/authorize.ts
          /home/djj/code/opencode/packages/console/app/src/routes/zen/v1/chat/completions.ts
          /home/djj/code/opencode/packages/console/core/package.json
          /home/djj/code/opencode/packages/console/core/drizzle.config.ts
          /home/djj/code/opencode/packages/console/app/tsconfig.json
          /home/djj/code/opencode/packages/console/app/sst-env.d.ts
          /home/djj/code/opencode/packages/console/core/migrations/0030_ordinary_ultragirl.sql
          /home/djj/code/opencode/packages/console/core/migrations/0029_panoramic_harrier.sql
          /home/djj/code/opencode/packages/console/core/migrations/0028_careful_cerise.sql
          /home/djj/code/opencode/packages/console/core/migrations/0027_hot_wong.sql
          /home/djj/code/opencode/packages/console/core/migrations/0026_numerous_prodigy.sql
          /home/djj/code/opencode/packages/console/core/migrations/0025_legal_joseph.sql
          /home/djj/code/opencode/packages/console/core/migrations/0024_early_black_crow.sql
          /home/djj/code/opencode/packages/console/core/migrations/0023_optimal_paibok.sql
          /home/djj/code/opencode/packages/console/core/migrations/0022_nice_dreadnoughts.sql
  ⎿  Read(file_path: "/home/djj/code/opencode/packages/web/package.json")

  ⎿  Read(file_path: "/home/djj/code/opencode/packages/console/app/package.json")

  ⎿  Search(pattern: "packages/opencode/src/**/*.ts")

  ⎿  Read 42 lines

  ⎿  Read 29 lines

  ⎿    ⎿  Found 100 files
          /home/djj/code/opencode/packages/opencode/src/cli/error.ts
          /home/djj/code/opencode/packages/opencode/src/cli/bootstrap.ts
          /home/djj/code/opencode/packages/opencode/src/bus/index.ts
          /home/djj/code/opencode/packages/opencode/src/bun/index.ts
          /home/djj/code/opencode/packages/opencode/src/auth/index.ts
          /home/djj/code/opencode/packages/opencode/src/auth/github-copilot.ts
          /home/djj/code/opencode/packages/opencode/src/agent/agent.ts
          /home/djj/code/opencode/packages/opencode/src/cli/cmd/upgrade.ts
          /home/djj/code/opencode/packages/opencode/src/cli/cmd/tui.ts
          /home/djj/code/opencode/packages/opencode/src/cli/cmd/stats.ts
          /home/djj/code/opencode/packages/opencode/src/cli/cmd/serve.ts
          /home/djj/code/opencode/packages/opencode/src/cli/cmd/run.ts
          /home/djj/code/opencode/packages/opencode/src/cli/cmd/models.ts
          /home/djj/code/opencode/packages/opencode/src/cli/cmd/mcp.ts
          /home/djj/code/opencode/packages/opencode/src/cli/cmd/github.ts
          /home/djj/code/opencode/packages/opencode/src/cli/cmd/generate.ts
          /home/djj/code/opencode/packages/opencode/src/cli/cmd/cmd.ts
          /home/djj/code/opencode/packages/opencode/src/cli/cmd/auth.ts
          /home/djj/code/opencode/packages/opencode/src/cli/cmd/agent.ts
          /home/djj/code/opencode/packages/opencode/src/cli/cmd/attach.ts
          /home/djj/code/opencode/packages/opencode/src/cli/cmd/opentui/opentui.ts
          /home/djj/code/opencode/packages/opencode/src/cli/cmd/debug/snapshot.ts
          /home/djj/code/opencode/packages/opencode/src/cli/cmd/debug/scrap.ts
          /home/djj/code/opencode/packages/opencode/src/cli/cmd/debug/ripgrep.ts
          /home/djj/code/opencode/packages/opencode/src/cli/cmd/debug/lsp.ts
          /home/djj/code/opencode/packages/opencode/src/cli/cmd/debug/index.ts
          /home/djj/code/opencode/packages/opencode/src/cli/cmd/debug/file.ts
          /home/djj/code/opencode/packages/opencode/src/cli/cmd/debug/config.ts
          /home/djj/code/opencode/packages/opencode/src/index.ts
          /home/djj/code/opencode/packages/opencode/src/ide/index.ts
          /home/djj/code/opencode/packages/opencode/src/id/id.ts
          /home/djj/code/opencode/packages/opencode/src/global/index.ts
          /home/djj/code/opencode/packages/opencode/src/format/index.ts
          /home/djj/code/opencode/packages/opencode/src/format/formatter.ts
          /home/djj/code/opencode/packages/opencode/src/flag/flag.ts
          /home/djj/code/opencode/packages/opencode/src/file/watcher.ts
          /home/djj/code/opencode/packages/opencode/src/file/time.ts
          /home/djj/code/opencode/packages/opencode/src/file/ripgrep.ts
          /home/djj/code/opencode/packages/opencode/src/file/index.ts
          /home/djj/code/opencode/packages/opencode/src/file/ignore.ts
          /home/djj/code/opencode/packages/opencode/src/file/fzf.ts
          /home/djj/code/opencode/packages/opencode/src/config/markdown.ts
          /home/djj/code/opencode/packages/opencode/src/config/config.ts
          /home/djj/code/opencode/packages/opencode/src/command/index.ts
          /home/djj/code/opencode/packages/opencode/src/cli/ui.ts
          /home/djj/code/opencode/packages/opencode/src/session/message.ts
          /home/djj/code/opencode/packages/opencode/src/session/index.ts
          /home/djj/code/opencode/packages/opencode/src/session/compaction.ts
          /home/djj/code/opencode/packages/opencode/src/server/tui.ts
          /home/djj/code/opencode/packages/opencode/src/server/server.ts
          /home/djj/code/opencode/packages/opencode/src/server/project.ts
          /home/djj/code/opencode/packages/opencode/src/provider/transform.ts
          /home/djj/code/opencode/packages/opencode/src/provider/models-macro.ts
          /home/djj/code/opencode/packages/opencode/src/project/state.ts
          /home/djj/code/opencode/packages/opencode/src/project/project.ts
          /home/djj/code/opencode/packages/opencode/src/project/instance.ts
          /home/djj/code/opencode/packages/opencode/src/project/bootstrap.ts
          /home/djj/code/opencode/packages/opencode/src/plugin/index.ts
          /home/djj/code/opencode/packages/opencode/src/permission/index.ts
          /home/djj/code/opencode/packages/opencode/src/patch/index.ts
          /home/djj/code/opencode/packages/opencode/src/mcp/index.ts
          /home/djj/code/opencode/packages/opencode/src/lsp/language.ts
          /home/djj/code/opencode/packages/opencode/src/lsp/index.ts
          /home/djj/code/opencode/packages/opencode/src/lsp/client.ts
          /home/djj/code/opencode/packages/opencode/src/installation/index.ts
          /home/djj/code/opencode/packages/opencode/src/tool/webfetch.ts
          /home/djj/code/opencode/packages/opencode/src/tool/todo.ts
          /home/djj/code/opencode/packages/opencode/src/tool/task.ts
          /home/djj/code/opencode/packages/opencode/src/tool/registry.ts
          /home/djj/code/opencode/packages/opencode/src/tool/patch.ts
          /home/djj/code/opencode/packages/opencode/src/tool/multiedit.ts
          /home/djj/code/opencode/packages/opencode/src/tool/lsp-hover.ts
          /home/djj/code/opencode/packages/opencode/src/tool/lsp-diagnostics.ts
          /home/djj/code/opencode/packages/opencode/src/tool/ls.ts
          /home/djj/code/opencode/packages/opencode/src/tool/invalid.ts
          /home/djj/code/opencode/packages/opencode/src/tool/grep.ts
          /home/djj/code/opencode/packages/opencode/src/tool/glob.ts
          /home/djj/code/opencode/packages/opencode/src/tool/edit.ts
          /home/djj/code/opencode/packages/opencode/src/tool/bash.ts
          /home/djj/code/opencode/packages/opencode/src/storage/storage.ts
          /home/djj/code/opencode/packages/opencode/src/snapshot/index.ts
          /home/djj/code/opencode/packages/opencode/src/share/share.ts
          /home/djj/code/opencode/packages/opencode/src/session/todo.ts
          /home/djj/code/opencode/packages/opencode/src/session/system.ts
          /home/djj/code/opencode/packages/opencode/src/session/revert.ts
          /home/djj/code/opencode/packages/opencode/src/util/wildcard.ts
          /home/djj/code/opencode/packages/opencode/src/util/token.ts
          /home/djj/code/opencode/packages/opencode/src/util/timeout.ts
          /home/djj/code/opencode/packages/opencode/src/util/scrap.ts
          /home/djj/code/opencode/packages/opencode/src/util/queue.ts
          /home/djj/code/opencode/packages/opencode/src/util/log.ts
          /home/djj/code/opencode/packages/opencode/src/util/lock.ts
          /home/djj/code/opencode/packages/opencode/src/util/lazy.ts
          /home/djj/code/opencode/packages/opencode/src/util/fn.ts
          /home/djj/code/opencode/packages/opencode/src/util/filesystem.ts
          /home/djj/code/opencode/packages/opencode/src/util/error.ts
          /home/djj/code/opencode/packages/opencode/src/util/defer.ts
          /home/djj/code/opencode/packages/opencode/src/util/context.ts
          /home/djj/code/opencode/packages/opencode/src/tool/write.ts
          /home/djj/code/opencode/packages/opencode/src/tool/tool.ts
  ⎿  Read(file_path: "/home/djj/code/opencode/packages/opencode/src/cli/cmd/run.ts")

  ⎿  Read(file_path: "/home/djj/code/opencode/packages/opencode/src/agent/agent.ts")

  ⎿  Read(file_path: "/home/djj/code/opencode/packages/opencode/src/server/server.ts")

  ⎿  Read 268 lines

  ⎿  Read 206 lines

  ⎿  Read 1491 lines

  ⎿  Read(file_path: "/home/djj/code/opencode/packages/opencode/src/tool/tool.ts")

  ⎿  Read(file_path: "/home/djj/code/opencode/tsconfig.json")

  ⎿  Read(file_path: "/home/djj/code/opencode/turbo.json")

  ⎿  Read 48 lines

  ⎿  Read 6 lines

  ⎿  Read 15 lines

  ⎿  Read(file_path: "/home/djj/code/opencode/AGENTS.md")

  ⎿  Search(pattern: "packages/opencode/src/cli/cmd/tui.ts")

  ⎿  Read 48 lines

  ⎿    ⎿  Found 1 file
          /home/djj/code/opencode/packages/opencode/src/cli/cmd/tui.ts
  ⎿  Read(file_path: "/home/djj/code/opencode/packages/opencode/src/cli/cmd/tui.ts", limit: 100)

  ⎿  Read 100 lines

  ⎿  Read(file_path: "/home/djj/code/opencode/packages/opencode/script/build.ts")

  ⎿  Search(pattern: "packages/*/src/**")

  ⎿  Read(file_path: "/home/djj/code/opencode/sst.config.ts")

  ⎿  Read 65 lines

  ⎿  Read 24 lines

  ⎿    ⎿  Found 100 files
          /home/djj/code/opencode/packages/desktop/src/assets/favicon.svg
          /home/djj/code/opencode/packages/desktop/src/assets/file-icons/bench-js.svg
          /home/djj/code/opencode/packages/desktop/src/assets/file-icons/beancount.svg
          /home/djj/code/opencode/packages/desktop/src/assets/file-icons/bbx.svg
          /home/djj/code/opencode/packages/desktop/src/assets/file-icons/bazel.svg
          /home/djj/code/opencode/packages/desktop/src/assets/file-icons/ballerina.svg
          /home/djj/code/opencode/packages/desktop/src/assets/file-icons/babel.svg
          /home/djj/code/opencode/packages/desktop/src/assets/file-icons/azure.svg
          /home/djj/code/opencode/packages/desktop/src/assets/file-icons/azure-pipelines.svg
          /home/djj/code/opencode/packages/desktop/src/assets/file-icons/autoit.svg
          /home/djj/code/opencode/packages/desktop/src/assets/file-icons/autohotkey.svg
          /home/djj/code/opencode/packages/desktop/src/assets/file-icons/auto_light.svg
          /home/djj/code/opencode/packages/desktop/src/assets/file-icons/auto.svg
          /home/djj/code/opencode/packages/desktop/src/assets/file-icons/authors.svg
          /home/djj/code/opencode/packages/desktop/src/assets/file-icons/aurelia.svg
          /home/djj/code/opencode/packages/desktop/src/assets/file-icons/audio.svg
          /home/djj/code/opencode/packages/desktop/src/assets/file-icons/astyle.svg
          /home/djj/code/opencode/packages/desktop/src/assets/file-icons/astro.svg
          /home/djj/code/opencode/packages/desktop/src/assets/file-icons/astro-config.svg
          /home/djj/code/opencode/packages/desktop/src/assets/file-icons/assembly.svg
          /home/djj/code/opencode/packages/desktop/src/assets/file-icons/arduino.svg
          /home/djj/code/opencode/packages/desktop/src/assets/file-icons/architecture.svg
          /home/djj/code/opencode/packages/desktop/src/assets/file-icons/apps-script.svg
          /home/djj/code/opencode/packages/desktop/src/assets/file-icons/applescript.svg
          /home/djj/code/opencode/packages/desktop/src/assets/file-icons/appveyor.svg
          /home/djj/code/opencode/packages/desktop/src/assets/file-icons/apollo.svg
          /home/djj/code/opencode/packages/desktop/src/assets/file-icons/apiblueprint.svg
          /home/djj/code/opencode/packages/desktop/src/assets/file-icons/antlr.svg
          /home/djj/code/opencode/packages/desktop/src/assets/file-icons/angular.svg
          /home/djj/code/opencode/packages/desktop/src/assets/file-icons/asciidoc.svg
          /home/djj/code/opencode/packages/desktop/src/assets/file-icons/android.svg
          /home/djj/code/opencode/packages/desktop/src/assets/file-icons/amplify.svg
          /home/djj/code/opencode/packages/desktop/src/assets/file-icons/adonis.svg
          /home/djj/code/opencode/packages/desktop/src/assets/file-icons/adobe-swc.svg
          /home/djj/code/opencode/packages/desktop/src/assets/file-icons/adobe-photoshop_light.svg
          /home/djj/code/opencode/packages/desktop/src/assets/file-icons/advpl.svg
          /home/djj/code/opencode/packages/desktop/src/assets/file-icons/adobe-photoshop.svg
          /home/djj/code/opencode/packages/desktop/src/assets/file-icons/adobe-illustrator_light.svg
          /home/djj/code/opencode/packages/desktop/src/assets/file-icons/adobe-illustrator.svg
          /home/djj/code/opencode/packages/desktop/src/assets/file-icons/actionscript.svg
          /home/djj/code/opencode/packages/desktop/src/assets/file-icons/abc.svg
          /home/djj/code/opencode/packages/desktop/src/assets/file-icons/abap.svg
          /home/djj/code/opencode/packages/desktop/src/assets/file-icons/3d.svg
          /home/djj/code/opencode/packages/desktop/src/assets/file-icons/ada.svg
          /home/djj/code/opencode/packages/desktop/src/assets/file-icons/epub.svg
          /home/djj/code/opencode/packages/desktop/src/assets/file-icons/ember.svg
          /home/djj/code/opencode/packages/desktop/src/assets/file-icons/email.svg
          /home/djj/code/opencode/packages/desktop/src/assets/file-icons/elm.svg
          /home/djj/code/opencode/packages/desktop/src/assets/file-icons/elixir.svg
          /home/djj/code/opencode/packages/desktop/src/assets/file-icons/ejs.svg
          /home/djj/code/opencode/packages/desktop/src/assets/file-icons/editorconfig.svg
          /home/djj/code/opencode/packages/desktop/src/assets/file-icons/edge.svg
          /home/djj/code/opencode/packages/desktop/src/assets/file-icons/dune.svg
          /home/djj/code/opencode/packages/desktop/src/assets/file-icons/duc.svg
          /home/djj/code/opencode/packages/desktop/src/assets/file-icons/drone_light.svg
          /home/djj/code/opencode/packages/desktop/src/assets/file-icons/drone.svg
          /home/djj/code/opencode/packages/desktop/src/assets/file-icons/drizzle.svg
          /home/djj/code/opencode/packages/desktop/src/assets/file-icons/drawio.svg
          /home/djj/code/opencode/packages/desktop/src/assets/file-icons/dotjs.svg
          /home/djj/code/opencode/packages/desktop/src/assets/file-icons/document.svg
          /home/djj/code/opencode/packages/desktop/src/assets/file-icons/doctex-installer.svg
          /home/djj/code/opencode/packages/desktop/src/assets/file-icons/docker.svg
          /home/djj/code/opencode/packages/desktop/src/assets/file-icons/dll.svg
          /home/djj/code/opencode/packages/desktop/src/assets/file-icons/django.svg
          /home/djj/code/opencode/packages/desktop/src/assets/file-icons/disc.svg
          /home/djj/code/opencode/packages/desktop/src/assets/file-icons/dinophp.svg
          /home/djj/code/opencode/packages/desktop/src/assets/file-icons/diff.svg
          /home/djj/code/opencode/packages/desktop/src/assets/file-icons/dhall.svg
          /home/djj/code/opencode/packages/desktop/src/assets/file-icons/dependencies-update.svg
          /home/djj/code/opencode/packages/desktop/src/assets/file-icons/dependabot.svg
          /home/djj/code/opencode/packages/desktop/src/assets/file-icons/deno_light.svg
          /home/djj/code/opencode/packages/desktop/src/assets/file-icons/deno.svg
          /home/djj/code/opencode/packages/desktop/src/assets/file-icons/denizenscript.svg
          /home/djj/code/opencode/packages/desktop/src/assets/file-icons/deepsource.svg
          /home/djj/code/opencode/packages/desktop/src/assets/file-icons/database.svg
          /home/djj/code/opencode/packages/desktop/src/assets/file-icons/dart_generated.svg
          /home/djj/code/opencode/packages/desktop/src/assets/file-icons/dart.svg
          /home/djj/code/opencode/packages/desktop/src/assets/file-icons/d.svg
          /home/djj/code/opencode/packages/desktop/src/assets/file-icons/cypress.svg
          /home/djj/code/opencode/packages/desktop/src/assets/file-icons/cursor_light.svg
          /home/djj/code/opencode/packages/desktop/src/assets/file-icons/cursor.svg
          /home/djj/code/opencode/packages/desktop/src/assets/file-icons/cuda.svg
          /home/djj/code/opencode/packages/desktop/src/assets/file-icons/cucumber.svg
          /home/djj/code/opencode/packages/desktop/src/assets/file-icons/css.svg
          /home/djj/code/opencode/packages/desktop/src/assets/file-icons/css-map.svg
          /home/djj/code/opencode/packages/desktop/src/assets/file-icons/csharp.svg
          /home/djj/code/opencode/packages/desktop/src/assets/file-icons/crystal_light.svg
          /home/djj/code/opencode/packages/desktop/src/assets/file-icons/crystal.svg
          /home/djj/code/opencode/packages/desktop/src/assets/file-icons/credits.svg
          /home/djj/code/opencode/packages/desktop/src/assets/file-icons/craco.svg
          /home/djj/code/opencode/packages/desktop/src/assets/file-icons/cpp.svg
          /home/djj/code/opencode/packages/desktop/src/assets/file-icons/copilot_light.svg
          /home/djj/code/opencode/packages/desktop/src/assets/file-icons/copilot.svg
          /home/djj/code/opencode/packages/desktop/src/assets/file-icons/controller.svg
          /home/djj/code/opencode/packages/desktop/src/assets/file-icons/contributing.svg
          /home/djj/code/opencode/packages/desktop/src/assets/file-icons/context.svg
          /home/djj/code/opencode/packages/desktop/src/assets/file-icons/contentlayer.svg
          /home/djj/code/opencode/packages/desktop/src/assets/file-icons/console.svg
          /home/djj/code/opencode/packages/desktop/src/assets/file-icons/conduct.svg
          /home/djj/code/opencode/packages/desktop/src/assets/file-icons/concourse.svg
  ⎿  Read(file_path: "/home/djj/code/opencode/packages/opencode/src/mcp/index.ts")

  ⎿  Read(file_path: "/home/djj/code/opencode/packages/plugin/package.json")

  ⎿  Search(pattern: "packages/sdk/**")

  ⎿  Read 187 lines

  ⎿  Read 25 lines

  ⎿    ⎿  Found 96 files
          /home/djj/code/opencode/packages/sdk/go/agent_test.go
          /home/djj/code/opencode/packages/sdk/go/agent.go
          /home/djj/code/opencode/packages/sdk/go/SECURITY.md
          /home/djj/code/opencode/packages/sdk/go/README.md
          /home/djj/code/opencode/packages/sdk/go/LICENSE
          /home/djj/code/opencode/packages/sdk/go/CONTRIBUTING.md
          /home/djj/code/opencode/packages/sdk/go/CHANGELOG.md
          /home/djj/code/opencode/packages/sdk/go/Brewfile
          /home/djj/code/opencode/packages/sdk/go/go.sum
          /home/djj/code/opencode/packages/sdk/go/go.mod
          /home/djj/code/opencode/packages/sdk/go/find_test.go
          /home/djj/code/opencode/packages/sdk/go/find.go
          /home/djj/code/opencode/packages/sdk/go/file_test.go
          /home/djj/code/opencode/packages/sdk/go/file.go
          /home/djj/code/opencode/packages/sdk/go/field.go
          /home/djj/code/opencode/packages/sdk/go/event.go
          /home/djj/code/opencode/packages/sdk/go/config_test.go
          /home/djj/code/opencode/packages/sdk/go/config.go
          /home/djj/code/opencode/packages/sdk/go/command_test.go
          /home/djj/code/opencode/packages/sdk/go/command.go
          /home/djj/code/opencode/packages/sdk/go/client_test.go
          /home/djj/code/opencode/packages/sdk/go/client.go
          /home/djj/code/opencode/packages/sdk/go/app_test.go
          /home/djj/code/opencode/packages/sdk/go/app.go
          /home/djj/code/opencode/packages/sdk/go/api.md
          /home/djj/code/opencode/packages/sdk/go/aliases.go
          /home/djj/code/opencode/packages/sdk/go/internal/param/field.go
          /home/djj/code/opencode/packages/sdk/go/internal/apiquery/tag.go
          /home/djj/code/opencode/packages/sdk/go/internal/apiquery/query_test.go
          /home/djj/code/opencode/packages/sdk/go/internal/apiquery/query.go
          /home/djj/code/opencode/packages/sdk/go/internal/apiquery/encoder.go
          /home/djj/code/opencode/packages/sdk/go/internal/apijson/tag.go
          /home/djj/code/opencode/packages/sdk/go/internal/apijson/registry.go
          /home/djj/code/opencode/packages/sdk/go/internal/apijson/port_test.go
          /home/djj/code/opencode/packages/sdk/go/internal/apijson/port.go
          /home/djj/code/opencode/packages/sdk/go/internal/apijson/json_test.go
          /home/djj/code/opencode/packages/sdk/go/internal/apijson/field_test.go
          /home/djj/code/opencode/packages/sdk/go/internal/apijson/field.go
          /home/djj/code/opencode/packages/sdk/go/internal/apijson/encoder.go
          /home/djj/code/opencode/packages/sdk/go/internal/apijson/decoder.go
          /home/djj/code/opencode/packages/sdk/go/internal/apiform/tag.go
          /home/djj/code/opencode/packages/sdk/go/internal/apiform/form_test.go
          /home/djj/code/opencode/packages/sdk/go/internal/apiform/form.go
          /home/djj/code/opencode/packages/sdk/go/internal/apiform/encoder.go
          /home/djj/code/opencode/packages/sdk/go/internal/apierror/apierror.go
          /home/djj/code/opencode/packages/sdk/go/release-please-config.json
          /home/djj/code/opencode/packages/sdk/go/project_test.go
          /home/djj/code/opencode/packages/sdk/go/project.go
          /home/djj/code/opencode/packages/sdk/go/path_test.go
          /home/djj/code/opencode/packages/sdk/go/path.go
          /home/djj/code/opencode/packages/sdk/go/option/requestoption.go
          /home/djj/code/opencode/packages/sdk/go/option/middleware.go
          /home/djj/code/opencode/packages/sdk/go/internal/version.go
          /home/djj/code/opencode/packages/sdk/go/packages/ssestream/ssestream.go
          /home/djj/code/opencode/packages/sdk/go/internal/testutil/testutil.go
          /home/djj/code/opencode/packages/sdk/go/internal/requestconfig/requestconfig.go
          /home/djj/code/opencode/packages/sdk/js/package.json
          /home/djj/code/opencode/packages/sdk/go/usage_test.go
          /home/djj/code/opencode/packages/sdk/go/tui_test.go
          /home/djj/code/opencode/packages/sdk/go/tui.go
          /home/djj/code/opencode/packages/sdk/go/sessionpermission_test.go
          /home/djj/code/opencode/packages/sdk/go/sessionpermission.go
          /home/djj/code/opencode/packages/sdk/go/session_test.go
          /home/djj/code/opencode/packages/sdk/go/session.go
          /home/djj/code/opencode/packages/sdk/js/src/client.ts
          /home/djj/code/opencode/packages/sdk/js/script/publish.ts
          /home/djj/code/opencode/packages/sdk/js/script/build.ts
          /home/djj/code/opencode/packages/sdk/js/example/example.ts
          /home/djj/code/opencode/packages/sdk/go/shared/union.go
          /home/djj/code/opencode/packages/sdk/go/shared/shared.go
          /home/djj/code/opencode/packages/sdk/go/scripts/test
          /home/djj/code/opencode/packages/sdk/go/scripts/mock
          /home/djj/code/opencode/packages/sdk/go/scripts/lint
          /home/djj/code/opencode/packages/sdk/go/scripts/format
          /home/djj/code/opencode/packages/sdk/go/scripts/bootstrap
          /home/djj/code/opencode/packages/sdk/js/src/gen/client.gen.ts
          /home/djj/code/opencode/packages/sdk/js/src/gen/core/auth.gen.ts
          /home/djj/code/opencode/packages/sdk/js/src/gen/client/utils.gen.ts
          /home/djj/code/opencode/packages/sdk/js/src/gen/client/types.gen.ts
          /home/djj/code/opencode/packages/sdk/js/src/gen/client/index.ts
          /home/djj/code/opencode/packages/sdk/js/src/gen/client/client.gen.ts
          /home/djj/code/opencode/packages/sdk/stainless/stainless.yml
          /home/djj/code/opencode/packages/sdk/stainless/stainless-workspace.json
          /home/djj/code/opencode/packages/sdk/stainless/generate.ts
          /home/djj/code/opencode/packages/sdk/js/tsconfig.json
          /home/djj/code/opencode/packages/sdk/js/sst-env.d.ts
          /home/djj/code/opencode/packages/sdk/js/src/server.ts
          /home/djj/code/opencode/packages/sdk/js/src/index.ts
          /home/djj/code/opencode/packages/sdk/js/src/gen/types.gen.ts
          /home/djj/code/opencode/packages/sdk/js/src/gen/sdk.gen.ts
          /home/djj/code/opencode/packages/sdk/js/src/gen/core/utils.gen.ts
          /home/djj/code/opencode/packages/sdk/js/src/gen/core/types.gen.ts
          /home/djj/code/opencode/packages/sdk/js/src/gen/core/serverSentEvents.gen.ts
          /home/djj/code/opencode/packages/sdk/js/src/gen/core/pathSerializer.gen.ts
          /home/djj/code/opencode/packages/sdk/js/src/gen/core/params.gen.ts
          /home/djj/code/opencode/packages/sdk/js/src/gen/core/bodySerializer.gen.ts
  ⎿  Response:
       OpenCode 代码库架构和功能实现调查报告

       研究摘要

       OpenCode 是一个开源的 AI 编码助手,专为终端环境设计。它采用客户端/服务器架构,支持多种 AI 提供商,并提供 TUI(终端用户界面)和 Web 界面。该项目使用
       TypeScript/JavaScript 作为主要开发语言,核心 CLI 工具使用 Bun 运行时,TUI 部分使用 Go 语言开发。

       关键发现

       1. 项目结构和组织

       核心目录结构

       - 根目录配置文件:
         - /home/djj/code/opencode/package.json:1~60 - Monorepo 配置,使用 Bun 和 Turbo
         - /home/djj/code/opencode/tsconfig.json:1~5 - TypeScript 配置
         - /home/djj/code/opencode/turbo.json:1~15 - Turbo 构建配置

       主要包结构

       - packages/opencode/ - 核心 CLI 工具
         - /home/djj/code/opencode/packages/opencode/src/index.ts:1~135 - 主入口点,包含所有 CLI 命令
       - packages/console/ - Web 控制台应用
       - packages/web/ - 文档网站
       - packages/desktop/ - 桌面应用
       - packages/plugin/ - 插件系统
       - packages/sdk/ - 多语言 SDK(Go、JavaScript)

       3. 核心功能和特性

       主要功能

       根据 /home/djj/code/opencode/README.md:10~16,OpenCode 是"为终端构建的 AI 编码代理"。

       核心命令系统

       /home/djj/code/opencode/packages/opencode/src/index.ts:37~84 定义了完整的 CLI 命令集:
       - 运行命令: run, tui, attach - 执行 AI 任务
       - 管理命令: auth, agent, models - 配置和管理
       - 开发命令: serve, debug, mcp - 开发和扩展
       - 实用命令: generate, upgrade, stats, export - 辅助功能

       AI Agent 系统

       /home/djj/code/opencode/packages/opencode/src/agent/agent.ts:60~136 定义了内置 Agent:
       - general: 通用研究代理,支持复杂问题搜索
       - build: 构建专用代理,主要代理模式
       - plan: 规划代理,限制编辑权限

       工具系统架构

       /home/djj/code/opencode/packages/opencode/src/tool/tool.ts:4~47 定义了工具接口:
       - 标准化的工具定义和执行框架
       - 支持并行工具调用
       - 丰富的元数据和上下文支持

       4. 技术栈和依赖

       主要技术

       - 运行时: Bun (package.json:6)
       - 语言: TypeScript, Go (TUI)
       - 框架: Hono (API), SolidJS (Console), Astro (Web)
       - AI SDK: Vercel AI SDK (packages/opencode/package.json:42)

       关键依赖

       - 核心依赖:
         - @modelcontextprotocol/sdk - MCP 协议支持
         - hono - Web 框架
         - tree-sitter - 代码解析
         - vscode-* - LSP 支持

       构建系统

       /home/djj/code/opencode/packages/opencode/script/build.ts:14~64 支持多平台交叉编译:
       - Windows、Linux、macOS
       - x64、ARM64 架构支持
       - 嵌入式 TUI 二进制文件

       5. 架构设计

       客户端/服务器架构

       /home/djj/code/opencode/packages/opencode/src/server/server.ts:55~1490 实现了完整的 REST API:
       - 会话管理、消息处理
       - 文件操作、符号查找
       - 事件流、权限控制

       分层架构模式

       - CLI 层: 命令行接口和参数处理
       - 业务层: Agent、会话、工具管理
       - 数据层: 文件系统、配置存储
       - API 层: HTTP 服务器和 WebSocket

       模块交互关系

       CLI Commands → Agent System → Tool Registry → File System
            ↓              ↓              ↓              ↓
          Session ← → Server API ← → LSP Client ← → Project Instance

       6. 特殊实现细节

       MCP (Model Context Protocol) 集成

       /home/djj/code/opencode/packages/opencode/src/mcp/index.ts:14~186:
       - 支持本地和远程 MCP 服务器
       - 多种传输方式:HTTP、SSE、Stdio
       - 自动工具发现和注册

       TUI 集成

       /home/djj/code/opencode/packages/opencode/src/cli/cmd/tui.ts:107~156:
       - Go 语言开发的本地 TUI 应用
       - 嵌入式二进制文件分发
       - 与主进程通过 API 通信

       插件系统

       - 基于 MCP 的插件架构
       - SDK 支持多语言开发
       - 动态工具注册机制

       LSP 集成

       - 完整的语言服务器协议支持
       - 符号查找、诊断、悬停信息
       - 与编辑器集成能力

       详细分析

       核心工作流程

       1. 初始化: 项目检测、配置加载、实例创建
       2. Agent 选择: 根据任务类型选择合适的 Agent
       3. 工具执行: 并行调用相关工具完成任务
       4. 结果处理: 格式化输出、状态更新、错误处理

       数据流设计

       - 事件驱动: 使用 Bus 系统进行组件间通信
       - 流式处理: 支持实时响应和增量更新
       - 状态管理: 集中式状态存储和同步

       扩展机制

       - 工具注册: 动态发现和注册新工具
       - MCP 协议: 标准化的插件接口
       - SDK 体系: 多语言客户端支持

       建议

       架构优势

       1. 模块化设计: 清晰的分层和职责分离
       2. 标准化接口: 统一的工具和 Agent 定义
       3. 多提供商支持: 不绑定特定的 AI 服务商
       4. 跨平台能力: 完整的操作系统和架构支持

       潜在改进点

       1. 错误处理: 可以增强错误恢复机制
       2. 性能优化: 缓存和并发处理可以进一步优化
       3. 文档完善: API 文档和开发者指南可以更详细
       4. 测试覆盖: 单元测试和集成测试可以更全面

       信息来源

       核心文件

       - 项目配置:package.json, tsconfig.json, turbo.json
       - 主要入口:packages/opencode/src/index.ts
       - 服务器实现:packages/opencode/src/server/server.ts
       - Agent 系统:packages/opencode/src/agent/agent.ts
       - 工具框架:packages/opencode/src/tool/tool.ts
       - MCP 集成:packages/opencode/src/mcp/index.ts
       - 构建脚本:packages/opencode/script/build.ts

       配置文件

       - 工作区配置:sst.config.ts
       - 开发指南:AGENTS.md
       - 包配置:各子目录的 package.json

       这个代码库展现了一个设计良好的现代 AI 工具架构,具有良好的扩展性、模块化和多平台支持能力。
  ⎿  Done (28 tool uses · 48.1k tokens · 59.9s)

● 根据 scout agent 的深入调查,我现在为您详细介绍这个项目的架构和功能实现:                                                               12:18 AM  claude-sonnet-4-5-20250929

  项目概述

  OpenCode 是一个开源的 AI 编码助手,专为终端环境设计。它采用现代化的架构,支持多种 AI 提供商,并提供丰富的交互界面。

  架构设计

  1. 整体架构模式

  采用 客户端/服务器架构,分层清晰:

  CLI 命令层 → Agent 系统 → 工具注册表 → 文件系统
       ↓            ↓           ↓            ↓
     会话管理 ↔ Server API ↔ LSP 客户端 ↔ 项目实例

  2. 项目结构 (Monorepo)

  主要包和它们的作用:

  - packages/opencode/ - 核心 CLI 工具 (主入口: src/index.ts:1)
  - packages/console/ - Web 控制台应用
  - packages/web/ - 文档网站
  - packages/desktop/ - 桌面应用
  - packages/plugin/ - 插件系统
  - packages/sdk/ - 多语言 SDK (Go、JavaScript)

  3. 技术栈

  - 运行时: Bun
  - 主要语言: TypeScript (核心), Go (TUI)
  - Web 框架: Hono (API), SolidJS (Console), Astro (文档)
  - AI 集成: Vercel AI SDK
  - 协议支持: MCP (Model Context Protocol)

  核心功能实现

  1. CLI 命令系统 (packages/opencode/src/index.ts:37-84)

  完整的命令集包括:
  - 运行命令: run, tui, attach - 执行 AI 任务
  - 管理命令: auth, agent, models - 配置管理
  - 开发命令: serve, debug, mcp - 开发调试
  - 实用命令: generate, upgrade, stats, export - 辅助功能

  2. Agent 系统 (packages/opencode/src/agent/agent.ts:60-136)

  内置三种 Agent:
  - general - 通用研究代理,处理复杂问题
  - build - 构建专用代理,主要工作模式
  - plan - 规划代理,限制编辑权限

  3. 工具系统 (packages/opencode/src/tool/tool.ts:4-47)

  标准化的工具框架:
  - 统一的工具定义接口
  - 支持并行工具调用
  - 丰富的元数据和上下文

  4. 服务器 API (packages/opencode/src/server/server.ts:55-1490)

  完整的 REST API 实现:
  - 会话管理和消息处理
  - 文件操作和符号查找
  - 事件流和权限控制
  - WebSocket 实时通信

  5. MCP 集成 (packages/opencode/src/mcp/index.ts:14-186)

  Model Context Protocol 支持:
  - 本地和远程 MCP 服务器
  - 多种传输方式: HTTP, SSE, Stdio
  - 自动工具发现和注册

  7. TUI 集成 (packages/opencode/src/cli/cmd/tui.ts:107-156)

  终端用户界面:
  - Go 语言开发的本地 TUI 应用
  - 嵌入式二进制文件分发
  - 通过 API 与主进程通信

  8. LSP 支持

  完整的语言服务器协议集成:
  - 符号查找和诊断
  - 悬停信息和补全
  - 与编辑器深度集成

  核心工作流程

  1. 初始化阶段: 检测项目 → 加载配置 → 创建实例
  2. Agent 选择: 根据任务类型选择合适的 Agent
  3. 工具执行: 并行调用相关工具完成任务
  4. 结果处理: 格式化输出 → 更新状态 → 错误处理

  数据流设计

  - 事件驱动: 使用 Bus 系统进行组件间通信
  - 流式处理: 支持实时响应和增量更新
  - 状态管理: 集中式状态存储和同步

  扩展机制

  插件系统

  - 基于 MCP 的标准化插件接口
  - SDK 支持多语言插件开发
  - 动态工具注册和发现

  构建系统 (packages/opencode/script/build.ts:14-64)

  - 多平台交叉编译 (Windows, Linux, macOS)
  - 多架构支持 (x64, ARM64)
  - 嵌入式资源打包

  架构优势

  1. ✅ 模块化设计 - 清晰的分层和职责分离
  2. ✅ 标准化接口 - 统一的工具和 Agent 定义
  3. ✅ 多提供商支持 - 不绑定特定 AI 服务商
  4. ✅ 跨平台能力 - 完整的操作系统和架构支持
  5. ✅ 可扩展性 - MCP 协议和插件系统

  这是一个设计精良的现代 AI 工具项目,采用了业界最佳实践,具有出色的扩展性和维护性。

> /context
  ⎿  Context Usage
     ⛁ ⛁ ⛁ ⛁ ⛁ ⛁ ⛀ ⛀ ⛁ ⛁   claude-sonnet-4-5-20250929 · 17k/200k tokens (9%)
     ⛀ ⛶ ⛶ ⛶ ⛶ ⛶ ⛶ ⛶ ⛶ ⛶
     ⛶ ⛶ ⛶ ⛶ ⛶ ⛶ ⛶ ⛶ ⛶ ⛶   ⛁ System prompt: 2.1k tokens (1.0%)
     ⛶ ⛶ ⛶ ⛶ ⛶ ⛶ ⛶ ⛶ ⛶ ⛶   ⛁ System tools: 9.7k tokens (4.9%)
     ⛶ ⛶ ⛶ ⛶ ⛶ ⛶ ⛶ ⛶ ⛶ ⛶   ⛁ Custom agents: 201 tokens (0.1%)
     ⛶ ⛶ ⛶ ⛶ ⛶ ⛶ ⛶ ⛶ ⛶ ⛶   ⛁ Memory files: 43 tokens (0.0%)
     ⛶ ⛶ ⛶ ⛶ ⛶ ⛶ ⛶ ⛶ ⛶ ⛶   ⛁ Messages: 5.3k tokens (2.7%)
     ⛶ ⛶ ⛶ ⛶ ⛶ ⛶ ⛶ ⛶ ⛶ ⛶   ⛶ Free space: 183k (91.3%)
     ⛶ ⛶ ⛶ ⛶ ⛶ ⛶ ⛶ ⛶ ⛶ ⛶
     ⛶ ⛶ ⛶ ⛶ ⛶ ⛶ ⛶ ⛶ ⛶ ⛶

     Custom agents · /agents
     └ tr:bg-worker (Plugin): 46 tokens
     └ tr:scout (Plugin): 119 tokens
     └ tr:super-idea (Plugin): 28 tokens
     └ uiux (Project): 8 tokens

     Memory files · /memory
     └ User (/home/djj/.claude/CLAUDE.md): 43 tokens

     SlashCommand Tool · 2 commands
     └ Total: 450 tokens

> /cost
  ⎿  Total cost:            $0.1292
     Total duration (API):  1m 33s
     Total duration (wall): 10m 55s
     Total code changes:    0 lines added, 0 lines removed
     Usage by model:
            claude-sonnet:  8 input, 2.2k output, 30.1k cache read, 4.8k cache write ($0.0599)
         claude-3-5-haiku:  50.4k input, 2.4k output, 240.4k cache read, 0 cache write ($0.0693)

────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
  Showing detailed transcript · Ctrl+O to toggle

118 个赞

哦?这就去试试

1 个赞

刚看隔壁说 haiku 4.5 出了,应该会强一些吧

1 个赞

期待.

但是我觉得哪怕出了, haiku也很难在 工具调用/长文本输出/编程能力上击败 glm4.6

但是至少能够让通过subagent实现读写分离这件事情的效果大大提升, 成本大大降低.

2 个赞

20元不够用啊 :sob:
昨天和同事加班,我教他用CC+GLM,给他用我的20元套餐。
效果还不错,他撸的正起劲儿呢,结果触碰限额了,不到2个小时就用完了5小时的120次。

6 个赞

刚开始教他用Codex,奈何Codex现在的体验……对新人实在不友好

换了CC,他用了几下立马精神了 :rofl:

1 个赞

够用的,glm在这里的主要作用不是写代码。
主要是大量读入,概括总结。

而且一般只会在任务开始时做一次,频率和次数都比较可控。

我再继续用几天看看是不是频繁

嗯,可能是我那老弟新手没啥调教经验

一看到调用别的LLM作为工具读上下文,就忍不住想到另一个名字,可它不爱用工具,代码也不稳定 :thinking:

先赞后看,需要研究下

好像有点东西

GLM4.6确实比以前优秀了,现在能力和远古时期的claude3.7差不多,只能当个玩具,想用在生产上,还得是国外的模型。

有点意思,mark 了

思考开了?如果没开思考,翻车那是常有的事,最后依旧只有CODEX可以用,我们不要快速的愚蠢,我们要聪明的慢,至少别翻车,我现在是不用GLM4.6的,一点用不了

9 个赞

佬 能分享subageny的定义么?感谢感谢:folded_hands:

1 个赞

请问下ccr中的claude 4.5是怎么配置的,我尝试用openai的claude 4.5并不会主动去调用工具

glm我感觉就是在抽奖,同样的问题在多个新开的会话有可能会得出相反的结论,昨天在cc里面甚至review后指出我的代码传入参数和接受参数类型不匹配,无法编译,其实是相同的class,忽高忽低的在生产使用还是要谨慎点,需要仔细review

2 个赞

那你爽用glm

1 个赞

用户名djj?:rofl:

2 个赞

这个怎么驱动成功的?我按照TokenRollAI/cc-plugin中的说明配置好了claude-code-router,然后ccr code 启动cc执行了下面的测试,但是在智谱那边没有看到有成功调用,实际所有请求都还是走的cc
尝试过:
1、 use bg-worker to 告诉我这个项目的结构如何?
2、 Always consider use bg-worker to solve simple task \n 告诉我这个项目的结构如何?
3、 Always consider use bg-worker to solve simple task \n /tr:withScout 告诉我这个项目的结构如何?

1 个赞