feat(docs): Add Agentic OS deployment solution for OpenClaw#450
feat(docs): Add Agentic OS deployment solution for OpenClaw#450kongche-jbw wants to merge 1 commit into
Conversation
5d6d927 to
b94e935
Compare
b94e935 to
7c3d324
Compare
samchu-zsl
left a comment
There was a problem hiding this comment.
Summary
Solid scope and good hygiene on the script side, but the user-facing path references are inconsistent with the actual directory layout in this PR — every install command in the new docs will 404 / "No such file" once this lands. Marking this as request-changes only on that one issue; the rest is non-blocking.
🔴 Blocker — extension/openclaw/... vs agent-adapter/openclaw/... mismatch
The PR creates agent-adapter/openclaw/{README.md, SKILL.md, agenticos2openclaw.sh}, but the docs inside reference a different path:
agent-adapter/openclaw/README.md— 9 references toextension/openclaw/...agent-adapter/openclaw/SKILL.md— 12 references toextension/openclaw/...git ls-tree pr-450confirms onlyagent-adapter/openclaw/is created; there is noextension/openclaw/directory anywhere on the PR HEAD.
Concrete consequences after merge:
curl -fsSL https://raw.githubusercontent.com/alibaba/anolisa/main/extension/openclaw/agenticos2openclaw.sh | bash -s -- --mode recommended→ HTTP 404 (this URL appears 6× across README + SKILL).bash extension/openclaw/agenticos2openclaw.sh --mode recommended(and--list,--status,--rollback,--retry,--dry-runvariants) → No such file or directory (15× across README + SKILL).- The PR description even calls out "Unified command and path references to the current
extension/openclawstructure", but the actual directory does not match the structure described.
Pick one direction before merge:
- Option A — rename the new directory to
extension/openclaw/so the docs and the GitHub raw URL match. This is the simpler fix ifextension/is the intended layout going forward. - Option B — keep the directory at
agent-adapter/openclaw/and rewrite all 21 doc references (find/replaceextension/openclaw/→agent-adapter/openclaw/).
Either is fine; the constraint is that the path the docs name and the path the file actually lives at must agree.
Verification done during review
set -euo pipefail, Bash-4 guard, andprintf '%q'shell-quoting inrun_cmdhandle the basic injection surface; the script does not useeval,curl|bash,wget|sh, oros.system-equivalent shells.rm -rfpaths are all derived from controlled bases:dest_dir = $OPENCLAW_SKILLS_DIR,skill_name = basename(...)(no..//slip),ext_dir = $OPENCLAW_HOME/extensions/<const>.- JSON state file writes use
mktemp+jq+jq emptyvalidation +mv— atomic and corruption-resistant. - The Python script
configure_openclaw_dingtalk.pyuses onlyargparse+json+pathlib.Path; nosubprocess,os.system,eval, orexec. It has a properif __name__ == "__main__":guard. install-openclaw/SKILL.mdinternal links (references/troubleshooting.md,references/dingtalk-setup-guide.md,scripts/configure_openclaw_dingtalk.py) all resolve on PR HEAD, and theopenclaw@v2026.4.26version reference is consistent across the description, phase headers, and install commands.
🟡 Minor (not blocking, would be nice to address in this round)
- Commit scope is misleading. The headline
feat(docs): add agentic os deployment skill for openclawunderstates the change — the diff includes 2064 lines of new shell script and 304/-154 lines of Python. PerAGENT.md's scope-by-path table,src/os-skills/maps toskill; newagent-adapter/isn't in the table at all. Considerfeat(skill):or splitting the commit, given that CI rejects missing scope. - Type of Change checkboxes are mutually contradictory. Bug fix + New feature + Refactoring (no functional change) are all checked. The PR is functionally a new feature (new directory, new installer, expanded skill); the other two should be unchecked to keep the form honest.
ℹ️ Info (optional)
- Non-interactive default in
main()is a footgun. No-args + non-TTY → script auto-resolvesrecommendedmodules and starts installing without confirmation. A cron job or piped invocation could trigger an unwanted install. Prefer requiring an explicit--modeflag in the no-TTY path. state_get_moduleinterpolates$namedirectly into the jq path (json_read "$STATE_FILE" ".modules[\"$name\"].$field"). Today everynameis a script-internal constant, so there's no injection in practice, but the rest of the file uses--arg/--argjsonconsistently — keeping that convention here would protect the next contributor.SKILL.mdfrontmatter conventions diverge across the PR. This PR shrinksinstall-openclaw/SKILL.mdfrom 5 fields (withversion/layer/lifecycle) to 2, whileagent-adapter/openclaw/SKILL.mdkeeps the 5-field form. The repo as a whole already has 3 different frontmatter styles across 5os-skills/ai/*/SKILL.mdfiles, so this is more a maintainer-level "pick a schema and document it" question than a per-PR fix; flagging here so it doesn't get lost.
Once the path mismatch is resolved, the rest looks fine — the script and the Python helper are well-structured, the rollback / retry / status flows are clearly modeled, and the test surface (manual: bash -n, install plan output, rollback report, status alignment) is reasonable for what's effectively a deployment script.
| Download the installer from GitHub and run it with explicit arguments: | ||
|
|
||
| ```bash | ||
| curl -fsSL "${AGENTICOS_INSTALLER_URL:-https://raw.githubusercontent.com/alibaba/anolisa/main/extension/openclaw/agenticos2openclaw.sh}" | bash -s -- --mode recommended |
There was a problem hiding this comment.
🔴 Path mismatch — this URL will 404 after merge.
The default for AGENTICOS_INSTALLER_URL points at …/main/extension/openclaw/agenticos2openclaw.sh, but the PR creates the file at agent-adapter/openclaw/agenticos2openclaw.sh. There is no extension/openclaw/ directory anywhere on this PR's HEAD (git ls-tree pr-450 only shows agent-adapter/openclaw/).
Same root cause for the local-repo path on line 24 (bash extension/openclaw/agenticos2openclaw.sh ...) and for ~12 other references throughout this file plus 9 in README.md. Once merged, every install command shown in the docs will fail.
Two ways to fix, pick one:
- Rename the new directory to
extension/openclaw/so the existing URL and bash paths land — simplest if that's the intended layout. - Keep the directory at
agent-adapter/openclaw/and find/replaceextension/openclaw/→agent-adapter/openclaw/across this file andREADME.md(21 spots total).
See the overall review for the full list of affected lines.
Description
This PR aligns OpenClaw integration docs and execution guidance with the current repository layout, and improves installer UX and observability for install, rollback, and status workflows.
Main updates include:
Related Issue
no-issue: repository structure alignment, documentation maintenance, and installer UX/status consistency improvements
Type of Change
Scope
Checklist
Testing
Manual validation performed:
Additional Notes
This PR intentionally keeps behavior non-breaking while improving operator experience: