@leviyuan/lodestar 0.18.3 → 0.18.5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -26,16 +26,17 @@ Token Source 管理账号凭据、模型目录、启动环境、默认模型、e
26
26
  | 来源 | 配置和模型目录 |
27
27
  | --- | --- |
28
28
  | Codex subscription | 使用 Codex 登录态,模型来自 app-server `model/list` |
29
+ | Claude Code 订阅 | `claude-sub` 复用本机原生订阅登录态;通过 SDK `accountInfo()` 确认账号,`supportedModels()` 读取模型和 effort,与第三方来源独立共存 |
29
30
  | GLM Coding Plan | `[token_source.glm]` 或本机 Claude settings;模型来自兼容端点,可补录已验证模型 |
30
31
  | DeepSeek | `[token_source.deepseek]` 或本机 Claude settings;模型来自兼容端点,可补录已验证模型 |
31
- | OpenRouter | `[token_source.openrouter]` 或本机 Claude settings;默认十一家各一模型,账号目录验证能力,MD 面板维护增删 |
32
+ | OpenRouter | `[token_source.openrouter]` 或本机 Claude settings;默认十家各一模型(不含 Claude),账号目录验证能力,MD 面板维护增删 |
32
33
  | DeepSeek Harness | `[token_source.deepseek-harness]`;模型、effort 与上下文容量来自当前安装的 DSH 原生目录 |
33
34
  | DSH GLM Coding Plan | `[token_source.dsh-glm]` 或复用 `glm`;账号接口返回模型,DSH 原生适配器提供能力和推理档位 |
34
- | Claude native | 沿用本机 Claude 配置,目录来自 SDK `supportedModels()`;有其他已启用的 Claude 侧来源时让位 |
35
+ | Claude native | 沿用本机 Claude 配置,目录来自 SDK `supportedModels()`;有已启用的第三方 Claude 侧来源时让位 |
35
36
 
36
37
  `model` 按 Claude Code、Codex、DeepSeek Harness 分组,组 ID 由 `ELEMENTS.modelAgentGroup` 生成。两个 Agent 下的 DeepSeek 来源都显示为 DeepSeek,协议 id 保持不变。选账号后进入模型列表;多个档位才展示 effort 卡,只有一个档位时直接应用,获取失败显示 `MISS`。同 provider/source 的切换调用 `setModelSettings`:Claude 和 DSH 从后续 turn 使用,Codex 保存选择并在重启进程后应用。跨 provider/source 或需要变更项目启动配置时,只能在空闲状态更换进程。
37
38
 
38
- 除 OpenRouter 保留默认十一项的显式列表外,所有来源由 `withModelVisibility` 在真实接口目录上应用 `hidden_models`。接口项通过显示/隐藏调整可见性,新增上游模型自动进入列表。所有来源都支持用 `custom_models` 补录列表外模型,`origin` 区分接口项和补录项;GLM / DeepSeek 会先做端点验证,补录模型可直接选择请求档位使用,DSH 原生解析目录外模型,其余来源使用 Agent 请求档位;不能用目录白名单挡住用户补录。接口收录同名模型后按接口项管理,不重复展示。
39
+ 除 OpenRouter 保留默认十项的显式列表外,所有来源由 `withModelVisibility` 在真实接口目录上应用 `hidden_models`。接口项通过显示/隐藏调整可见性,新增上游模型自动进入列表。所有来源都支持用 `custom_models` 补录列表外模型,`origin` 区分接口项和补录项;GLM / DeepSeek 会先做端点验证,补录模型可直接选择请求档位使用,DSH 原生解析目录外模型,其余来源使用 Agent 请求档位;不能用目录白名单挡住用户补录。接口收录同名模型后按接口项管理,不重复展示。
39
40
 
40
41
  `tokenSourceRuntimeModel(s)` 使用完整能力目录,隐藏不修改会话、`model`、`effort`、slots 或启动配置指纹。`model_custom_remove` 只删除补录项,拒绝删接口项;删除前要求会话不再选用该项,并清理默认模型和 slots 的悬空引用。补录/删除和显示/隐藏均串行写配置,旧面板失效。
41
42
 
@@ -49,7 +50,7 @@ Token Source 管理账号凭据、模型目录、启动环境、默认模型、e
49
50
 
50
51
  ## Claude 启动配置
51
52
 
