@leviyuan/lodestar 0.11.18 → 0.11.19
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/README.md +32 -63
- package/dist/lodestar.js +76 -76
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -94,101 +94,70 @@ lodestar-setup
|
|
|
94
94
|
|
|
95
95
|
`task` 面板里的 `删` 会二次确认,确认后删除整个清单和清单内任务。这个能力需要飞书应用开通任务清单/任务/评论相关权限;缺权限时面板会显示 Open API 返回的失败原因和缺失 scope。
|
|
96
96
|
|
|
97
|
-
### 🔀 自定义 Claude Code 可执行文件(reclaude 等)
|
|
98
|
-
|
|
99
|
-
默认自动查找 `claude`(`~/.local/npm-global/bin` → `~/.local/bin` → PATH,都没有则用 SDK 自带二进制)。要换成 [reclaude](https://docs.reclaude.ai) 这类"参数原样透传给 claude"的包装器,在 `config.toml` 显式指定:
|
|
100
|
-
|
|
101
|
-
```toml
|
|
102
|
-
[claude]
|
|
103
|
-
bin = "~/.local/bin/reclaude"
|
|
104
|
-
```
|
|
105
|
-
|
|
106
|
-
配置后跳过自动查找;路径不存在会在会话启动时直接报错,不会静默回退。日志里 `executable=config:<路径>` 可确认生效。
|
|
107
|
-
|
|
108
|
-
迁移到 reclaude 时注意:`[claude.env]` 或 `~/.claude/settings.json` 里遗留的 GLM `ANTHROPIC_BASE_URL` / `ANTHROPIC_AUTH_TOKEN` 必须清掉 —— base URL 指向 GLM 时流量不经官方域名,reclaude 的拦截不会生效,烧的还是 GLM 额度。`[claude.models.*]` 里的 GLM profile 也需换回官方模型档位。
|
|
109
|
-
|
|
110
97
|
### 🔔 HTTP 通知端点
|
|
111
98
|
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
```bash
|
|
115
|
-
curl -sS -X POST http://127.0.0.1:9876/notify \
|
|
116
|
-
-H 'Content-Type: application/json' \
|
|
117
|
-
-d '{"project":"xxx","text":"build done","level":"info"}'
|
|
118
|
-
```
|
|
99
|
+
本机任意脚本一行 curl 就能往群里推一张 markdown 卡片:`info` / `warn` / `error` 三档染色,正文支持飞书 markdown,还能附本地图片、加交互按钮、把点击结果 POST 回你自己的回调。这条能力对应的 skill,daemon 每次启动会自动装进 `~/.claude/skills/` 和 `~/.codex/skills/`(不用自己放文件),完整字段、按钮和回调协议看 [`feishu-notify` skill](src/notify-skill.ts)。
|
|
119
100
|
|
|
120
|
-
|
|
101
|
+
推一条带图的告警:
|
|
121
102
|
|
|
122
103
|
```bash
|
|
123
104
|
curl -sS -X POST http://127.0.0.1:9876/notify \
|
|
124
105
|
-H 'Content-Type: application/json' \
|
|
125
|
-
-d '{"project":"
|
|
106
|
+
-d '{"project":"ops","level":"error","text":"卡点了,截图如下","images":["/abs/shot.png"]}'
|
|
126
107
|
```
|
|
127
108
|
|
|
128
|
-
|
|
109
|
+
发一张带按钮的审批卡,点了按钮 daemon 把选择 POST 回你本机的 callback:
|
|
129
110
|
|
|
130
111
|
```bash
|
|
131
112
|
curl -sS -X POST http://127.0.0.1:9876/notify \
|
|
132
113
|
-H 'Content-Type: application/json' \
|
|
133
|
-
-d '{"project":"ops","text":"deploy ready —
|
|
114
|
+
-d '{"project":"ops","text":"deploy ready — 审批?",
|
|
134
115
|
"buttons":[
|
|
135
116
|
{"id":"approve","text":"✅ 通过","type":"primary"},
|
|
136
117
|
{"id":"reject","text":"❌ 拒绝","type":"danger"}
|
|
137
118
|
],
|
|
138
119
|
"callback":"http://127.0.0.1:9999/hook"}'
|
|
139
|
-
# → 200 {"ok":true,"chat_id":"oc_…","message_id":"om_…","notify_id":"nf_…"}
|
|
140
120
|
```
|
|
141
121
|
|
|
142
|
-
|
|
122
|
+
---
|
|
123
|
+
|
|
124
|
+
## ⚙️ 配置参考
|
|
125
|
+
|
|
126
|
+
配置在 `~/.config/lodestar/config.toml`,`lodestar-setup` 会帮你生成,手改也行。两个常被问的:
|
|
127
|
+
|
|
128
|
+
### 想让某个外部项目跑在别的目录?
|
|
143
129
|
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
130
|
+
默认群名就是 `projects_root` 下的目录名。但如果你的项目放在别处、不想搬进来,在 config.toml 指一下它的目录就行,其它项目不受影响:
|
|
131
|
+
|
|
132
|
+
```toml
|
|
133
|
+
[projects.calculator2]
|
|
134
|
+
cwd = "/abs/path/to/calculator2"
|
|
148
135
|
```
|
|
149
136
|
|
|
150
|
-
|
|
137
|
+
下面几个开关是给"想在这个项目里跑个更受限的 Claude session"的人准备的(限定工具、只挂项目自己的 MCP、只读项目级配置之类)。普通用法用不着,默认全不开,也只对 Claude 后端有效。**要开就整节配齐,配一半对话会卡死**:
|
|
151
138
|
|
|
152
|
-
```
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
139
|
+
```toml
|
|
140
|
+
[projects.calculator2]
|
|
141
|
+
cwd = "/abs/path/to/calculator2"
|
|
142
|
+
setting_sources = "project" # 只读项目级配置(会丢全局)
|
|
143
|
+
strict_mcp = "true" # 只挂项目 .mcp.json,挡掉全局 MCP
|
|
144
|
+
tools = "Read,Write,Edit,Bash,Glob,Grep"
|
|
145
|
+
load_project_mcp = "true" # 读 <cwd>/.mcp.json
|
|
146
|
+
keep_lodestar_instructions = "true" # 保留夜航星卡片/输出约定
|
|
158
147
|
```
|
|
159
148
|
|
|
160
|
-
|
|
149
|
+
> 最常踩的坑:`setting_sources = "project"` 会把 `~/.claude/settings.json` 里的 GLM 路由一起丢掉 —— 走 project 模式时,GLM 路由得改落在 config.toml 的 `[claude.env]` 里。要是看到卡片一直 `Thinking...`、model 显示 `<synthetic>`,先把整节注释掉重启,基本就是这几个开关没配齐。
|
|
161
150
|
|
|
162
|
-
###
|
|
151
|
+
### 想换成 reclaude 之类的 claude 包装器?
|
|
163
152
|
|
|
164
|
-
|
|
153
|
+
默认 lodestar 自己找 `claude`。想让它改用 [reclaude](https://docs.reclaude.ai)(或别的"参数原样透传"的包装器),指定一下路径:
|
|
165
154
|
|
|
166
155
|
```toml
|
|
167
|
-
[
|
|
168
|
-
|
|
169
|
-
setting_sources = "project"
|
|
170
|
-
strict_mcp = "true"
|
|
171
|
-
tools = "Read,Write,Edit,Bash,Glob,Grep"
|
|
172
|
-
load_project_mcp = "true"
|
|
173
|
-
keep_lodestar_instructions = "true"
|
|
156
|
+
[claude]
|
|
157
|
+
bin = "~/.local/bin/reclaude"
|
|
174
158
|
```
|
|
175
159
|
|
|
176
|
-
|
|
177
|
-
| --- | --- | --- |
|
|
178
|
-
| `cwd` | agent 工作目录(绝对路径) | `projects_root/<群名>` |
|
|
179
|
-
| `setting_sources` | 显式列表如 `"project"`(只项目级,会丢全局)或 `"user,project"`;不配则**对齐裸 `claude` CLI**,读项目 `CLAUDE.md`/skills/agents/`settings.json` | `user,project,local` |
|
|
180
|
-
| `strict_mcp` | 只挂下方项目 MCP,忽略全局 MCP | 关 |
|
|
181
|
-
| `tools` | 允许的内置工具(逗号分隔);MCP 工具由 `load_project_mcp` 自动可用,不用列在这里 | claude_code 全套 |
|
|
182
|
-
| `load_project_mcp` | 读取 `<cwd>/.mcp.json` 并挂载其 MCP 服务(对齐裸 `claude` 自动发现;无则无效果) | 开 |
|
|
183
|
-
| `keep_lodestar_instructions` | 保留夜航星卡片/输出约定系统提示 | 开 |
|
|
184
|
-
|
|
185
|
-
`strict_mcp = "true"` 时,项目 `.mcp.json` 是 agent 能挂上 MCP 的唯一通路 —— 全局插件/技能被全部挡掉,agent 干净专注。典型用法:外部自动化引擎在自己的目录里维护规则文件,夜航星负责飞书通道和卡片渲染,两者通过群消息驱动协作。
|
|
186
|
-
|
|
187
|
-
> ⚠️ **这组配置必须完整,配一半会把对话卡死。** `[projects.*]` 的字段是联动的,任一项开启后,它依赖的链路都要一起配齐:
|
|
188
|
-
>
|
|
189
|
-
> - **`setting_sources = "project"`** 会排除用户级 `~/.claude/settings.json`。如果你的 GLM 路由 / `ANTHROPIC_BASE_URL` 是写在 `~/.claude/settings.json`(而不是 lodestar 的 `[claude.env]`),会被丢掉、请求发不出去 → 卡死。**走 `project` 模式时,GLM 路由必须落在 `config.toml` 的 `[claude.env]`**(`env` 不受 `setting_sources` 影响)。
|
|
190
|
-
> - 项目 `<cwd>/.mcp.json` 现在**默认读取**(对齐裸 `claude`)。若它存在,其声明的 MCP server 必须能秒级启动并完成 stdio 握手 —— server 卡住(路径错、二进制不存在、stdio 不响应)会让对话卡在真正调用模型之前,表现是卡片底部一直 `Thinking...` 且 model 显示成 `<synthetic>`。要跳过:显式 `load_project_mcp = "false"`。
|
|
191
|
-
> - **排查卡死**:看到 `model=<synthetic>` + 长时间 `Thinking`,先把 `[projects.*]` 整节注释掉重启 daemon;不卡了就是 profile 没配齐,按上面两条逐项检查。
|
|
160
|
+
路径填错会直接报错,不会偷偷回退到自动查找。换成 reclaude 的话,记得把 `~/.claude/settings.json` 或 `[claude.env]` 里残留的 GLM 地址 / Token 清掉,否则流量还走 GLM、reclaude 的拦截不生效。更多细节看 `docs/claude-agent-backend.md`。
|
|
192
161
|
|
|
193
162
|
---
|
|
194
163
|
|