@leviyuan/lodestar 0.17.2 → 0.17.3

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.
package/docs/AGENTS.md CHANGED
@@ -1,14 +1,17 @@
1
1
  # 文档维护
2
2
 
3
- README 只保留项目介绍、快速开始和文档入口。详细内容按主题维护,事实以源码和测试为准。
3
+ README 保留项目哲学、项目介绍、最短快速开始、常用指令表、附加能力的一句话说明及文档链接。精简时保留项目哲学原文;指令表分列完整指令与缩写/别名,每个指令独立一行,不把不同功能合并。附加能力逐项链接到具体用法。
4
4
 
5
- - `configuration.md`:安装、CLI、运行目录、配置与 Agent 自动更新。
5
+ 项目介绍以“项目特色”为标题,用列表描述使用场景与体验,配上具体能力说明。首页指令只列 `hi`、`model`(`md`)、`kill`(`kl`),其余指令放在 `usage.md`。
6
+
7
+ 详细内容按主题维护,事实以源码和测试为准。文件大小限制、生图展示规则、更新机制、配置与开发步骤放在对应文档,不堆进首页。
8
+
9
+ - `configuration.md`:安装、CLI、运行目录、配置、Agent 自动更新与源码开发。
6
10
  - `usage.md`:群内命令、会话、worktree、文件与生图、本机通知。
7
11
  - `models.md`:账号、模型与 effort、OpenRouter 默认列表、DSH 与 GLM 接入。
8
12
  - `claude-agent-backend.md`:后端实现、模型路由和会话行为。
9
- - `dsh-testing-report.md`:注明版本与日期的历史测试记录。
10
13
 
11
14
  - 保留 Codex、Claude、GLM、DeepSeek、OpenRouter、DeepSeek Harness 和 Claude native 的支持说明。
12
15
  - 只写已实现的行为。删除失效接口、历史方案、重复规则和无法复现的验证结论;不另建产品规范或计划。
13
- - 不记录凭据、真实 session id、群成员或本机配置。验证结果需对应实际运行的命令,不保留过期通过数。
16
+ - 不记录凭据、真实 session id、群成员或本机配置。临时测试报告、排障流水和某次测试通过数不作为长期文档;维护文档保留可复现的验证方法及适用边界。
14
17
  - 文字变更检查引用的路径、方法和命令;伴随实现变化时按对应目录指引运行测试。
@@ -1,17 +1,19 @@
1
1
  # 后端与模型路由
2
2
 
3
+ [返回首页](../README.md) · [账号与模型](models.md) · [安装与配置](configuration.md)
4
+
3
5
  Lodestar 通过 `AgentProcess` 接口连接 Codex app-server、Claude Agent SDK 和 DeepSeek Harness。`Session` 负责群会话、消息排队和卡片;具体进程类负责协议转换。主会话和委派 Agent 共用 `agent-launch.ts` 的启动入口。
4
6
 
5
7
  ## 进程与会话
6
8
 
