zero-agent-core 0.2.0__tar.gz

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 (205) hide show
  1. zero_agent_core-0.2.0/.editorconfig +18 -0
  2. zero_agent_core-0.2.0/.gitattributes +11 -0
  3. zero_agent_core-0.2.0/.github/ISSUE_TEMPLATE/bug_report.yml +41 -0
  4. zero_agent_core-0.2.0/.github/ISSUE_TEMPLATE/config.yml +5 -0
  5. zero_agent_core-0.2.0/.github/ISSUE_TEMPLATE/feature_request.yml +22 -0
  6. zero_agent_core-0.2.0/.github/pull_request_template.md +14 -0
  7. zero_agent_core-0.2.0/.github/workflows/ci.yml +50 -0
  8. zero_agent_core-0.2.0/.github/workflows/docs.yml +27 -0
  9. zero_agent_core-0.2.0/.github/workflows/publish.yml +64 -0
  10. zero_agent_core-0.2.0/.gitignore +16 -0
  11. zero_agent_core-0.2.0/AGENTS.md +11 -0
  12. zero_agent_core-0.2.0/CHANGELOG.md +94 -0
  13. zero_agent_core-0.2.0/CODE_OF_CONDUCT.md +32 -0
  14. zero_agent_core-0.2.0/CONTRIBUTING.md +71 -0
  15. zero_agent_core-0.2.0/LICENSE +201 -0
  16. zero_agent_core-0.2.0/OPEN_SOURCE_CHECKLIST.md +40 -0
  17. zero_agent_core-0.2.0/PKG-INFO +237 -0
  18. zero_agent_core-0.2.0/README.md +187 -0
  19. zero_agent_core-0.2.0/SECURITY.md +33 -0
  20. zero_agent_core-0.2.0/SUPPORT.md +18 -0
  21. zero_agent_core-0.2.0/agent-core-review.md +337 -0
  22. zero_agent_core-0.2.0/docs/ARCHITECTURE.md +452 -0
  23. zero_agent_core-0.2.0/docs/CAPABILITIES.md +347 -0
  24. zero_agent_core-0.2.0/docs/blog/zero-dependency-agent-kernel.md +162 -0
  25. zero_agent_core-0.2.0/docs/guide/acp.md +53 -0
  26. zero_agent_core-0.2.0/docs/guide/agent-loop.md +80 -0
  27. zero_agent_core-0.2.0/docs/guide/context-and-memory.md +107 -0
  28. zero_agent_core-0.2.0/docs/guide/core-concepts.md +77 -0
  29. zero_agent_core-0.2.0/docs/guide/documents-retrieval-and-callbacks.md +179 -0
  30. zero_agent_core-0.2.0/docs/guide/getting-started.md +134 -0
  31. zero_agent_core-0.2.0/docs/guide/middleware-and-hitl.md +75 -0
  32. zero_agent_core-0.2.0/docs/guide/models.md +131 -0
  33. zero_agent_core-0.2.0/docs/guide/multi-agent.md +146 -0
  34. zero_agent_core-0.2.0/docs/guide/observability-and-guardrails.md +51 -0
  35. zero_agent_core-0.2.0/docs/guide/skills.md +104 -0
  36. zero_agent_core-0.2.0/docs/guide/storage-and-production.md +95 -0
  37. zero_agent_core-0.2.0/docs/guide/tools-and-mcp.md +78 -0
  38. zero_agent_core-0.2.0/docs/guide/workflows-and-checkpoints.md +104 -0
  39. zero_agent_core-0.2.0/docs/index.md +80 -0
  40. zero_agent_core-0.2.0/docs/maintainers/release.md +48 -0
  41. zero_agent_core-0.2.0/docs/public/logo.svg +4 -0
  42. zero_agent_core-0.2.0/docs/reference/agent-core-review-remediation.md +121 -0
  43. zero_agent_core-0.2.0/docs/reference/configuration.md +201 -0
  44. zero_agent_core-0.2.0/docs/reference/ecosystem-comparison.md +27 -0
  45. zero_agent_core-0.2.0/docs/reference/exceptions.md +61 -0
  46. zero_agent_core-0.2.0/docs/reference/langchain-comparison.md +74 -0
  47. zero_agent_core-0.2.0/docs/reference/public-api.md +191 -0
  48. zero_agent_core-0.2.0/docs/stylesheets/extra.css +27 -0
  49. zero_agent_core-0.2.0/examples/basic_agent.py +109 -0
  50. zero_agent_core-0.2.0/examples/custom_model.py +70 -0
  51. zero_agent_core-0.2.0/examples/durable_workflow.py +64 -0
  52. zero_agent_core-0.2.0/examples/starter/README.md +65 -0
  53. zero_agent_core-0.2.0/examples/starter/starter_agent.py +281 -0
  54. zero_agent_core-0.2.0/mkdocs.yml +93 -0
  55. zero_agent_core-0.2.0/packages/embeddings/LICENSE +201 -0
  56. zero_agent_core-0.2.0/packages/embeddings/README.md +24 -0
  57. zero_agent_core-0.2.0/packages/embeddings/pyproject.toml +67 -0
  58. zero_agent_core-0.2.0/packages/embeddings/src/agent_core_embeddings/__init__.py +36 -0
  59. zero_agent_core-0.2.0/packages/embeddings/src/agent_core_embeddings/base.py +159 -0
  60. zero_agent_core-0.2.0/packages/embeddings/src/agent_core_embeddings/errors.py +23 -0
  61. zero_agent_core-0.2.0/packages/embeddings/src/agent_core_embeddings/factory.py +72 -0
  62. zero_agent_core-0.2.0/packages/embeddings/src/agent_core_embeddings/gemini.py +72 -0
  63. zero_agent_core-0.2.0/packages/embeddings/src/agent_core_embeddings/ollama.py +92 -0
  64. zero_agent_core-0.2.0/packages/embeddings/src/agent_core_embeddings/openai.py +77 -0
  65. zero_agent_core-0.2.0/packages/embeddings/src/agent_core_embeddings/py.typed +1 -0
  66. zero_agent_core-0.2.0/packages/embeddings/tests/test_adapters.py +234 -0
  67. zero_agent_core-0.2.0/packages/mineru/LICENSE +201 -0
  68. zero_agent_core-0.2.0/packages/mineru/README.md +21 -0
  69. zero_agent_core-0.2.0/packages/mineru/pyproject.toml +62 -0
  70. zero_agent_core-0.2.0/packages/mineru/src/agent_core_mineru/__init__.py +14 -0
  71. zero_agent_core-0.2.0/packages/mineru/src/agent_core_mineru/config.py +50 -0
  72. zero_agent_core-0.2.0/packages/mineru/src/agent_core_mineru/parser.py +262 -0
  73. zero_agent_core-0.2.0/packages/mineru/src/agent_core_mineru/py.typed +1 -0
  74. zero_agent_core-0.2.0/packages/mineru/src/agent_core_mineru/transport.py +123 -0
  75. zero_agent_core-0.2.0/packages/mineru/tests/test_adapter.py +187 -0
  76. zero_agent_core-0.2.0/packages/multi-agent/LICENSE +201 -0
  77. zero_agent_core-0.2.0/packages/multi-agent/README.md +50 -0
  78. zero_agent_core-0.2.0/packages/multi-agent/pyproject.toml +55 -0
  79. zero_agent_core-0.2.0/packages/multi-agent/src/agent_core_multi_agent/__init__.py +68 -0
  80. zero_agent_core-0.2.0/packages/multi-agent/src/agent_core_multi_agent/adapters.py +139 -0
  81. zero_agent_core-0.2.0/packages/multi-agent/src/agent_core_multi_agent/errors.py +39 -0
  82. zero_agent_core-0.2.0/packages/multi-agent/src/agent_core_multi_agent/protocols.py +49 -0
  83. zero_agent_core-0.2.0/packages/multi-agent/src/agent_core_multi_agent/py.typed +1 -0
  84. zero_agent_core-0.2.0/packages/multi-agent/src/agent_core_multi_agent/registry.py +133 -0
  85. zero_agent_core-0.2.0/packages/multi-agent/src/agent_core_multi_agent/routing.py +124 -0
  86. zero_agent_core-0.2.0/packages/multi-agent/src/agent_core_multi_agent/storage.py +110 -0
  87. zero_agent_core-0.2.0/packages/multi-agent/src/agent_core_multi_agent/supervisor.py +554 -0
  88. zero_agent_core-0.2.0/packages/multi-agent/src/agent_core_multi_agent/types.py +450 -0
  89. zero_agent_core-0.2.0/packages/multi-agent/tests/test_multi_agent.py +509 -0
  90. zero_agent_core-0.2.0/pyproject.toml +125 -0
  91. zero_agent_core-0.2.0/src/agent_core/__init__.py +525 -0
  92. zero_agent_core-0.2.0/src/agent_core/access/__init__.py +6 -0
  93. zero_agent_core-0.2.0/src/agent_core/access/context.py +45 -0
  94. zero_agent_core-0.2.0/src/agent_core/access/guard.py +40 -0
  95. zero_agent_core-0.2.0/src/agent_core/acp/README.md +236 -0
  96. zero_agent_core-0.2.0/src/agent_core/acp/__init__.py +20 -0
  97. zero_agent_core-0.2.0/src/agent_core/acp/server.py +351 -0
  98. zero_agent_core-0.2.0/src/agent_core/acp/types.py +86 -0
  99. zero_agent_core-0.2.0/src/agent_core/callbacks/__init__.py +17 -0
  100. zero_agent_core-0.2.0/src/agent_core/callbacks/manager.py +105 -0
  101. zero_agent_core-0.2.0/src/agent_core/checkpoint/__init__.py +19 -0
  102. zero_agent_core-0.2.0/src/agent_core/checkpoint/naming.py +93 -0
  103. zero_agent_core-0.2.0/src/agent_core/checkpoint/store.py +186 -0
  104. zero_agent_core-0.2.0/src/agent_core/checkpoint/travel.py +448 -0
  105. zero_agent_core-0.2.0/src/agent_core/compaction/__init__.py +57 -0
  106. zero_agent_core-0.2.0/src/agent_core/compaction/middleware.py +428 -0
  107. zero_agent_core-0.2.0/src/agent_core/compaction/prompts.py +32 -0
  108. zero_agent_core-0.2.0/src/agent_core/compaction/pruner.py +121 -0
  109. zero_agent_core-0.2.0/src/agent_core/compaction/region.py +145 -0
  110. zero_agent_core-0.2.0/src/agent_core/compaction/spill.py +81 -0
  111. zero_agent_core-0.2.0/src/agent_core/compaction/spill_tool.py +42 -0
  112. zero_agent_core-0.2.0/src/agent_core/compaction/summarizer.py +95 -0
  113. zero_agent_core-0.2.0/src/agent_core/compaction/token_limit.py +74 -0
  114. zero_agent_core-0.2.0/src/agent_core/compaction/types.py +93 -0
  115. zero_agent_core-0.2.0/src/agent_core/docs.py +15 -0
  116. zero_agent_core-0.2.0/src/agent_core/documents/__init__.py +23 -0
  117. zero_agent_core-0.2.0/src/agent_core/documents/loaders.py +79 -0
  118. zero_agent_core-0.2.0/src/agent_core/documents/splitters.py +94 -0
  119. zero_agent_core-0.2.0/src/agent_core/documents/types.py +197 -0
  120. zero_agent_core-0.2.0/src/agent_core/errors.py +81 -0
  121. zero_agent_core-0.2.0/src/agent_core/guardrails/__init__.py +19 -0
  122. zero_agent_core-0.2.0/src/agent_core/guardrails/core.py +186 -0
  123. zero_agent_core-0.2.0/src/agent_core/hitl/__init__.py +15 -0
  124. zero_agent_core-0.2.0/src/agent_core/hitl/core.py +517 -0
  125. zero_agent_core-0.2.0/src/agent_core/mcp/__init__.py +14 -0
  126. zero_agent_core-0.2.0/src/agent_core/mcp/client.py +212 -0
  127. zero_agent_core-0.2.0/src/agent_core/mcp/errors.py +26 -0
  128. zero_agent_core-0.2.0/src/agent_core/middleware/__init__.py +26 -0
  129. zero_agent_core-0.2.0/src/agent_core/middleware/base.py +283 -0
  130. zero_agent_core-0.2.0/src/agent_core/model/__init__.py +73 -0
  131. zero_agent_core-0.2.0/src/agent_core/model/catalog.py +73 -0
  132. zero_agent_core-0.2.0/src/agent_core/model/core.py +179 -0
  133. zero_agent_core-0.2.0/src/agent_core/model/governance.py +317 -0
  134. zero_agent_core-0.2.0/src/agent_core/model/providers/__init__.py +43 -0
  135. zero_agent_core-0.2.0/src/agent_core/model/providers/anthropic.py +294 -0
  136. zero_agent_core-0.2.0/src/agent_core/model/providers/common.py +28 -0
  137. zero_agent_core-0.2.0/src/agent_core/model/providers/factory.py +107 -0
  138. zero_agent_core-0.2.0/src/agent_core/model/providers/gemini.py +273 -0
  139. zero_agent_core-0.2.0/src/agent_core/model/providers/ollama.py +80 -0
  140. zero_agent_core-0.2.0/src/agent_core/model/providers/openai_compatible.py +526 -0
  141. zero_agent_core-0.2.0/src/agent_core/model/structured.py +200 -0
  142. zero_agent_core-0.2.0/src/agent_core/observability/__init__.py +21 -0
  143. zero_agent_core-0.2.0/src/agent_core/observability/core.py +311 -0
  144. zero_agent_core-0.2.0/src/agent_core/ports/__init__.py +31 -0
  145. zero_agent_core-0.2.0/src/agent_core/ports/memory.py +130 -0
  146. zero_agent_core-0.2.0/src/agent_core/ports/model_selection.py +64 -0
  147. zero_agent_core-0.2.0/src/agent_core/ports/storage.py +114 -0
  148. zero_agent_core-0.2.0/src/agent_core/prompts/__init__.py +19 -0
  149. zero_agent_core-0.2.0/src/agent_core/prompts/registry.py +236 -0
  150. zero_agent_core-0.2.0/src/agent_core/prompts/templates.py +166 -0
  151. zero_agent_core-0.2.0/src/agent_core/protocol/__init__.py +31 -0
  152. zero_agent_core-0.2.0/src/agent_core/protocol/capabilities.py +49 -0
  153. zero_agent_core-0.2.0/src/agent_core/protocol/messages.py +100 -0
  154. zero_agent_core-0.2.0/src/agent_core/protocol/runtime.py +293 -0
  155. zero_agent_core-0.2.0/src/agent_core/py.typed +1 -0
  156. zero_agent_core-0.2.0/src/agent_core/retrieval/__init__.py +40 -0
  157. zero_agent_core-0.2.0/src/agent_core/retrieval/_common.py +121 -0
  158. zero_agent_core-0.2.0/src/agent_core/retrieval/chroma.py +269 -0
  159. zero_agent_core-0.2.0/src/agent_core/retrieval/core.py +63 -0
  160. zero_agent_core-0.2.0/src/agent_core/retrieval/factory.py +72 -0
  161. zero_agent_core-0.2.0/src/agent_core/retrieval/memory.py +232 -0
  162. zero_agent_core-0.2.0/src/agent_core/retrieval/pgvector.py +239 -0
  163. zero_agent_core-0.2.0/src/agent_core/retrieval/types.py +95 -0
  164. zero_agent_core-0.2.0/src/agent_core/runtime/__init__.py +28 -0
  165. zero_agent_core-0.2.0/src/agent_core/runtime/compat.py +98 -0
  166. zero_agent_core-0.2.0/src/agent_core/runtime/react.py +888 -0
  167. zero_agent_core-0.2.0/src/agent_core/runtime/service.py +557 -0
  168. zero_agent_core-0.2.0/src/agent_core/runtime/store.py +55 -0
  169. zero_agent_core-0.2.0/src/agent_core/serialization/__init__.py +21 -0
  170. zero_agent_core-0.2.0/src/agent_core/serialization/registry.py +318 -0
  171. zero_agent_core-0.2.0/src/agent_core/skills/__init__.py +24 -0
  172. zero_agent_core-0.2.0/src/agent_core/skills/errors.py +27 -0
  173. zero_agent_core-0.2.0/src/agent_core/skills/loader.py +258 -0
  174. zero_agent_core-0.2.0/src/agent_core/skills/registry.py +205 -0
  175. zero_agent_core-0.2.0/src/agent_core/skills/types.py +56 -0
  176. zero_agent_core-0.2.0/src/agent_core/storage/__init__.py +107 -0
  177. zero_agent_core-0.2.0/src/agent_core/storage/_sqlite_utils.py +92 -0
  178. zero_agent_core-0.2.0/src/agent_core/storage/context.py +382 -0
  179. zero_agent_core-0.2.0/src/agent_core/storage/lease.py +435 -0
  180. zero_agent_core-0.2.0/src/agent_core/storage/memory.py +604 -0
  181. zero_agent_core-0.2.0/src/agent_core/storage/model_selection.py +360 -0
  182. zero_agent_core-0.2.0/src/agent_core/storage/runtime.py +899 -0
  183. zero_agent_core-0.2.0/src/agent_core/storage/session.py +904 -0
  184. zero_agent_core-0.2.0/src/agent_core/storage/workflow.py +411 -0
  185. zero_agent_core-0.2.0/src/agent_core/tools/__init__.py +5 -0
  186. zero_agent_core-0.2.0/src/agent_core/tools/executor.py +306 -0
  187. zero_agent_core-0.2.0/src/agent_core/workflow/__init__.py +25 -0
  188. zero_agent_core-0.2.0/src/agent_core/workflow/durable.py +175 -0
  189. zero_agent_core-0.2.0/src/agent_core/workflow/state_machine.py +427 -0
  190. zero_agent_core-0.2.0/tests/test_checkpoint_thread_hygiene.py +199 -0
  191. zero_agent_core-0.2.0/tests/test_compaction_core.py +454 -0
  192. zero_agent_core-0.2.0/tests/test_framework_extensions.py +305 -0
  193. zero_agent_core-0.2.0/tests/test_observability_concurrency.py +33 -0
  194. zero_agent_core-0.2.0/tests/test_provider_stream_contract.py +365 -0
  195. zero_agent_core-0.2.0/tests/test_public_api.py +697 -0
  196. zero_agent_core-0.2.0/tests/test_react_run_stream_parity.py +210 -0
  197. zero_agent_core-0.2.0/tests/test_retrieval_callbacks_serialization.py +279 -0
  198. zero_agent_core-0.2.0/tests/test_review_regressions.py +525 -0
  199. zero_agent_core-0.2.0/tests/test_run_executor.py +71 -0
  200. zero_agent_core-0.2.0/tests/test_skills.py +245 -0
  201. zero_agent_core-0.2.0/tests/test_sqlite_store_threading.py +215 -0
  202. zero_agent_core-0.2.0/tests/test_storage_pg_contract.py +708 -0
  203. zero_agent_core-0.2.0/tests/test_tool_approval.py +63 -0
  204. zero_agent_core-0.2.0/tests/test_vector_store_adapters.py +283 -0
  205. zero_agent_core-0.2.0/uv.lock +2107 -0
