hosts.md
Book Agent 0.1.0 · 本版随附原文,按章节提供导览;完整原文可在文末展开。文内本机路径属于示例,请替换为你的实际路径。
本版本其他文档与许可
- 用户完整使用手册.md
- 网站发布交接说明.md
- 一句话安装提示词.md
- 安装Agent操作指南.md
- README-交付说明.md
- README.md
- dependency-licenses.json
- acceptance.md
- architecture.md
- build.md
- codex-diagnostics.md
- contracts.md
- deployment.md
- evaluation.md
- example-package-inspection.md
- hosts.md
- mcp.md
- package-format.md
- portability.md
- query-runtime.md
- rerankers.md
- retrieval.md
- security.md
- source-resolution.md
- sqlite-adapters.md
- troubleshooting.md
- visual-fallback.md
- windows-binary-validation.md
- offline-dependency-licenses.json
- 289bfef3a422b5d7-LICENSE
- 320fb46da982dd20-LICENSE
- 0d26a74c4cd409f1-LICENSE
- 29f0a9349a98f786-LICENSE.txt
- 8fe2fae6851b8b02-LICENSE_zstd.txt
- 5927d884110638aa-LICENSE
- c1aedbaa6db194c8-LICENSE
- 2e2d841f3829cb8c-LICENSE
- 37deb54162951132-LICENSE
- 1c294ee0ed0fe5a4-LICENSE.txt
- 9cbd6b2bcad1331c-LICENSE.txt
- 22cdd958c280cb3f-LICENSE.APACHE
- 33a7c36a4f64f214-LICENSE.BSD
- 8e9b59db150b8b29-LICENSE
- 9d2d6534b255a725-LICENSE
- 44ac41031103bcac-LICENSE
- 39d084ff20ffc40e-LICENSE.txt
- b6618d8dc766ea7c-LICENSE.md
- 696bca653f07d94f-LICENSE
- 1a79882f84c42428-LICENSE.md
- 404602f585d7ece7-LICENSE
- d91c8e1dcc4f21a2-LICENSE.md
- b0ec1e6164c921a7-LICENSE.txt
- 2102cfff7eb71b8c-LICENSE.txt
- 60b346c789b9f38f-LICENSE
- 21b64ce33aa4532a-LICENSE
- 37bbe72ee1bbafbd-LICENSE
- 3a70ad943ce55a72-LICENSE.txt
- 0f4ffb2948b11d2f-LICENSE.txt
- 0f552da71ad28735-LICENSE.txt
- 14c3180f75c13432-LICENSE.txt
- 237d5ce190d18ec8-LICENSE.md
- 33f4c2195fc42df4-LICENSE.md
- 34e0a82278464f7a-LICENSE.md
- 606163a509c60e74-LICENSE.txt
- 68188ef77bc0f51d-LICENSE.md
- 7d261385d7c11247-LICENSE.md
- 892e6e9281e05f9e-LICENSE.md
- a62d8b7410f97d10-LICENSE
- aefd64774c70ee6f-LICENSE
- ba28e7ff75ea728b-dragon4_LICENSE.txt
- c21c93791addfba9-LICENSE.md
- c38cab56d01cd957-LICENSE
- caa67dbe4c1ea31d-LICENSE.md
- ddfcf34665e22241-LICENSE
- f384fe378597d8ee-LICENSE.md
- fa40db527ec8a4f8-LICENSE.md
- 11c854e2fea5c3c3-LICENSE
- e9a5bac8b5a01882-LICENSE.APACHE
- ef96a0844cda24cd-LICENSE.BSD
- 60b8570677f4c852-LICENSE
- b750eeade19bb396-LICENSE
- 7d70cfb623ece0f5-LICENSE
- c6dc91d12372ba7d-LICENSE
- 4d610a0401713428-LICENSE
- b4cf246d7037e3e5-LICENSE
- 6ba7e4be3a3e5e98-LICENSE.rst
- bd6c3caec9dc0b2c-LICENSE
- 404f172525c78526-LICENSE
- ea58743ddd8149fe-LICENSE
- d94ac33ee6c5b99c-LICENSE
- 06fc5f72f75ece40-LICENSE
- 6ee341f79804040b-LICENSE
- ca8b44050606bf3f-LICENSE.txt
- 0eb90f9858c86a9d-MAPIStubLibrary-License.txt
- 0f36ec7ac95c3104-Scintilla-License.txt
- 1445ad867b84e928-LICENSE.txt
- 1b588beb4a04f4c3-LICENSE
- 3c06ee52d5d89b25-License.txt
- 6300165282b47172-License.txt
- 6eec8b7b9c778ef7-License.txt
- 6fbb090f28b7d9d7-NOTICE.md
- 7f00f05027a6f1b3-license.txt
- 881f648ef42a607c-License.txt
- ae73a46638a88910-License.txt
- c2a4985aa4145fc3-License.txt
- cf5cae3ab668ac79-License.txt
- d04b9dead3df9f2b-License.txt
- dc8527163d427906-LICENSE.txt
- ff463f305e7e68dc-license.txt
- 1f5c94674bb026f1-LICENSE
- 0fb05a2e9284070c-LICENSE.txt
- bd7b91afd66e7fa0-NOTICE
- fb0b720c70d8ce6a-LICENSE
- fcd0c1933c03449f-LICENSE
- 07c67dcb9a0a1264-LICENSE
- 0e45092c306c1829-LICENSE
- 123439bfbc433e83-LICENSE.APACHE
- 1ab641e9121b81f5-LICENSE
- 4094fd3590b59adb-NOTICE
- 4a7fd6a9c689e423-LICENSE
- 4d09286af1bf926b-LICENSE
- 63a92caf8157263d-LICENSE
- 6562dd76db576ab9-LICENSE
- 8b28658c9e8179cb-LICENSE.txt
- 9fe05a3195b3cc3f-LICENSE
- aeab75b4c2775e84-LICENSE
- b8b1f5f03784d7a5-LICENSE
- c2780f51d1429c4b-LICENSE
- c80865de46db705d-LICENSE.BSD
- c9e41e71fb671b2e-LICENSE
- d6b8bc4557547f24-LICENSE
- e972ee51f8cb405e-NOTICE
- e453abd81b5ad12e-LICENSE
- 717f721f1be51398-LICENSE.md
- 767eeaf795dbfce8-LICENSE
- 94e2a313c2183fa6-LICENSE.txt
- 3391f6db464bf907-LICENSE
- c4388b01504343b0-LICENSE
- 000af5e58f31978d-LICENSE.txt
- 012d34b072b31cdb-LICENSE
- 020fa8056b9cc414-LICENSE
- 057ffcbbade9301e-LICENSE
- 096eee7c37050ec5-LICENSE
- 0b14d5ccfc8ae3b6-LICENSE
- 0d84796ed41f21b5-LICENSE.txt
- 0f51b035ee2b205e-LICENSE.txt
- 15ac02d83e9f5cf0-LICENSE
- 1987b9857feb2977-LICENSE
- 1ab5abcd87c44e46-LICENSE.rst
- 1b491a95f1ea6812-LICENSE
- 1bddb28b536554a8-LICENSE
- 1e0dae2d67a75d8f-LICENSE
- 1f00093269c431aa-LICENSE
- 1f88918564d6b190-LICENSE.txt
- 23170591db6c2e35-LICENSE
- 24e7a39da250d246-LICENSE
- 25356621a82f4798-LICENSE
- 2b6931cc6558558d-LICENSE
- 2e20b75d944dfc10-LICENSE.rst
- 3148042f9d6dc44b-LICENSE
- 34440ff12dbdee0b-LICENSE
- 38d7390db6751b95-LICENSE
- 394f72aa9820b35e-LICENSE
- 3a1efc907aa90e6e-LICENSE.txt
- 3f471b7b9a34654b-LICENSE
- 3f59a46ca08f425d-LICENSE
- 41a82292d67b1815-LICENSE
- 43e0660fee92e3d9-LICENSE
- 4418818ca0528087-LICENSE
- 44bd708d348a7f79-LICENSE.txt
- 45a5f164a90b025e-LICENSE
- 4679f7f6ca539098-LICENSE
- 46bcf873674918a0-LICENSE
- 4cb2f76b15650e2b-LICENSE.txt
- 4ce67a1d3f22f06e-LICENSE
- 4d4c272c2aaf7d4c-LICENSE.txt
- 4f73bb9c13a8cf6a-LICENSE
- 50d2c50ab17033d4-LICENSE
- 568ef02dec145f8f-LICENSE.APACHE
- 5d0844276d7620c3-LICENSE
- 5d3ee7cad434b050-LICENSE
- 63c9efa00504c8e7-LICENSE.BSD
- 658c67bb72402f54-LICENSE
- 65feb792d908bb47-LICENSE
- 6ab6f3ebe36250fc-LICENSE
- 6f3ff74d1e961003-LICENSE
- 70c92009f569c7ff-LICENSE
- 71e8135b761ff506-LICENSE
- 720a043a5f63b8e2-LICENSE
- 732e9d1d0dc3a9f3-LICENSE.rst
- 76fa1ec680b6563a-LICENSE
- 778654dd362ccfc1-LICENSE
- 7bad43a1c663d2d3-LICENSE
- 7e5ab77aaefbcbfe-LICENSE
- 81f9de42fb4cff6d-LICENSE.rst
- 83a0b2cad3631647-LICENSE
- 83d9a4cd337039d3-LICENSE
- 878c0ed7cc080bee-LICENSE.txt
- 8e3c8657c4d54274-LICENSE
- 923573b2290edd3f-LICENSE.txt
- 932fff1dd3afca18-LICENSE.rst
- 93b14a999e446b81-LICENSE
- 93ef29e6e98ebe1c-LICENSE
- 95a8821c42dd5a93-LICENSE
- 9611af4ef03999e9-LICENSE.txt
- 9690869ec82dc7ff-LICENSE
- 98445537094b5eca-LICENSE.txt
- 9bcc07396f3695fd-LICENSE.txt
- 9d236d10d50376fa-LICENSE
- a3af08ceb14d4e70-LICENSE.rst
- a42e3616102ec1a4-LICENSE
- a68145b6a6945de2-LICENSE
- ac000064f187d287-LICENSE
- b14490d244e39dd6-LICENSE.txt
- b152e206fedb11c6-LICENSE
- b5cccfdd56d29de3-LICENSE
- bb4c4e06309173d1-LICENSE.txt
- c18a22744d03cae4-LICENSE.rst
- c59a7e2bf6163ddd-LICENSE
- c643fc658eb3d4f4-LICENSE
- ce8e5d64c3015701-LICENSE
- d382d51b74d1dde7-LICENSE
- d414936ad243b5dd-LICENSE.txt
- d431c50ef2b89f09-LICENSE
- d86156e7d7554a5f-LICENSE
- e04596b38de5343a-LICENSE
- e1fd63729d99cd47-LICENSE
- e3aa5bda22dc7a7a-LICENSE
- e3f5bf83e6fd8b70-LICENSE
- e7f7eb90618838ff-LICENSE
- e845cee760dabf6e-LICENSE
- ea19c7c3e4500582-LICENSE
- f063c5a9ee927ae6-LICENSE
- f589495d9a662be4-LICENSE.txt
- f7f25c636a548517-LICENSE.rst
- f861d3e2e007d200-LICENSE.txt
- fa17b838b2594837-LICENSE.txt
- 14a65df99717c958-LICENSE
- 2231b6c46c068b83-LICENSE
- 215ebb8580f197a8-LICENSE
- 3677f050c9618f5d-LICENSE.txt
- b645068efededc15-LICENSE.md
- MODEL-LICENSE.md
- README.md
- UPSTREAM-LICENSE.txt
# Harness integrations Official documentation checked **2026-10-02**. The documented capabilities below concern the public configuration interface. An installed host's version, MCP connection, agent tool use, and image interpretation are separate observations. | Host | Native Skill | stdio MCP | Automated target | Remaining work | | --- | --- | --- | --- | --- | | Codex | Documented | Documented | User `.agents/skills`, user `.codex/config.toml`; explicit project scope supported by API | Restart/refresh if necessary and perform actual agent checks | | TRAE / TraeCode CN | Documented | Documented | User `.trae-cn/skills` or project `.trae/skills`; project `.trae/mcp.json` | Enable project MCP; global MCP uses documented manual UI; bind intended agent | | Tencent WorkBuddy | Documented ZIP format | Documented | User/project `.workbuddy/mcp.json` | Import generated Skill ZIPs through the UI | | Cherry Studio | Modern Skills documented; automatic discovery unverified | Transport-specific capability unverified | stdio configuration generated for UI review/import | Add/start server in Settings > MCP, then bind to Work agent; read original Book Skill through MCP | No row asserts an installed application version. `HostAdapter.detect()` reports executable/home markers without launching an application and reports its operational state/version as `unknown`. Image support remains `unknown` until an actual host/model interaction has been recorded. The current Codex official Skill documentation specifies `$HOME/.agents/skills`. Some preexisting local installations use legacy `.codex/skills` paths; this adapter uses the documented `.agents` default and does not rewrite a legacy catalog. A supplied `home` isolates both Skill/config targets for tests. Codex uses TOML `[mcp_servers.<name>]`, `command`, and a separate `args` array; no protocol `type` field is needed for that table. [Codex MCP](https://learn.chatgpt.com/docs/extend/mcp?surface=cli), [Codex Skills](https://learn.chatgpt.com/docs/build-skills). TRAE CN documents both Skill directories, project `.trae/mcp.json`, and manual MCP JSON configuration through Settings > MCP > Add > Manual Add. Its current command parser documentation rejects spaces in the command field; the adapter refuses application of such a command and preserves argument arrays containing Unicode/spaces/special characters. A verified executable location without spaces is required for that parser. Only the CN IDE edition's public paths are automatically chosen; other editions need selected paths/UI. [TRAE Skills](https://docs.trae.cn/ide_skills), [TRAE MCP configuration](https://docs.trae.cn/ide_add-mcp-servers). WorkBuddy documents `.workbuddy/mcp.json` at user/project scope and `mcpServers` JSON with `command`, `args`, and optional `env`. The adapter writes no credential literals. Its generated Skill ZIP includes required bilingual descriptions, author and version fields. Import remains a UI action, and generated ZIPs are not recorded as an installed native Skill. [WorkBuddy MCP](https://www.codebuddy.cn/docs/workbuddy/From-Beginner-to-Expert-Guide/Function-Description/MCP-Guide), [WorkBuddy Skill format](https://open.workbuddy.cn/docs/skill). Cherry Studio's public UI connects servers under Settings > MCP and then binds them in the Work agent editor. The adapter emits a standard local stdio `mcpServers` JSON artifact for review/import and human instructions, and does not modify its private database or claim native Skill automatic discovery. Its original Book Skill is accessed with `book_get_skill`. The current fetched public page confirms the MCP UI but does not establish its transport-specific parser; `mcp_stdio` therefore remains `unknown` until that documented detail or an actual application check is available. [Cherry Studio tools, Skills and MCP](https://cherryai.com/docs/en/advanced-basic/agent-workspace/tools-knowledge-skills-mcp/).
Runtime API
```python
adapter = HostAdapter("codex", home=isolated_home, data_dir=book_agent_data)
plan = adapter.install(package, [python_executable, "-m", "book_agent",
"--data-dir", str(book_agent_data), "mcp", package.book_id])
result = adapter.install(package, argv, apply=True)
verification = adapter.verify(package.book_id)
removal_plan = adapter.uninstall(package.book_id)
removal_result = adapter.uninstall(package.book_id, apply=True)
```
`detect`, `inspect`, `plan_install`, `install_skill`, `configure_mcp`, `verify`, `uninstall`, and `render_manual_instructions` provide lower-level access. High-level `install` defaults to a read-only plan; CLI `install-host` applies the announced host targets unless `--dry-run` is set. Optional `project_dir` selects documented project targets. An explicit MCP `config_path` permits an edition-specific public configuration file; Cherry remains UI-only. Skill destinations must stay within selected home/project roots.
Every stdio launch uses argv strings. No shell command assembly, shell quoting, secret interpolation, or unreviewed package installer is involved. Required query/rerank secrets should be supplied through the protected environment used when starting the host. An inherited variable is not assumed to exist merely because its name is known.
Ownership and reversibility
Per-book deployment files live under `BookAgentData/books/<book-id>/deployment/<host>/`: ```text install-manifest.json mcp-config.json manual-instructions.md backups/ skills/ # UI import hosts only book-assistant.zip # UI import hosts only <book-wrapper>.zip # UI import hosts only ``` The original Book Skill is preserved byte for byte in wrapper references. The wrapper provides legal names/frontmatter and directs retrieval/citations through MCP. A valid original name is reused if free. A same-name differing Skill causes a namespaced wrapper; an existing conflicting wrapper is not overwritten. The generic Skill similarly receives a named compatibility copy if `book-assistant` already has different content. Identical contents are skipped. JSON merges preserve unrelated values. TOML merges preserve comments and unrelated values with `tomlkit`. Existing configs are backed up before changed writes; writes use temporary files and atomic replace. Cooperating Book Agent writers use file locks. The manifest tracks exact generated file hashes, configuration-entry hashes, and ownership. Identical preexisting files/entries do not become owned. Multiple installed books share the managed generic Skill until the last referencing book is uninstalled. Uninstall removes only owned unchanged files and an unchanged owned MCP entry. Modified files/entries are reported and preserved. Unrelated files in an installed directory survive. Unrelated config edits are retained during entry removal. Backup files are retained; the program does not automatically restore an entire old config over newer unrelated edits.
Verification levels
Report these independently: 1. Configuration generated: reviewed artifact exists, or a read-only plan contains the configuration. 2. Configuration written: the target public config contains the expected entry. 3. MCP handshake: a real client completed initialize with the running server. 4. Tool call: a real client called the server tool successfully. 5. Agent answer: an actual agent used retrieval evidence to answer a question. 6. Agent visual evidence: an actual agent inspected delivered image content. `HostAdapter.verify()` checks only artifacts/file hashes and written entries. It returns later stages as `unknown`. Host unit tests exercise isolated directories and never imply a live application test. See the overall evaluation/acceptance record for separately executed integrations.
查看完整原文(逐字保留)
# Harness integrations
Official documentation checked **2026-10-02**. The documented capabilities below concern the public configuration interface. An installed host's version, MCP connection, agent tool use, and image interpretation are separate observations.
| Host | Native Skill | stdio MCP | Automated target | Remaining work |
| --- | --- | --- | --- | --- |
| Codex | Documented | Documented | User `.agents/skills`, user `.codex/config.toml`; explicit project scope supported by API | Restart/refresh if necessary and perform actual agent checks |
| TRAE / TraeCode CN | Documented | Documented | User `.trae-cn/skills` or project `.trae/skills`; project `.trae/mcp.json` | Enable project MCP; global MCP uses documented manual UI; bind intended agent |
| Tencent WorkBuddy | Documented ZIP format | Documented | User/project `.workbuddy/mcp.json` | Import generated Skill ZIPs through the UI |
| Cherry Studio | Modern Skills documented; automatic discovery unverified | Transport-specific capability unverified | stdio configuration generated for UI review/import | Add/start server in Settings > MCP, then bind to Work agent; read original Book Skill through MCP |
No row asserts an installed application version. `HostAdapter.detect()` reports executable/home markers without launching an application and reports its operational state/version as `unknown`. Image support remains `unknown` until an actual host/model interaction has been recorded.
The current Codex official Skill documentation specifies `$HOME/.agents/skills`. Some preexisting local installations use legacy `.codex/skills` paths; this adapter uses the documented `.agents` default and does not rewrite a legacy catalog. A supplied `home` isolates both Skill/config targets for tests. Codex uses TOML `[mcp_servers.<name>]`, `command`, and a separate `args` array; no protocol `type` field is needed for that table. [Codex MCP](https://learn.chatgpt.com/docs/extend/mcp?surface=cli), [Codex Skills](https://learn.chatgpt.com/docs/build-skills).
TRAE CN documents both Skill directories, project `.trae/mcp.json`, and manual MCP JSON configuration through Settings > MCP > Add > Manual Add. Its current command parser documentation rejects spaces in the command field; the adapter refuses application of such a command and preserves argument arrays containing Unicode/spaces/special characters. A verified executable location without spaces is required for that parser. Only the CN IDE edition's public paths are automatically chosen; other editions need selected paths/UI. [TRAE Skills](https://docs.trae.cn/ide_skills), [TRAE MCP configuration](https://docs.trae.cn/ide_add-mcp-servers).
WorkBuddy documents `.workbuddy/mcp.json` at user/project scope and `mcpServers` JSON with `command`, `args`, and optional `env`. The adapter writes no credential literals. Its generated Skill ZIP includes required bilingual descriptions, author and version fields. Import remains a UI action, and generated ZIPs are not recorded as an installed native Skill. [WorkBuddy MCP](https://www.codebuddy.cn/docs/workbuddy/From-Beginner-to-Expert-Guide/Function-Description/MCP-Guide), [WorkBuddy Skill format](https://open.workbuddy.cn/docs/skill).
Cherry Studio's public UI connects servers under Settings > MCP and then binds them in the Work agent editor. The adapter emits a standard local stdio `mcpServers` JSON artifact for review/import and human instructions, and does not modify its private database or claim native Skill automatic discovery. Its original Book Skill is accessed with `book_get_skill`. The current fetched public page confirms the MCP UI but does not establish its transport-specific parser; `mcp_stdio` therefore remains `unknown` until that documented detail or an actual application check is available. [Cherry Studio tools, Skills and MCP](https://cherryai.com/docs/en/advanced-basic/agent-workspace/tools-knowledge-skills-mcp/).
## Runtime API
```python
adapter = HostAdapter("codex", home=isolated_home, data_dir=book_agent_data)
plan = adapter.install(package, [python_executable, "-m", "book_agent",
"--data-dir", str(book_agent_data), "mcp", package.book_id])
result = adapter.install(package, argv, apply=True)
verification = adapter.verify(package.book_id)
removal_plan = adapter.uninstall(package.book_id)
removal_result = adapter.uninstall(package.book_id, apply=True)
```
`detect`, `inspect`, `plan_install`, `install_skill`, `configure_mcp`, `verify`, `uninstall`, and `render_manual_instructions` provide lower-level access. High-level `install` defaults to a read-only plan; CLI `install-host` applies the announced host targets unless `--dry-run` is set. Optional `project_dir` selects documented project targets. An explicit MCP `config_path` permits an edition-specific public configuration file; Cherry remains UI-only. Skill destinations must stay within selected home/project roots.
Every stdio launch uses argv strings. No shell command assembly, shell quoting, secret interpolation, or unreviewed package installer is involved. Required query/rerank secrets should be supplied through the protected environment used when starting the host. An inherited variable is not assumed to exist merely because its name is known.
## Ownership and reversibility
Per-book deployment files live under `BookAgentData/books/<book-id>/deployment/<host>/`:
```text
install-manifest.json
mcp-config.json
manual-instructions.md
backups/
skills/ # UI import hosts only
book-assistant.zip # UI import hosts only
<book-wrapper>.zip # UI import hosts only
```
The original Book Skill is preserved byte for byte in wrapper references. The wrapper provides legal names/frontmatter and directs retrieval/citations through MCP. A valid original name is reused if free. A same-name differing Skill causes a namespaced wrapper; an existing conflicting wrapper is not overwritten. The generic Skill similarly receives a named compatibility copy if `book-assistant` already has different content. Identical contents are skipped.
JSON merges preserve unrelated values. TOML merges preserve comments and unrelated values with `tomlkit`. Existing configs are backed up before changed writes; writes use temporary files and atomic replace. Cooperating Book Agent writers use file locks. The manifest tracks exact generated file hashes, configuration-entry hashes, and ownership. Identical preexisting files/entries do not become owned. Multiple installed books share the managed generic Skill until the last referencing book is uninstalled.
Uninstall removes only owned unchanged files and an unchanged owned MCP entry. Modified files/entries are reported and preserved. Unrelated files in an installed directory survive. Unrelated config edits are retained during entry removal. Backup files are retained; the program does not automatically restore an entire old config over newer unrelated edits.
## Verification levels
Report these independently:
1. Configuration generated: reviewed artifact exists, or a read-only plan contains the configuration.
2. Configuration written: the target public config contains the expected entry.
3. MCP handshake: a real client completed initialize with the running server.
4. Tool call: a real client called the server tool successfully.
5. Agent answer: an actual agent used retrieval evidence to answer a question.
6. Agent visual evidence: an actual agent inspected delivered image content.
`HostAdapter.verify()` checks only artifacts/file hashes and written entries. It returns later stages as `unknown`. Host unit tests exercise isolated directories and never imply a live application test. See the overall evaluation/acceptance record for separately executed integrations.
原文 SHA-256:e462082aeca9cf98b609c9489dae5ad398730d6d66064dde2f7af37c83cf7481