@shawnstack/quickforge 1.3.20 → 1.3.22

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.
Files changed (188) hide show
  1. package/README.md +348 -348
  2. package/dist/assets/{anthropic-Bj3HAZgj.js → anthropic-CDKnv1FQ.js} +1 -1
  3. package/dist/assets/{azure-openai-responses-IdZZrSrI.js → azure-openai-responses-BnUwVl-8.js} +1 -1
  4. package/dist/assets/{google-Brt_lS1J.js → google-DOEyCDZy.js} +1 -1
  5. package/dist/assets/{google-vertex-B6HsoZ34.js → google-vertex-BPPf3car.js} +1 -1
  6. package/dist/assets/{icons-BHkxP7oT.js → icons-WD3UkVNM.js} +1 -1
  7. package/dist/assets/{index-D0CVLdX_.js → index-CjTN0qaQ.js} +586 -554
  8. package/dist/assets/index-eeLjaV06.css +3 -0
  9. package/dist/assets/{mistral-CenXqwPz.js → mistral-Ber29mja.js} +1 -1
  10. package/dist/assets/{openai-codex-responses-D9ffGwbj.js → openai-codex-responses-D8gq8a3l.js} +1 -1
  11. package/dist/assets/{openai-completions-eWdeSGBG.js → openai-completions-CATWPFBp.js} +1 -1
  12. package/dist/assets/{openai-responses-Cavpmjeu.js → openai-responses-DxcB6Ksu.js} +1 -1
  13. package/dist/assets/{openai-responses-shared-DF3ZGaUx.js → openai-responses-shared-a_PAPxTO.js} +1 -1
  14. package/dist/assets/{react-vendor-CmyL2roG.js → react-vendor-BcQaTQ90.js} +1 -1
  15. package/dist/index.html +4 -4
  16. package/node_modules/@aws-sdk/client-bedrock-runtime/dist-cjs/index.js +1 -0
  17. package/node_modules/@aws-sdk/client-bedrock-runtime/dist-es/models/enums.js +1 -0
  18. package/node_modules/@aws-sdk/client-bedrock-runtime/package.json +11 -11
  19. package/node_modules/@aws-sdk/core/package.json +3 -3
  20. package/node_modules/@aws-sdk/credential-provider-env/package.json +3 -3
  21. package/node_modules/@aws-sdk/credential-provider-http/package.json +5 -5
  22. package/node_modules/@aws-sdk/credential-provider-ini/package.json +11 -11
  23. package/node_modules/@aws-sdk/credential-provider-login/package.json +4 -4
  24. package/node_modules/@aws-sdk/credential-provider-node/package.json +9 -9
  25. package/node_modules/@aws-sdk/credential-provider-process/package.json +3 -3
  26. package/node_modules/@aws-sdk/credential-provider-sso/node_modules/@aws-sdk/token-providers/LICENSE +201 -0
  27. package/node_modules/@aws-sdk/credential-provider-sso/node_modules/@aws-sdk/token-providers/README.md +62 -0
  28. package/node_modules/@aws-sdk/credential-provider-sso/node_modules/@aws-sdk/token-providers/dist-cjs/index.js +156 -0
  29. package/node_modules/@aws-sdk/credential-provider-sso/node_modules/@aws-sdk/token-providers/dist-es/constants.js +2 -0
  30. package/node_modules/@aws-sdk/credential-provider-sso/node_modules/@aws-sdk/token-providers/dist-es/fromEnvSigningName.js +16 -0
  31. package/node_modules/@aws-sdk/credential-provider-sso/node_modules/@aws-sdk/token-providers/dist-es/fromSso.js +80 -0
  32. package/node_modules/@aws-sdk/credential-provider-sso/node_modules/@aws-sdk/token-providers/dist-es/fromStatic.js +8 -0
  33. package/node_modules/@aws-sdk/credential-provider-sso/node_modules/@aws-sdk/token-providers/dist-es/getNewSsoOidcToken.js +11 -0
  34. package/node_modules/@aws-sdk/credential-provider-sso/node_modules/@aws-sdk/token-providers/dist-es/getSsoOidcClient.js +10 -0
  35. package/node_modules/@aws-sdk/credential-provider-sso/node_modules/@aws-sdk/token-providers/dist-es/index.js +4 -0
  36. package/node_modules/@aws-sdk/credential-provider-sso/node_modules/@aws-sdk/token-providers/dist-es/nodeProvider.js +5 -0
  37. package/node_modules/@aws-sdk/credential-provider-sso/node_modules/@aws-sdk/token-providers/dist-es/validateTokenExpiry.js +7 -0
  38. package/node_modules/@aws-sdk/credential-provider-sso/node_modules/@aws-sdk/token-providers/dist-es/validateTokenKey.js +7 -0
  39. package/node_modules/@aws-sdk/credential-provider-sso/node_modules/@aws-sdk/token-providers/dist-es/writeSSOTokenToFile.js +8 -0
  40. package/node_modules/@aws-sdk/credential-provider-sso/node_modules/@aws-sdk/token-providers/package.json +69 -0
  41. package/node_modules/@aws-sdk/credential-provider-sso/package.json +5 -5
  42. package/node_modules/@aws-sdk/credential-provider-web-identity/package.json +4 -4
  43. package/node_modules/@aws-sdk/eventstream-handler-node/package.json +2 -2
  44. package/node_modules/@aws-sdk/middleware-eventstream/package.json +2 -2
  45. package/node_modules/@aws-sdk/middleware-websocket/package.json +5 -5
  46. package/node_modules/@aws-sdk/nested-clients/dist-cjs/submodules/cognito-identity/index.js +1 -1
  47. package/node_modules/@aws-sdk/nested-clients/dist-cjs/submodules/signin/index.js +1 -1
  48. package/node_modules/@aws-sdk/nested-clients/dist-cjs/submodules/sso/index.js +1 -1
  49. package/node_modules/@aws-sdk/nested-clients/dist-cjs/submodules/sso-oidc/index.js +1 -1
  50. package/node_modules/@aws-sdk/nested-clients/dist-cjs/submodules/sts/index.js +1 -1
  51. package/node_modules/@aws-sdk/nested-clients/package.json +6 -6
  52. package/node_modules/@aws-sdk/signature-v4-multi-region/package.json +2 -2
  53. package/node_modules/@aws-sdk/token-providers/package.json +4 -4
  54. package/node_modules/@nodable/entities/package.json +1 -1
  55. package/node_modules/@nodable/entities/src/EntityDecoder.js +1 -1
  56. package/node_modules/@nodable/entities/src/entities.js +0 -18
  57. package/node_modules/@smithy/core/dist-cjs/index.js +3 -4
  58. package/node_modules/@smithy/core/dist-cjs/submodules/client/index.js +3 -11
  59. package/node_modules/@smithy/core/dist-cjs/submodules/config/index.browser.js +2 -2
  60. package/node_modules/@smithy/core/dist-cjs/submodules/config/index.js +2 -2
  61. package/node_modules/@smithy/core/dist-cjs/submodules/config/index.native.js +2 -2
  62. package/node_modules/@smithy/core/dist-cjs/submodules/endpoints/index.browser.js +9 -40
  63. package/node_modules/@smithy/core/dist-cjs/submodules/endpoints/index.js +9 -40
  64. package/node_modules/@smithy/core/dist-cjs/submodules/protocols/index.js +12 -142
  65. package/node_modules/@smithy/core/dist-cjs/submodules/schema/index.js +7 -9
  66. package/node_modules/@smithy/core/dist-cjs/submodules/serde/index.browser.js +2 -2
  67. package/node_modules/@smithy/core/dist-cjs/submodules/serde/index.js +2 -2
  68. package/node_modules/@smithy/core/dist-cjs/submodules/serde/index.native.js +2 -2
  69. package/node_modules/@smithy/core/dist-cjs/submodules/transport/index.js +184 -0
  70. package/node_modules/@smithy/core/dist-es/index.js +6 -6
  71. package/node_modules/@smithy/core/dist-es/submodules/client/index.js +2 -2
  72. package/node_modules/@smithy/core/dist-es/submodules/config/config-resolver/regionConfig/checkRegion.js +1 -1
  73. package/node_modules/@smithy/core/dist-es/submodules/endpoints/index.browser.js +2 -2
  74. package/node_modules/@smithy/core/dist-es/submodules/endpoints/index.js +2 -2
  75. package/node_modules/@smithy/core/dist-es/submodules/endpoints/middleware-endpoint/adaptors/toEndpointV1.js +1 -1
  76. package/node_modules/@smithy/core/dist-es/submodules/endpoints/middleware-endpoint/resolveEndpointConfig.js +1 -1
  77. package/node_modules/@smithy/core/dist-es/submodules/endpoints/util-endpoints/lib/index.js +1 -1
  78. package/node_modules/@smithy/core/dist-es/submodules/protocols/HttpBindingProtocol.js +1 -1
  79. package/node_modules/@smithy/core/dist-es/submodules/protocols/HttpProtocol.js +1 -2
  80. package/node_modules/@smithy/core/dist-es/submodules/protocols/RpcProtocol.js +1 -1
  81. package/node_modules/@smithy/core/dist-es/submodules/protocols/index.js +5 -5
  82. package/node_modules/@smithy/core/dist-es/submodules/protocols/middleware-content-length/contentLengthMiddleware.js +1 -1
  83. package/node_modules/@smithy/core/dist-es/submodules/protocols/requestBuilder.js +1 -1
  84. package/node_modules/@smithy/core/dist-es/submodules/schema/middleware/schemaDeserializationMiddleware.js +3 -4
  85. package/node_modules/@smithy/core/dist-es/submodules/schema/middleware/schemaSerializationMiddleware.js +1 -2
  86. package/node_modules/@smithy/core/dist-es/submodules/serde/middleware-serde/deserializerMiddleware.js +1 -1
  87. package/node_modules/@smithy/core/dist-es/submodules/transport/index.js +9 -0
  88. package/node_modules/@smithy/core/dist-es/submodules/{protocols/url-parser → transport}/parseUrl.js +1 -1
  89. package/node_modules/@smithy/core/dist-es/submodules/{endpoints → transport}/toEndpointV1.js +1 -1
  90. package/node_modules/@smithy/core/package.json +19 -10
  91. package/node_modules/@smithy/core/transport.js +5 -0
  92. package/node_modules/@smithy/credential-provider-imds/dist-cjs/index.js +14 -13
  93. package/node_modules/@smithy/credential-provider-imds/dist-es/fromContainerMetadata.js +14 -13
  94. package/node_modules/@smithy/credential-provider-imds/package.json +2 -2
  95. package/node_modules/@smithy/fetch-http-handler/package.json +2 -2
  96. package/node_modules/@smithy/node-http-handler/package.json +2 -2
  97. package/node_modules/@smithy/signature-v4/package.json +2 -2
  98. package/node_modules/eventsource-parser/README.md +31 -0
  99. package/node_modules/eventsource-parser/dist/index.cjs +21 -10
  100. package/node_modules/eventsource-parser/dist/index.js +21 -10
  101. package/node_modules/eventsource-parser/dist/stream.cjs +4 -3
  102. package/node_modules/eventsource-parser/dist/stream.js +4 -3
  103. package/node_modules/eventsource-parser/package.json +8 -8
  104. package/node_modules/hasown/CHANGELOG.md +7 -0
  105. package/node_modules/hasown/package.json +4 -5
  106. package/node_modules/protobufjs/dist/light/protobuf.js +7 -5
  107. package/node_modules/protobufjs/dist/light/protobuf.min.js +3 -3
  108. package/node_modules/protobufjs/dist/minimal/protobuf.js +3 -3
  109. package/node_modules/protobufjs/dist/minimal/protobuf.min.js +3 -3
  110. package/node_modules/protobufjs/dist/protobuf.js +7 -5
  111. package/node_modules/protobufjs/dist/protobuf.min.js +3 -3
  112. package/node_modules/protobufjs/package.json +1 -1
  113. package/node_modules/protobufjs/src/converter.js +4 -2
  114. package/node_modules/protobufjs/src/roots.js +1 -1
  115. package/node_modules/typebox/build/type/script/mapping.mjs +15 -8
  116. package/node_modules/typebox/build/type/script/parser.mjs +2 -1
  117. package/node_modules/typebox/package.json +29 -29
  118. package/package.json +1 -1
  119. package/server/agent-manager.mjs +63 -25
  120. package/server/agent-profiles.mjs +191 -0
  121. package/server/auto-compaction.mjs +20 -0
  122. package/server/index.mjs +32 -8
  123. package/server/mcp/registry.mjs +13 -2
  124. package/server/routes/agent-profiles.mjs +172 -0
  125. package/server/routes/lan-access.mjs +20 -0
  126. package/server/routes/scheduled-tasks.mjs +161 -47
  127. package/server/routes/shared-conversation.mjs +14 -0
  128. package/server/routes/storage.mjs +10 -0
  129. package/server/routes/terminal.mjs +13 -3
  130. package/server/session-utils.mjs +2 -2
  131. package/server/storage.mjs +3 -4
  132. package/server/system-prompt.mjs +10 -5
  133. package/server/terminal/terminal-manager.mjs +9 -1
  134. package/server/tools/definitions.mjs +2 -7
  135. package/server/utils/response.mjs +4 -0
  136. package/dist/assets/index-D0W9hAl_.css +0 -3
  137. package/node_modules/@smithy/core/dist-cjs/getSmithyContext.js +0 -6
  138. package/node_modules/@smithy/core/dist-cjs/middleware-http-auth-scheme/getHttpAuthSchemeEndpointRuleSetPlugin.js +0 -21
  139. package/node_modules/@smithy/core/dist-cjs/middleware-http-auth-scheme/getHttpAuthSchemePlugin.js +0 -21
  140. package/node_modules/@smithy/core/dist-cjs/middleware-http-auth-scheme/httpAuthSchemeMiddleware.js +0 -46
  141. package/node_modules/@smithy/core/dist-cjs/middleware-http-auth-scheme/index.js +0 -6
  142. package/node_modules/@smithy/core/dist-cjs/middleware-http-auth-scheme/resolveAuthOptions.js +0 -24
  143. package/node_modules/@smithy/core/dist-cjs/middleware-http-signing/getHttpSigningMiddleware.js +0 -19
  144. package/node_modules/@smithy/core/dist-cjs/middleware-http-signing/httpSigningMiddleware.js +0 -27
  145. package/node_modules/@smithy/core/dist-cjs/middleware-http-signing/index.js +0 -5
  146. package/node_modules/@smithy/core/dist-cjs/normalizeProvider.js +0 -10
  147. package/node_modules/@smithy/core/dist-cjs/pagination/createPaginator.js +0 -44
  148. package/node_modules/@smithy/core/dist-cjs/request-builder/requestBuilder.js +0 -5
  149. package/node_modules/@smithy/core/dist-cjs/setFeature.js +0 -14
  150. package/node_modules/@smithy/core/dist-cjs/util-identity-and-auth/DefaultIdentityProviderConfig.js +0 -18
  151. package/node_modules/@smithy/core/dist-cjs/util-identity-and-auth/httpAuthSchemes/httpApiKeyAuth.js +0 -38
  152. package/node_modules/@smithy/core/dist-cjs/util-identity-and-auth/httpAuthSchemes/httpBearerAuth.js +0 -15
  153. package/node_modules/@smithy/core/dist-cjs/util-identity-and-auth/httpAuthSchemes/index.js +0 -6
  154. package/node_modules/@smithy/core/dist-cjs/util-identity-and-auth/httpAuthSchemes/noAuth.js +0 -9
  155. package/node_modules/@smithy/core/dist-cjs/util-identity-and-auth/index.js +0 -6
  156. package/node_modules/@smithy/core/dist-cjs/util-identity-and-auth/memoizeIdentityProvider.js +0 -61
  157. package/node_modules/@smithy/core/dist-es/request-builder/requestBuilder.js +0 -1
  158. package/node_modules/@smithy/core/dist-es/submodules/client/util-middleware/getSmithyContext.js +0 -2
  159. package/node_modules/@smithy/core/dist-es/submodules/event-streams/eventstream-codec/TestVectors.fixture.js +0 -146
  160. package/node_modules/@smithy/core/dist-es/submodules/event-streams/eventstream-codec/vectorTypes.fixture.js +0 -1
  161. package/node_modules/@smithy/credential-provider-imds/dist-es/remoteProvider/index.js +0 -2
  162. package/node_modules/@smithy/node-http-handler/dist-es/readable.mock.js +0 -21
  163. package/node_modules/@smithy/node-http-handler/dist-es/server.mock.js +0 -88
  164. package/node_modules/@smithy/node-http-handler/dist-es/stream-collector/readable.mock.js +0 -21
  165. package/node_modules/@smithy/signature-v4/dist-es/suite.fixture.js +0 -399
  166. /package/node_modules/@smithy/core/dist-es/{middleware-http-auth-scheme → legacy-root-exports/middleware-http-auth-scheme}/getHttpAuthSchemeEndpointRuleSetPlugin.js +0 -0
  167. /package/node_modules/@smithy/core/dist-es/{middleware-http-auth-scheme → legacy-root-exports/middleware-http-auth-scheme}/getHttpAuthSchemePlugin.js +0 -0
  168. /package/node_modules/@smithy/core/dist-es/{middleware-http-auth-scheme → legacy-root-exports/middleware-http-auth-scheme}/httpAuthSchemeMiddleware.js +0 -0
  169. /package/node_modules/@smithy/core/dist-es/{middleware-http-auth-scheme → legacy-root-exports/middleware-http-auth-scheme}/index.js +0 -0
  170. /package/node_modules/@smithy/core/dist-es/{middleware-http-auth-scheme → legacy-root-exports/middleware-http-auth-scheme}/resolveAuthOptions.js +0 -0
  171. /package/node_modules/@smithy/core/dist-es/{middleware-http-signing → legacy-root-exports/middleware-http-signing}/getHttpSigningMiddleware.js +0 -0
  172. /package/node_modules/@smithy/core/dist-es/{middleware-http-signing → legacy-root-exports/middleware-http-signing}/httpSigningMiddleware.js +0 -0
  173. /package/node_modules/@smithy/core/dist-es/{middleware-http-signing → legacy-root-exports/middleware-http-signing}/index.js +0 -0
  174. /package/node_modules/@smithy/core/dist-es/{pagination → legacy-root-exports/pagination}/createPaginator.js +0 -0
  175. /package/node_modules/@smithy/core/dist-es/{util-identity-and-auth → legacy-root-exports/util-identity-and-auth}/DefaultIdentityProviderConfig.js +0 -0
  176. /package/node_modules/@smithy/core/dist-es/{util-identity-and-auth → legacy-root-exports/util-identity-and-auth}/httpAuthSchemes/httpApiKeyAuth.js +0 -0
  177. /package/node_modules/@smithy/core/dist-es/{util-identity-and-auth → legacy-root-exports/util-identity-and-auth}/httpAuthSchemes/httpBearerAuth.js +0 -0
  178. /package/node_modules/@smithy/core/dist-es/{util-identity-and-auth → legacy-root-exports/util-identity-and-auth}/httpAuthSchemes/index.js +0 -0
  179. /package/node_modules/@smithy/core/dist-es/{util-identity-and-auth → legacy-root-exports/util-identity-and-auth}/httpAuthSchemes/noAuth.js +0 -0
  180. /package/node_modules/@smithy/core/dist-es/{util-identity-and-auth → legacy-root-exports/util-identity-and-auth}/index.js +0 -0
  181. /package/node_modules/@smithy/core/dist-es/{util-identity-and-auth → legacy-root-exports/util-identity-and-auth}/memoizeIdentityProvider.js +0 -0
  182. /package/node_modules/@smithy/core/dist-es/{getSmithyContext.js → submodules/transport/getSmithyContext.js} +0 -0
  183. /package/node_modules/@smithy/core/dist-es/submodules/{protocols/protocol-http → transport}/httpRequest.js +0 -0
  184. /package/node_modules/@smithy/core/dist-es/submodules/{protocols/protocol-http → transport}/httpResponse.js +0 -0
  185. /package/node_modules/@smithy/core/dist-es/submodules/{endpoints/util-endpoints/lib → transport}/isValidHostLabel.js +0 -0
  186. /package/node_modules/@smithy/core/dist-es/submodules/{protocols/protocol-http → transport}/isValidHostname.js +0 -0
  187. /package/node_modules/@smithy/core/dist-es/submodules/{client/util-middleware → transport}/normalizeProvider.js +0 -0
  188. /package/node_modules/@smithy/core/dist-es/submodules/{protocols/querystring-parser → transport}/parseQueryString.js +0 -0