52
- GLM、DeepSeek、OpenRouter 等来源先清除冲突的 Anthropic 环境变量(含模型角色、OAuth 和云供应商选择),再注入各自凭据;默认读取 `project`、`local` settings。Claude native 沿用本机环境并读取 `user`、`project`、`local`。Token Source 指定的 settings 来源优先;未绑定 Token Source 时才使用项目 `setting_sources`。给注入凭据的来源加上 `user` 会重新引入本机 settings 中的路由。
53
+ GLM、DeepSeek、OpenRouter 等来源先清除冲突的 Anthropic 环境变量(含模型角色、OAuth 和云供应商选择),再注入各自凭据;默认读取 `project`、`local` settings。Claude Code 订阅读取 `user`、`project`、`local`,通过进程级 `settings` 覆盖冲突路由和 API key helper,不改本机文件;SDK `accountInfo()` 确认第一方订阅后才向 streaming input 放行用户输入。Claude native 沿用本机环境并读取 `user`、`project`、`local`。Token Source 指定的 settings 来源优先;未绑定 Token Source 时才使用项目 `setting_sources`。给注入凭据的来源加上 `user` 会重新引入本机 settings 中的路由。
53
54
 
54
55
  `[projects.<name>]` 的 `cwd` 对所有后端生效;`setting_sources`、`strict_mcp` 用于 Claude,`tools`、`load_project_mcp` 用于 Claude 和 DSH 主会话。Claude 主会话默认发现项目 `.mcp.json`。排除 user settings 的 Claude 会话通过 SDK 本地插件加载 daemon 管理的 Skill,安装内容统一由 `managed-skills.ts` 生成。
55
56
 
@@ -61,9 +62,9 @@ Claude 使用 `permissionMode: default`:普通工具在 `canUseTool` 中放行
61
62
 
62
63
  - 来源 id 为 `openrouter`,通过 factory 注册 `openrouter-setup`。默认根地址 `https://openrouter.ai/api`,粘贴的 `/api/v1` 会规范成 SDK 根地址。API key 注入 `ANTHROPIC_AUTH_TOKEN`,`ANTHROPIC_API_KEY` 显式置空,模型 slug 完整透传,不自动追加 `[1m]`。
63
64
  - 主会话和委派共用 `agent-launch.ts`,将所选模型传给 `spawnEnv`。辅助角色在进程启动时绑定所选模型,可用 `slots` 配置 opus/sonnet/haiku;主模型后续切换不改动进程启动时的辅助角色。