@@ -0,0 +1,18 @@
1
+ root = true
2
+
3
+ [*]
4
+ charset = utf-8
5
+ end_of_line = lf
6
+ insert_final_newline = true
7
+ trim_trailing_whitespace = true
8
+
9
+ [*.py]
10
+ indent_style = space
11
+ indent_size = 4
12
+
13
+ [{*.json,*.yml,*.yaml,*.ts,*.css}]
14
+ indent_style = space
15
+ indent_size = 2
16
+
17
+ [*.md]
18
+ trim_trailing_whitespace = false
@@ -0,0 +1,11 @@
1
+ * text=auto
2
+
3
+ *.py text eol=lf
4
+ *.md text eol=lf
5
+ *.toml text eol=lf
6
+ *.json text eol=lf
7
+ *.yml text eol=lf
8
+ *.yaml text eol=lf
9
+ *.ts text eol=lf
10
+ *.css text eol=lf
11
+ *.svg text eol=lf
@@ -0,0 +1,41 @@
1
+ name: 缺陷报告
2
+ description: 报告可以稳定复现的框架问题
3
+ title: "[Bug]: "
4
+ labels: [bug]
5
+ body:
6
+ - type: markdown
7
+ attributes:
8
+ value: 安全漏洞请按 SECURITY.md 私密报告,不要在这里公开。
9
+ - type: input
10
+ id: version
11
+ attributes:
12
+ label: Agent Core 版本
13
+ placeholder: 0.1.0
14
+ validations:
15
+ required: true
16
+ - type: input
17
+ id: environment
18
+ attributes:
19
+ label: 运行环境
20
+ placeholder: Python 3.13、Windows 11 / Ubuntu 24.04
21
+ validations:
22
+ required: true
23
+ - type: textarea
24
+ id: reproduction
25
+ attributes:
26
+ label: 最小复现
27
+ description: 请提供已经去除密钥和业务数据的代码、配置和步骤。
28
+ validations:
29
+ required: true
30
+ - type: textarea
31
+ id: expected
32
+ attributes:
33
+ label: 预期行为
34
+ validations:
35
+ required: true
36
+ - type: textarea
37
+ id: actual
38
+ attributes:
39
+ label: 实际行为和完整错误栈
40
+ validations:
41
+ required: true
@@ -0,0 +1,5 @@
1
+ blank_issues_enabled: false
2
+ contact_links:
3
+ - name: 安全问题
4
+ url: https://github.com/qiuzixu/agent-core/blob/main/SECURITY.md
5
+ about: 请按安全策略使用私密渠道报告漏洞
@@ -0,0 +1,22 @@
1
+ name: 功能建议
2
+ description: 建议一个可复用的框架能力
3
+ title: "[Feature]: "
4
+ labels: [enhancement]
5
+ body:
6
+ - type: textarea
7
+ id: problem
8
+ attributes:
9
+ label: 使用场景和问题
10
+ description: 请说明为什么这是多个 Agent 都需要的通用能力。
11
+ validations:
12
+ required: true
13
+ - type: textarea
14
+ id: api
15
+ attributes:
16
+ label: 期望行为或 API
17
+ validations:
18
+ required: true
19
+ - type: textarea
20
+ id: alternatives
21
+ attributes:
22
+ label: 已考虑的替代方案
@@ -0,0 +1,14 @@
1
+ ## 问题与结果
2
+
3
+ <!-- 说明具体触发条件,以及修改前后的行为。 -->
4
+
5
+ ## 兼容性
6
+
7
+ <!-- 说明公共 API、持久化数据、恢复中的 Run/Workflow 和依赖是否受影响。 -->
8
+
9
+ ## 验证
10
+
11
+ - [ ] `ruff check src tests examples`
12
+ - [ ] `pytest`
13
+ - [ ] `python -m mkdocs build`
14
+ - [ ] 已按需更新 `docs/ARCHITECTURE.md` 和 `docs/CAPABILITIES.md`
@@ -0,0 +1,50 @@
1
+ name: Core CI
2
+
3
+ on:
4
+ push:
5
+ branches: [master, main]
6
+ pull_request:
7
+
8
+ permissions:
9
+ contents: read
10
+
11
+ jobs:
12
+ python:
13
+ runs-on: ubuntu-latest
14
+ steps:
15
+ - uses: actions/checkout@v4
16
+ - uses: actions/setup-python@v5
17
+ with:
18
+ python-version: "3.13"
19
+ cache: pip
20
+ - name: Install project
21
+ run: >-
22
+ python -m pip install -e ".[dev]"
23
+ -e "./packages/mineru"
24
+ -e "./packages/embeddings"
25
+ -e "./packages/multi-agent"
26
+ build
27
+ - name: Lint
28
+ run: >-
29
+ ruff check src tests examples
30
+ packages/mineru/src packages/mineru/tests
31
+ packages/embeddings/src packages/embeddings/tests
32
+ packages/multi-agent/src packages/multi-agent/tests
33
+ - name: Type check
34
+ run: |
35
+ mypy src
36
+ mypy --config-file packages/mineru/pyproject.toml packages/mineru/src
37
+ mypy --config-file packages/embeddings/pyproject.toml packages/embeddings/src
38
+ mypy --config-file packages/multi-agent/pyproject.toml packages/multi-agent/src
39
+ - name: Test
40
+ run: |
41
+ pytest
42
+ pytest packages/mineru/tests
43
+ pytest packages/embeddings/tests
44
+ pytest packages/multi-agent/tests
45
+ - name: Build package
46
+ run: |
47
+ python -m build
48
+ python -m build packages/mineru
49
+ python -m build packages/embeddings
50
+ python -m build packages/multi-agent
@@ -0,0 +1,27 @@
1
+ name: Docs
2
+
3
+ on:
4
+ push:
5
+ branches: [master, main]
6
+ pull_request:
7
+
8
+ permissions:
9
+ contents: read
10
+
11
+ jobs:
12
+ build:
13
+ runs-on: ubuntu-latest
14
+ steps:
15
+ - uses: actions/checkout@v4
16
+ - uses: actions/setup-python@v5
17
+ with:
18
+ python-version: "3.13"
19
+ cache: pip
20
+ - name: Install dependencies
21
+ run: python -m pip install -e ".[dev]" mkdocs-material
22
+ - name: Build docs
23
+ run: python -m mkdocs build
24
+ - uses: actions/upload-artifact@v4
25
+ with:
26
+ name: mkdocs-site
27
+ path: site
@@ -0,0 +1,64 @@
1
+ name: Publish
2
+
3
+ # 首次发布前置条件(PyPI 侧一次性配置,见 docs/reference 或发布指南):
4
+ # 在 PyPI 项目尚未存在时使用 "Pending Publisher" 预绑定 Trusted Publisher:
5
+ # owner = qiuzixu, repository = agent-core, workflow = publish.yml,
6
+ # environment = pypi(PyPI 侧可留空,GitHub 侧如使用 environment 需一致)。
7
+ # 发布:打 tag(如 v0.2.0)推送到 GitHub,或手动触发 workflow_dispatch。
8
+
9
+ on:
10
+ push:
11
+ tags: ["v*"]
12
+ workflow_dispatch:
13
+
14
+ permissions:
15
+ contents: read
16
+
17
+ jobs:
18
+ build:
19
+ runs-on: ubuntu-latest
20
+ steps:
21
+ - uses: actions/checkout@v4
22
+ - uses: actions/setup-python@v5
23
+ with:
24
+ python-version: "3.13"
25
+ - name: Install build tool
26
+ run: python -m pip install build twine
27
+ - name: Build four distributions
28
+ run: |
29
+ python -m build
30
+ python -m build packages/mineru
31
+ python -m build packages/embeddings
32
+ python -m build packages/multi-agent
33
+ - name: Twine check
34
+ run: python -m twine check dist/* packages/mineru/dist/* packages/embeddings/dist/* packages/multi-agent/dist/*
35
+ - uses: actions/upload-artifact@v4
36
+ with:
37
+ name: distributions
38
+ path: |
39
+ dist/*
40
+ packages/mineru/dist/*
41
+ packages/embeddings/dist/*
42
+ packages/multi-agent/dist/*
43
+
44
+ publish:
45
+ needs: build
46
+ runs-on: ubuntu-latest
47
+ environment: pypi
48
+ permissions:
49
+ # Trusted Publisher 要求 id-token: write,不上传任何 PyPI 令牌。
50
+ id-token: write
51
+ steps:
52
+ - uses: actions/download-artifact@v4
53
+ with:
54
+ name: distributions
55
+ path: dist
56
+ - name: Consolidate wheels and sdists
57
+ run: |
58
+ mkdir -p upload
59
+ find dist -name "*.whl" -exec mv {} upload/ \;
60
+ find dist -name "*.tar.gz" -exec mv {} upload/ \;
61
+ - name: Publish to PyPI
62
+ uses: pypa/gh-action-pypi-publish@release/v1
63
+ with:
64
+ packages-dir: upload
@@ -0,0 +1,16 @@
1
+ __pycache__/
2
+ *.py[cod]
3
+ *.egg-info/
4
+ .pytest_cache/
5
+ .ruff_cache/
6
+ .mypy_cache/
7
+ .coverage
8
+ htmlcov/
9
+ dist/
10
+ build/
11
+
12
+ site/
13
+ *.db
14
+ *.sqlite
15
+ *.sqlite3
16
+ .venv/*
@@ -0,0 +1,11 @@
1
+ # Agent Core 维护约束
2
+
3
+ 修改 `agent-core` 时必须遵守以下规则:
4
+
5
+ 1. 修改 `src/agent_core/**` 后,必须在同一提交中检查 `docs/ARCHITECTURE.md`。
6
+ 2. 模块边界、公共接口、依赖方向、运行时调用链、存储对象、协议或应用 Agent 接入关系发生变化时,
7
+ 必须同步修改对应 Mermaid 架构图。
8
+ 3. 如果代码变化不影响图形关系,也必须在 `docs/ARCHITECTURE.md` 的“同步记录”中增加一条检查记录,
9
+ 说明无需修改图形的原因。
10
+ 4. 新增公共能力时,同时更新 `docs/CAPABILITIES.md`;不能把规划中的能力写成已经实现。
11
+ 5. 架构图和代码注释优先使用中文,公共类型名和协议名保留代码中的英文名称。
@@ -0,0 +1,94 @@
1
+ # 变更日志
2
+
3
+ 本项目遵循[语义化版本](https://semver.org/lang/zh-CN/),变更按
4
+ [Keep a Changelog](https://keepachangelog.com/zh-CN/) 的结构记录。
5
+
6
+ ## [Unreleased]
7
+
8
+ ### Changed
9
+
10
+ - 发行名由 `handwritten-agent-core` 更名为 `zero-agent-core`(PyPI 发行名与三个扩展包
11
+ `zero-agent-core-mineru` / `zero-agent-core-embeddings` / `zero-agent-core-multi-agent` 同步更名)。
12
+ 导入名 `agent_core`、`agent_core_mineru`、`agent_core_embeddings`、`agent_core_multi_agent`
13
+ 保持不变,升级后无需修改任何 import 语句;安装命令改为
14
+ `pip install "zero-agent-core[models,mcp]"` 等对应形式。
15
+
16
+ ## [0.2.0] - 2026-10-11
17
+
18
+ ### Added
19
+
20
+ - `AgentRuntime` 支持可选 `run_executor`(`RunExecutor` 协议):应用可接管 Agent 调用,
21
+ Runtime 统一收口运行状态、事件、持久化与租约。
22
+ - 访问校验抽取为 `agent_core.access.enforce_access`:严格模式要求、资源归属完整性与
23
+ 身份校验三类判定共享同一实现。
24
+ - `TimeTravelCheckpointer` 新增 `max_versions_per_thread` 版本容量上限(默认 100):
25
+ 追加超过上限时淘汰最旧版本并同步收缩持久化文件,当前指针语义保持不变。
26
+ - 基于 Material for MkDocs 的中文文档站、使用指南和公共 API 参考。
27
+ - 开源许可证、贡献指南、社区准则、安全策略、支持说明和发布检查清单。
28
+ - 最小 Agent、自定义模型和持久化工作流示例。
29
+ - Core 检查与文档构建的 CI 配置。
30
+ - JSON Schema 结构化输出、decoder 和校验失败重试。
31
+ - 模型请求/输入 Token 限流、按 scope 并发、超时、熔断和 fallback。
32
+ - 工作流节点级重试、超时、退避、幂等键、pending write 和 Mermaid 导出。
33
+ - 跨会话长期记忆端口及内存、SQLite、PostgreSQL 实现。
34
+ - 安全 Prompt 文本/聊天模板、消息占位符、partial 和默认变量。
35
+ - 生命周期 CallbackManager、增强 RunEvent 和流式增量事件。
36
+ - 文档加载/切分、Embedding/Retriever/VectorStore 协议及轻量内存实现。
37
+ - 独立 `handwritten-agent-core-mineru` 扩展包,支持自托管 `/file_parse`、区块、页码和来源追踪。
38
+ - 独立 `handwritten-agent-core-embeddings` 扩展包,支持 OpenAI、Gemini、Ollama 和统一工厂。
39
+ - 独立 `handwritten-agent-core-multi-agent` 扩展包,支持 Agent 注册、路由、handoff、父子 Run、
40
+ 预算、恢复、租约和顺序/并行协调。
41
+ - Chroma 本地持久化、PostgreSQL pgvector 生产适配器及统一向量存储工厂。
42
+ - 带类型白名单、Schema 版本和迁移函数的安全 JSON 序列化。
43
+
44
+ ### Fixed
45
+
46
+ - 直接 API 以 checkpoint 恢复 Agent 时回填 RunContext.checkpoint 基底,修复恢复批次进度快照丢失迭代/预算/最终回答的问题。
47
+ - 时间旅行接口 `get_checkpoint_history`/`rollback_to` 增加显式 `thread_id` 参数,避免读到构造时默认会话的版本。
48
+ - Middleware `MODIFY` 聚合与 ctx 写入对账,按注释契约只写回 ctx 的自定义中间件不再被 data 旧值覆盖。
49
+ - 并发工具批次末尾不再重复保存与主循环相同的 phase=model 快照。
50
+ - 幂等唯一索引升级前预检归一化后重复行,SQLite/PostgreSQL 初始化给出可操作的错误而不是建索引失败。
51
+ - HITL 幻影请求(存储记录缺失)等待超时按 TIMEOUT 收口;进程内缓存与 `list_pending` 补齐过期检查。
52
+ - 取消运行时记录任务的业务异常日志,不再无声吞掉。
53
+ - 模型治理在全部候选熔断时直接失败且不消耗限流配额,熔断状态容量可配置并自动淘汰。
54
+ - `TimeTravelCheckpointer` 持久化失败回滚按身份移除版本,避免并发保存时弹掉其他调用者的版本。
55
+ - 文件与时间旅行 Checkpointer 的 thread 文件名改为白名单严格清洗(单射可逆):
56
+ 含 `/`、`\`、`:` 等 Windows 非法字符的会话不再互相覆盖,`list_threads` 反向映射同步还原。
57
+
58
+ ### Changed
59
+
60
+ - `ReActAgent` 的 `run`/`stream` 双循环抽取为共享内核 `_iterate`:消息构造、checkpoint 恢复、
61
+ 中间件 before/after、工具预算守卫、工具执行与快照保存只实现一次;非流式/流式一轮模型调用的
62
+ 差异(`llm.chat` vs `stream_chat` 增量归并、文案与日志标识)集中到 `_LoopMode` 策略对象。
63
+ 对外签名、事件序列、checkpoint 状态字段与错误文案逐字保持不变,并有 run/stream checkpoint
64
+ 一致性契约测试守护。
65
+ - `AgentRuntime` 与 `DurableWorkflowRunner` 的 `_check_access` 改为委托共享的
66
+ `agent_core.access.enforce_access`,判定顺序与错误文案保持不变。
67
+ - 7 个 SQLite 存储(session/runtime/lease/memory/workflow/context/model_selection)的
68
+ async 方法统一经 `asyncio.to_thread` 在线程池执行,构造期 DDL/PRAGMA 初始化同样入线程;
69
+ 新增共享连接规范 `storage/_sqlite_utils.py`(`timeout=30.0` + WAL),SQLite 锁等待
70
+ 不再冻结事件循环,方法签名与返回值保持不变。
71
+ - 补齐 compaction 子系统核心单测(region 边界切割、pruner 瘦身与 spill 标记、summarizer 结构
72
+ 校验失败、中间件阈值触发与 prune-only 降级)、OpenAI/Anthropic/Gemini 流式 `finish_reason`
73
+ 契约测试,以及"恢复时只重放未完成工具"回归断言。
74
+ - 修复 Runtime/Workflow 并发覆盖和匿名作用域幂等索引,PostgreSQL Workflow JSONB 恢复兼容字符串返回。
75
+ - HITL 持久化审批 deadline,并以条件状态转换避免超时覆盖批准或拒绝。
76
+ - 文件与时间旅行 Checkpoint 改为原子替换,ReAct 并发工具按完成进度保存可恢复快照。
77
+ - 模型治理按逻辑请求执行限流和并发控制,增加默认调用超时与按 scope 隔离的熔断状态。
78
+ - 统一模型工具参数错误、结构化输出校验、MCP 文本结果回退和工具失败观测语义。
79
+ - 收紧 Context/Prompt/ACP 的归属、损坏文件和审批选项处理,并限制进程内观测记录容量。
80
+ - `ObservabilityMiddleware` 按异步上下文隔离模型/工具计时,并从当前调用元数据读取 `thread_id`。
81
+ - `DurableWorkflowRunner` 增加 `raise_on_failure`,应用可以读取已持久化的失败执行实例。
82
+ - `TimeTravelCheckpointer` 持久化 rollback 当前版本指针,并实现整条 thread 历史删除协议。
83
+
84
+ ## [0.1.0] - 2026-09-26
85
+
86
+ ### Added
87
+
88
+ - 手写 ReAct Agent Loop,支持普通执行、真正的流式输出、并发工具调用和运行恢复。
89
+ - Function Calling、MCP 客户端、Skill 清单加载与工具绑定。
90
+ - 模型协议、模型目录、运行时模型选择,以及 OpenAI、Anthropic、Gemini、Ollama 适配器。
91
+ - Middleware、HITL、Guardrails、可观测性和上下文压缩。
92
+ - Checkpoint、状态机、持久化工作流、运行租约和 ACP stdio 服务端。
93
+ - 内存、SQLite 和 PostgreSQL 的会话、上下文、运行、审批、工作流与模型选择存储。
94
+ - 用户、租户和管理员访问上下文。
@@ -0,0 +1,32 @@
1
+ # 社区行为准则
2
+
3
+ ## 我们的承诺
4
+
5
+ 我们承诺为所有参与者提供友好、安全、无骚扰的协作环境,不因年龄、身体状况、
6
+ 民族、性别认同与表达、经验水平、国籍、外貌、种族、宗教、性取向或其他身份而区别对待。
7
+
8
+ ## 期望行为
9
+
10
+ - 使用尊重、包容且具体的语言。
11
+ - 接受建设性的技术反馈,并围绕事实讨论。
12
+ - 尊重他人的时间、隐私、署名和知识产权。
13
+ - 发生分歧时优先澄清目标、约束和可验证证据。
14
+ - 发现不当行为时及时向维护者报告。
15
+
16
+ ## 不可接受的行为
17
+
18
+ - 侮辱、威胁、骚扰、跟踪或公开他人隐私信息。
19
+ - 带有歧视或性暗示的言论、图片和行为。
20
+ - 持续打断讨论、蓄意制造敌意或对个人进行攻击。
21
+ - 未经许可使用他人的身份、作品、密钥或私有数据。
22
+ - 维护者认定不适合专业协作环境的其他行为。
23
+
24
+ ## 执行
25
+
26
+ 维护者负责解释和执行本准则,并可删除不当内容、限制参与、临时或永久禁止参与者。
27
+ 执行时会尽量保护报告者和相关人员的隐私。
28
+
29
+ 请通过 [安全策略](SECURITY.md) 中的私密渠道报告行为准则问题。维护者会根据影响范围、
30
+ 是否重复发生和当事人的配合程度采取一致、相称的处理措施。
31
+
32
+ 本准则适用于项目仓库、Issue、合并请求、评审、社区活动以及代表项目参与的其他公共空间。
@@ -0,0 +1,71 @@
1
+ # 贡献指南
2
+
3
+ 感谢你参与 Handwritten Agent Core。提交改动前,请先确认问题属于框架通用能力,
4
+ 还是某个应用 Agent 的业务能力。业务工具、HTTP 路由和产品页面应留在应用项目中。
5
+
6
+ ## 开始开发
7
+
8
+ 项目要求 Python 3.13。推荐使用 `uv`:
9
+
10
+ ```bash
11
+ uv sync --extra dev --extra models --extra mcp --extra production
12
+ uv pip install build twine
13
+ python -m pip install mkdocs-material
14
+ ```
15
+
16
+ 也可以使用标准 `venv` 和 `pip`:
17
+
18
+ ```bash
19
+ python -m venv .venv
20
+ python -m pip install -e ".[dev,models,mcp,production]"
21
+ python -m pip install -e "./packages/mineru"
22
+ python -m pip install -e "./packages/embeddings"
23
+ python -m pip install -e "./packages/multi-agent"
24
+ python -m pip install build twine mkdocs-material
25
+ ```
26
+
27
+ 运行检查:
28
+
29
+ ```bash
30
+ ruff check src tests examples
31
+ pytest
32
+ mypy src
33
+ mypy --config-file packages/mineru/pyproject.toml packages/mineru/src
34
+ pytest packages/mineru/tests
35
+ mypy --config-file packages/embeddings/pyproject.toml packages/embeddings/src
36
+ pytest packages/embeddings/tests
37
+ mypy --config-file packages/multi-agent/pyproject.toml packages/multi-agent/src
38
+ pytest packages/multi-agent/tests
39
+ python -m mkdocs build
40
+ python -m build
41
+ python -m build packages/mineru
42
+ python -m build packages/embeddings
43
+ python -m build packages/multi-agent
44
+ ```
45
+
46
+ Core 和扩展包都执行 strict mypy,类型错误会阻止 CI 合并。
47
+
48
+ ## 修改约束
49
+
50
+ - 公共 API 优先从 `agent_core` 顶层导出,并为行为变化补充测试。
51
+ - 第三方平台适配优先放在 `packages/` 独立发行包中,通过 Core Protocol 和值对象接入。
52
+ - 修改 `src/agent_core/**` 后,检查并更新 `docs/ARCHITECTURE.md` 的架构图或同步记录。
53
+ - 新增公共能力时,同步更新 `docs/CAPABILITIES.md` 和对应使用指南。
54
+ - 注释和架构说明优先使用中文;公共类型名、协议名与行业术语保留英文。
55
+ - 不在提交中包含密钥、真实业务数据、数据库文件或构建产物。
56
+ - 兼容性破坏需要在变更说明中给出迁移方式,并按语义化版本提升主版本或次版本。
57
+
58
+ ## 提交和合并请求
59
+
60
+ 提交信息推荐使用 Conventional Commits,例如:
61
+
62
+ ```text
63
+ feat: 增加自定义模型适配器注册能力
64
+ fix: 恢复中断运行时释放租约
65
+ docs: 补充 MCP 接入示例
66
+ ```
67
+
68
+ 合并请求应说明问题、最终行为、兼容性影响和验证命令。一个合并请求尽量只解决一个主题。
69
+ 安全问题不要创建公开 Issue,请按 [安全策略](SECURITY.md) 报告。
70
+
71
+ 提交贡献即表示你有权提交这些内容,并同意按项目的 Apache-2.0 许可证发布。