7
- | 行为 | Codex | ClaudeGLM、DeepSeek、OpenRouter |
8
- | --- | --- | --- |
9
- | 进程 | `codex app-server --listen stdio://`,通过 JSON-RPC 通信 | SDK `query()`,通过 `AsyncIterable<SDKUserMessage>` 连续输入 |
10
- | 初始化 | 等待初始化和 thread 启动事务完成 | 首条输入才触发 `system/init`;启动时只检查早期错误 |
11
- | 恢复与分叉 | `thread/list`、`thread/fork(lastTurnId)` | 同目录 transcript、`forkSession`、`resumeSessionAt` |
12
- | 澄清提问 | `item/tool/requestUserInput` | `canUseTool` 中处理 `AskUserQuestion` |
13
- | 主动压缩 | `thread/compact/start` | 向 streaming input 发送 `/compact`,等待 `compact_boundary` |
14
- | 后台任务 | app-server collab 子 Agent 事件 | SDK `task_*` 事件 |
9
+ | 行为 | Codex | Claude Code(含 GLM、DeepSeek、OpenRouter | DeepSeek Harness |
10
+ | --- | --- | --- | --- |
11
+ | 进程 | `codex app-server --listen stdio://`,通过 JSON-RPC 通信 | SDK `query()`,通过 `AsyncIterable<SDKUserMessage>` 连续输入 | Node 子进程,通过 Cordis stdio 桥接 |
12
+ | 初始化 | 等待初始化和 thread 启动事务完成 | 首条输入才触发 `system/init`;启动时只检查早期错误 | `session/open` 完成原生会话创建或恢复并落盘 |
13
+ | 恢复与分叉 | `thread/list`、`thread/fork(lastTurnId)` | 同目录 transcript、`forkSession`、`resumeSessionAt` | 原生持久化服务,以事件序号作为 checkpoint |
14
+ | 澄清提问 | `item/tool/requestUserInput` | `canUseTool` 中处理 `AskUserQuestion` | `user-questions/request` |
15
+ | 主动压缩 | `thread/compact/start` | 向 streaming input 发送 `/compact`,等待 `compact_boundary` | 原生 compaction 服务与事件 |
16
+ | 后台任务 | app-server collab 子 Agent 事件 | SDK `task_*` 事件 | 原生子 Agent 与工具事件 |
15
17
 
16
18
  会话引用包含 provider、原生 session id 和 cwd。各后端分别保存恢复记录,切换后端不会共用同一段上下文。Claude fork 在首条输入前持久保存启动意图,获得新 session id 后才清除;历史会话通过原生 fork 接入新群,避免两个群写同一个会话。
17
19
 
@@ -27,13 +29,11 @@ Token Source 管理账号凭据、模型目录、启动环境、默认模型、e
27
29
  | GLM Coding Plan | `[token_source.glm]` 或本机 Claude settings;模型来自兼容端点,可补录已验证模型 |
28
30
  | DeepSeek | `[token_source.deepseek]` 或本机 Claude settings;模型来自兼容端点,可补录已验证模型 |
29
31
  | OpenRouter | `[token_source.openrouter]` 或本机 Claude settings;默认十一家各一模型,账号目录验证能力,MD 面板维护增删 |
30
- | DeepSeek Harness | `[token_source.deepseek-harness]`;模型、effort 与上下文容量来自当前自动更新的 DSH 原生目录 |
32
+ | DeepSeek Harness | `[token_source.deepseek-harness]`;模型、effort 与上下文容量来自当前安装的 DSH 原生目录 |
31
33
  | DSH GLM Coding Plan | `[token_source.dsh-glm]` 或复用 `glm`;账号接口返回模型,DSH 原生适配器提供能力和推理档位 |
32
34
  | Claude native | 沿用本机 Claude 配置,目录来自 SDK `supportedModels()`;有其他已启用的 Claude 侧来源时让位 |
33
35
 
34
- `model` 首页用独立的展开式折叠面板展示 Claude Code、Codex、DeepSeek Harness,模型行右侧窄按钮用单字,补录、返回和翻页等宽按钮保留完整文字。两个 Agent 下的 DeepSeek 来源都显示为 DeepSeek,协议 id 保持不变。每组使用浅蓝标题背景、蓝色边框及 `Agent · 名称` 标题,Token Source 行放在组内,避免两层名称混成同级列表;组 ID 由 `ELEMENTS.modelAgentGroup` 生成。选择账号后进入模型列表,行间加分隔线;多个档位才展示 effort 卡,只有一个档位(含原生默认)直接应用,获取失败显示 `MISS`。同 provider/source 的切换调用 `setModelSettings`:Claude 和 DSH 从后续 turn 使用,Codex 保存选择并在重启进程后应用。跨 provider/source 或需要变更项目启动配置时,只能在空闲状态更换进程。
35
-
36
- 2026-09-10 已在授权测试群验证该分组样式的真实卡片:原始结构保留 `blue-50` 标题背景、粗体 Agent 名称和 `blue-100` 边框,原有账号选择回调正常,当前模型设置未改变。
36
+ `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
37
 
38
38
  除 OpenRouter 保留默认十一项的显式列表外,所有来源由 `withModelVisibility` 在真实接口目录上应用 `hidden_models`。接口项通过显示/隐藏调整可见性,新增上游模型自动进入列表。所有来源都支持用 `custom_models` 补录列表外模型,`origin` 区分接口项和补录项;GLM / DeepSeek 会先做端点验证,补录模型可直接选择请求档位使用,DSH 原生解析目录外模型,其余来源使用 Agent 请求档位;不能用目录白名单挡住用户补录。接口收录同名模型后按接口项管理,不重复展示。
39
39
 
@@ -51,9 +51,9 @@ Token Source 管理账号凭据、模型目录、启动环境、默认模型、e
51
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
53
 
54
- `[projects.<name>]` 的 `cwd` 对两个后端生效;`tools`、`setting_sources`、`strict_mcp`、`load_project_mcp` 用于 Claude。主会话默认发现项目 `.mcp.json`。排除 user settings 的 Claude 会话通过 SDK 本地插件加载 daemon 管理的 Skill,安装内容统一由 `managed-skills.ts` 生成。
54
+ `[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
55
 
56
- `[claude].bin` 可指定包装器,路径无效时启动失败。未指定时由 `resolveClaudeExecutableConfig()` 查找本机 Claude 或 SDK native binary,Windows `.cmd`/`.bat` 通过 shell shim 启动。
56
+ `[claude].bin` 可指定包装器,路径无效时启动失败;Windows `.cmd`/`.bat` 通过 shell shim 启动。未指定时使用独立运行目录中的 Claude Agent SDK 默认入口及其自带程序。
57
57
 
58
58
  Claude 使用 `permissionMode: default`:普通工具在 `canUseTool` 中放行,`AskUserQuestion` 等待用户回答。不能改成 `bypassPermissions`,否则 SDK 会绕开提问回调。
59
59
 
@@ -61,42 +61,22 @@ Claude 使用 `permissionMode: default`:普通工具在 `canUseTool` 中放行
61
61
 
62
62
  - 来源 id 为 `openrouter`,通过 factory 注册 `openrouter-setup`。默认根地址 `https://openrouter.ai/api`,粘贴的 `/api/v1` 会规范成 SDK 根地址。API key 注入 `ANTHROPIC_AUTH_TOKEN`,`ANTHROPIC_API_KEY` 显式置空,模型 slug 完整透传,不自动追加 `[1m]`。
63
63
  - 主会话和委派共用 `agent-launch.ts`,将所选模型传给 `spawnEnv`。辅助角色在进程启动时绑定所选模型,可用 `slots` 配置 opus/sonnet/haiku;主模型后续切换不改动进程启动时的辅助角色。
64
- - 默认列表由 `src/openrouter-defaults.ts` 固定为 Arena Agent Labs 的 2026-09-08 前 12 家代表模型,扣除 OpenAI、Z.ai / GLM、DeepSeek 后共九项,详见[账号与模型](models.md#openrouter)。账号目录来自 `GET /api/v1/models/user`,遵循账号供应商、隐私和 guardrail 设置;过滤被排除厂商、自动路由、非文本输出、无 tools 和 `:batch` 模型。厂商排除也在启动路由和 slot 校验中执行。
64
+ - 默认列表由 `src/openrouter-defaults.ts` 定义,共十一项,详见[账号与模型](models.md#openrouter)。账号目录来自 `GET /api/v1/models/user`,遵循账号供应商、隐私和 guardrail 设置;过滤 OpenAI、GLM、DeepSeek 等被排除厂商、自动路由、非文本输出、无 tools 和 `:batch` 模型。厂商排除也在启动路由和 slot 校验中执行。
65
65
  - `modelSelection` 保存可见模型 id 和完整允许候选;`models` 只暴露面板可见项。`model_list_open` / `model_add` / `model_remove` 对应接口项显示/隐藏,服务端校验当前页、模式与配置版本。`model_custom_remove` 删除补录记录,不能用于接口项;厂商排除也应用于手动补录。
66
66
  - `models` 未配置时使用默认十一项,空字符串表示用户主动清空,不能当作未配置。默认模型、effort、slots、Key 及相邻配置节保留;启动和 slots 按完整允许目录验证。上游不再返回的已选项显示 `unavailableReason`,不能启动,但可以删除。
67
67
  - effort 来自 `reasoning.supported_efforts`,仅暴露 Claude SDK 支持的档位;显式 `null` 表示全部网关档位。没有 effort 选择器的模型使用 `default`,含义是请求不携带 `output_config.effort`,不代表关闭推理,选择模型后直接应用并跳过 effort 卡。其他缺失的默认档位保留 `null`,要求用户明确选择。已选榜单代表模型使用榜单明确的档位或账号目录的默认档位。
68
- - Claude SDK 0.3.251 的 CLI 会为省略 effort 的自定义模型补 `high`,Fable alias 还存在启动档位固定行为。`default` 用显式启动档位解除固定,同时在真实子进程环境设置 `CLAUDE_CODE_EFFORT_LEVEL=unset`;已抓取实际请求验证不发送 effort。`settings.env` 不能替代真实环境,单纯省略选项也不成立。显式 `max` 通过 `effortLevel: 'max'` 下发,不能映射成 `ultracode`。
68
+ - `default` 用显式启动档位配合子进程环境中的 `CLAUDE_CODE_EFFORT_LEVEL=unset`,避免 CLI 为请求补上 effort。`settings.env` 不能替代真实环境,单纯省略 SDK 选项也不成立。显式 `max` 通过 `effortLevel: 'max'` 下发,不能映射成 `ultracode`。
69
69
  - `modelEnvironmentRevision` 参与进程配置比较。`default` 与显式档位之间切换需要新进程环境,Session 在空闲时保存并恢复原生 session;相同模式继续走 `setModelSettings`。slots 不能混合两种参数模式,避免辅助任务继承不适用的环境。模型切换不触发 daemon 重启。
70
- - 余额直接来自 `GET /api/v1/credits`:`total_credits - total_usage`,USD。2026-09-10 使用现有推理 Key 实测返回 200,不根据文档中的管理 Key 说明预先拒绝请求。权限以实际 HTTP 结果为准;失败显示 `余额 MISS`,不能改用 `/key` 限额、单 Key 累计用量或旧余额。
70
+ - 余额直接来自 `GET /api/v1/credits`:`total_credits - total_usage`,USD。权限以实际 HTTP 结果为准;失败显示 `余额 MISS`,不能改用 `/key` 限额、单 Key 累计用量或旧余额。
71
71
  - HTTP、网络、畸形响应及无效显式配置均报告失败;目录刷新失败后清空旧能力数据,不改用公开目录或另一模型。Claude 进程禁用模型 fallback。`thinking_tokens` 转为实时估计进度,不计入真实 token 用量;空工具名记录诊断并显示 `MISS`。
72
72
 
73
73
  接口依据:[Claude Code 接入](https://openrouter.ai/docs/cookbook/coding-agents/claude-code-integration)、[账号模型目录](https://openrouter.ai/docs/api/api-reference/models/list-models-filtered-by-user-provider-preferences-privacy-settings-and-guardrails)、[推理档位](https://openrouter.ai/docs/guides/best-practices/reasoning-tokens)、[账户余额接口](https://openrouter.ai/docs/api/api-reference/credits/get-credits)。官方兼容保证限于 Anthropic 第一方供应商,其他模型需另做真实 Agent 会话验证。
74
74
 
75
- ### OpenRouter 验证
76
-
77
- 2026-09-10 使用真实普通 API key 验证了九个默认模型的 Anthropic Messages 工具调用往返,并通过 Claude Agent SDK 执行 `Read`,校验随机文件内容。额外捕获请求中的 model/effort,确认实际路由和面板档位一致;无档位模型不发送 effort。
78
-
79
- 小米 `default` → Kimi `max` → 小米 `default` 的三阶段测试使用原生 resume,校验 session id 不变、上一轮随机内容保留,以及每轮实际请求参数。腾讯 Hy4 测试中出现过 429,SDK 有限重试后完成;Meta 首次请求要求年龄确认,后续直接接口和 SDK 复测均通过。这些是功能验证,未覆盖长上下文压力、所有工具或所有 OpenRouter 候选模型;本次 SDK 上报的会话窗口为 200K。
80
-
81
- 最终九模型检查通过 9/9,共核验 19 次 Messages 请求。Qwen 有 1 次工具错误,修正后返回了正确文件内容;探针报告保留 `toolErrors` 和 `httpErrorsRecovered`,不抹去中间错误。
82
-
83
- 2026-09-11 曾验证字节 Seed 2.1 Turbo、美团 LongCat 2.0、蚂蚁 Ling 3.0 Flash、阶跃 Step 3.7 Flash,SDK 实测通过 4/4,核验 8 次 Messages 请求;全部执行 Read 并返回正确随机值,三次跨模型原生 resume 保留同一会话和上一轮标记。前三项不发送 effort,阶跃发送 high。最终默认列表只追加字节和美团,蚂蚁和阶跃已移出。初测发生过目录连接中断、美团漏答上一轮标记;日志保留,明示双标记要求后复测通过。百度空路由、快手上游 400 的可用性限制见[模型说明](models.md#openrouter)。
84
-
85
- 可复现实测使用 `scripts/test-openrouter.ts`:显式提供私有 JSON 凭据文件(`api_key`)、输出目录及 `--agent-runtimes` 指向的已安装 Agent 目录,`--capture-requests` 校验实际请求,`--sequence` 验证同一会话按顺序恢复。探针只在私有临时目录操作随机文件;不连接飞书、不启动或重启 daemon。传输失败保留在报告并返回错误响应,最终失败以非零退出码报告。真实密钥、请求正文和 session id 不写入跟踪文件。
86
-
87
- `scripts/test-model-panel-live.ts` 用已有 daemon 做群内回调测试:显式指定 `--chat-id` 和 `--extra-model`,通过权限 0600 的本机 debug socket 读取模型状态并注入有限的模型面板动作。服务端绑定已设置的群和操作用户,校验真实卡片所属群、所属应用及面板消息,再交给正常的 Card action admission、去重、群队列和呈现链路;不提供通用方法执行入口。此测试覆盖服务端回调与真实飞书消息更新,客户端点击手势另需人工或 UI 自动化验证。
88
-
89
- 该脚本会发送测试消息,核验首页分组,临时增删 OpenRouter 模型,并逐一检查其他已启用来源的隐藏、刷新和恢复;选择小米的模型默认档位验证真实回复及 footer,随后恢复原模型设置和列表。失败保留记录并尽力恢复自己产生的修改,群仍忙时拒绝强行切换。原始卡片通过 `card_msg_content_type=raw_card_content` 读取,普通消息接口的兼容文案不能用来判断 schema 2.0 实际内容。布局或协议变更后需在加载新版本的 daemon 上重跑。
90
-
91
- 2026-09-10 在加载新版代码的 daemon 上完成群内测试:六个已启用来源的首页分组、接口项隐藏/显示与刷新持久化通过;Codex、OpenRouter、DeepSeek Harness、DSH GLM 的列表外补录、MISS 展示与删除通过,GLM / DeepSeek 对无法验证的补录明确拒绝且不写入记录。OpenRouter 完成真实回复,最终 footer 正确显示模型/effort 和账户余额;测试后恢复九项列表及群内原模型。Claude native 当时未启用,其管理行为由七类来源的统一回归测试覆盖。
92
-
93
- SDK 结果到达时卡片可能还在异步查询余额,探针需等待同一回复卡的最终 footer,再校验金额与模型信息。第一次探针提前读取导致余额断言失败,原卡稍后正常显示余额;修正等待条件后完整复测通过。`--routes-only --test-source dsh-glm --test-model glm-5.3 --test-effort high` 也已实测,确认正常群回复及 `dsh · glm-5.3/high`、额度展示,并恢复原设置。
94
-
95
75
  ## DeepSeek Harness 原生后端
96
76
 
97
- `DshProcess` 启动自动更新到上游 `latest` 的 Node DSH 子进程,以 `sdk` profile 加载 `dsh-bridge` Cordis 插件,替换默认 SDK JSON-RPC server。Lodestar 的 stdio 协议只承载控制和事件;Agent 循环、工具执行、持久化及子 Agent 由 DSH 管理。
77
+ `DshProcess` 使用当前安装的运行目录启动 Node DSH 子进程,以 `sdk` profile 加载 `dsh-bridge` Cordis 插件,替换默认 SDK JSON-RPC server。Lodestar 的 stdio 协议只承载控制和事件;Agent 循环、工具执行、持久化及子 Agent 由 DSH 管理。
98
78
 
99
- Agent 运行依赖由 `src/agent-updates.ts` 独立安装,daemon 启动时及每 6 小时检查 upstream latest,安装成功直接启用,旧任务继续使用各自目录。DSH 子包的 dist-tag 可能不同步,因此从主包最新版本递归读取 dependencies/peerDependencies/optionalDependencies,整族安装该次动态选中的版本。不存在兼容版本白名单;不兼容直接报告并后续适配。`dsh-bridge` 被放入选中运行目录,从同一依赖树加载,握手版本来自实际 package.json。开发依赖和 Bun 锁文件只是本地测试快照,不限制生产更新。普通安全 overrides 同时用于独立运行目录,tarball 验收真实执行更新器、包审计和原生查询。
79
+ Agent 运行依赖由 `src/agent-updates.ts` 独立安装,daemon 启动时不检查或更新。自动更新默认关闭;手动运行 `lodestar-update --agents-only`,或在 `[runtime.agent_auto_update]` 中分别开启 `codex`、`claude`、`dsh` 后,各自每 6 小时检查 upstream latest。安装成功直接启用,旧任务继续使用各自目录。DSH 子包的 dist-tag 可能不同步,因此从主包最新版本递归读取 dependencies/peerDependencies/optionalDependencies,整族安装该次动态选中的版本。不存在兼容版本白名单;不兼容直接报告并后续适配。`dsh-bridge` 被放入选中运行目录,从同一依赖树加载,握手版本来自实际 package.json。开发依赖和 Bun 锁文件只是本地测试快照,不限制生产更新。普通安全 overrides 同时用于独立运行目录,tarball 验收真实执行更新器、包审计和原生查询。
100
80
 
101
81
  - `session/open` 完成原生 create/resume/fork 并 flush 后才公布恢复点。`rs` 通过原生持久化服务列出同工作目录会话;`fk/bk` 使用 `turn/end` 的事件序号作为 checkpoint,原生日志验证并加载分叉历史。
102
82
  - 实时文本来自 `agent/assistant-stream`,工具和计划来自会话事件。进入 idle 后等待持久化完成,再用真实 `turn/end` 原因结算;认证失败、token 耗尽及驱动异常均向调用方报告。
@@ -113,13 +93,11 @@ Agent 运行依赖由 `src/agent-updates.ts` 独立安装,daemon 启动时及
113
93
 
114
94
  需要 Node 22.19+(22.x)或 Node 24+;`[token_source.deepseek-harness].bin` 指定 Node 路径。DSH 是开发者预览版,升级依赖时须同步检查桥接协议并运行原生集成测试。`src/dsh-process.test.ts` 使用真实运行时和本地模拟模型/MCP,不连接飞书或付费 API。
115
95
 
116
- 2026-09-10 运行 `bun scripts/test-dsh-glm.ts`,用真实 GLM Coding Plan 的 GLM-5.3 / high 完成 Read 随机文件验证,再创建新进程通过原生 resume 复述原标记,两轮均成功且无错误。测试使用私有临时目录,不连接飞书、不控制 daemon。原生集成测试另核验了 GLM 工具往返、low → max 的实际请求参数和 resume 历史。
117
-
118
96
  接口依据:[GLM Coding Plan 快速开始](https://docs.bigmodel.cn/cn/coding-plan/quick-start)、[DSH 模型供应商配置](https://github.com/deepseek-ai/deepseek-harness/blob/master/docs/user/guide/providers.md)。
119
97
 
120
98
  ## 共享事件和委派
121
99
 
122
- `claude-agent-process.ts` 将 SDK 文本、工具、结果、用量、压缩和后台任务转换成 `AgentProcess` 事件。共享事件由 Session 和卡片消费,保留两种后端在初始化、上下文和后台任务上的差异。
100
+ 各进程类将原生文本、工具、结果、用量、压缩和后台任务转换成 `AgentProcess` 事件。共享事件由 Session 和卡片消费,保留各后端在初始化、上下文和后台任务上的差异。
123
101
 
124
102
  委派只有一层:主 Agent 可以并行派工、回答问题和续跑原生会话,被委派的 Agent 不得继续调用其他 Agent。Skill、worker 提示词及运行时入口共同遵循该规则;worker 关闭 Codex `multi_agent` 或 Claude `Agent`/`Task`,保留其余代码工具、项目 MCP 和独立调用凭据。历史父子记录仍保留以便读取与清理。运行状态原子落盘,大段输入输出单独存放;委派会话登记后从主群的历史列表中排除。
125
103
 
@@ -132,4 +110,12 @@ Agent 运行依赖由 `src/agent-updates.ts` 独立安装,daemon 启动时及
132
110
  - 会话分支:`src/conversation.ts`、`src/session-temp.ts`、`src/temp-session-runtime.ts`、`src/feishu.ts`。
133
111
  - 委派:`src/agent-service.ts`、`src/agent-runner.ts`、`src/agent-session-registry.ts`。
134
112
 
135
- 本地检查使用 `bun run typecheck`、`bun test` 和 `bun run build`。真实后端与飞书交互需要单独指定账号、目标群和允许的副作用;历史探针结果不代表当前版本已完成线上验证。
113
+ 本地检查使用 `bun run typecheck`、`bun test` 和 `bun run build`。真实后端与飞书交互使用以下探针,运行前阅读[脚本说明](../scripts/AGENTS.md),明确账号、目标群和允许的副作用。
114
+
115
+ | 脚本 | 验证内容与运行条件 |
116
+ | --- | --- |
117
+ | [test-openrouter.ts](../scripts/test-openrouter.ts) | 真实 API/SDK 工具调用、model/effort 参数与原生 resume;显式提供私有凭据、输出目录和 `--agent-runtimes`,不连接飞书 |
118
+ | [test-dsh-glm.ts](../scripts/test-dsh-glm.ts) | 使用已配置的 GLM Coding Plan 验证 DSH 工具调用与原生 resume,只操作私有临时目录,不连接飞书 |
119
+ | [test-model-panel-live.ts](../scripts/test-model-panel-live.ts) | 在指定群和已有 daemon 上验证模型面板回调、显示/隐藏、补录/删除及回复;发送测试消息并临时修改模型设置,结束后恢复 |
120
+
121
+ 模型面板探针覆盖服务端回调与真实飞书消息更新;客户端点击手势需另外验证。校验卡片时读取 `raw_card_content`,并等待同一回复卡的最终 footer;布局或协议变更后需在加载新代码的 daemon 上重新验证。
@@ -28,7 +28,13 @@ lodestar-setup
28
28
  | `lodestar-version` | 查看 Lodestar、实际 Agent 版本、运行目录及更新错误 |
29
29
  | `lodestar-agent` | 由会话中的 Agent 调用其他模型执行任务 |
30
30
 
31
- Codex、Claude Code/Agent SDK、DSH 默认自动跟随上游 `latest`:daemon 启动时检查一次,之后每 6 小时检查并更新。运行文件放在 Lodestar 数据目录的 `agent-runtimes/` 下,更新完成后新进程使用新版,已有任务继续使用自己的版本目录。可用 `lodestar-update --agents-only` 立即检查并更新。Agent 更新独立于 Lodestar 发版,不需要先通过兼容性验收;新版不兼容时明确报错,后续更新 Lodestar 适配。查询或安装失败不会静默使用旧安装,`lodestar-version` 可查看错误。显式配置的 `[claude].bin` 仍按该路径执行。
31
+ daemon 启动时不检查 Agent 版本,也不安装或更新 Agent。自动更新默认关闭;首次安装缺少运行文件或需要更新时,运行 `lodestar-update --agents-only`。手动更新和显式开启的自动更新都选择上游 `latest`,独立于 Lodestar 发版,不设置兼容版本白名单。
32
+
33
+ Codex、Claude、DSH 在 `[runtime.agent_auto_update]` 下分别设置 `codex`、`claude`、`dsh` 开关,未设置的项均为 `false`。设为 `true` 的 Agent 在 daemon 运行满 6 小时后首次检查,之后每 6 小时独立检查,启动阶段仍不检查;一个 Agent 更新较慢或失败不阻塞其他 Agent。旧版布尔总开关按原值兼容映射为三项并提示迁移,不可与新配置表混用。
34
+
35
+ 运行文件放在 Lodestar 数据目录的 `agent-runtimes/` 下,每个版本使用独立目录;更新只切换新进程所用的目录,保留正在运行任务的程序和 SDK。Windows 下也不覆盖、重命名或删除正在使用的旧版 EXE/DLL。取消安装时按安装器 PID 终止其进程树,并等待退出;若无法确认终止,保留可能被占用的临时目录并报告错误。
36
+
37
+ 查询或安装失败会明确报错,`lodestar-version` 可查看错误;不会静默改用旧安装。文件占用只做有限重试,最终失败仍显示。显式配置的 `[claude].bin` 按该路径执行。
32
38
 
33
39
  长期运行可交给 Linux `systemd --user`、macOS `launchd` 或 Windows 任务计划程序。daemon 重启后会恢复上次活跃的会话。
34
40
 
@@ -41,15 +47,33 @@ Codex、Claude Code/Agent SDK、DSH 默认自动跟随上游 `latest`:daemon
41
47
  projects_root = "/abs/projects"
42
48
  live_elapsed = "bucket" # bucket 按档位刷新耗时;second 按秒刷新
43
49
 
50
+ [runtime.agent_auto_update] # 三项独立,默认关闭;启动时不检查
51
+ codex = false
52
+ claude = false
53
+ dsh = false
54
+
44
55
  [projects.calculator]
45
- cwd = "/abs/projects/calculator" # 对两个后端均生效
56
+ cwd = "/abs/projects/calculator" # 对所有后端均生效
46
57
  setting_sources = "project" # Claude 后端;仅未绑定 Token Source 时使用
47
- strict_mcp = "true" # 以下字段用于 Claude 主会话
48
- load_project_mcp = "true"
49
- tools = "Read,Write,Edit,Bash,Glob,Grep"
58
+ strict_mcp = "true" # Claude 主会话
59
+ load_project_mcp = "true" # Claude / DSH 主会话
60
+ tools = "Read,Write,Edit,Bash,Glob,Grep" # Claude / DSH 主会话
50
61
 
51
62
  [claude]
52
63
  bin = "/abs/path/to/claude-wrapper" # 可选的 Claude 可执行文件
53
64
  ```
54
65
 
55
66
  账号配置、OpenRouter 默认模型和 DSH 接入见[模型与账号](models.md)。手动修改配置后需重启 daemon;群内设置自行保存。
67
+
68
+ ## 源码开发
69
+
70
+ 安装 Bun,在仓库根目录运行:
71
+
72
+ ```bash
73
+ bun install
74
+ bun run typecheck
75
+ bun test
76
+ bun run build
77
+ ```
78
+
79
+ 完成配置后用 `bun run start` 从源码启动。维护规则见[项目指引](../AGENTS.md);真实飞书探针会操作目标群,使用前阅读[脚本说明](../scripts/AGENTS.md)。
package/docs/models.md CHANGED
@@ -4,11 +4,26 @@
4
4
 
5
5
  账号配置使用 `[token_source.glm]`、`[token_source.deepseek]` 等节。GLM、DeepSeek 和 OpenRouter 也可以从本机 Claude settings 中识别;识别后由对应 Token Source 注入凭据,避免不同账号的环境变量串用。项目的工具限制只作用于主会话,委派 Agent 使用完整工具集。
6
6
 
7
- `md` / `model` 首页用独立分组展示 Claude Code、Codex、DeepSeek Harness:每组都有浅蓝标题栏、边框和 `Agent · 名称` 标题,默认展开,Token Source 行放在组内。模型行之间有分隔线,右侧窄按钮使用单字「选 / 隐 / 显 / 删」,补录、返回和翻页等宽按钮保留完整文案。选账号后进入模型选择;有多个 effort 档位时再选择档位,只有一个档位(包括原生默认)时直接应用。除 OpenRouter 的默认列表外,各来源默认显示接口目录。接口中的模型使用「隐藏 / 显示」,只调整面板可见性,接口新增模型仍会出现。
7
+ ## 选择与管理模型
8
8
 
9
- 所有 Token Source 都提供「补录模型」按钮,补录接口列表外的模型;「删」删除补录记录。记录保存在 `custom_models`;支持端点验证的来源会先验证,补录后即可选择 effort 并使用:DSH 调用原生模型解析,其他来源提供 Agent 的请求档位。目录未收录不会阻止选择,实际不支持的请求由后端报告错误。接口后来收录同名模型时自动转为接口项,不重复显示。删除补录记录需要先切换仍选用它的会话;默认模型和辅助模型中指向已删除补录项的配置也会清理。
9
+ 发送 `model`(`md`),在 Claude Code、Codex、DeepSeek Harness 分组下选择账号,再选择模型。有多个推理档位(effort)时继续选择档位,只有一个档位时直接应用。
10
10
 
11
- 所有对话卡的模型标识固定为 `claude · 模型名/effort`、`codex · 模型名/effort` 或 `dsh · 模型名/effort`。窗口额度沿用原来的紧凑格式,如 `4.1h·7%·[6.9d·17%]`(重置倒计时与已用百分比);余额显示 `余额 $12.34` 或 `余额 ¥12.34`。Codex 额度接口短暂网络失败会有限重试;最终读取失败才显示 `MISS`。`hi` 中的额度标题、各个额度窗口与 Codex 重置卡次数分别换行。
11
+ | 操作 | 作用 |
12
+ | --- | --- |
13
+ | 选 | 使用该模型,按需继续选择推理档位 |
14
+ | 隐 / 显 | 隐藏或显示接口目录中的模型,不改变当前运行模型 |
15
+ | 补录模型 | 添加接口目录外的模型,可选择推理档位并使用 |
16
+ | 删 | 删除补录记录;仍有会话选用时需先切换模型 |
17
+
18
+ 除 OpenRouter 使用内置默认列表外,各来源默认显示接口目录中的模型,新模型会随目录刷新出现。所有来源都支持补录,记录保存在 `custom_models`;支持端点验证的来源会先验证。目录未收录不会阻止选择,实际不支持的请求由后端报告错误。接口后来收录同名模型时自动转为接口项,不重复显示。删除补录记录也会清理默认模型和辅助模型中的相关引用。
19
+
20
+ 同账号切换 Claude 或 DSH 模型从后续回复生效;Codex 的持久设置需重启会话生效。跨账号或后端切换只允许在空闲时进行。来源禁用或目录获取失败显示 `MISS`。
21
+
22
+ ## 额度
23
+
24
+ 发送 `hi` 查看会话和账号额度。GLM 展示套餐与各窗口用量;Codex 展示额度窗口和账号可用的重置卡次数。
25
+
26
+ 回复底部显示 `agent · 模型名/effort`,其中 Agent 为 `claude`、`codex` 或 `dsh`。窗口额度如 `4.1h·7%·[6.9d·17%]`,分别表示重置倒计时与已用百分比,方括号内为周窗口;余额显示 `余额 $12.34` 或 `余额 ¥12.34`。读取失败显示 `MISS`,Codex 的短暂网络失败会有限重试。
12
27
 
13
28
  ## OpenRouter
14
29
 
@@ -25,45 +40,34 @@ api_key = "填写自己的 OpenRouter API key"
25
40
  # slots = "haiku=anthropic/claude-fable-5.1" # 可选:辅助任务模型,须获账号目录确认且使用相同的 effort 参数模式
26
41
  ```
27
42
 
28
- OpenRouter 默认可选列表按 [Arena Agent Labs 榜单](https://arena.ai/leaderboard/agent?rankBy=labs) 的 2026-09-08 快照设置:前 12 家各取排名最高的模型,排除 OpenAI、Z.ai / GLM、DeepSeek,保留以下 9 项。
29
-
30
- | Labs 排名 | 厂商 | OpenRouter 模型 | 默认档位 |
31
- | --- | --- | --- | --- |
32
- | 1 | Anthropic | `anthropic/claude-fable-5.1` | max |
33
- | 3 | Moonshot | `moonshotai/kimi-k3` | max |
34
- | 4 | Tencent | `tencent/hy4-preview` | high |
35
- | 7 | Google | `google/gemini-3.8-flash` | high |
36
- | 8 | SpaceXAI | `x-ai/grok-4.5` | high |
37
- | 9 | Alibaba | `qwen/qwen3.8-max-0902` | xhigh |
38
- | 10 | Meta | `meta/muse-spark-1.2` | xhigh |
39
- | 11 | Xiaomi | `xiaomi/mimo-v2.5-pro` | 模型默认 |
40
- | 12 | MiniMax | `minimax/minimax-m3` | 模型默认 |
41
-
42
- 2026-09-11 进一步补齐国内厂商,默认列表共 **11 项**。原榜单顺序不变,后面追加以下两项;这些追加项不代表 Arena 前十二名排名。蚂蚁和阶跃星辰不列为默认。
43
+ 内置默认列表包含以下 **11 项**,定义见[默认模型配置](../src/openrouter-defaults.ts)。这是项目提供的初始列表,可在面板中自行调整。
43
44
 
44
- | 厂商 | OpenRouter 模型 | 默认档位 |
45
+ | 厂商 | 模型 ID | 默认档位 |
45
46
  | --- | --- | --- |
46
- | 字节跳动 | [Seed 2.1 Turbo](https://openrouter.ai/bytedance-seed/seed-2-1-turbo) · `bytedance-seed/seed-2-1-turbo` | 模型默认 |
47
- | 美团 | [LongCat 2.0](https://openrouter.ai/meituan/longcat-2.0) · `meituan/longcat-2.0` | 模型默认 |
48
-
49
- 同日核查百度:[CoBuddy](https://openrouter.ai/baidu/cobuddy) ERNIE 4.5 300B 的端点目录为空,实际调用返回 `404 No endpoints found`;账号目录中可见的 ERNIE 4.5 VL 424B 未声明工具调用支持,因此暂不加入 Agent 默认列表。快手 [KAT-Coder-Pro V2.5](https://openrouter.ai/kwaipilot/kat-coder-pro-v2.5) 虽在账号目录中,但原生 Chat Completions 和 Anthropic Messages 实测均返回 AtlasCloud 上游 `400 bad request`,暂不列为默认,仍可从目录手动显示。账号目录中也没有找到华为、讯飞、商汤的可用工具模型。阿里、腾讯、小米、月之暗面、MiniMax 已在原九项中;OpenAI、GLM、DeepSeek 继续排除。
50
-
51
- `md` / `model` claude → OpenRouter 中,点「显示模型」进入账号目录,再点行右侧「显」加入列表,点每行「隐」移出面板列表。可见性自动持久化,不改当前运行模型;全部隐藏后也能继续显示或补录。未配置 `models` 时才使用上述十一项;`models = ""` 明确表示没有已显示的接口模型,刷新或重启不会补回默认项。榜单变化不会覆盖用户维护的列表。
47
+ | Anthropic | `anthropic/claude-fable-5.1` | max |
48
+ | Moonshot | `moonshotai/kimi-k3` | max |
49
+ | Tencent | `tencent/hy4-preview` | high |
50
+ | Google | `google/gemini-3.8-flash` | high |
51
+ | SpaceXAI | `x-ai/grok-4.5` | high |
52
+ | Alibaba | `qwen/qwen3.8-max-0902` | xhigh |
53
+ | Meta | `meta/muse-spark-1.2` | xhigh |
54
+ | Xiaomi | `xiaomi/mimo-v2.5-pro` | 模型默认 |
55
+ | MiniMax | `minimax/minimax-m3` | 模型默认 |
56
+ | 字节跳动 | `bytedance-seed/seed-2-1-turbo` | 模型默认 |
57
+ | 美团 | `meituan/longcat-2.0` | 模型默认 |
58
+
59
+ 在 `md` → Claude Code → OpenRouter 中,点「显示模型」进入账号目录,再点「显」加入列表,点「隐」移出面板列表。可见性自动保存,不改当前运行模型;全部隐藏后也能继续显示或补录。未配置 `models` 时才使用上述十一项;`models = ""` 表示没有已显示的接口模型,刷新或重启不会补回默认项。内置列表更新不会覆盖用户维护的列表。
52
60
 
53
61
  候选目录来自 `/api/v1/models/user`,按账号供应商和隐私设置筛选,仅纳入支持文本和工具调用的交互模型;OpenAI、GLM、DeepSeek 及无法保证厂商范围的自动路由不会出现在添加候选中。目录刷新失败显示 `MISS`。显式配置但已下线的模型保留为可删除的 `MISS` 项。
54
62
 
55
63
  effort 按上游声明提供。小米、MiniMax、字节等没有 effort 选择器的模型直接选用原生默认行为,跳过 effort 卡,实际请求不携带 effort 参数。两种参数模式之间切换时,空闲进程会保存原生会话并在下一轮用新环境恢复;相同模式下继续使用 SDK 热切换。未配置 `model` 时需要通过面板明确选择运行模型。
56
64
 
57
- OpenRouter 余额来自 `/api/v1/credits`,按 `total_credits - total_usage` 计算,卡片仅显示 `余额 $…`,不附加 Key 限额或累计消费。现有 Key 已实测返回 200;接口权限和错误以实际响应为准。SDK 使用 Bearer token,并显式清空 `ANTHROPIC_API_KEY`。OpenRouter 官方的兼容保证限于 Anthropic 第一方供应商;工具调用、模型与档位参数的验证范围见 [后端说明](claude-agent-backend.md)。
65
+ OpenRouter 余额来自 `/api/v1/credits`,按 `total_credits - total_usage` 计算;接口权限和错误以实际响应为准。账号目录可见不代表所有工具和请求都能成功,上游拒绝或路由不可用会明确报错。兼容接口、模型与档位的处理见[后端说明](claude-agent-backend.md#openrouter)。
58
66
 
59
67
  ## DeepSeek Harness
60
68
 
61
69
  DeepSeek Harness 使用独立的 `[token_source.deepseek-harness]` 账号与原生会话。在群内发送 `deepseek-harness-setup <api_key>`,再通过 `model` 面板选择该来源即可启用。自建端点用 `deepseek-harness-setup <base_url> <api_key>`;这里使用原生 API 根地址,不带 `/anthropic`。
62
70
 
63
- ## DSH 的 GLM Coding Plan
64
-
65
- DSH 也支持 GLM Coding Plan:已有 `[token_source.glm]` 时自动复用该账号,在 `md` → dsh → GLM Coding Plan 中选择模型。独立凭据用 `dsh-glm-setup [base_url] <api_key>`,配置节为 `[token_source.dsh-glm]`。它调用 Coding Plan 的 OpenAI 端点,复用 GLM 额度查询;不经过 OpenRouter 或 Claude SDK。账号接口模型和补录模型一起交给原生适配器,均可选择请求档位;接口项用「隐 / 显」,补录项用「删」。
66
-
67
71
  ```toml
68
72
  [token_source.deepseek-harness]
69
73
  agent = "dsh"
@@ -73,4 +77,8 @@ api_key = "填写自己的 API key"
73
77
  # effort = "high" # 可选:默认请求档位
74
78
  ```
75
79
 
80
+ ### GLM Coding Plan
81
+
82
+ DSH 也支持 GLM Coding Plan:已有 `[token_source.glm]` 时自动复用该账号,在 `md` → DeepSeek Harness → GLM Coding Plan 中选择模型。独立凭据用 `dsh-glm-setup [base_url] <api_key>`,配置节为 `[token_source.dsh-glm]`。它调用 Coding Plan 的 OpenAI 端点,复用 GLM 额度查询;不经过 OpenRouter 或 Claude SDK。账号接口模型和补录模型一起交给原生适配器,均可选择请求档位;接口项用「隐 / 显」,补录项用「删」。
83
+
76
84
  手动修改配置后需重启 daemon;群内账号启用和模型补录会自行重载相关配置。模型路由、配置优先级和后端差异见 [后端说明](claude-agent-backend.md)。
package/docs/usage.md CHANGED
@@ -6,41 +6,41 @@
6
6
 
7
7
  直接发送下列词语,不加斜杠,大小写不敏感。这些命令控制当前群的 Agent 会话。
8
8
 
9
- | 指令 | 行为 |
10
- | --- | --- |
11
- | `hi` | 打开控制台;会话未运行时先启动 |
12
- | `stop` / `st` | 打断当前回复并取消排队消息,保留进程 |
13
- | `kill` / `kl` | 关闭当前 Agent 进程,保存可恢复的会话记录 |
14
- | `restart` / `rs` | 进程存活时打断并恢复当前会话;已停止时列出同目录的历史会话,选择后创建独立分支 |
15
- | `clear` / `cl` | 关闭当前进程并开始新会话;已停止时提示先启动 |
16
- | `compact` / `cm` | 压缩当前会话的上下文 |
17
- | `model` / `md` | 按账号 → 模型 → effort 选择并保存 |
18
- | `agents` | 查看可调用的 Agent 身份及可用状态 |
19
- | `task` | 创建、查看或删除绑定的飞书任务清单 |
20
-
21
- 模型列表来自各账号的模型目录,获取失败显示 `MISS`。同账号切换 Claude 模型从后续回复生效,Codex 的持久模型设置需重启会话生效;跨账号或后端切换只允许在空闲时进行。
22
-
23
- GLM 的套餐与用量显示在 `hi` 控制台,回复底部也会显示当前窗口用量。
24
-
25
- ## Worktree 与临时会话
9
+ | 完整指令 | 缩写 / 别名 | 行为 |
10
+ | --- | --- | --- |
11
+ | `hi` | — | 打开控制台;会话未运行时先启动 |
12
+ | `model` | `md` | Agent 分组选择账号,再选择模型与推理档位(effort)并保存 |
13
+ | `stop` | `st` | 打断当前回复并取消排队消息,保留进程 |
14
+ | `kill` | `kl` | 关闭当前 Agent 进程,保存可恢复的会话记录 |
15
+ | `restart` | `rs` | 进程存活时打断并恢复当前会话;已停止时列出同目录的历史会话,选择后创建独立分支 |
16
+ | `clear` | `cl` | 关闭当前进程并开始新会话;已停止时提示先启动 |
17
+ | `compact` | `cm` | 压缩当前会话的上下文 |
18
+ | `agents` | `agent` | 查看可调用的 Agent 身份及可用状态 |
19
+ | `task` | — | 创建、查看或删除绑定的飞书任务清单 |
20
+
21
+ 模型列表来自各账号的模型目录,获取失败显示 `MISS`。同账号切换 Claude 或 DSH 模型从后续回复生效,Codex 的持久模型设置需重启会话生效;跨账号或后端切换只允许在空闲时进行。账号接入、模型补录与额度说明见[账号与模型](models.md)。
22
+
23
+ ## 独立工作区
26
24
 
27
25
  需要独立修改文件时,在项目主群使用 worktree:
28
26
 
29
- | 指令 | 行为 |
30
- | --- | --- |
31
- | `wt` / `worktree` | 列出项目的 `work/*` 分支和工作区状态 |
32
- | `wt feature-x` | 创建或加入 `<project>[feature-x]` 群和同级 worktree 目录,使用 `work/feature-x` 分支 |
27
+ | 完整指令 | 缩写 / 别名 | 行为 |
28
+ | --- | --- | --- |
29
+ | `worktree` | `wt` | 列出项目的 `work/*` 分支和工作区状态 |
30
+ | `worktree feature-x` | `wt feature-x` | 创建或加入 `<project>[feature-x]` 群和同级 worktree 目录,使用 `work/feature-x` 分支 |
33
31
 
34
32
  已合并且未挂载的分支会折叠隐藏,再次启用时更新到主线。卡片上的“删”会检查对应群没有运行中的会话、工作区没有未提交变更,再解散群并删除 worktree;Git 分支保留。
35
33
 
34
+ ## 临时会话与对话分支
35
+
36
36
  临时会话共享当前工作目录,适合在同一项目里另开一段对话:
37
37
 
38
- | 指令 | 行为 |
39
- | --- | --- |
40
- | `btw` | 创建 `<session>*MMDD-HHMM` 临时群,继承账号、模型和工作目录,启动新会话 |
41
- | `bye` | 停止并解散当前临时群,仅适用于 Lodestar 创建的临时群 |
42
- | `fk` / `fork` | 选择一条用户输入,在临时群里从这条输入之前分叉 |
43
- | `bk` / `back` | 选择一条用户输入,让本群接到这条输入之前的新分支 |
38
+ | 完整指令 | 缩写 / 别名 | 行为 |
39
+ | --- | --- | --- |
40
+ | `btw` | — | 创建 `<session>*MMDD-HHMM` 临时群,继承账号、模型和工作目录,启动新会话 |
41
+ | `fork` | `fk` | 选择一条用户输入,在临时群里从这条输入之前分叉 |
42
+ | `back` | `bk` | 选择一条用户输入,让本群接到这条输入之前的新分支 |
43
+ | `bye` | | 停止并解散当前临时群,仅适用于 Lodestar 创建的临时群 |
44
44
 
45
45
  `fk`、`bk` 和从历史记录恢复的 `rs` 都使用后端原生 fork,保留源对话。选第 N 条输入表示回到它发出之前,选中的输入不包含在新分支内。Claude 的新分支在首条输入时获得会话 id,准备状态会持久保存。
46
46
 
@@ -60,7 +60,7 @@ GLM 的套餐与用量显示在 `hi` 控制台,回复底部也会显示当前
60
60
 
61
61
  ## 本机通知
62
62
 
63
- 脚本可通过 HTTP 向项目群发送通知,支持 `info`、`warn`、`error`,以及本地图片、按钮和点击回调:
63
+ 脚本可通过 HTTP 向项目群发送通知,支持 `info`、`warn`、`error`,以及本地图片、交互按钮或文字回复:
64
64
 
65
65
  ```bash
66
66
  curl -sS -X POST http://127.0.0.1:9876/notify \
@@ -68,12 +68,10 @@ curl -sS -X POST http://127.0.0.1:9876/notify \
68
68
  -d '{"project":"ops","level":"error","text":"构建失败,截图如下","images":["/abs/shot.png"]}'
69
69
  ```
70
70
 
71
- 按钮点击结果可以 POST 到指定的本机 `callback`,或通过 `GET /notify/result/<notify_id>` 查询。字段和协议见 [feishu-notify Skill](../src/notify-skill.ts)。daemon 启动时会将该 Skill 同步到 Codex 和 Claude 的 Skill 目录。
71
+ 按钮点击结果可以 POST 到指定的本机 `callback`,或通过 `GET /notify/result/<notify_id>` 查询。需要文字回复时设置 `allow_reply: true`,卡片会提供“回复”按钮;文字回复模式与自定义按钮模式不能同时启用。字段和协议见 [feishu-notify Skill](../src/notify-skill.ts)。daemon 启动时会将该 Skill 同步到 Codex 和 Claude 的 Skill 目录。
72
72
 
73
73
  ## 文件与生图
74
74
 
75
75
  单个出站文件不能超过 **30 MB**(30 × 1024 × 1024 字节)。Agent 在交付前检查大小,超限先压缩或分卷;发送层也会拒绝超限文件。
76
76
 
77
77
  Codex 生图完成后,提示词和图片放在同一个折叠面板中,点击展开查看图片并放大预览。无法嵌入时,图片仍会单独发送。
78
-
79
- `hi` 显示 Codex 账号的可用重置卡次数,数据来自额度接口的 `rateLimitResetCredits.availableCount`。回复 footer 继续保持原来的紧凑额度格式。
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@leviyuan/lodestar",
3
- "version": "0.17.2",
3
+ "version": "0.17.3",
4
4
  "publishConfig": {
5
5
  "access": "public"
6
6
  },
@@ -31,6 +31,7 @@ function termWrite (msg) {
31
31
  termWrite('\n \x1b[1m\x1b[36m✓ Lodestar 已安装\x1b[0m\n')
32
32
  termWrite('\n \x1b[2m下一步: 在终端跑 \x1b[32mlodestar-daemon\x1b[0m\x1b[2m 进入配置向导\x1b[0m')
33
33
  termWrite('\n \x1b[2m(首次运行会自动拉起向导; 也可直接跑 \x1b[32mlodestar-setup\x1b[0m\x1b[2m)\x1b[0m\n\n')
34
- termWrite(' Agent 在 daemon 启动时及每 6 小时自动更新;可运行 lodestar-update --agents-only 立即更新。\n\n')
34
+ termWrite(' 启动时不检查或更新 Agent,自动更新默认关闭。\n')
35
+ termWrite(' 安装/更新 Agent: lodestar-update --agents-only;定期更新可在 [runtime.agent_auto_update] 中分别开启 codex、claude、dsh。\n\n')
35
36
 
36
37
  process.exit(0)