64
- - 默认列表由 `src/openrouter-defaults.ts` 定义,共十一项,详见[账号与模型](models.md#openrouter)。账号目录来自 `GET /api/v1/models/user`,遵循账号供应商、隐私和 guardrail 设置;过滤 OpenAI、GLM、DeepSeek 等被排除厂商、自动路由、非文本输出、无 tools 和 `:batch` 模型。厂商排除也在启动路由和 slot 校验中执行。
65
+ - 默认列表由 `src/openrouter-defaults.ts` 定义,共十项,详见[账号与模型](models.md#openrouter)。账号目录来自 `GET /api/v1/models/user`,遵循账号供应商、隐私和 guardrail 设置;过滤 OpenAI、GLM、DeepSeek 等被排除厂商、自动路由、非文本输出、无 tools 和 `:batch` 模型。厂商排除也在启动路由和 slot 校验中执行。
65
66
  - `modelSelection` 保存可见模型 id 和完整允许候选;`models` 只暴露面板可见项。`model_list_open` / `model_add` / `model_remove` 对应接口项显示/隐藏,服务端校验当前页、模式与配置版本。`model_custom_remove` 删除补录记录,不能用于接口项;厂商排除也应用于手动补录。
66
- - `models` 未配置时使用默认十一项,空字符串表示用户主动清空,不能当作未配置。默认模型、effort、slots、Key 及相邻配置节保留;启动和 slots 按完整允许目录验证。上游不再返回的已选项显示 `unavailableReason`,不能启动,但可以删除。
67
+ - `models` 未配置时使用默认十项,空字符串表示用户主动清空,不能当作未配置。默认模型、effort、slots、Key 及相邻配置节保留;启动和 slots 按完整允许目录验证。上游不再返回的已选项显示 `unavailableReason`,不能启动,但可以删除。
67
68
  - effort 来自 `reasoning.supported_efforts`,仅暴露 Claude SDK 支持的档位;显式 `null` 表示全部网关档位。没有 effort 选择器的模型使用 `default`,含义是请求不携带 `output_config.effort`,不代表关闭推理,选择模型后直接应用并跳过 effort 卡。其他缺失的默认档位保留 `null`,要求用户明确选择。已选榜单代表模型使用榜单明确的档位或账号目录的默认档位。
68
69
  - `default` 用显式启动档位配合子进程环境中的 `CLAUDE_CODE_EFFORT_LEVEL=unset`,避免 CLI 为请求补上 effort。`settings.env` 不能替代真实环境,单纯省略 SDK 选项也不成立。显式 `max` 通过 `effortLevel: 'max'` 下发,不能映射成 `ultracode`。
69
70
  - `modelEnvironmentRevision` 参与进程配置比较。`default` 与显式档位之间切换需要新进程环境,Session 在空闲时保存并恢复原生 session;相同模式继续走 `setModelSettings`。slots 不能混合两种参数模式,避免辅助任务继承不适用的环境。模型切换不触发 daemon 重启。
@@ -80,7 +81,7 @@ Agent 运行依赖由 `src/agent-updates.ts` 独立安装,daemon 启动时不
80
81
 
81
82
  - `session/open` 完成原生 create/resume/fork 并 flush 后才公布恢复点。`rs` 通过原生持久化服务列出同工作目录会话;`fk/bk` 使用 `turn/end` 的事件序号作为 checkpoint,原生日志验证并加载分叉历史。
82
83
  - 实时文本来自 `agent/assistant-stream`,工具和计划来自会话事件。进入 idle 后等待持久化完成,再用真实 `turn/end` 原因结算;认证失败、token 耗尽及驱动异常均向调用方报告。
83
- - 子工具返回的内容块数组先转换为后台卡摘要;不能按字符串直接处理。致命桥接错误会把未结束的子任务标记失败,并将进程退出作为异常向用户报告。
84
+ - 子工具返回的内容块数组先转换为委派面板内的步骤摘要;不能按字符串直接处理。致命桥接错误会把未结束的子任务标记失败,并将进程退出作为异常向用户报告。
84
85
  - 提问通过 `user-questions/request` 停驻,复用飞书问答卡;回答按原始 question id 返回。主动和自动压缩使用 DSH compaction 服务与事件。
85
86
  - 模型与 effort 更新在下一轮应用,同一轮的工具续跑保持当前路由。`off` 是 DSH 原生推理选项。
86
87
  - `dsh-glm` 接入 Coding Plan 的 `/api/coding/paas/v4/models` 与 `/chat/completions`。显式配置优先,否则复用已有 GLM 账号;凭据变化参与 `spawnRevision`。`dsh-runtime` 通过私有 composition patch 启用原生 `llm-pi-ai` 的 `zai-coding-cn` / `zai` 路由并关闭 DeepSeek 适配器,patch 仅记录环境变量名,不写明文 Key。
@@ -101,7 +102,9 @@ Agent 运行依赖由 `src/agent-updates.ts` 独立安装,daemon 启动时不
101
102
 
102
103
  委派只有一层:主 Agent 可以并行派工、回答问题和续跑原生会话,被委派的 Agent 不得继续调用其他 Agent。Skill、worker 提示词及运行时入口共同遵循该规则;worker 关闭 Codex `multi_agent` 或 Claude `Agent`/`Task`,保留其余代码工具、项目 MCP 和独立调用凭据。历史父子记录仍保留以便读取与清理。运行状态原子落盘,大段输入输出单独存放;委派会话登记后从主群的历史列表中排除。
103
104
 
104
- 每次委派以一行状态和调用方提供的 description 展示,进度、任务正文、各执行者结果、待回答问题和失败原因均收在同一折叠面板。群尾委派卡复用至容量用满或出现新消息;主会话新卡也会结束复用。Card Kit 生命周期按共享卡片结算,旧卡上的运行任务继续原地更新;不展示 depth、session id 或 request id。
105
+ 委派、原生子 Agent 和后台任务由同一个 `AgentCards` 实例展示。每项仅显示状态和一句说明,类型、进度、任务正文、结果、待回答问题及失败原因放在折叠体内,动作只展示最近三步。原生子 Agent 启动即展示,普通前台命令仍在观察池中;启动工具和 SDK task id 关联后只保留一项。
106
+
107
+ 群尾委派卡复用至容量用满或出现新消息;原任务继续在原卡更新,后台任务不再迁移。Card Kit 生命周期由共享卡片统一结算,停止主进程只结算其所属任务,不关闭仍有委派执行的共享卡;不展示 depth、session id 或 request id。
105
108
 
106
109
  ## 源码与验证
107
110
 
package/docs/models.md CHANGED
@@ -25,6 +25,16 @@
25
25
 
26
26
  回复底部显示 `agent · 模型名/effort`,其中 Agent 为 `claude`、`codex` 或 `dsh`。窗口额度如 `4.1h·7%·[6.9d·17%]`,分别表示重置倒计时与已用百分比,方括号内为周窗口;余额显示 `余额 $12.34` 或 `余额 ¥12.34`。读取失败显示 `MISS`,Codex 的短暂网络失败会有限重试。
27
27
 
28
+ ## Claude Code 订阅
29
+
30
+ 在运行 Lodestar 的本机通过 `claude auth login` 登录 Claude 订阅后,发送 `md` → Claude Code → **Claude Code 订阅**。来源 id 为 `claude-sub`,可与 GLM、DeepSeek、OpenRouter 同时使用;无需复制登录凭据或填写 API key。
31
+
32
+ 账号和模型目录通过 Claude Code 原生 SDK 查询,模型与 effort 随目录更新;未登录会显示启用引导,查询失败显示 `MISS`。可选配置节为 `[token_source.claude-sub]`,支持 `display`、`model`、`effort`、`hidden_models` 和 `custom_models`。
33
+
34
+ 订阅额度通过原生 `/usage` 控制接口读取,无需发送模型对话。`hi` 展示 5 小时、总周额度和接口返回的模型专属周额度及重置倒计时。回复底部同时显示 5 小时额度与周额度:本轮所选模型有专属周额度时显示该模型的额度,否则显示总周额度,沿用紧凑格式。查询失败或缺失数据显示 `MISS`,不使用旧额度替代,也不将缺失的专属额度改成总额度。此 SDK 查询接口仍属实验接口,版本不支持或接口变化时明确报错。
35
+
36
+ 订阅进程保留本机和项目的 Claude 设置,并在进程内清除其他来源的 API key、模型映射和中转路由。发送任务前会再次核对实际账号是否为第一方订阅。Claude native 继续保留为使用本机完整配置的来源。
37
+
28
38
  ## OpenRouter
29
39
 
30
40
  OpenRouter 通过 Claude Agent SDK 运行。在群内发送 `openrouter-setup <api_key>`,再通过 `model` 面板选择模型和 effort;自建兼容端点用 `openrouter-setup <base_url> <api_key>`。也可在配置文件中添加:
@@ -34,17 +44,16 @@ OpenRouter 通过 Claude Agent SDK 运行。在群内发送 `openrouter-setup <a
34
44
  agent = "claude"
35
45
  api_key = "填写自己的 OpenRouter API key"
36
46
  # base_url = "https://openrouter.ai/api" # SDK 自动追加 /v1/messages
37
- # model = "anthropic/claude-fable-5.1" # 可选:默认运行模型,须获账号目录确认
47
+ # model = "moonshotai/kimi-k3" # 可选:默认运行模型,须获账号目录确认
38
48
  # effort = "max" # 可选:仅覆盖默认运行模型的档位
39
- # models = "anthropic/claude-fable-5.1,moonshotai/kimi-k3" # 可选:自定义可选列表
40
- # slots = "haiku=anthropic/claude-fable-5.1" # 可选:辅助任务模型,须获账号目录确认且使用相同的 effort 参数模式
49
+ # models = "moonshotai/kimi-k3,google/gemini-3.8-flash" # 可选:自定义可选列表
50
+ # slots = "haiku=moonshotai/kimi-k3" # 可选:辅助任务模型,须获账号目录确认且使用相同的 effort 参数模式
41
51
  ```
42
52
 
43
- 内置默认列表包含以下 **11 项**,定义见[默认模型配置](../src/openrouter-defaults.ts)。这是项目提供的初始列表,可在面板中自行调整。
53
+ 内置默认列表包含以下 **10 项**,定义见[默认模型配置](../src/openrouter-defaults.ts)。这是项目提供的初始列表,默认不含 Claude,可在面板中自行调整。
44
54
 
45
55
  | 厂商 | 模型 ID | 默认档位 |
46
56
  | --- | --- | --- |
47
- | Anthropic | `anthropic/claude-fable-5.1` | max |
48
57
  | Moonshot | `moonshotai/kimi-k3` | max |
49
58
  | Tencent | `tencent/hy4-preview` | high |
50
59
  | Google | `google/gemini-3.8-flash` | high |
@@ -56,7 +65,7 @@ api_key = "填写自己的 OpenRouter API key"
56
65
  | 字节跳动 | `bytedance-seed/seed-2-1-turbo` | 模型默认 |
57
66
  | 美团 | `meituan/longcat-2.0` | 模型默认 |
58
67
 
59
- 在 `md` → Claude Code → OpenRouter 中,点「显示模型」进入账号目录,再点「显」加入列表,点「隐」移出面板列表。可见性自动保存,不改当前运行模型;全部隐藏后也能继续显示或补录。未配置 `models` 时才使用上述十一项;`models = ""` 表示没有已显示的接口模型,刷新或重启不会补回默认项。内置列表更新不会覆盖用户维护的列表。
68
+ 在 `md` → Claude Code → OpenRouter 中,点「显示模型」进入账号目录,再点「显」加入列表,点「隐」移出面板列表。可见性自动保存,不改当前运行模型;全部隐藏后也能继续显示或补录。未配置 `models` 时才使用上述十项;`models = ""` 表示没有已显示的接口模型,刷新或重启不会补回默认项。内置列表更新不会覆盖用户维护的列表。
60
69
 
61
70
  候选目录来自 `/api/v1/models/user`,按账号供应商和隐私设置筛选,仅纳入支持文本和工具调用的交互模型;OpenAI、GLM、DeepSeek 及无法保证厂商范围的自动路由不会出现在添加候选中。目录刷新失败显示 `MISS`。显式配置但已下线的模型保留为可删除的 `MISS` 项。
62
71
 
package/docs/usage.md CHANGED
@@ -89,7 +89,9 @@ Linux/macOS 下,额外账号通过软链接共用默认账号的配置、会
89
89
 
90
90
  被调用的 Agent 可以编辑文件、执行命令、使用 MCP 和 Skill;委派只允许一层,被调用的 Agent 不能继续派工。它们与主 Agent 共享工作区,修改会立即可见。需要用户输入时暂停,由主 Agent 回填答案后继续。委派产生的会话不会混入主群的 `rs` 历史列表。
91
91
 
92
- 每次 `run` 和 `follow-up` 必须填写 `--description`(不超过 60 字的单行说明)。每条委派只显示状态和说明,任务正文、动作、结果及错误全部折叠。委派卡仍在群对话尾部时,新委派继续追加;容量满或群里出现新消息(包括主 Agent 新开的会话卡)后,下一条委派另开卡。旧卡中仍在执行的任务继续原地更新;后续结果撑满共享卡片时,对应条目移到新卡,完整结果始终保存在任务记录中。
92
+ 每次 `run` 和 `follow-up` 必须填写 `--description`(不超过 60 字的单行说明)。委派任务、原生子 Agent 和后台任务统一收在委派卡里,每项只显示状态和一句说明,展开可看任务类型、正文、结果、错误和最近三步动作。子 Agent 启动即展示,普通前台命令不会额外生成任务项;任务结束后显示实际耗时。
93
+
94
+ 委派卡仍在群对话尾部时,新任务继续追加;容量满或群里出现新消息(包括主 Agent 新开的会话卡)后,下一项另开卡。旧任务继续原地更新,后台任务不再随新消息迁移。共享卡等全部任务结束后才停止更新;后续结果撑满卡片时,对应条目移到新卡。多模型委派的完整结果仍保存在任务记录中。
93
95
 
94
96
  首轮完成后,返回内容包含原生会话 ID(文本中的 `Session:`;JSON 中的 `workers[].session_id`)和本轮结果(`workers[].output`)。后续只需传入这个 ID 和新的一句输入:
95
97
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@leviyuan/lodestar",
3
- "version": "0.18.3",
3
+ "version": "0.18.5",
4
4
  "publishConfig": {
5
5
  "access": "public"
6
6
  },