标题: 三月初的时候我就逆向了claude并进行了分析 有了下面文章
作者: #CD
板块: #开发调优
编号:
帖子: https://linux.do/t/topic/1871026
时间: 2026-04-01 09:43:01
摘要:
作者: #CD
板块: #开发调优
编号:
1871026帖子: https://linux.do/t/topic/1871026
时间: 2026-04-01 09:43:01
摘要:
文章如左:https://www.cdxiaodong.life/article/31d0f0c5-b87c-8043-84a2-d47565f6f9e5
不过确实因为是逆向的 相比开源的版本,在重点的分流、多代理调度等功能上没有分析到
下面是我比较感兴趣的部分
flowchart TD
A["CLI 入口<br/>entrypoints/cli.tsx"] --> B{"参数分流"}
B -->|--version| V["直接输出版本"]
B -->|remote-control / bridge| RC["bridgeMain()<br/>远程控制模式"]
B -->|daemon| D["daemonMain()<br/>守护进程模式"]
B -->|ps / logs / attach / kill / --bg| BG["后台会话管理"]
B -->|默认完整 CLI| M["main.tsx"]
M --> M1["初始化启动优化<br/>profiler / keychain / MDM"]
M1 --> M2["initBuiltinPlugins()<br/>initBundledSkills()"]
M2 --> M3["getTools(toolPermissionContext)"]
M3 --> S["setup.ts<br/>setup(...)"]
M3 --> C["getCommands(cwd)"]
M3 --> AG["getAgentDefinitionsWithOverrides(cwd)"]
S --> S1["switchSession()"]
S1 --> S2["startUdsMessaging()"]
S2 --> S3["setCwd(cwd)"]
S3 --> S4["captureHooksConfigSnapshot()"]
S4 --> S5["initializeFileChangedWatcher()"]
S5 --> S6{"worktreeEnabled?"}
S6 -->|yes| S7["createWorktreeForSession()<br/>可选 tmux"]
S6 -->|no| M4["继续启动"]
C --> M4
AG --> M4
S7 --> M4
M4 --> QE["QueryEngine.ts<br/>submitMessage(...)"]
QE --> QE1["fetchSystemPromptParts()"]
QE1 --> QE2["组装 systemPrompt / userContext / systemContext"]
QE2 --> Q["query.ts<br/>query() / queryLoop()"]
Q --> Q1["buildQueryConfig()"]
Q1 --> Q2["memory / skill prefetch"]
Q2 --> Q3["compact / snip / microcompact"]
Q3 --> Q4["调用模型并流式接收 assistantMessages"]
Q4 --> Q5{"assistant 是否产生 tool_use?"}
Q5 -->|否| Q6["输出最终消息并结束"]
Q5 -->|是| T["runTools(...) / StreamingToolExecutor"]
T --> T1{"是否调用 AgentTool?"}
T1 -->|否| T2["tool_result 回填消息"]
T2 --> Q
T1 -->|是| AT["AgentTool.tsx<br/>AgentTool.call(...)"]
AT --> AT1["解析参数<br/>subagent_type / run_in_background / isolation / cwd"]
AT1 --> AT2{"team_name + name?"}
AT2 -->|是| TEAM["spawnTeammate()"]
AT2 -->|否| AT3["选择 selectedAgent"]
AT3 --> AT4{"isolation"}
AT4 -->|remote| REM["teleportToRemote()<br/>remote_launched"]
AT4 -->|worktree| W["createAgentWorktree()"]
AT4 -->|none| AT5["直接继续"]
W --> AT5
TEAM --> T2
REM --> T2
AT5 --> AT6["assembleToolPool()<br/>生成 workerTools"]
AT6 --> AT7["计算 shouldRunAsync"]
AT7 --> RA["runAgent.ts<br/>runAgent(...)"]
RA --> RA1["initializeAgentMcpServers()"]
RA1 --> RA2["createSubagentContext()"]
RA2 --> RA3["recordSidechainTranscript()<br/>writeAgentMetadata()"]
RA3 --> RA4["子代理再次进入 query(...)"]
RA4 --> QSUB["子代理 queryLoop"]
QSUB --> QSUB2["自己的工具调用 / 推理 / 结果"]
QSUB2 --> RA5["清理 MCP / hooks / cache / transcript 映射"]
RA5 --> T2
多代理同步 / 异步 / worktree / remote
flowchart TD
A["主代理在 queryLoop 中调用 AgentTool"] --> B["AgentTool.call(...)<br/>解析参数:<br/>subagent_type / run_in_background / isolation / cwd"]
B --> C["选择 selectedAgent"]
C --> D["检查权限 / MCP 依赖 / agent 定义"]
D --> E{"isolation 是什么?"}
E -->|remote| R1["Remote 模式"]
E -->|worktree| W1["Worktree 模式"]
E -->|未设置| N1["普通本地模式"]
R1 --> R2["checkRemoteAgentEligibility()"]
R2 --> R3["teleportToRemote()"]
R3 --> R4["registerRemoteAgentTask()"]
R4 --> R5["返回 remote_launched"]
R5 --> END1["主代理拿到远程任务句柄<br/>不在本地直接跑 queryLoop"]
W1 --> W2["createAgentWorktree()"]
W2 --> W3["得到独立 worktreePath"]
W3 --> P1["继续构造 runAgentParams"]
N1 --> P1["继续构造 runAgentParams"]
P1 --> P2["assembleToolPool()<br/>为子代理生成独立工具池"]
P2 --> P3["决定 shouldRunAsync"]
P3 --> J{"shouldRunAsync?"}
J -->|否| S1["同步子代理"]
J -->|是| A1["异步子代理"]
S1 --> S2["runAgent(...)"]
S2 --> S3["createSubagentContext()<br/>通常共享部分父状态"]
S3 --> S4["当前调用栈内直接进入子 queryLoop"]
S4 --> S5
标题: Axios被投毒,影响各家code、agent吗?
作者: #huangsijun17
板块: #开发调优
编号:
帖子: https://linux.do/t/topic/1871027
时间: 2026-04-01 09:43:07
摘要:
作者: #huangsijun17
板块: #开发调优
编号:
1871027帖子: https://linux.do/t/topic/1871027
时间: 2026-04-01 09:43:07
摘要:
众所周知,npm 中基于 promise 的 HTTP 库被投毒。但我想知道的是,各家code、agent等等会引用这个库吗?
标题: 求一个NPC API的邀请
作者: #node
板块: #资源荟萃
编号:
帖子: https://linux.do/t/topic/1871034
时间: 2026-04-01 09:43:57
摘要:
作者: #node
板块: #资源荟萃
编号:
1871034帖子: https://linux.do/t/topic/1871034
时间: 2026-04-01 09:43:57
摘要:
蹲了好久蹲不到,求一个NPC API的邀请。哪位大佬可以私一个,谢谢。
标题: 冰佬邀请码一枚
作者: #jingde wu
板块: #福利羊毛
编号:
帖子: https://linux.do/t/topic/1871040
时间: 2026-04-01 09:44:09
摘要:
作者: #jingde wu
板块: #福利羊毛
编号:
1871040帖子: https://linux.do/t/topic/1871040
时间: 2026-04-01 09:44:09
摘要:
邀请码: 4e3135ddb7605fff430d3b5b9043f0f7,拿走的在下面说一声(快升三级了,给各位发个福利,大家给力点哇)
标题: 从来不吃米饭和面条, 什么寿司拉面都不吃, 只吃西餐, 这属于太挑食吗?
作者: #Kal
板块: #搞七捻三
编号:
帖子: https://linux.do/t/topic/1871041
时间: 2026-04-01 09:44:12
摘要:
作者: #Kal
板块: #搞七捻三
编号:
1871041帖子: https://linux.do/t/topic/1871041
时间: 2026-04-01 09:44:12
摘要:
我女友, Quebec人, 从来没吃过米饭什么, 从小只吃她们那边传统的法餐, 什么奶油鸡肉蘑菇汤, 牛排加薯条, 面包加黄油, Rotisserie 烤鸡之类的
很不喜欢其他的地方的菜
什么中餐日餐韩餐, 意大利餐 (她也不喜欢意面什么的) 都讨厌
上次想带她去吃个寿司
直接来了句 eww… like fish on rice? That’s gross…
只要有米饭什么的都讨厌
这属于太挑食吗?
标题: OpenAI宣布完成1220亿美元大规模融资
作者: #Txy
板块: #前沿快讯
编号:
帖子: https://linux.do/t/topic/1871045
时间: 2026-04-01 09:44:21
摘要:
作者: #Txy
板块: #前沿快讯
编号:
1871045帖子: https://linux.do/t/topic/1871045
时间: 2026-04-01 09:44:21
摘要:
标题: 今天是来L站的第一个生日
作者: #SaintJason
板块: #搞七捻三
编号:
帖子: https://linux.do/t/topic/1871051
时间: 2026-04-01 09:44:49
摘要:
作者: #SaintJason
板块: #搞七捻三
编号:
1871051帖子: https://linux.do/t/topic/1871051
时间: 2026-04-01 09:44:49
摘要:
如果是你,会对六年的自己说什么呢
24岁了,发现今年处在18岁和30岁中间,刚好间隔6年,在这里写下自己的经历,如果当年的自己知道一些事情完全可以走的更好。同时也这里虚心向有经验的佬请教,希望佬给出建议。
回看18岁到现在的自己,上个大学,学习、比赛、工作室、毕业结果专业没了(建筑),迷茫的自己去当冰报效祖国服役2年,也算圆自己的一个心愿。先声明本人爱国爱党,也非常建议26岁以下的佬去锻炼锻炼(家里有安排另说)我去的是bj,陆菌炮冰。
新冰连第二个月表现优异,前往天安门城楼上观看升旗。下连第一年吃着同年冰没吃过的苦,干的比别人多,睡得没有别人好,同时保持训练及体能还排在前列。熬夜加班是常态,半夜还要起来站一岗。把人当铲车使,铲车锁仓库里。把自己的老班长在生活上当成植物人,伺候他让他基本上过着衣来伸手,饭来张口的日子,包括但不限于洗衣服洗床单搓澡,也伺候主官。在内蒙驻训呆了四个月,经历过狂风、冰雹、沙尘暴、经常是碎草风沙拌着饭,拎个铲子组队去拉不被定义的野,或者半夜下暴雨浸湿枕头被褥,晒成黑鬼,打实蛋,手拉手人墙扫雷排除未爆蛋。见过一望无际的草原,感受过半夜马儿在帐篷边打着鼻吸吃草,也在星空下数星星看着流星,还有马斯克的星链,有长有短。
倒数9个月时候,因为表现好加上运气好,嗯运气好,前往师机关执行专项任务,这段经历就不说了比较敏感,这里科普下编制结构
干的活多了,接触的领导也多了,知道了一个冰走什么发展线路到底能发展到什么程度,以及能有什么收益福利。明白了这不是我想要的生活,最终拒绝了领导的挽留。
这段经历就像是前往了异世界的副本,回来Oline继续推进主线。
目前,正在制作作品集,转行。借这个机会抽个时间吹吹水,也想听听大佬的意见,如果是你会对六年的自己说什么呢
如果大家想听我讲小故事,那另起帖子哈哈。当然如果家长小辈想报效祖国的我也可以给出一点微博的建议
标题: Veo 3.1 Lite在flow已经可以使用
作者: #fruits
板块: #搞七捻三
编号:
帖子: https://linux.do/t/topic/1871066
时间: 2026-04-01 09:46:04
摘要:
作者: #fruits
板块: #搞七捻三
编号:
1871066帖子: https://linux.do/t/topic/1871066
时间: 2026-04-01 09:46:04
摘要:
跟fast对比了一下,差太多了,同样的提示词,lite直接主体变成另一个东西了
标题: 愚人节笑话:rusted ffmpeg
作者: #stevessr backup
板块: #搞七捻三
编号:
帖子: https://linux.do/t/topic/1871071
时间: 2026-04-01 09:46:49
摘要:
作者: #stevessr backup
板块: #搞七捻三
编号:
1871071帖子: https://linux.do/t/topic/1871071
时间: 2026-04-01 09:46:49
摘要:
wait? what
标题: 前端炸锅,axios 惨遭投毒,有没有替换的库
作者: #histore
板块: #搞七捻三
编号:
帖子: https://linux.do/t/topic/1871074
时间: 2026-04-01 09:46:53
摘要:
作者: #histore
板块: #搞七捻三
编号:
1871074帖子: https://linux.do/t/topic/1871074
时间: 2026-04-01 09:46:53
摘要:
标题: 一招解决opus接入opencode无法上传图片的问题!
作者: #pete
板块: #开发调优
编号:
帖子: https://linux.do/t/topic/1871077
时间: 2026-04-01 09:47:15
摘要:
作者: #pete
板块: #开发调优
编号:
1871077帖子: https://linux.do/t/topic/1871077
时间: 2026-04-01 09:47:15
摘要:
如果你想把opus 接入到opencode,你会发现它不能直接支持上传图片了,通过摸索,发现需要修改配置文件增加相关字段,以下是我让ai整理的教程,你把下面的内容直接发给你的ai,让它阅读并给你配置就可以了。
注意!
1、此方法只适合于使用第三方中转站提供的opus接入opencode后无法发图片的问题。
2、官方opus接入opencode需要做桥接,不在本帖讨论范围。
============================================
OpenCode Opus 图片支持配置教程
说明
文中的占位写法都可以按你自己的实际环境替换。
核心结论
如果你想让 OpenCode 里的某个 Claude 模型支持图片输入,关键不是只把模型名写进去,而是要在模型定义里显式声明:
"attachment": true,
"modalities": {
"input": ["text", "image", "pdf"],
"output": ["text"]
}
其中:
attachment: true 表示允许附件输入
modalities.input 里包含 "image" 表示支持图片输入
modalities.input 里包含 "pdf" 表示顺手也支持 PDF 输入
modalities.output 一般保持 ["text"]
推荐配置模板
下面是一版适合公开分享的通用模板,你只需要把占位内容替换成自己的值:
{
"$schema": "https://opencode.ai/config.json",
"model": "你的主provider/你的稳定模型",
"provider": {
"你的主provider": {
"name": "你的主provider",
"npm": "@ai-sdk/openai-compatible",
"models": {
"你的稳定模型": {
"name": "你的稳定模型显示名",
"attachment": true,
"reasoning": true,
"tool_call": true,
"modalities": {
"input": ["text", "image", "pdf"],
"output": ["text"]
}
},
"你的目标模型": {
"name": "你的目标模型显示名",
"attachment": true,
"reasoning": true,
"tool_call": true,
"modalities": {
"input": ["text", "image", "pdf"],
"output": ["text"]
}
}
},
"options": {
"baseURL": "你的兼容接口地址/v1"
}
}
}
}
这份模板解决的是什么问题
它主要解决两类问题:
OpenCode 不认为你的模型支持图片输入。
你的模型实际上支持图片,但 OpenCode 因为缺少能力声明,不让你上传图片。
最容易漏掉的 3 个点
1. baseURL 要写到正确接口层级
如果你用的是 OpenAI 兼容接口,通常不要只写根域名,往往要写到类似下面这种层级:
"baseURL": "你的兼容接口地址/v1"
如果少了 /v1,有时会出现模型列表能通、实际调用不稳定,或者能力识别异常。
2. provider ID 和认证配置必须完全一致
这是很容易翻车的一点。
如果你的配置文件里写的是:
"provider": {
"主线路": { ... }
}
那么认证文件里也必须是:
{
"主线路": {
"type": "api",
"key": "你的密钥"
}
}
不能配置里叫一个名字,认证里又叫另一个名字。
OpenCode 是按 provider ID 精确取认证的,不会自动帮你猜。
3. 不要给同一个后端配太多重复别名
如果同一个后端被你配成两三个 provider 名称,表面看起来灵活,实际上很容易出现:
模型选择串台
认证取错
某个会话走 A,另一个会话走 B
你以为改的是同一个配置,实际上改的是两套
公开教程里更推荐:
一个后端只保留一个主 provider
先把图片能力跑通
再考虑要不要做多别名或多线路
如果你想让 Opus 成为默认模型
把这行:
"model": "你的主provider/你的稳定模型"
改成:
"model": "你的主provider/你的目标模型"
然后完全重启 OpenCode。
推荐排查顺序
如果你既想支持图片,又想保证模型回复稳定,建议按下面顺序排查:
先挑一个你已经确认文本对话稳定的模型。
给这个模型补上 attachment 和 modalities.input。
先测试图片能不能上传。
图片上传正常后,再切换到你真正想用的目标模型。
如果目标模型能收图,但回复为空,那通常已经不是图片能力配置问题,而是上游接口兼容或流式返回问题。
适合公开分享时保留的重点
如果你准备把教程发到网上,建议重点讲下面这些通用经验:
OpenCode 是否允许上传图片,关键看模型能力声明
attachment: true 和 modalities.input 里有 "image" 是关键
baseURL 要指向正确的兼容接口层级
provider ID 和认证配置必须一一对应
同一个后端尽量不要配置太多重复别名
不建议公开暴露的内容
发布到网络上时,最好不要直接贴出这些内容:
真实接口域名
私人中转地址
真实 provider 别名
本地绝对路径
备份文件路径
任何 API key、token、cookie、request id
可以统一替换成下面这种中文提示:
你的兼容接口地址
你的主provider
你的目标模型
你的认证文件
你的密钥
一句话总结
要让 OpenCode 里的 Opus 支持图片,最关键的不是“模型本身支不支持”,而是“你有没有在配置里把它声明成支持图片输入的模型”。
方法很简单:
给模型加 attachment: true
给 modalities.input 加上 "image"
保证 baseURL 正确
保证 provider ID 和认证配置完全一致
把这几步整明白,基本就八九不离十了。