luckerr 0.41.0
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 +267 -0
- package/README.zh-CN.md +237 -0
- package/dashboard/app.css +3022 -0
- package/dashboard/dist/app.js +30137 -0
- package/dashboard/dist/app.js.map +1 -0
- package/dashboard/dist/vendor-hljs.css +10 -0
- package/dashboard/dist/vendor-uplot.css +1 -0
- package/dashboard/index.html +19 -0
- package/data/deepseek-tokenizer.json.gz +0 -0
- package/dist/cli/acp-EOOAI4F5.js +712 -0
- package/dist/cli/acp-EOOAI4F5.js.map +1 -0
- package/dist/cli/chat-7J6GJXL2.js +51 -0
- package/dist/cli/chat-7J6GJXL2.js.map +1 -0
- package/dist/cli/chunk-2425HK6U.js +54 -0
- package/dist/cli/chunk-2425HK6U.js.map +1 -0
- package/dist/cli/chunk-25T6CVUP.js +172 -0
- package/dist/cli/chunk-25T6CVUP.js.map +1 -0
- package/dist/cli/chunk-2UQP6H6T.js +31 -0
- package/dist/cli/chunk-2UQP6H6T.js.map +1 -0
- package/dist/cli/chunk-56OAJILV.js +47 -0
- package/dist/cli/chunk-56OAJILV.js.map +1 -0
- package/dist/cli/chunk-5FTI4KXH.js +150 -0
- package/dist/cli/chunk-5FTI4KXH.js.map +1 -0
- package/dist/cli/chunk-5TWQD73O.js +2846 -0
- package/dist/cli/chunk-5TWQD73O.js.map +1 -0
- package/dist/cli/chunk-653BOCMK.js +40 -0
- package/dist/cli/chunk-653BOCMK.js.map +1 -0
- package/dist/cli/chunk-6ALJTWWQ.js +2663 -0
- package/dist/cli/chunk-6ALJTWWQ.js.map +1 -0
- package/dist/cli/chunk-6DRKA2IL.js +341 -0
- package/dist/cli/chunk-6DRKA2IL.js.map +1 -0
- package/dist/cli/chunk-6LV63NJV.js +634 -0
- package/dist/cli/chunk-6LV63NJV.js.map +1 -0
- package/dist/cli/chunk-74EX7SUH.js +25293 -0
- package/dist/cli/chunk-74EX7SUH.js.map +1 -0
- package/dist/cli/chunk-74U5RKTX.js +60611 -0
- package/dist/cli/chunk-74U5RKTX.js.map +1 -0
- package/dist/cli/chunk-ANJSUESV.js +143 -0
- package/dist/cli/chunk-ANJSUESV.js.map +1 -0
- package/dist/cli/chunk-DB2Z3DKZ.js +54 -0
- package/dist/cli/chunk-DB2Z3DKZ.js.map +1 -0
- package/dist/cli/chunk-DDIH3ZAA.js +400 -0
- package/dist/cli/chunk-DDIH3ZAA.js.map +1 -0
- package/dist/cli/chunk-ELN3Z3B2.js +621 -0
- package/dist/cli/chunk-ELN3Z3B2.js.map +1 -0
- package/dist/cli/chunk-F6BSQJGV.js +200 -0
- package/dist/cli/chunk-F6BSQJGV.js.map +1 -0
- package/dist/cli/chunk-FET2UAG5.js +246 -0
- package/dist/cli/chunk-FET2UAG5.js.map +1 -0
- package/dist/cli/chunk-FFJ342IJ.js +190 -0
- package/dist/cli/chunk-FFJ342IJ.js.map +1 -0
- package/dist/cli/chunk-GB3247B6.js +130 -0
- package/dist/cli/chunk-GB3247B6.js.map +1 -0
- package/dist/cli/chunk-HC2J4U3G.js +373 -0
- package/dist/cli/chunk-HC2J4U3G.js.map +1 -0
- package/dist/cli/chunk-HRUZAIHQ.js +42 -0
- package/dist/cli/chunk-HRUZAIHQ.js.map +1 -0
- package/dist/cli/chunk-J3ZJFUDL.js +308 -0
- package/dist/cli/chunk-J3ZJFUDL.js.map +1 -0
- package/dist/cli/chunk-J5XJHLWM.js +55 -0
- package/dist/cli/chunk-J5XJHLWM.js.map +1 -0
- package/dist/cli/chunk-JFGLMRZ6.js +160 -0
- package/dist/cli/chunk-JFGLMRZ6.js.map +1 -0
- package/dist/cli/chunk-JMBMLOBP.js +26 -0
- package/dist/cli/chunk-JMBMLOBP.js.map +1 -0
- package/dist/cli/chunk-JMWHXZEL.js +551 -0
- package/dist/cli/chunk-JMWHXZEL.js.map +1 -0
- package/dist/cli/chunk-KEQGPJBO.js +209 -0
- package/dist/cli/chunk-KEQGPJBO.js.map +1 -0
- package/dist/cli/chunk-M4K6U37F.js +232 -0
- package/dist/cli/chunk-M4K6U37F.js.map +1 -0
- package/dist/cli/chunk-MIJI2WMN.js +95 -0
- package/dist/cli/chunk-MIJI2WMN.js.map +1 -0
- package/dist/cli/chunk-MPAO3JNR.js +128 -0
- package/dist/cli/chunk-MPAO3JNR.js.map +1 -0
- package/dist/cli/chunk-PZOFBEDC.js +873 -0
- package/dist/cli/chunk-PZOFBEDC.js.map +1 -0
- package/dist/cli/chunk-RAILYQLN.js +46 -0
- package/dist/cli/chunk-RAILYQLN.js.map +1 -0
- package/dist/cli/chunk-RR35VQVT.js +90 -0
- package/dist/cli/chunk-RR35VQVT.js.map +1 -0
- package/dist/cli/chunk-RRA7VPW4.js +417 -0
- package/dist/cli/chunk-RRA7VPW4.js.map +1 -0
- package/dist/cli/chunk-RU36QVN3.js +452 -0
- package/dist/cli/chunk-RU36QVN3.js.map +1 -0
- package/dist/cli/chunk-RUBIINXR.js +1819 -0
- package/dist/cli/chunk-RUBIINXR.js.map +1 -0
- package/dist/cli/chunk-S4XVGLRW.js +499 -0
- package/dist/cli/chunk-S4XVGLRW.js.map +1 -0
- package/dist/cli/chunk-TUK7OWJA.js +51 -0
- package/dist/cli/chunk-TUK7OWJA.js.map +1 -0
- package/dist/cli/chunk-VALDDV76.js +580 -0
- package/dist/cli/chunk-VALDDV76.js.map +1 -0
- package/dist/cli/chunk-WQOGPYGN.js +11390 -0
- package/dist/cli/chunk-WQOGPYGN.js.map +1 -0
- package/dist/cli/chunk-WREKDFXT.js +34320 -0
- package/dist/cli/chunk-WREKDFXT.js.map +1 -0
- package/dist/cli/chunk-Y7XQU2EL.js +270 -0
- package/dist/cli/chunk-Y7XQU2EL.js.map +1 -0
- package/dist/cli/chunk-YBVCZJU4.js +54 -0
- package/dist/cli/chunk-YBVCZJU4.js.map +1 -0
- package/dist/cli/chunk-YLIHDXUQ.js +749 -0
- package/dist/cli/chunk-YLIHDXUQ.js.map +1 -0
- package/dist/cli/chunk-YV5XXFD7.js +767 -0
- package/dist/cli/chunk-YV5XXFD7.js.map +1 -0
- package/dist/cli/chunk-ZRCNIYRQ.js +101 -0
- package/dist/cli/chunk-ZRCNIYRQ.js.map +1 -0
- package/dist/cli/code-CRKVCMFZ.js +155 -0
- package/dist/cli/code-CRKVCMFZ.js.map +1 -0
- package/dist/cli/commands-QLMD3T7B.js +356 -0
- package/dist/cli/commands-QLMD3T7B.js.map +1 -0
- package/dist/cli/commit-53PP32NC.js +293 -0
- package/dist/cli/commit-53PP32NC.js.map +1 -0
- package/dist/cli/desktop-R6W5CLJ5.js +1046 -0
- package/dist/cli/desktop-R6W5CLJ5.js.map +1 -0
- package/dist/cli/devtools-YECO25QO.js +3719 -0
- package/dist/cli/devtools-YECO25QO.js.map +1 -0
- package/dist/cli/diff-LYNRCJZE.js +166 -0
- package/dist/cli/diff-LYNRCJZE.js.map +1 -0
- package/dist/cli/doctor-5IBP4R5J.js +28 -0
- package/dist/cli/doctor-5IBP4R5J.js.map +1 -0
- package/dist/cli/events-QN6KLN2V.js +340 -0
- package/dist/cli/events-QN6KLN2V.js.map +1 -0
- package/dist/cli/index.js +3500 -0
- package/dist/cli/index.js.map +1 -0
- package/dist/cli/mcp-FGKEH7RG.js +277 -0
- package/dist/cli/mcp-FGKEH7RG.js.map +1 -0
- package/dist/cli/mcp-browse-YCND4NWT.js +178 -0
- package/dist/cli/mcp-browse-YCND4NWT.js.map +1 -0
- package/dist/cli/mcp-inspect-V34J3VX5.js +143 -0
- package/dist/cli/mcp-inspect-V34J3VX5.js.map +1 -0
- package/dist/cli/package.json +3 -0
- package/dist/cli/prompt-I775PNKT.js +16 -0
- package/dist/cli/prompt-I775PNKT.js.map +1 -0
- package/dist/cli/prune-sessions-KGIIYD3P.js +44 -0
- package/dist/cli/prune-sessions-KGIIYD3P.js.map +1 -0
- package/dist/cli/replay-RDXLUAOE.js +292 -0
- package/dist/cli/replay-RDXLUAOE.js.map +1 -0
- package/dist/cli/run-RCAC2RYW.js +223 -0
- package/dist/cli/run-RCAC2RYW.js.map +1 -0
- package/dist/cli/server-FFU6TLYJ.js +3658 -0
- package/dist/cli/server-FFU6TLYJ.js.map +1 -0
- package/dist/cli/sessions-QT26MQAE.js +107 -0
- package/dist/cli/sessions-QT26MQAE.js.map +1 -0
- package/dist/cli/setup-VV4WKXHV.js +767 -0
- package/dist/cli/setup-VV4WKXHV.js.map +1 -0
- package/dist/cli/stats-JVZPQWAN.js +15 -0
- package/dist/cli/stats-JVZPQWAN.js.map +1 -0
- package/dist/cli/update-KYI3OVJP.js +15 -0
- package/dist/cli/update-KYI3OVJP.js.map +1 -0
- package/dist/cli/version-ANYORXTI.js +34 -0
- package/dist/cli/version-ANYORXTI.js.map +1 -0
- package/dist/index.d.ts +2557 -0
- package/dist/index.js +15000 -0
- package/dist/index.js.map +1 -0
- package/package.json +106 -0
package/README.md
ADDED
|
@@ -0,0 +1,267 @@
|
|
|
1
|
+
<p align="center">
|
|
2
|
+
<img src="docs/logo.svg" alt="Luckerr" width="640"/>
|
|
3
|
+
</p>
|
|
4
|
+
|
|
5
|
+
<p align="center">
|
|
6
|
+
<strong>English</strong>
|
|
7
|
+
·
|
|
8
|
+
<a href="./README.zh-CN.md">简体中文</a>
|
|
9
|
+
·
|
|
10
|
+
<a href="https://esengine.github.io/DeepSeek-Luckerr/">Website</a>
|
|
11
|
+
·
|
|
12
|
+
<a href="https://esengine.github.io/DeepSeek-Luckerr/configuration.html">Guide</a>
|
|
13
|
+
·
|
|
14
|
+
<a href="./docs/ARCHITECTURE.md">Architecture</a>
|
|
15
|
+
·
|
|
16
|
+
<a href="./benchmarks/">Benchmarks</a>
|
|
17
|
+
</p>
|
|
18
|
+
|
|
19
|
+
<p align="center">
|
|
20
|
+
<a href="https://www.npmjs.com/package/luckerr"><img src="https://img.shields.io/npm/v/luckerr.svg?style=flat-square&color=cb3837&labelColor=161b22&logo=npm&logoColor=white" alt="npm version"/></a>
|
|
21
|
+
<a href="https://github.com/esengine/luckerr/actions/workflows/ci.yml"><img src="https://img.shields.io/github/actions/workflow/status/esengine/luckerr/ci.yml?style=flat-square&label=ci&labelColor=161b22&logo=githubactions&logoColor=white" alt="CI"/></a>
|
|
22
|
+
<a href="./LICENSE"><img src="https://img.shields.io/npm/l/luckerr.svg?style=flat-square&color=8b949e&labelColor=161b22" alt="license"/></a>
|
|
23
|
+
<a href="https://www.npmjs.com/package/luckerr"><img src="https://img.shields.io/npm/dm/luckerr.svg?style=flat-square&color=3fb950&labelColor=161b22&label=downloads" alt="downloads"/></a>
|
|
24
|
+
<a href="./package.json"><img src="https://img.shields.io/node/v/luckerr.svg?style=flat-square&color=5fa04e&labelColor=161b22&logo=nodedotjs&logoColor=white" alt="node"/></a>
|
|
25
|
+
<a href="https://github.com/esengine/luckerr/stargazers"><img src="https://img.shields.io/github/stars/esengine/luckerr.svg?style=flat-square&color=dbab09&labelColor=161b22&logo=github&logoColor=white" alt="GitHub stars"/></a>
|
|
26
|
+
<a href="https://github.com/esengine/luckerr/graphs/contributors"><img src="https://img.shields.io/github/contributors/esengine/luckerr.svg?style=flat-square&color=bc8cff&labelColor=161b22&logo=github&logoColor=white" alt="contributors"/></a>
|
|
27
|
+
<a href="https://github.com/esengine/luckerr/discussions"><img src="https://img.shields.io/github/discussions/esengine/luckerr.svg?style=flat-square&color=58a6ff&labelColor=161b22&logo=github&logoColor=white" alt="Discussions"/></a>
|
|
28
|
+
</p>
|
|
29
|
+
|
|
30
|
+
<p align="center">
|
|
31
|
+
<a href="https://oosmetrics.com/repo/esengine/luckerr"><img src="https://api.oosmetrics.com/api/v1/badge/achievement/9e931d80-2050-4b10-902e-44970cc133ad.svg" alt="oosmetrics — Top 2 in Agents by velocity"/></a>
|
|
32
|
+
<a href="https://oosmetrics.com/repo/esengine/luckerr"><img src="https://api.oosmetrics.com/api/v1/badge/achievement/556d94b3-61b7-486b-baf2-888b9327deab.svg" alt="oosmetrics — Top 3 in LLMs by velocity"/></a>
|
|
33
|
+
<a href="https://oosmetrics.com/repo/esengine/luckerr"><img src="https://api.oosmetrics.com/api/v1/badge/achievement/0f457d4c-efca-4d15-ad2b-139691ff342c.svg" alt="oosmetrics — Top 3 in CLI by velocity"/></a>
|
|
34
|
+
</p>
|
|
35
|
+
|
|
36
|
+
<br/>
|
|
37
|
+
|
|
38
|
+
<h3 align="center">A DeepSeek-native AI coding agent for your terminal.</h3>
|
|
39
|
+
<p align="center">Engineered around prefix-cache stability — so token costs stay low across long sessions, and you can leave it running.</p>
|
|
40
|
+
|
|
41
|
+
<br/>
|
|
42
|
+
|
|
43
|
+
<p align="center">
|
|
44
|
+
<img src="docs/assets/hero-terminal.svg" alt="Luckerr code mode — assistant proposes a SEARCH/REPLACE edit; nothing on disk until /apply" width="860"/>
|
|
45
|
+
</p>
|
|
46
|
+
|
|
47
|
+
<br/>
|
|
48
|
+
|
|
49
|
+
> [!TIP]
|
|
50
|
+
> **Cache stability isn't a feature you turn on; it's an invariant the loop is designed around.** That's the whole reason Luckerr is DeepSeek-only — every layer is tuned to the byte-stable prefix-cache mechanic.
|
|
51
|
+
|
|
52
|
+
> [!NOTE]
|
|
53
|
+
> **Real user, single day (2026-05-01):** 435M input tokens, **99.82% cache hit**, ~$12 instead of the ~$61 the same workload would cost with no cache on `v4-flash` — see the [case study](./benchmarks/real-world-cache/README.md). DeepSeek provides the cacheable bytes; the four mechanisms in [Pillar 1](./docs/ARCHITECTURE.md#pillar-1--cache-first-loop) are how Luckerr keeps them cacheable across long sessions.
|
|
54
|
+
|
|
55
|
+
<br/>
|
|
56
|
+
|
|
57
|
+
## Install
|
|
58
|
+
|
|
59
|
+
Requires Node ≥ 22. Works on macOS · Linux · Windows (PowerShell · Git Bash · Windows Terminal).
|
|
60
|
+
|
|
61
|
+
Install Luckerr globally if you want the `luckerr` command available on your `PATH`:
|
|
62
|
+
|
|
63
|
+
```bash
|
|
64
|
+
npm install -g luckerr
|
|
65
|
+
luckerr code my-project # paste a DeepSeek API key on first run; persists after
|
|
66
|
+
```
|
|
67
|
+
|
|
68
|
+
Or run it once without installing globally:
|
|
69
|
+
|
|
70
|
+
```bash
|
|
71
|
+
cd my-project
|
|
72
|
+
npx luckerr code # always uses the latest package by default
|
|
73
|
+
```
|
|
74
|
+
|
|
75
|
+
Grab a [DeepSeek API key →](https://platform.deepseek.com/api_keys) · `luckerr code --help` for flags.
|
|
76
|
+
|
|
77
|
+
If you use Luckerr daily, global install is the simplest path. If you just want to try it, use `npx`.
|
|
78
|
+
|
|
79
|
+
| Command | When |
|
|
80
|
+
|---|---|
|
|
81
|
+
| `luckerr code [dir]` | The coding agent. **Start here.** |
|
|
82
|
+
| `luckerr chat` | Plain chat — no filesystem or shell tools. |
|
|
83
|
+
| `luckerr run "task"` | One-shot, streams to stdout. Good for pipes. |
|
|
84
|
+
| `luckerr doctor` | Health check: Node, API key, MCP wiring. |
|
|
85
|
+
| `luckerr update` | Upgrade Luckerr itself. |
|
|
86
|
+
|
|
87
|
+
Other subcommands (`replay` · `diff` · `events` · `stats` · `index` · `mcp` · `prune-sessions`) are in `luckerr --help` and the [CLI reference](https://esengine.github.io/DeepSeek-Luckerr/#cli).
|
|
88
|
+
|
|
89
|
+
### Desktop client (prerelease)
|
|
90
|
+
|
|
91
|
+
A native Tauri client for users who want a GUI over the same loop. Multi-tab, the right-panel shows files the agent has read or edited this session, the same cost / cache / token meters live at the bottom. Same DeepSeek API key, same `~/.luckerr` config — the desktop bundles its own Node runtime, no separate `npm install` step.
|
|
92
|
+
|
|
93
|
+
Download platform installers from [GitHub Releases](https://github.com/esengine/DeepSeek-Luckerr/releases). The desktop ships as a **prerelease**: the loop and protocol are the same as the CLI, but the UI is still being polished and the installers aren't code-signed yet.
|
|
94
|
+
|
|
95
|
+
- **macOS** — first launch hits Gatekeeper. One-time fix: `xattr -dr com.apple.quarantine /Applications/Luckerr.app` (or right-click → Open → confirm).
|
|
96
|
+
- **Windows** — SmartScreen warns "Unknown publisher". Click **More info → Run anyway**.
|
|
97
|
+
- **Linux** — `.deb` and `.AppImage` ship plain, no extra step.
|
|
98
|
+
|
|
99
|
+
The CLI remains the canonical surface. Anything that lands in the CLI is also available from the desktop's composer.
|
|
100
|
+
|
|
101
|
+
<details>
|
|
102
|
+
<summary><strong>Working in another folder · chat vs. code · author a skill</strong></summary>
|
|
103
|
+
|
|
104
|
+
**Working in a different folder.** Luckerr scopes filesystem tools to the launch directory; pass `--dir` to retarget. Mid-session switching isn't supported by design (memory paths would tangle with stale roots) — quit and relaunch.
|
|
105
|
+
|
|
106
|
+
```bash
|
|
107
|
+
npx luckerr code --dir /path/to/project
|
|
108
|
+
```
|
|
109
|
+
|
|
110
|
+
**Picking `chat` vs `code`.** `code` is the default and the only mode with filesystem / shell tools and SEARCH/REPLACE review. `chat` is the lighter, tools-off shell — reach for it when you want a thinking partner with MCP attached but no disk access.
|
|
111
|
+
|
|
112
|
+
| What you get | `code` | `chat` |
|
|
113
|
+
|---|---|---|
|
|
114
|
+
| Filesystem tools + `edit_file` | ✓ | — |
|
|
115
|
+
| SEARCH/REPLACE → `/apply` review | ✓ | — |
|
|
116
|
+
| Shell tool (gated) | ✓ | — |
|
|
117
|
+
| Plan mode · `/todo` · `/skill new` · `/mcp add` | ✓ | — |
|
|
118
|
+
| Memory (`remember` / `recall_memory`) | project + global | global only |
|
|
119
|
+
| MCP servers from config · web search · `ask_choice` | ✓ | ✓ |
|
|
120
|
+
| Coding system prompt | ✓ | generic |
|
|
121
|
+
| Session scope | per-directory | shared default |
|
|
122
|
+
|
|
123
|
+
**Author your first skill.** No remote registry — write them directly. Edit the file (`description:` frontmatter + body), then `/skill list`. Add `runAs: subagent` to spawn an isolated subagent loop instead of inlining the body.
|
|
124
|
+
|
|
125
|
+
```bash
|
|
126
|
+
/skill new my-skill # <project>/.luckerr/skills/my-skill.md
|
|
127
|
+
/skill new my-skill --global # ~/.luckerr/skills for cross-project use
|
|
128
|
+
```
|
|
129
|
+
|
|
130
|
+
</details>
|
|
131
|
+
|
|
132
|
+
<br/>
|
|
133
|
+
|
|
134
|
+
## Configuration
|
|
135
|
+
|
|
136
|
+
One JSON file at `~/.luckerr/config.json` plus per-project overrides under `<project>/.luckerr/`. The full bilingual reference — every key, every slash command, the on-disk shape of skills/memory/hooks — lives at:
|
|
137
|
+
|
|
138
|
+
> 📘 **[Configuration Guide](https://esengine.github.io/DeepSeek-Luckerr/configuration.html)** · [中文](https://esengine.github.io/DeepSeek-Luckerr/configuration.html?lang=zh)
|
|
139
|
+
|
|
140
|
+
| Topic | Quick read |
|
|
141
|
+
|---|---|
|
|
142
|
+
| [MCP servers](https://esengine.github.io/DeepSeek-Luckerr/configuration.html#mcp) | stdio · SSE · Streamable HTTP. One spec format works for both `config.json` and `--mcp`. |
|
|
143
|
+
| [Skills](https://esengine.github.io/DeepSeek-Luckerr/configuration.html#skills) | Markdown playbooks the model can invoke. `inline` or `subagent` mode. |
|
|
144
|
+
| [Memory](https://esengine.github.io/DeepSeek-Luckerr/configuration.html#memory) | User-private knowledge pinned into the prefix. `user` / `feedback` / `project` / `reference` types. |
|
|
145
|
+
| [Hooks](https://esengine.github.io/DeepSeek-Luckerr/configuration.html#hooks) | Shell commands on lifecycle events. `PreToolUse` (gating) · `PostToolUse` · `UserPromptSubmit` · `Stop`. |
|
|
146
|
+
| [Permissions](https://esengine.github.io/DeepSeek-Luckerr/configuration.html#permissions) | Per-workspace shell allowlist. Exact-prefix match. |
|
|
147
|
+
| [Web search](https://esengine.github.io/DeepSeek-Luckerr/configuration.html#search) | Mojeek by default; switch to self-hosted SearXNG with `/search-engine`. |
|
|
148
|
+
| [Semantic index](https://esengine.github.io/DeepSeek-Luckerr/configuration.html#index) | `luckerr index` — local Ollama or any OpenAI-compatible embedding endpoint. |
|
|
149
|
+
|
|
150
|
+
> **Model & preset persistence:** your last model or preset choice (via `/model`, `/preset`, or the model picker) is saved to `config.json` and restored on relaunch. `--model` / `--preset` CLI flags still override for one-off runs.
|
|
151
|
+
|
|
152
|
+
<br/>
|
|
153
|
+
|
|
154
|
+
## What makes Luckerr different
|
|
155
|
+
|
|
156
|
+
The loop is organized around three pillars. Each one solves a problem generic agent frameworks don't even see — because they were designed for a different cache mechanic.
|
|
157
|
+
|
|
158
|
+
<sub align="center">
|
|
159
|
+
|
|
160
|
+
Click through to the full architecture writeup → [Pillar 1 — Cache-first loop](./docs/ARCHITECTURE.md#pillar-1--cache-first-loop) · [Pillar 2 — Tool-call repair](./docs/ARCHITECTURE.md#pillar-2--tool-call-repair) · [Pillar 3 — Cost control](./docs/ARCHITECTURE.md#pillar-3--cost-control-v06)
|
|
161
|
+
|
|
162
|
+
</sub>
|
|
163
|
+
|
|
164
|
+
<br/>
|
|
165
|
+
|
|
166
|
+
## Capabilities
|
|
167
|
+
|
|
168
|
+
<p align="center">
|
|
169
|
+
<img src="docs/assets/feature-grid.svg" alt="Luckerr capabilities — cell-diff renderer, MCP, plan mode, permissions, dashboard, persistent sessions, hooks/skills/memory, semantic search, auto-checkpoints, /effort knob, transcript replay, event log" width="880"/>
|
|
170
|
+
</p>
|
|
171
|
+
|
|
172
|
+
<br/>
|
|
173
|
+
|
|
174
|
+
## How it compares
|
|
175
|
+
|
|
176
|
+
| | Luckerr | Claude Code | Cursor | Aider |
|
|
177
|
+
|-----------------------------------|------------------|-------------------|---------------------|--------------------|
|
|
178
|
+
| Backend | DeepSeek | Anthropic | OpenAI / Anthropic | any (OpenRouter) |
|
|
179
|
+
| License | **MIT** | closed | closed | Apache 2 |
|
|
180
|
+
| Cost profile | **low per task** | premium | subscription + use | varies |
|
|
181
|
+
| DeepSeek prefix-cache | **engineered** | not applicable | not applicable | incidental |
|
|
182
|
+
| Embedded web dashboard | yes | — | n/a (IDE) | — |
|
|
183
|
+
| Configurable web search engine | `/search-engine` | — | — | — |
|
|
184
|
+
| Persistent per-workspace sessions | yes | partial | n/a | — |
|
|
185
|
+
| Plan mode · MCP · hooks · skills | yes | yes | yes | partial |
|
|
186
|
+
| Web search (Mojeek + SearXNG) | yes | yes | yes | yes |
|
|
187
|
+
| Open community development | yes | — | — | yes |
|
|
188
|
+
|
|
189
|
+
For live cache-hit rates, costs, and methodology, see [`benchmarks/`](./benchmarks/) — the numbers move with model pricing, so they live with the harness, not in the README.
|
|
190
|
+
|
|
191
|
+
<br/>
|
|
192
|
+
|
|
193
|
+
## Documentation
|
|
194
|
+
|
|
195
|
+
- [**Architecture**](./docs/ARCHITECTURE.md) — three pillars: cache-first loop, tool-call repair, cost control
|
|
196
|
+
- [**CLI Reference**](./docs/CLI-REFERENCE.md) — every shell subcommand, every slash command, every keybinding
|
|
197
|
+
- [**Benchmarks**](./benchmarks/) — τ-bench-lite harness, transcripts, cost methodology
|
|
198
|
+
- [**Website**](https://esengine.github.io/DeepSeek-Luckerr/) — getting started, dashboard mockup, TUI mockup
|
|
199
|
+
- [**Contributing**](./CONTRIBUTING.md) — comment policy, error-handling rules, library-over-hand-rolled
|
|
200
|
+
- [**Code of Conduct**](./CODE_OF_CONDUCT.md) · [**Security policy**](./SECURITY.md)
|
|
201
|
+
|
|
202
|
+
<br/>
|
|
203
|
+
|
|
204
|
+
## Community
|
|
205
|
+
|
|
206
|
+
> [!NOTE]
|
|
207
|
+
> Luckerr is open source and community-developed. The contributors wall below isn't decoration — every avatar is a real PR that shipped.
|
|
208
|
+
|
|
209
|
+
Scoped starter tickets — each with background, code pointers, acceptance criteria, and hints — live under the [`good first issue`](https://github.com/esengine/luckerr/labels/good%20first%20issue) label. Pick anything open.
|
|
210
|
+
|
|
211
|
+
**Open Discussions — opinions wanted:**
|
|
212
|
+
|
|
213
|
+
- [#20 · CLI / TUI design](https://github.com/esengine/luckerr/discussions/20) — what's broken, what's missing, what would you change?
|
|
214
|
+
- [#21 · Dashboard design](https://github.com/esengine/luckerr/discussions/21) — react against the [proposed mockup](https://esengine.github.io/DeepSeek-Luckerr/design/agent-dashboard.html)
|
|
215
|
+
- [#22 · Future feature wishlist](https://github.com/esengine/luckerr/discussions/22) — what would you build into Luckerr next?
|
|
216
|
+
|
|
217
|
+
**Already using Luckerr and willing to help others discover it?** Publish blog posts, articles, screenshots, talks, or videos to [**Show and tell**](https://github.com/esengine/luckerr/discussions/categories/show-and-tell). The project has no marketing budget — community word of mouth is how new users find it. Sustained advocates earn the badge below, displayed next to the contributors wall once awarded:
|
|
218
|
+
|
|
219
|
+
<p align="center">
|
|
220
|
+
<a href="https://github.com/esengine/luckerr/discussions/categories/show-and-tell">
|
|
221
|
+
<img src="https://img.shields.io/badge/LUCKERR-📣%20ADVOCATE-c4b5fd?style=for-the-badge&labelColor=0d1117" alt="Luckerr Advocate badge — earned by sustained advocates"/>
|
|
222
|
+
</a>
|
|
223
|
+
</p>
|
|
224
|
+
|
|
225
|
+
**Before your first PR**: read [`CONTRIBUTING.md`](./CONTRIBUTING.md) — short, strict rules (comments, errors, libraries-over-hand-rolled). `tests/comment-policy.test.ts` enforces the comment ones; `npm run verify` is the pre-push gate. By participating you agree to the [Code of Conduct](./CODE_OF_CONDUCT.md). Security issues → [SECURITY.md](./SECURITY.md).
|
|
226
|
+
|
|
227
|
+
<p align="center">
|
|
228
|
+
<a href="https://github.com/esengine/luckerr/graphs/contributors">
|
|
229
|
+
<img src="https://contrib.rocks/image?repo=esengine/DeepSeek-Luckerr&max=100&columns=12" alt="Contributors to esengine/DeepSeek-Luckerr" width="860"/>
|
|
230
|
+
</a>
|
|
231
|
+
</p>
|
|
232
|
+
|
|
233
|
+
<br/>
|
|
234
|
+
|
|
235
|
+
## Non-goals
|
|
236
|
+
|
|
237
|
+
> [!IMPORTANT]
|
|
238
|
+
> Luckerr is opinionated. Some things it deliberately *doesn't* do — listed here so you can pick the right tool for your work.
|
|
239
|
+
|
|
240
|
+
- **Multi-provider flexibility.** DeepSeek-only on purpose. Coupling to one backend is the feature, not a limitation.
|
|
241
|
+
- **IDE integration.** Terminal-first. The diff lives in `git diff`, the file tree in `ls`. The dashboard is a companion, not a Cursor replacement.
|
|
242
|
+
- **Hardest-leaderboard reasoning.** Claude Opus still wins some benchmarks. DeepSeek is competitive on coding; if your work is "solve this PhD proof" rather than "fix this auth bug," start with Claude.
|
|
243
|
+
- **Air-gapped / fully-free.** Luckerr needs a paid DeepSeek API key. For air-gapped or zero-cost runs see Aider + Ollama or [Continue](https://continue.dev).
|
|
244
|
+
|
|
245
|
+
<br/>
|
|
246
|
+
|
|
247
|
+
## Star History
|
|
248
|
+
|
|
249
|
+
<a href="https://www.star-history.com/?repos=esengine%2FDeepSeek-Luckerr&type=date&legend=top-left">
|
|
250
|
+
<picture>
|
|
251
|
+
<source media="(prefers-color-scheme: dark)" srcset="https://api.star-history.com/chart?repos=esengine/DeepSeek-Luckerr&type=date&theme=dark&legend=top-left" />
|
|
252
|
+
<source media="(prefers-color-scheme: light)" srcset="https://api.star-history.com/chart?repos=esengine/DeepSeek-Luckerr&type=date&legend=top-left" />
|
|
253
|
+
<img alt="Star History Chart" src="https://api.star-history.com/chart?repos=esengine/DeepSeek-Luckerr&type=date&legend=top-left" />
|
|
254
|
+
</picture>
|
|
255
|
+
</a>
|
|
256
|
+
|
|
257
|
+
<br/>
|
|
258
|
+
|
|
259
|
+
---
|
|
260
|
+
|
|
261
|
+
<p align="center">
|
|
262
|
+
<sub>MIT — see <a href="./LICENSE">LICENSE</a></sub>
|
|
263
|
+
<br/>
|
|
264
|
+
<sub>Built by the community at <a href="https://github.com/esengine/luckerr/graphs/contributors">esengine/luckerr</a></sub>
|
|
265
|
+
<br/>
|
|
266
|
+
<sub>Special thanks to <a href="https://xhslink.com/m/80ngts127cA">AIGC Link</a> for the promotions on XiaoHongShu.</sub>
|
|
267
|
+
</p>
|
package/README.zh-CN.md
ADDED
|
@@ -0,0 +1,237 @@
|
|
|
1
|
+
<p align="center">
|
|
2
|
+
<img src="docs/logo.svg" alt="Luckerr" width="640"/>
|
|
3
|
+
</p>
|
|
4
|
+
|
|
5
|
+
<p align="center">
|
|
6
|
+
<a href="./README.md">English</a>
|
|
7
|
+
·
|
|
8
|
+
<strong>简体中文</strong>
|
|
9
|
+
·
|
|
10
|
+
<a href="https://esengine.github.io/DeepSeek-Luckerr/">官方网站</a>
|
|
11
|
+
·
|
|
12
|
+
<a href="https://esengine.github.io/DeepSeek-Luckerr/configuration.html?lang=zh">配置指南</a>
|
|
13
|
+
·
|
|
14
|
+
<a href="./docs/ARCHITECTURE.md">架构文档</a>
|
|
15
|
+
·
|
|
16
|
+
<a href="./benchmarks/">基准测试</a>
|
|
17
|
+
</p>
|
|
18
|
+
|
|
19
|
+
<p align="center">
|
|
20
|
+
<a href="https://www.npmjs.com/package/luckerr"><img src="https://img.shields.io/npm/v/luckerr.svg?style=flat-square&color=cb3837&labelColor=161b22&logo=npm&logoColor=white" alt="npm version"/></a>
|
|
21
|
+
<a href="https://github.com/esengine/luckerr/actions/workflows/ci.yml"><img src="https://img.shields.io/github/actions/workflow/status/esengine/luckerr/ci.yml?style=flat-square&label=ci&labelColor=161b22&logo=githubactions&logoColor=white" alt="CI"/></a>
|
|
22
|
+
<a href="./LICENSE"><img src="https://img.shields.io/npm/l/luckerr.svg?style=flat-square&color=8b949e&labelColor=161b22" alt="license"/></a>
|
|
23
|
+
<a href="https://www.npmjs.com/package/luckerr"><img src="https://img.shields.io/npm/dm/luckerr.svg?style=flat-square&color=3fb950&labelColor=161b22&label=downloads" alt="downloads"/></a>
|
|
24
|
+
<a href="./package.json"><img src="https://img.shields.io/node/v/luckerr.svg?style=flat-square&color=5fa04e&labelColor=161b22&logo=nodedotjs&logoColor=white" alt="node"/></a>
|
|
25
|
+
<a href="https://github.com/esengine/luckerr/stargazers"><img src="https://img.shields.io/github/stars/esengine/luckerr.svg?style=flat-square&color=dbab09&labelColor=161b22&logo=github&logoColor=white" alt="GitHub stars"/></a>
|
|
26
|
+
<a href="https://github.com/esengine/luckerr/graphs/contributors"><img src="https://img.shields.io/github/contributors/esengine/luckerr.svg?style=flat-square&color=bc8cff&labelColor=161b22&logo=github&logoColor=white" alt="contributors"/></a>
|
|
27
|
+
<a href="https://github.com/esengine/luckerr/discussions"><img src="https://img.shields.io/github/discussions/esengine/luckerr.svg?style=flat-square&color=58a6ff&labelColor=161b22&logo=github&logoColor=white" alt="Discussions"/></a>
|
|
28
|
+
</p>
|
|
29
|
+
|
|
30
|
+
<p align="center">
|
|
31
|
+
<a href="https://oosmetrics.com/repo/esengine/luckerr"><img src="https://api.oosmetrics.com/api/v1/badge/achievement/9e931d80-2050-4b10-902e-44970cc133ad.svg" alt="oosmetrics — Agents 速度榜 Top 2"/></a>
|
|
32
|
+
<a href="https://oosmetrics.com/repo/esengine/luckerr"><img src="https://api.oosmetrics.com/api/v1/badge/achievement/556d94b3-61b7-486b-baf2-888b9327deab.svg" alt="oosmetrics — LLMs 速度榜 Top 3"/></a>
|
|
33
|
+
<a href="https://oosmetrics.com/repo/esengine/luckerr"><img src="https://api.oosmetrics.com/api/v1/badge/achievement/0f457d4c-efca-4d15-ad2b-139691ff342c.svg" alt="oosmetrics — CLI 速度榜 Top 3"/></a>
|
|
34
|
+
</p>
|
|
35
|
+
|
|
36
|
+
<br/>
|
|
37
|
+
|
|
38
|
+
<h3 align="center">DeepSeek 原生的终端 AI 编程代理。</h3>
|
|
39
|
+
<p align="center">围绕前缀缓存稳定性设计 —— 长会话下 token 成本始终低位运行,可以一直开着。</p>
|
|
40
|
+
|
|
41
|
+
<br/>
|
|
42
|
+
|
|
43
|
+
<p align="center">
|
|
44
|
+
<img src="docs/assets/hero-terminal.zh-CN.svg" alt="Luckerr code 模式预览 — 助手提出 SEARCH/REPLACE 编辑,未 /apply 不落盘" width="860"/>
|
|
45
|
+
</p>
|
|
46
|
+
|
|
47
|
+
<br/>
|
|
48
|
+
|
|
49
|
+
> [!TIP]
|
|
50
|
+
> **缓存稳定不是开关,而是循环要围绕设计的不变量。** 这就是 Luckerr 只支持 DeepSeek 的根本原因 —— 每一层都为 DeepSeek 字节稳定的前缀缓存机制调过。
|
|
51
|
+
|
|
52
|
+
<br/>
|
|
53
|
+
|
|
54
|
+
## 安装
|
|
55
|
+
|
|
56
|
+
```bash
|
|
57
|
+
cd my-project
|
|
58
|
+
npx luckerr code # 首次运行粘贴 DeepSeek API Key,之后会记住
|
|
59
|
+
```
|
|
60
|
+
|
|
61
|
+
要求 Node ≥ 22。在 macOS · Linux · Windows(PowerShell · Git Bash · Windows Terminal)都跑得顺。[去拿 DeepSeek API Key →](https://platform.deepseek.com/api_keys) · 完整 flag 看 `luckerr code --help`。
|
|
62
|
+
|
|
63
|
+
`npx` 是推荐路径 —— 不用全局安装,每次都拿最新版。如果你天天用、想把 `luckerr` 装到 `PATH`,跑一次 `luckerr update`。
|
|
64
|
+
|
|
65
|
+
| 命令 | 何时用 |
|
|
66
|
+
|---|---|
|
|
67
|
+
| `luckerr code [dir]` | 编码 agent。**先用这个。** |
|
|
68
|
+
| `luckerr chat` | 纯聊天 —— 不挂文件系统 / shell 工具。 |
|
|
69
|
+
| `luckerr run "task"` | 一次性,结果流到 stdout。适合 shell 管道。 |
|
|
70
|
+
| `luckerr doctor` | 体检:Node 版本、API Key、MCP 接线。 |
|
|
71
|
+
| `luckerr update` | 升级 Luckerr 本身。 |
|
|
72
|
+
|
|
73
|
+
其他子命令(`replay` · `diff` · `events` · `stats` · `index` · `mcp` · `prune-sessions`)在 `luckerr --help` 和 [CLI 参考](https://esengine.github.io/DeepSeek-Luckerr/#cli)。
|
|
74
|
+
|
|
75
|
+
<details>
|
|
76
|
+
<summary><strong>切换工作区 · chat vs. code · 写第一个 Skill</strong></summary>
|
|
77
|
+
|
|
78
|
+
**切换工作区。** Luckerr 把文件系统工具作用域绑定在启动目录,传 `--dir` 可以指别处。中途切换是有意不支持的(消息日志和 memory 路径会和旧根目录混在一起)—— 退出再启动。
|
|
79
|
+
|
|
80
|
+
```bash
|
|
81
|
+
npx luckerr code --dir /path/to/project
|
|
82
|
+
```
|
|
83
|
+
|
|
84
|
+
**`chat` 还是 `code`?** `code` 是默认入口、唯一带文件系统 / shell 工具和 SEARCH/REPLACE 审阅的模式。`chat` 是更轻量的纯对话壳——想要一个挂着 MCP 但没有磁盘权限的“思路助手”时用它。
|
|
85
|
+
|
|
86
|
+
| 你拿到什么 | `code` | `chat` |
|
|
87
|
+
|---|---|---|
|
|
88
|
+
| 文件系统工具 + `edit_file` | ✓ | — |
|
|
89
|
+
| SEARCH/REPLACE → `/apply` 审阅 | ✓ | — |
|
|
90
|
+
| Shell 工具(带 gate) | ✓ | — |
|
|
91
|
+
| Plan 模式 · `/todo` · `/skill new` · `/mcp add` | ✓ | — |
|
|
92
|
+
| Memory(`remember` / `recall_memory`) | 项目 + 全局 | 仅全局 |
|
|
93
|
+
| 配置里的 MCP · web 搜索 · `ask_choice` | ✓ | ✓ |
|
|
94
|
+
| 编码导向系统提示词 | ✓ | 通用 |
|
|
95
|
+
| Session 作用域 | 按目录 | 共享默认 |
|
|
96
|
+
|
|
97
|
+
**写第一个 Skill。** 暂无在线市场——自己写。编辑文件(`description:` frontmatter + 正文),然后 `/skill list` 就能看到。frontmatter 加 `runAs: subagent` 会以隔离 subagent 跑,而不是把正文内联进父 prompt。
|
|
98
|
+
|
|
99
|
+
```bash
|
|
100
|
+
/skill new my-skill # <project>/.luckerr/skills/my-skill.md
|
|
101
|
+
/skill new my-skill --global # ~/.luckerr/skills,跨项目共用
|
|
102
|
+
```
|
|
103
|
+
|
|
104
|
+
</details>
|
|
105
|
+
|
|
106
|
+
<br/>
|
|
107
|
+
|
|
108
|
+
## 配置
|
|
109
|
+
|
|
110
|
+
一个全局 JSON 文件 `~/.luckerr/config.json`,加上项目级 `<project>/.luckerr/` 下的覆盖。完整的双语参考 —— 每一个 key、每一条斜杠命令、skills / memory / hooks 在磁盘上的形状 —— 都在这里:
|
|
111
|
+
|
|
112
|
+
> 📘 **[配置指南](https://esengine.github.io/DeepSeek-Luckerr/configuration.html?lang=zh)** · [English](https://esengine.github.io/DeepSeek-Luckerr/configuration.html)
|
|
113
|
+
|
|
114
|
+
| 主题 | 速读 |
|
|
115
|
+
|---|---|
|
|
116
|
+
| [MCP 服务器](https://esengine.github.io/DeepSeek-Luckerr/configuration.html?lang=zh#mcp) | stdio · SSE · Streamable HTTP。`config.json` 和 `--mcp` 共用同一种 spec 格式。 |
|
|
117
|
+
| [Skills](https://esengine.github.io/DeepSeek-Luckerr/configuration.html?lang=zh#skills) | 模型可以调用的 markdown 剧本。`inline` 或 `subagent` 两种模式。 |
|
|
118
|
+
| [Memory](https://esengine.github.io/DeepSeek-Luckerr/configuration.html?lang=zh#memory) | 用户私有的知识,钉进前缀。`user` / `feedback` / `project` / `reference` 四类。 |
|
|
119
|
+
| [Hooks](https://esengine.github.io/DeepSeek-Luckerr/configuration.html?lang=zh#hooks) | 生命周期事件触发的 shell 命令。`PreToolUse`(拦截)· `PostToolUse` · `UserPromptSubmit` · `Stop`。 |
|
|
120
|
+
| [权限](https://esengine.github.io/DeepSeek-Luckerr/configuration.html?lang=zh#permissions) | 按工作区的 shell 白名单,精确前缀匹配。 |
|
|
121
|
+
| [Web 搜索](https://esengine.github.io/DeepSeek-Luckerr/configuration.html?lang=zh#search) | 默认 Mojeek;用 `/search-engine` 可切到自托管的 SearXNG。 |
|
|
122
|
+
| [语义索引](https://esengine.github.io/DeepSeek-Luckerr/configuration.html?lang=zh#index) | `luckerr index` —— 本地 Ollama,或任何 OpenAI 兼容的 embedding 接口。 |
|
|
123
|
+
|
|
124
|
+
> **模型与预设持久化:** 你上一次选择的模型或预设(通过 `/model`、`/preset` 或模型选择器)会保存到 `config.json`,重启后自动恢复。`--model` / `--preset` 命令行参数仍然可以覆盖,用于一次性运行。
|
|
125
|
+
|
|
126
|
+
<br/>
|
|
127
|
+
|
|
128
|
+
## Luckerr 的不同之处
|
|
129
|
+
|
|
130
|
+
整个循环围绕三根支柱组织。每一根解决的都是通用 agent 框架根本看不见的问题 —— 因为它们是为另一种缓存机制设计的。
|
|
131
|
+
|
|
132
|
+
<sub align="center">
|
|
133
|
+
|
|
134
|
+
各支柱完整说明 → [Pillar 1 — 缓存优先循环](./docs/ARCHITECTURE.md#pillar-1--cache-first-loop) · [Pillar 2 — 工具调用修复](./docs/ARCHITECTURE.md#pillar-2--tool-call-repair) · [Pillar 3 — 成本控制](./docs/ARCHITECTURE.md#pillar-3--cost-control-v06)
|
|
135
|
+
|
|
136
|
+
</sub>
|
|
137
|
+
|
|
138
|
+
<br/>
|
|
139
|
+
|
|
140
|
+
## 能力一览
|
|
141
|
+
|
|
142
|
+
<p align="center">
|
|
143
|
+
<img src="docs/assets/feature-grid.zh-CN.svg" alt="Luckerr 能力一览 — cell-diff 渲染器、MCP、计划模式、权限、仪表盘、持久化会话、Hooks/Skills/Memory、语义检索、自动 checkpoint、/effort 旋钮、transcript 重放、事件日志" width="880"/>
|
|
144
|
+
</p>
|
|
145
|
+
|
|
146
|
+
<br/>
|
|
147
|
+
|
|
148
|
+
## 横向对比
|
|
149
|
+
|
|
150
|
+
| | Luckerr | Claude Code | Cursor | Aider |
|
|
151
|
+
|----------------------------|-------------------|-------------------|---------------------|--------------------|
|
|
152
|
+
| 后端 | DeepSeek | Anthropic | OpenAI / Anthropic | 任意(OpenRouter) |
|
|
153
|
+
| 协议 | **MIT** | 闭源 | 闭源 | Apache 2 |
|
|
154
|
+
| 单任务成本 | **低** | 高 | 订阅 + 用量 | 不一 |
|
|
155
|
+
| DeepSeek 前缀缓存 | **专门工程化** | 不适用 | 不适用 | 偶发命中 |
|
|
156
|
+
| 内嵌 web 仪表盘 | 支持 | — | 不适用 (IDE) | — |
|
|
157
|
+
| 持久化的工作区会话 | 支持 | 部分 | 不适用 | — |
|
|
158
|
+
| 计划模式 · MCP · Hooks | 支持 | 支持 | 支持 | 部分 |
|
|
159
|
+
| 开放社区共建 | 支持 | — | — | 支持 |
|
|
160
|
+
|
|
161
|
+
实测缓存命中率、成本、方法论看 [`benchmarks/`](./benchmarks/) —— 这些数会随模型定价变化,所以归在 harness 里,不进 README。
|
|
162
|
+
|
|
163
|
+
<br/>
|
|
164
|
+
|
|
165
|
+
## 文档
|
|
166
|
+
|
|
167
|
+
- [**架构**](./docs/ARCHITECTURE.md) —— 四大支柱、缓存优先循环、思维提取、脚手架
|
|
168
|
+
- [**CLI 参考**](./docs/CLI-REFERENCE.md) —— 每个 shell 子命令、每个 slash 命令、每个快捷键
|
|
169
|
+
- [**基准测试**](./benchmarks/) —— τ-bench-lite harness、transcript、成本方法论
|
|
170
|
+
- [**官方网站**](https://esengine.github.io/DeepSeek-Luckerr/) —— 入门、Dashboard 设计稿、TUI 设计稿
|
|
171
|
+
- [**贡献指南**](./CONTRIBUTING.md) —— 注释规则、错误处理、用现成库不手写
|
|
172
|
+
- [**行为准则**](./CODE_OF_CONDUCT.md) · [**安全策略**](./SECURITY.md)
|
|
173
|
+
|
|
174
|
+
<br/>
|
|
175
|
+
|
|
176
|
+
## 社区
|
|
177
|
+
|
|
178
|
+
> [!NOTE]
|
|
179
|
+
> Luckerr 是开源、社区共建的项目。下面贡献者墙不是装饰 —— 每一个头像都对应一次真实合并的 PR。
|
|
180
|
+
|
|
181
|
+
给新手准备的入门 issue —— 每个都带背景说明、代码定位、验收标准、提示 —— 全部挂在 [`good first issue`](https://github.com/esengine/luckerr/labels/good%20first%20issue) 标签下。挑任意一个还没人认领的就行。
|
|
182
|
+
|
|
183
|
+
**正在征集意见的 Discussions:**
|
|
184
|
+
|
|
185
|
+
- [#20 · CLI / TUI 设计](https://github.com/esengine/luckerr/discussions/20) —— 哪里坏了、哪里少东西、哪里你会怎么改?
|
|
186
|
+
- [#21 · Dashboard 设计](https://github.com/esengine/luckerr/discussions/21) —— 对着[设计稿](https://esengine.github.io/DeepSeek-Luckerr/design/agent-dashboard.html)拍砖
|
|
187
|
+
- [#22 · 未来功能愿望单](https://github.com/esengine/luckerr/discussions/22) —— 你希望 Luckerr 长出什么功能?
|
|
188
|
+
|
|
189
|
+
**正在使用 Luckerr,愿意让更多人了解它?** 欢迎将相关博客、文章、截图、演讲或视频发布到 [**Show and tell**](https://github.com/esengine/luckerr/discussions/categories/show-and-tell)。项目没有营销预算,新用户主要通过社区口碑找到这里。持续参与传播的用户将获得下方这枚徽章,颁发后会展示在贡献者墙旁:
|
|
190
|
+
|
|
191
|
+
<p align="center">
|
|
192
|
+
<a href="https://github.com/esengine/luckerr/discussions/categories/show-and-tell">
|
|
193
|
+
<img src="https://img.shields.io/badge/LUCKERR-📣%20ADVOCATE-c4b5fd?style=for-the-badge&labelColor=0d1117" alt="Luckerr Advocate 徽章 —— 授予持续参与传播的用户"/>
|
|
194
|
+
</a>
|
|
195
|
+
</p>
|
|
196
|
+
|
|
197
|
+
**第一次提 PR 之前**:先读 [`CONTRIBUTING.md`](./CONTRIBUTING.md) —— 短小、严格的项目规则(注释、错误处理、用现成库不手写)。`tests/comment-policy.test.ts` 静态强制执行注释那部分,`npm run verify` 是 push 前的闸。参与本项目即同意 [行为准则](./CODE_OF_CONDUCT.md)。安全相关问题请走 [SECURITY.md](./SECURITY.md)。
|
|
198
|
+
|
|
199
|
+
<p align="center">
|
|
200
|
+
<a href="https://github.com/esengine/luckerr/graphs/contributors">
|
|
201
|
+
<img src="https://contrib.rocks/image?repo=esengine/DeepSeek-Luckerr&max=100&columns=12" alt="esengine/DeepSeek-Luckerr 贡献者" width="860"/>
|
|
202
|
+
</a>
|
|
203
|
+
</p>
|
|
204
|
+
|
|
205
|
+
<br/>
|
|
206
|
+
|
|
207
|
+
## 不做的事
|
|
208
|
+
|
|
209
|
+
> [!IMPORTANT]
|
|
210
|
+
> Luckerr 是有立场的。有些事它故意 *不做* —— 列在这里方便你为自己的工作挑对工具。
|
|
211
|
+
|
|
212
|
+
- **多供应商灵活性。** 故意只做 DeepSeek。绑死一个后端是 feature,不是限制。
|
|
213
|
+
- **IDE 集成。** 终端优先。diff 在 `git diff`,文件树在 `ls`。仪表盘是 TUI 的伴生,不是 Cursor 的替代。
|
|
214
|
+
- **追最难的 reasoning 榜单。** Claude Opus 在某些榜单上还是赢家。DeepSeek 在编程任务上有竞争力;如果你的工作是"解一个 PhD 级证明"而不是"修个 auth bug",先用 Claude。
|
|
215
|
+
- **完全离线 / 永远免费。** Luckerr 需要付费的 DeepSeek API Key。要离线 / 零成本,看 Aider + Ollama 或 [Continue](https://continue.dev)。
|
|
216
|
+
|
|
217
|
+
<br/>
|
|
218
|
+
|
|
219
|
+
## Star 趋势
|
|
220
|
+
|
|
221
|
+
<a href="https://www.star-history.com/?repos=esengine%2FDeepSeek-Luckerr&type=date&legend=top-left">
|
|
222
|
+
<picture>
|
|
223
|
+
<source media="(prefers-color-scheme: dark)" srcset="https://api.star-history.com/chart?repos=esengine/DeepSeek-Luckerr&type=date&theme=dark&legend=top-left" />
|
|
224
|
+
<source media="(prefers-color-scheme: light)" srcset="https://api.star-history.com/chart?repos=esengine/DeepSeek-Luckerr&type=date&legend=top-left" />
|
|
225
|
+
<img alt="Star History Chart" src="https://api.star-history.com/chart?repos=esengine/DeepSeek-Luckerr&type=date&legend=top-left" />
|
|
226
|
+
</picture>
|
|
227
|
+
</a>
|
|
228
|
+
|
|
229
|
+
<br/>
|
|
230
|
+
|
|
231
|
+
---
|
|
232
|
+
|
|
233
|
+
<p align="center">
|
|
234
|
+
<sub>MIT —— 见 <a href="./LICENSE">LICENSE</a></sub>
|
|
235
|
+
<br/>
|
|
236
|
+
<sub>由 <a href="https://github.com/esengine/luckerr/graphs/contributors">esengine/luckerr</a> 社区共建</sub>
|
|
237
|
+
</p>
|