package/README.md CHANGED
@@ -1,348 +1,348 @@
1
- # 速构 QuickForge
2
-
3
- <p align="center">
4
- <img alt="Version" src="https://img.shields.io/badge/version-1.3.20-blue" />
5
- <img alt="License" src="https://img.shields.io/badge/license-MIT-green" />
6
- <img alt="Node" src="https://img.shields.io/badge/node-%3E%3D20-brightgreen" />
7
- <img alt="React" src="https://img.shields.io/badge/react-19-61DAFB?logo=react" />
8
- <img alt="Vite" src="https://img.shields.io/badge/vite-8-646CFF?logo=vite" />
9
- </p>
10
-
11
- <p align="center">
12
- <strong>本地优先的 AI 工作台:聊天、项目上下文、本地工具、MCP、Skills 与定时任务。</strong><br />
13
- <strong>A local-first AI workspace for chat, project context, local tools, MCP, Skills, and scheduled tasks.</strong>
14
- </p>
15
-
16
- <p align="center">
17
- <a href="#中文">中文</a> · <a href="#english">English</a> · <a href="./docs/user-guide.zh-CN.md">中文教程</a> · <a href="./docs/user-guide.en-US.md">User Guide</a>
18
- </p>
19
-
20
- ---
21
-
22
- ## 中文
23
-
24
- QuickForge 是一个运行在本机的 AI 对话与研发辅助工具。它保留 ChatGPT 类产品的对话体验,同时把会话、项目目录、模型配置和工具调用放在本地服务中管理。你可以用它做普通问答,也可以把它绑定到一个代码仓库,让模型在明确授权后阅读文件、搜索代码、编辑内容并运行命令。
25
-
26
- 它的目标不是替代 IDE,也不是承诺“全自动开发”,而是提供一个可控的本地 AI 工作流入口:先理解项目,再制定计划,最后在你信任的范围内执行改动和验证。
27
-
28
- ### 适合用来做什么
29
-
30
- - **理解项目**:查看目录结构、搜索调用链、解释模块职责、梳理新人接手路径。
31
- - **小步修改代码**:让模型在项目目录内读写文件,完成文案、配置、Bug 修复或局部功能改动。
32
- - **运行验证命令**:在项目工作区执行 lint、build、test、grep 等命令,并把结果带回对话。
33
- - **沉淀可复用流程**:用 Agent Skills 和项目自定义命令保存团队常用提示词、Runbook 和操作步骤。
34
- - **连接外部工具**:通过 MCP 接入文件系统、数据库、浏览器、内部服务等工具能力(取决于你配置的 MCP Server)。
35
- - **异步/周期任务**:创建一次性、每日、每周、每月、间隔或 cron 任务,让模型按计划运行指定工作。
36
-
37
- ### 核心特性
38
-
39
- | 特性 | 说明 |
40
- |---|---|
41
- | 本地优先 | 配置、API Key、会话、项目列表、缓存和日志默认保存在 `~/.quickforge/`。QuickForge 不提供云同步,也不内置遥测。 |
42
- | 多模型提供商 | 支持 OpenAI-compatible `/v1/chat/completions` 与 Anthropic Messages API。可配置 LiteLLM、OpenRouter、DeepSeek、Qwen、Ollama 等兼容服务。 |
43
- | 普通对话与项目对话 | 普通对话适合问答;项目对话绑定本地目录,开启授权后可使用工作区工具。 |
44
- | YOLO 本地工具 | 授权模型在项目目录内读取、搜索、创建、覆盖、精确编辑文件,并从工作区运行 shell 命令。 |
45
- | MCP 集成 | 支持 stdio、SSE、Streamable HTTP (`http`) MCP Server,并将外部工具以命名空间形式注入到 Agent。 |
46
- | Agent Skills | 支持全局、共享、项目级和内置 Skills,用于加载专门的工作流说明、参考资料和工具使用规范。 |
47
- | 自定义命令 | 支持 `/compact`、`/clear` 等内置命令,也可从项目 `.ai/commands/` 或配置目录加载团队命令。 |
48
- | 会话工作流 | 支持流式回复、复制、回滚、分支、草稿恢复、会话搜索、上下文用量提示和长对话压缩。 |
49
- | 定时任务 | 支持创建、编辑、手动触发、查看历史,并为任务选择模型与参数。 |
50
- | 对话分享 | 支持创建分享链接、只读/可操作权限、可选密码保护,以及撤销分享。 |
51
- | CLI 与离线包 | 提供 `qf` / `quickforge` 命令,支持版本检查、更新,并可使用离线 tarball 安装。 |
52
-
53
- ### 安全边界
54
-
55
- QuickForge 的工具能力很直接,因此也需要谨慎使用:
56
-
57
- - 文件工具限制在绑定的项目根目录内。
58
- - `run_command` 会从项目目录启动命令,但它不是系统级沙箱,命令会以当前 OS 用户权限运行。
59
- - YOLO 模式不会为每次工具调用弹出确认;只建议在可信模型和可信项目中开启。
60
- - API Key 保存在本机配置文件中,请不要提交或分享 `~/.quickforge/`。
61
- - 重要仓库建议先提交 Git 或备份,再让模型执行修改。
62
-
63
- ### 安装
64
-
65
- #### 从 npm 安装
66
-
67
- ```bash
68
- npm install -g @shawnstack/quickforge@1.3.20
69
- qf
70
-
71
- # CLI 工具
72
- qf --version
73
- qf check-update
74
- qf update
75
- ```
76
-
77
- #### 离线安装
78
-
79
- 当前版本的离线包:
80
-
81
- ```text
82
- package-offline/shawnstack-quickforge-1.3.20.tgz
83
- ```
84
-
85
- 在安装了 Node.js 20+ 和 npm 的机器上执行:
86
-
87
- ```bash
88
- npm install -g ./package-offline/shawnstack-quickforge-1.3.20.tgz
89
- qf
90
- ```
91
-
92
- 该包由 `v1.3.20` 标签生成,包含离线安装所需的运行时依赖。
93
-
94
- ### 本地开发
95
-
96
- ```bash
97
- # 安装依赖
98
- npm install
99
-
100
- # 开发模式:本地服务 + Vite,默认端口 5176
101
- npm run dev
102
-
103
- # 生产构建与启动
104
- npm run build
105
- npm start
106
- ```
107
-
108
- 打开 [http://localhost:5176](http://localhost:5176)。
109
-
110
- Windows 用户也可以双击:
111
-
112
- - `dev-quickforge.bat`:开发模式
113
- - `start-quickforge.bat`:生产模式
114
-
115
- ### 首次配置模型
116
-
117
- QuickForge 不内置默认模型。首次打开时,如果没有配置任何模型,聊天区会显示配置引导。
118
-
119
- 你可以在设置中添加任意兼容提供商,例如:
120
-
121
- ```text
122
- Provider name: LiteLLM
123
- Protocol type: OpenAI Compatible
124
- Base URL: http://localhost:4000/v1
125
- Model ID: anthropic/claude-sonnet-4
126
- API Key: 按你的 LiteLLM 配置填写,可为空
127
- ```
128
-
129
- 也可以配置 OpenRouter、DeepSeek、Ollama 或其他 OpenAI-compatible / Anthropic-compatible 服务。模型请求会发送到你配置的提供商;QuickForge 只负责本地界面、存储、会话和工具编排。
130
-
131
- ### 常用环境变量
132
-
133
- | 变量 | 默认值 | 说明 |
134
- |---|---|---|
135
- | `QUICKFORGE_DATA_DIR` | `~/.quickforge` | 数据目录 |
136
- | `QUICKFORGE_WORKSPACE_DIR` | 项目根目录 | YOLO 工具默认工作区 |
137
- | `QUICKFORGE_HOST` | `127.0.0.1` | 服务绑定地址 |
138
- | `QUICKFORGE_PORT` | `32176`(dev)/ `5176`(prod) | 后端服务端口 |
139
- | `QUICKFORGE_VITE_PORT` | `5176` | Vite 开发服务器端口 |
140
- | `QUICKFORGE_MAX_BODY_BYTES` | `52428800` (50MB) | 请求体大小上限 |
141
-
142
- ### 数据位置
143
-
144
- 默认位于 `~/.quickforge/`(Windows 通常为 `%USERPROFILE%\.quickforge`):
145
-
146
- - `config/config.json` — 统一本地配置,包含应用设置、自定义 Provider、Provider API Key 和项目列表。该文件可能包含密钥,请勿分享。
147
- - `storage/` — 会话、会话索引、分享数据等持久化数据。
148
- - `cache/` — 可删除缓存。
149
- - `logs/` — 本地日志。
150
-
151
- ### 技术栈
152
-
153
- | 层级 | 技术 |
154
- |---|---|
155
- | 前端 | React 19, Vite 8, Tailwind CSS 4, TypeScript |
156
- | UI | shadcn-style primitives, Lucide icons, `@mariozechner/pi-web-ui` |
157
- | Agent / 模型编排 | `@mariozechner/pi-agent-core`, `@mariozechner/pi-ai`, MCP SDK |
158
- | 后端 | Node.js ESM,原生 `http` 模块 |
159
- | 存储 | 本地 JSON 文件,默认在 `~/.quickforge/` |
160
-
161
- ### 项目结构
162
-
163
- ```text
164
- ├── bin/quickforge.mjs # CLI 入口
165
- ├── server/ # 本地 API、存储、Agent、工具、MCP、分享与任务服务
166
- ├── src/ # React 前端
167
- ├── skills/ # 内置 Agent Skills
168
- ├── scripts/ # 打包与发布辅助脚本
169
- ├── public/ # 静态资源
170
- ├── index.html # HTML 入口
171
- ├── vite.config.ts # Vite + Tailwind 配置
172
- └── package.json
173
- ```
174
-
175
- ### 文档
176
-
177
- - [中文使用教程](./docs/user-guide.zh-CN.md)
178
- - [English User Guide](./docs/user-guide.en-US.md)
179
- - [项目 Wiki](./docs/wiki/README.md)
180
- - [贡献指南](./CONTRIBUTING.md)
181
- - [安全策略](./SECURITY.md)
182
-
183
- ---
184
-
185
- ## English
186
-
187
- QuickForge is a local-first AI chat and development workspace. It keeps the familiar chat experience, but connects it to local projects, local storage, configurable model providers, workspace tools, MCP servers, Agent Skills, and scheduled tasks.
188
-
189
- It is not meant to replace your IDE or promise fully autonomous software development. The practical goal is narrower: give you a controllable place where an AI assistant can understand a project, propose a plan, make focused changes when authorized, and run the checks you ask for.
190
-
191
- ### What it is good for
192
-
193
- - **Understanding a codebase**: inspect folders, search call chains, explain modules, and prepare onboarding notes.
194
- - **Focused edits**: let the model read, search, create, overwrite, or precisely edit files inside an attached project directory.
195
- - **Running verification commands**: run lint, build, tests, grep, and other shell commands from the project workspace.
196
- - **Reusable workflows**: keep team prompts, runbooks, and operating procedures as Agent Skills or project commands.
197
- - **External tools through MCP**: connect MCP servers for additional tools such as filesystem, database, browser, or internal service integrations, depending on your configuration.
198
- - **Async and recurring work**: create once, daily, weekly, monthly, interval, or cron-based tasks and review their run history.
199
-
200
- ### Key features
201
-
202
- | Feature | Details |
203
- |---|---|
204
- | Local-first storage | Settings, API keys, conversations, project list, caches, and logs are stored under `~/.quickforge/` by default. No built-in cloud sync or telemetry. |
205
- | Bring your own model | Supports OpenAI-compatible `/v1/chat/completions` and Anthropic Messages API. Works with compatible providers such as LiteLLM, OpenRouter, DeepSeek, Qwen, Ollama, and others. |
206
- | Regular and project chats | Regular chats are for general questions. Project chats attach to a local directory and can use workspace tools when authorized. |
207
- | YOLO workspace tools | Allows the agent to read, search, create, overwrite, precisely edit files, and run shell commands from the attached workspace. |
208
- | MCP integration | Supports stdio, SSE, and Streamable HTTP (`http`) MCP servers. External tools are injected with namespaced tool names. |
209
- | Agent Skills | Supports global, shared, project-level, and bundled Skills for specialized workflows, references, and tool-use instructions. |
210
- | Custom commands | Includes built-in commands such as `/compact` and `/clear`, and can load project commands from `.ai/commands/` or configured directories. |
211
- | Conversation workflow | Streaming responses, copy, rollback, fork, draft recovery, search, context usage indicator, and conversation compaction. |
212
- | Scheduled tasks | Create, edit, manually trigger, and inspect tasks, with model and parameter selection per task. |
213
- | Conversation sharing | Share conversations with read-only or operate permissions, optional password protection, and revocation support. |
214
- | CLI and offline package | Provides `qf` / `quickforge` commands, update checks, update command, and offline tarball installation. |
215
-
216
- ### Safety model
217
-
218
- QuickForge intentionally exposes powerful local capabilities, so the boundaries matter:
219
-
220
- - File tools are restricted to the attached project root.
221
- - `run_command` starts in the project directory, but it is not an OS-level sandbox. Commands run with the current OS user's permissions.
222
- - YOLO mode does not ask for confirmation before every tool call. Use it only with trusted models and trusted workspaces.
223
- - API keys are stored locally. Do not commit or share your `~/.quickforge/` directory.
224
- - Commit to Git or make a backup before asking the model to change important repositories.
225
-
226
- ### Installation
227
-
228
- #### npm
229
-
230
- ```bash
231
- npm install -g @shawnstack/quickforge@1.3.20
232
- qf
233
-
234
- # CLI utilities
235
- qf --version
236
- qf check-update
237
- qf update
238
- ```
239
-
240
- #### Offline tarball
241
-
242
- The offline release package for `v1.3.20` is:
243
-
244
- ```text
245
- package-offline/shawnstack-quickforge-1.3.20.tgz
246
- ```
247
-
248
- Install it on a machine with Node.js 20+ and npm:
249
-
250
- ```bash
251
- npm install -g ./package-offline/shawnstack-quickforge-1.3.20.tgz
252
- qf
253
- ```
254
-
255
- The package was generated from tag `v1.3.20` and includes bundled runtime dependencies for offline installation.
256
-
257
- ### Local development
258
-
259
- ```bash
260
- # Install dependencies
261
- npm install
262
-
263
- # Development: local service + Vite, default port 5176
264
- npm run dev
265
-
266
- # Production
267
- npm run build
268
- npm start
269
- ```
270
-
271
- Open [http://localhost:5176](http://localhost:5176).
272
-
273
- On Windows, you can also double-click:
274
-
275
- - `dev-quickforge.bat` for development mode
276
- - `start-quickforge.bat` for production mode
277
-
278
- ### First model setup
279
-
280
- QuickForge does not ship with a default model. If no model is configured on first launch, the chat area shows a setup guide.
281
-
282
- You can add any compatible provider in Settings, for example:
283
-
284
- ```text
285
- Provider name: LiteLLM
286
- Protocol type: OpenAI Compatible
287
- Base URL: http://localhost:4000/v1
288
- Model ID: anthropic/claude-sonnet-4
289
- API Key: optional, depending on your LiteLLM configuration
290
- ```
291
-
292
- You can also configure OpenRouter, DeepSeek, Ollama, or any other OpenAI-compatible / Anthropic-compatible service. Model requests are sent to the provider you configure; QuickForge provides the local UI, storage, conversation management, and tool orchestration.
293
-
294
- ### Common environment variables
295
-
296
- | Variable | Default | Description |
297
- |---|---|---|
298
- | `QUICKFORGE_DATA_DIR` | `~/.quickforge` | Data directory |
299
- | `QUICKFORGE_WORKSPACE_DIR` | project root | Default workspace for YOLO tools |
300
- | `QUICKFORGE_HOST` | `127.0.0.1` | Server bind address |
301
- | `QUICKFORGE_PORT` | `32176` (dev) / `5176` (prod) | Backend server port |
302
- | `QUICKFORGE_VITE_PORT` | `5176` | Vite dev server port |
303
- | `QUICKFORGE_MAX_BODY_BYTES` | `52428800` (50MB) | Max request body size |
304
-
305
- ### Data location
306
-
307
- Located under `~/.quickforge/` by default (`%USERPROFILE%\.quickforge` on Windows):
308
-
309
- - `config/config.json` — unified local config, including app settings, custom providers, provider API keys, and project list. This file may contain secrets; do not share it.
310
- - `storage/` — persistent conversations, indexes, shares, and related data.
311
- - `cache/` — removable cache files.
312
- - `logs/` — local logs.
313
-
314
- ### Tech stack
315
-
316
- | Layer | Technology |
317
- |---|---|
318
- | Frontend | React 19, Vite 8, Tailwind CSS 4, TypeScript |
319
- | UI | shadcn-style primitives, Lucide icons, `@mariozechner/pi-web-ui` |
320
- | Agent / model orchestration | `@mariozechner/pi-agent-core`, `@mariozechner/pi-ai`, MCP SDK |
321
- | Server | Node.js ESM, plain `http` module |
322
- | Storage | Local JSON files under `~/.quickforge/` by default |
323
-
324
- ### Project structure
325
-
326
- ```text
327
- ├── bin/quickforge.mjs # CLI entry point
328
- ├── server/ # Local API, storage, agents, tools, MCP, sharing, and task service
329
- ├── src/ # React frontend
330
- ├── skills/ # Bundled Agent Skills
331
- ├── scripts/ # Build and packaging helpers
332
- ├── public/ # Static assets
333
- ├── index.html # HTML entry
334
- ├── vite.config.ts # Vite + Tailwind config
335
- └── package.json
336
- ```
337
-
338
- ### Documentation
339
-
340
- - [中文使用教程](./docs/user-guide.zh-CN.md)
341
- - [English User Guide](./docs/user-guide.en-US.md)
342
- - [Project Wiki](./docs/wiki/README.md)
343
- - [Contributing Guide](./CONTRIBUTING.md)
344
- - [Security Policy](./SECURITY.md)
345
-
346
- ## License
347
-
348
- [MIT](LICENSE)
1
+ # 速构 QuickForge
2
+
3
+ <p align="center">
4
+ <img alt="Version" src="https://img.shields.io/badge/version-1.3.22-blue" />
5
+ <img alt="License" src="https://img.shields.io/badge/license-MIT-green" />
6
+ <img alt="Node" src="https://img.shields.io/badge/node-%3E%3D20-brightgreen" />
7
+ <img alt="React" src="https://img.shields.io/badge/react-19-61DAFB?logo=react" />
8
+ <img alt="Vite" src="https://img.shields.io/badge/vite-8-646CFF?logo=vite" />
9
+ </p>
10
+
11
+ <p align="center">
12
+ <strong>本地优先的 AI 工作台:聊天、项目上下文、本地工具、MCP、Skills 与定时任务。</strong><br />
13
+ <strong>A local-first AI workspace for chat, project context, local tools, MCP, Skills, and scheduled tasks.</strong>
14
+ </p>
15
+
16
+ <p align="center">
17
+ <a href="#中文">中文</a> · <a href="#english">English</a> · <a href="./docs/user-guide.zh-CN.md">中文教程</a> · <a href="./docs/user-guide.en-US.md">User Guide</a>
18
+ </p>
19
+
20
+ ---
21
+
22
+ ## 中文
23
+
24
+ QuickForge 是一个运行在本机的 AI 对话与研发辅助工具。它保留 ChatGPT 类产品的对话体验,同时把会话、项目目录、模型配置和工具调用放在本地服务中管理。你可以用它做普通问答,也可以把它绑定到一个代码仓库,让模型在明确授权后阅读文件、搜索代码、编辑内容并运行命令。
25
+
26
+ 它的目标不是替代 IDE,也不是承诺“全自动开发”,而是提供一个可控的本地 AI 工作流入口:先理解项目,再制定计划,最后在你信任的范围内执行改动和验证。
27
+
28
+ ### 适合用来做什么
29
+
30
+ - **理解项目**:查看目录结构、搜索调用链、解释模块职责、梳理新人接手路径。
31
+ - **小步修改代码**:让模型在项目目录内读写文件,完成文案、配置、Bug 修复或局部功能改动。
32
+ - **运行验证命令**:在项目工作区执行 lint、build、test、grep 等命令,并把结果带回对话。
33
+ - **沉淀可复用流程**:用 Agent Skills 和项目自定义命令保存团队常用提示词、Runbook 和操作步骤。
34
+ - **连接外部工具**:通过 MCP 接入文件系统、数据库、浏览器、内部服务等工具能力(取决于你配置的 MCP Server)。
35
+ - **异步/周期任务**:创建一次性、每日、每周、每月、间隔或 cron 任务,让模型按计划运行指定工作。
36
+
37
+ ### 核心特性
38
+
39
+ | 特性 | 说明 |
40
+ |---|---|
41
+ | 本地优先 | 配置、API Key、会话、项目列表、缓存和日志默认保存在 `~/.quickforge/`。QuickForge 不提供云同步,也不内置遥测。 |
42
+ | 多模型提供商 | 支持 OpenAI-compatible `/v1/chat/completions` 与 Anthropic Messages API。可配置 LiteLLM、OpenRouter、DeepSeek、Qwen、Ollama 等兼容服务。 |
43
+ | 普通对话与项目对话 | 普通对话适合问答;项目对话绑定本地目录,开启授权后可使用工作区工具。 |
44
+ | YOLO 本地工具 | 授权模型在项目目录内读取、搜索、创建、覆盖、精确编辑文件,并从工作区运行 shell 命令。 |
45
+ | MCP 集成 | 支持 stdio、SSE、Streamable HTTP (`http`) MCP Server,并将外部工具以命名空间形式注入到 Agent。 |
46
+ | Agent Skills | 支持全局、共享、项目级和内置 Skills,用于加载专门的工作流说明、参考资料和工具使用规范。 |
47
+ | 自定义命令 | 支持 `/compact`、`/clear` 等内置命令,也可从项目 `.ai/commands/` 或配置目录加载团队命令。 |
48
+ | 会话工作流 | 支持流式回复、复制、回滚、分支、草稿恢复、会话搜索、上下文用量提示和长对话压缩。 |
49
+ | 定时任务 | 支持创建、编辑、手动触发、查看历史,并为任务选择模型与参数。 |
50
+ | 对话分享 | 支持创建分享链接、只读/可操作权限、可选密码保护,以及撤销分享。 |
51
+ | CLI 与离线包 | 提供 `qf` / `quickforge` 命令,支持版本检查、更新,并可使用离线 tarball 安装。 |
52
+
53
+ ### 安全边界
54
+
55
+ QuickForge 的工具能力很直接,因此也需要谨慎使用:
56
+
57
+ - 文件工具限制在绑定的项目根目录内。
58
+ - `run_command` 会从项目目录启动命令,但它不是系统级沙箱,命令会以当前 OS 用户权限运行。
59
+ - YOLO 模式不会为每次工具调用弹出确认;只建议在可信模型和可信项目中开启。
60
+ - API Key 保存在本机配置文件中,请不要提交或分享 `~/.quickforge/`。
61
+ - 重要仓库建议先提交 Git 或备份,再让模型执行修改。
62
+
63
+ ### 安装
64
+
65
+ #### 从 npm 安装
66
+
67
+ ```bash
68
+ npm install -g @shawnstack/quickforge@1.3.22
69
+ qf
70
+
71
+ # CLI 工具
72
+ qf --version
73
+ qf check-update
74
+ qf update
75
+ ```
76
+
77
+ #### 离线安装
78
+
79
+ 当前版本的离线包:
80
+
81
+ ```text
82
+ package-offline/shawnstack-quickforge-1.3.22.tgz
83
+ ```
84
+
85
+ 在安装了 Node.js 20+ 和 npm 的机器上执行:
86
+
87
+ ```bash
88
+ npm install -g ./package-offline/shawnstack-quickforge-1.3.22.tgz
89
+ qf
90
+ ```
91
+
92
+ 该包由 `v1.3.22` 标签生成,包含离线安装所需的运行时依赖。
93
+
94
+ ### 本地开发
95
+
96
+ ```bash
97
+ # 安装依赖
98
+ npm install
99
+
100
+ # 开发模式:本地服务 + Vite,默认端口 5176
101
+ npm run dev
102
+
103
+ # 生产构建与启动
104
+ npm run build
105
+ npm start
106
+ ```
107
+
108
+ 打开 [http://localhost:5176](http://localhost:5176)。
109
+
110
+ Windows 用户也可以双击:
111
+
112
+ - `dev-quickforge.bat`:开发模式
113
+ - `start-quickforge.bat`:生产模式
114
+
115
+ ### 首次配置模型
116
+
117
+ QuickForge 不内置默认模型。首次打开时,如果没有配置任何模型,聊天区会显示配置引导。
118
+
119
+ 你可以在设置中添加任意兼容提供商,例如:
120
+
121
+ ```text
122
+ Provider name: LiteLLM
123
+ Protocol type: OpenAI Compatible
124
+ Base URL: http://localhost:4000/v1
125
+ Model ID: anthropic/claude-sonnet-4
126
+ API Key: 按你的 LiteLLM 配置填写,可为空
127
+ ```
128
+
129
+ 也可以配置 OpenRouter、DeepSeek、Ollama 或其他 OpenAI-compatible / Anthropic-compatible 服务。模型请求会发送到你配置的提供商;QuickForge 只负责本地界面、存储、会话和工具编排。
130
+
131
+ ### 常用环境变量
132
+
133
+ | 变量 | 默认值 | 说明 |
134
+ |---|---|---|
135
+ | `QUICKFORGE_DATA_DIR` | `~/.quickforge` | 数据目录 |
136
+ | `QUICKFORGE_WORKSPACE_DIR` | 项目根目录 | YOLO 工具默认工作区 |
137
+ | `QUICKFORGE_HOST` | `127.0.0.1` | 服务绑定地址 |
138
+ | `QUICKFORGE_PORT` | `32176`(dev)/ `5176`(prod) | 后端服务端口 |
139
+ | `QUICKFORGE_VITE_PORT` | `5176` | Vite 开发服务器端口 |
140
+ | `QUICKFORGE_MAX_BODY_BYTES` | `52428800` (50MB) | 请求体大小上限 |
141
+
142
+ ### 数据位置
143
+
144
+ 默认位于 `~/.quickforge/`(Windows 通常为 `%USERPROFILE%\.quickforge`):
145
+
146
+ - `config/config.json` — 统一本地配置,包含应用设置、自定义 Provider、Provider API Key 和项目列表。该文件可能包含密钥,请勿分享。
147
+ - `storage/` — 会话、会话索引、分享数据等持久化数据。
148
+ - `cache/` — 可删除缓存。
149
+ - `logs/` — 本地日志。
150
+
151
+ ### 技术栈
152
+
153
+ | 层级 | 技术 |
154
+ |---|---|
155
+ | 前端 | React 19, Vite 8, Tailwind CSS 4, TypeScript |
156
+ | UI | shadcn-style primitives, Lucide icons, `@mariozechner/pi-web-ui` |
157
+ | Agent / 模型编排 | `@mariozechner/pi-agent-core`, `@mariozechner/pi-ai`, MCP SDK |
158
+ | 后端 | Node.js ESM,原生 `http` 模块 |
159
+ | 存储 | 本地 JSON 文件,默认在 `~/.quickforge/` |
160
+
161
+ ### 项目结构
162
+
163
+ ```text
164
+ ├── bin/quickforge.mjs # CLI 入口
165
+ ├── server/ # 本地 API、存储、Agent、工具、MCP、分享与任务服务
166
+ ├── src/ # React 前端
167
+ ├── skills/ # 内置 Agent Skills
168
+ ├── scripts/ # 打包与发布辅助脚本
169
+ ├── public/ # 静态资源
170
+ ├── index.html # HTML 入口
171
+ ├── vite.config.ts # Vite + Tailwind 配置
172
+ └── package.json
173
+ ```
174
+
175
+ ### 文档
176
+
177
+ - [中文使用教程](./docs/user-guide.zh-CN.md)
178
+ - [English User Guide](./docs/user-guide.en-US.md)
179
+ - [项目 Wiki](./docs/wiki/README.md)
180
+ - [贡献指南](./CONTRIBUTING.md)
181
+ - [安全策略](./SECURITY.md)
182
+
183
+ ---
184
+
185
+ ## English
186
+
187
+ QuickForge is a local-first AI chat and development workspace. It keeps the familiar chat experience, but connects it to local projects, local storage, configurable model providers, workspace tools, MCP servers, Agent Skills, and scheduled tasks.
188
+
189
+ It is not meant to replace your IDE or promise fully autonomous software development. The practical goal is narrower: give you a controllable place where an AI assistant can understand a project, propose a plan, make focused changes when authorized, and run the checks you ask for.
190
+
191
+ ### What it is good for
192
+
193
+ - **Understanding a codebase**: inspect folders, search call chains, explain modules, and prepare onboarding notes.
194
+ - **Focused edits**: let the model read, search, create, overwrite, or precisely edit files inside an attached project directory.
195
+ - **Running verification commands**: run lint, build, tests, grep, and other shell commands from the project workspace.
196
+ - **Reusable workflows**: keep team prompts, runbooks, and operating procedures as Agent Skills or project commands.
197
+ - **External tools through MCP**: connect MCP servers for additional tools such as filesystem, database, browser, or internal service integrations, depending on your configuration.
198
+ - **Async and recurring work**: create once, daily, weekly, monthly, interval, or cron-based tasks and review their run history.
199
+
200
+ ### Key features
201
+
202
+ | Feature | Details |
203
+ |---|---|
204
+ | Local-first storage | Settings, API keys, conversations, project list, caches, and logs are stored under `~/.quickforge/` by default. No built-in cloud sync or telemetry. |
205
+ | Bring your own model | Supports OpenAI-compatible `/v1/chat/completions` and Anthropic Messages API. Works with compatible providers such as LiteLLM, OpenRouter, DeepSeek, Qwen, Ollama, and others. |
206
+ | Regular and project chats | Regular chats are for general questions. Project chats attach to a local directory and can use workspace tools when authorized. |
207
+ | YOLO workspace tools | Allows the agent to read, search, create, overwrite, precisely edit files, and run shell commands from the attached workspace. |
208
+ | MCP integration | Supports stdio, SSE, and Streamable HTTP (`http`) MCP servers. External tools are injected with namespaced tool names. |
209
+ | Agent Skills | Supports global, shared, project-level, and bundled Skills for specialized workflows, references, and tool-use instructions. |
210
+ | Custom commands | Includes built-in commands such as `/compact` and `/clear`, and can load project commands from `.ai/commands/` or configured directories. |
211
+ | Conversation workflow | Streaming responses, copy, rollback, fork, draft recovery, search, context usage indicator, and conversation compaction. |
212
+ | Scheduled tasks | Create, edit, manually trigger, and inspect tasks, with model and parameter selection per task. |
213
+ | Conversation sharing | Share conversations with read-only or operate permissions, optional password protection, and revocation support. |
214
+ | CLI and offline package | Provides `qf` / `quickforge` commands, update checks, update command, and offline tarball installation. |
215
+
216
+ ### Safety model
217
+
218
+ QuickForge intentionally exposes powerful local capabilities, so the boundaries matter:
219
+
220
+ - File tools are restricted to the attached project root.
221
+ - `run_command` starts in the project directory, but it is not an OS-level sandbox. Commands run with the current OS user's permissions.
222
+ - YOLO mode does not ask for confirmation before every tool call. Use it only with trusted models and trusted workspaces.
223
+ - API keys are stored locally. Do not commit or share your `~/.quickforge/` directory.
224
+ - Commit to Git or make a backup before asking the model to change important repositories.
225
+
226
+ ### Installation
227
+
228
+ #### npm
229
+
230
+ ```bash
231
+ npm install -g @shawnstack/quickforge@1.3.22
232
+ qf
233
+
234
+ # CLI utilities
235
+ qf --version
236
+ qf check-update
237
+ qf update
238
+ ```
239
+
240
+ #### Offline tarball
241
+
242
+ The offline release package for `v1.3.22` is:
243
+
244
+ ```text
245
+ package-offline/shawnstack-quickforge-1.3.22.tgz
246
+ ```
247
+
248
+ Install it on a machine with Node.js 20+ and npm:
249
+
250
+ ```bash
251
+ npm install -g ./package-offline/shawnstack-quickforge-1.3.22.tgz
252
+ qf
253
+ ```
254
+
255
+ The package was generated from tag `v1.3.22` and includes bundled runtime dependencies for offline installation.
256
+
257
+ ### Local development
258
+
259
+ ```bash
260
+ # Install dependencies
261
+ npm install
262
+
263
+ # Development: local service + Vite, default port 5176
264
+ npm run dev
265
+
266
+ # Production
267
+ npm run build
268
+ npm start
269
+ ```
270
+
271
+ Open [http://localhost:5176](http://localhost:5176).
272
+
273
+ On Windows, you can also double-click:
274
+
275
+ - `dev-quickforge.bat` for development mode
276
+ - `start-quickforge.bat` for production mode
277
+
278
+ ### First model setup
279
+
280
+ QuickForge does not ship with a default model. If no model is configured on first launch, the chat area shows a setup guide.
281
+
282
+ You can add any compatible provider in Settings, for example:
283
+
284
+ ```text
285
+ Provider name: LiteLLM
286
+ Protocol type: OpenAI Compatible
287
+ Base URL: http://localhost:4000/v1
288
+ Model ID: anthropic/claude-sonnet-4
289
+ API Key: optional, depending on your LiteLLM configuration
290
+ ```
291
+
292
+ You can also configure OpenRouter, DeepSeek, Ollama, or any other OpenAI-compatible / Anthropic-compatible service. Model requests are sent to the provider you configure; QuickForge provides the local UI, storage, conversation management, and tool orchestration.
293
+
294
+ ### Common environment variables
295
+
296
+ | Variable | Default | Description |
297
+ |---|---|---|
298
+ | `QUICKFORGE_DATA_DIR` | `~/.quickforge` | Data directory |
299
+ | `QUICKFORGE_WORKSPACE_DIR` | project root | Default workspace for YOLO tools |
300
+ | `QUICKFORGE_HOST` | `127.0.0.1` | Server bind address |
301
+ | `QUICKFORGE_PORT` | `32176` (dev) / `5176` (prod) | Backend server port |
302
+ | `QUICKFORGE_VITE_PORT` | `5176` | Vite dev server port |
303
+ | `QUICKFORGE_MAX_BODY_BYTES` | `52428800` (50MB) | Max request body size |
304
+
305
+ ### Data location
306
+
307
+ Located under `~/.quickforge/` by default (`%USERPROFILE%\.quickforge` on Windows):
308
+
309
+ - `config/config.json` — unified local config, including app settings, custom providers, provider API keys, and project list. This file may contain secrets; do not share it.
310
+ - `storage/` — persistent conversations, indexes, shares, and related data.
311
+ - `cache/` — removable cache files.
312
+ - `logs/` — local logs.
313
+
314
+ ### Tech stack
315
+
316
+ | Layer | Technology |
317
+ |---|---|
318
+ | Frontend | React 19, Vite 8, Tailwind CSS 4, TypeScript |
319
+ | UI | shadcn-style primitives, Lucide icons, `@mariozechner/pi-web-ui` |
320
+ | Agent / model orchestration | `@mariozechner/pi-agent-core`, `@mariozechner/pi-ai`, MCP SDK |
321
+ | Server | Node.js ESM, plain `http` module |
322
+ | Storage | Local JSON files under `~/.quickforge/` by default |
323
+
324
+ ### Project structure
325
+
326
+ ```text
327
+ ├── bin/quickforge.mjs # CLI entry point
328
+ ├── server/ # Local API, storage, agents, tools, MCP, sharing, and task service
329
+ ├── src/ # React frontend
330
+ ├── skills/ # Bundled Agent Skills
331
+ ├── scripts/ # Build and packaging helpers
332
+ ├── public/ # Static assets
333
+ ├── index.html # HTML entry
334
+ ├── vite.config.ts # Vite + Tailwind config
335
+ └── package.json
336
+ ```
337
+
338
+ ### Documentation
339
+
340
+ - [中文使用教程](./docs/user-guide.zh-CN.md)
341
+ - [English User Guide](./docs/user-guide.en-US.md)
342
+ - [Project Wiki](./docs/wiki/README.md)
343
+ - [Contributing Guide](./CONTRIBUTING.md)
344
+ - [Security Policy](./SECURITY.md)
345
+
346
+ ## License
347
+
348
+ [MIT](LICENSE)